{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Quantum Walk" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import networkx as nx\n", "import matplotlib.pyplot as plt\n", "from scipy.linalg import expm\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we perform a continuous time quantum walk (CTQW) on a complete graph with four nodes (denoted as $K_4$). We will be following [this](https://www.nature.com/articles/ncomms11511) paper." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "G = nx.complete_graph(4)\n", "nx.draw_networkx(G)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The spectrum of complete graphs is quite simple -- one eigenvalue equal to $N-1$ (where $N$ is the number of nodes) and the remaining equal to -1:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-1. -1. -1. 3.]\n" ] } ], "source": [ "A = nx.adjacency_matrix(G).toarray()\n", "eigvals, _ = np.linalg.eigh(A)\n", "print(eigvals)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the CTQW the usual hamiltonian is the adjacency matrix $A$. We modify it slightly by adding the identity, i.e. we take $\\mathcal{H} = A + I$. This will reduce the number of gates we need to apply, since the eigenvectors with 0 eigenvalue will not acquire a phase." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "hamil = A + np.eye(4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It turns out that $K_n$ graphs are Hadamard diagonalizable, allowing us to write $\\mathcal{H} = Q \\Lambda Q^\\dagger$, where $Q = H \\otimes H$. Let's check that this works." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 4.00000000e+00, -4.93038066e-32, -4.93038066e-32,\n", " 4.93038066e-32],\n", " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", " 0.00000000e+00],\n", " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", " 0.00000000e+00],\n", " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", " 0.00000000e+00]])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "had = np.sqrt(1/2) * np.array([[1, 1], [1, -1]])\n", "Q = np.kron(had, had)\n", "Q.conj().T.dot(hamil).dot(Q)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The time evolution operator $e^{-iHt}$ is also diagonalized by the same transformation. In particular we have\n", "\n", "$$\n", "Q^\\dagger e^{-iHt}Q = \\begin{pmatrix} \n", " e^{-i4t} & 0 & 0 & 0 \\\\\n", " 0 & 1 & 0 & 0 \\\\\n", " 0 & 0 & 1 & 0 \\\\\n", " 0 & 0 & 0 & 1\n", " \\end{pmatrix}\n", "$$\n", "\n", "Which is just a [CPHASE00](http://docs.rigetti.com/en/stable/apidocs/autogen/pyquil.gates.CPHASE00.html#pyquil.gates.CPHASE00) gate with an angle of $-4t$." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from pyquil import Program\n", "from pyquil.api import WavefunctionSimulator\n", "from pyquil.gates import H, X, CPHASE00\n", "from pyquil.latex import display" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "wfn_sim = WavefunctionSimulator()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def k_4_ctqw(t):\n", " # Change to diagonal basis\n", " p = Program(H(0), H(1), X(0), X(1))\n", " \n", " # Time evolve\n", " p += CPHASE00(-4*t, 0, 1)\n", " \n", " # Change back to computational basis\n", " p += Program(X(0), X(1), H(0), H(1))\n", " \n", " return p" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "display(k_4_ctqw(1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's compare the quantum walk with a classical random walk. The classical time evolution operator is $e^{-(\\mathcal{T} - I) t}$ where $\\mathcal{T}$ is the transition matrix of the graph.\n", "\n", "We choose as our initial condition $\\left| \\psi(0) \\right\\rangle = \\left| 0 \\right\\rangle$, that is the walker starts on the first node. Therefore, due to symmetry, the probability of occupation of all nodes besides $\\left| 0 \\right\\rangle$ is the same. " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "T = A / np.sum(A, axis=0)\n", "time = np.linspace(0, 4, 40)\n", "quantum_probs = np.zeros((len(time), 4))\n", "classical_probs = np.zeros((len(time), 4))\n", "\n", "for i, t in enumerate(time):\n", " p = k_4_ctqw(t) \n", " wvf = wfn_sim.wavefunction(p)\n", " vec = wvf.amplitudes\n", " quantum_probs[i] = np.abs(vec)**2\n", "\n", " classical_ev = expm((T-np.eye(4))*t)\n", " classical_probs[i] = classical_ev[:, 0] \n", " \n", "f, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=True)\n", "\n", "ax1.set_title(\"Quantum evolution\")\n", "ax1.set_ylabel('p')\n", "ax1.plot(time, quantum_probs[:, 0], label='Initial node')\n", "ax1.plot(time, quantum_probs[:, 1], label='Remaining nodes')\n", "ax1.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", "\n", "ax2.set_title(\"Classical evolution\")\n", "ax2.set_xlabel('t')\n", "ax2.set_ylabel('p')\n", "ax2.plot(time, classical_probs[:, 0], label='Initial node')\n", "ax2.plot(time, classical_probs[:, 1], label='Remaining nodes')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As expected the quantum walk exhbits coherent oscillations whilst the classical walk converges to the stationary distribution $p_i = \\frac{d_i}{\\sum_j d_j} = \\frac{1}{4}$.\n", "\n", "We can readily generalize this scheme to any $K_{2^n}$ graphs." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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SSkHDx707ty5c+kll1ySD/D1118HL1iwIDglJSUFoLi42GPz5s2+nTp1Ko+JiSkbMGBACUBiYmLJ2Wefne/h4UGfPn2KH3300fYAOTk5nuPHj0/YvXu3r4iYioqKOkckPO+883L9/PyMn59fZVhYWMW+ffu8qoczrlbXEMdBQUFVsbGxZdXDBV999dU5r7/+ep2DewwbNiw/PDy8CqBLly6lO3bssGVmZnoNGjSooH379pUA48ePz/npp58CAZznX3bZZTlbt271Bfjll1+Ct23bVjNSWGFhoWdeXp7HoEGDCu+9997Yq666Kueaa6453LlzZw0BSimlTkI9z9gbWnWfgIKCAo+RI0d2/de//hX14IMPHjLGcPfdd++/7777jhrbYMuWLT7OQwB7eHjg6+trwBp+uKqqSgDuv//+mDPPPLPgu+++27Flyxafs88+u9sx9n/C4YtPZ4hj+O2QxccKJCdijGHlypWb/P39j6qpePzxxw9ccskleZ9++mnI8OHDk7744ottvXv3rtcASo06doBSSilVH0FBQfbnnnsu7aWXXmpbUVHB2LFj899+++2IvLw8D4Bdu3Z5p6en1/vENT8/37NDhw7lANOnT49o6PL27NmzdO/evbYtW7b4ALz33nthJ3qPs+HDhxctWbIkaP/+/V6VlZV88MEHYSNHjiwcMWJE0ZIlS4IOHDjgWVZWJh9//HGb6vcMGzYs/5///GdNv4VFixb5AWzYsME2YMCAkscee+xAz549i9avX+9b33JoTYBSSqlmYejQoSVJSUklr776atjtt9+es2HDBt/+/fsnAfj7+9vfeeedXV5eXvW6Ydz9999/YPLkyQlPPPFE+1GjRuU2dFkDAwPNU089tWfMmDFd/f397b169So6mfd37Nix4qGHHko/88wzE40xcu655+Zef/31uY6yZwwaNCg5KCioqro/AMCrr766d/LkyXGJiYkpVVVVMnDgwIIhQ4ak/fvf/45atGhRsIiYbt26lVxxxRV59S2HDiWslFJuQIcSbnh5eXkeISEhdrvdzoQJE+K6du1a+tBDDx1ydbnq4pKhhJVSSqnW6plnnomovtFRfn6+5z333NPiApU2ByillFKn4KGHHjrUXM/860trApRSyn3Z7Xb7KfVUVy2H4zuu87JBDQFKKeW+1mdmZoZoEGi97Ha7ZGZmhgDr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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def k_2n_ctqw(n, t):\n", " p = Program()\n", " \n", " # Change to diagonal basis\n", " for i in range(n):\n", " p += Program(H(i), X(i))\n", "\n", " # Create and apply CPHASE00\n", " big_cphase00 = np.diag(np.ones(2**n)) + 0j\n", " big_cphase00[0, 0] = np.exp(-1j*4*t)\n", " p.defgate(\"BIG-CPHASE00\", big_cphase00) \n", " args = tuple([\"BIG-CPHASE00\"] + list(range(n)))\n", " p.inst(args)\n", "\n", " # Change back to computational basis\n", " for i in range(n):\n", " p += Program(X(i), H(i))\n", " \n", " return p\n", "\n", "def k_2n_crw(n, t):\n", " G = nx.complete_graph(2**n)\n", " A = nx.adjacency_matrix(G)\n", " T = A / A.sum(axis=0)\n", " classical_ev = expm((T-np.eye(2**n))*t)\n", " \n", " return classical_ev[:, 0] \n", "\n", "time = np.linspace(0, 4, 40)\n", "quantum_probs = np.zeros((len(time), 8))\n", "classical_probs = np.zeros((len(time), 8))\n", "\n", "for i, t in enumerate(time):\n", " p = k_2n_ctqw(3, t) \n", " wvf = wfn_sim.wavefunction(p)\n", " vec = wvf.amplitudes\n", " quantum_probs[i] = np.abs(vec)**2\n", " classical_probs[i] = k_2n_crw(3, t) \n", " \n", "f, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=True)\n", "\n", "ax1.set_title(\"Quantum evolution\")\n", "ax1.set_ylabel('p')\n", "ax1.plot(time, quantum_probs[:, 0], label='Initial node')\n", "ax1.plot(time, quantum_probs[:, 1], label='Remaining nodes')\n", "ax1.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", "\n", "ax2.set_title(\"Classical evolution\")\n", "ax2.set_xlabel('t')\n", "ax2.set_ylabel('p')\n", "ax2.plot(time, classical_probs[:, 0], label='Initial node')\n", "ax2.plot(time, classical_probs[:, 1], label='Remaining nodes')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }