Skip to content

Commit

Permalink
Add Continuous Time Q Walk Notebook
Browse files Browse the repository at this point in the history
  • Loading branch information
aryashah2k committed Feb 12, 2021
1 parent 3e74251 commit 6cadd76
Showing 1 changed file with 160 additions and 0 deletions.
160 changes: 160 additions & 0 deletions qiskit/Quantum Random Walks/ContinuousTimeQuantumWalks.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
{
"cells": [
{
"cell_type": "code",
"source": [
"import numpy as np\n",
"from numpy import linalg as LA\n",
"from scipy.linalg import expm, sinm, cosm\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import math\n",
"from scipy import stats\n",
"%matplotlib inline\n",
"\n",
"from IPython.display import Image, display, Math, Latex\n",
"sns.set(color_codes=True)"
],
"outputs": [],
"execution_count": 1,
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Continuous Time Quantum Walks"
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Continuous-Time Quantum Walks"
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"Now let's see an example of how it work on cycle graph $C_n$ for some numbers of vertices."
],
"metadata": {}
},
{
"cell_type": "code",
"source": [
"#number of vertices\n",
"n = 4\n",
"\n",
"#Define adjacency matrix A_Cn\n",
"A = np.zeros((n, n))\n",
"for i in range(n):\n",
" j1 = (i - 1)%n\n",
" j2 = (i + 1)%n\n",
" A[i][j1] = 1\n",
" A[i][j2] = 1\n",
"\n",
"#Define our initial state Psi_a\n",
"psi_a = np.zeros(n)\n",
"psi_a[3] = 1\n",
"\n",
"#Define the time t >= 0\n",
"t = math.pi/2\n",
"\n",
"#Exponentiate or hamiltonian\n",
"U_t = expm(1j*t*A)\n",
"U_mt = expm(1j*(-t)*A)\n",
"\n",
"#Compute Psi_t\n",
"psi_t = U_t @ psi_a\n",
"\n",
"#Compute the probabilities\n",
"prob_t = abs(psi_t)**2"
],
"outputs": [],
"execution_count": 2,
"metadata": {}
},
{
"cell_type": "code",
"source": [
"M_t = U_t*U_mt \n",
"M_t = np.around(M_t, decimals = 3)\n",
"M_t"
],
"outputs": [
{
"output_type": "execute_result",
"execution_count": 3,
"data": {
"text/plain": "array([[0.+0.j, 0.-0.j, 1.+0.j, 0.+0.j],\n [0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j],\n [1.-0.j, 0.+0.j, 0.+0.j, 0.+0.j],\n [0.+0.j, 1.-0.j, 0.+0.j, 0.+0.j]])"
},
"metadata": {}
}
],
"execution_count": 3,
"metadata": {}
},
{
"cell_type": "code",
"source": [
"x = M_t[:, 0].real\n",
"plt.bar(range(len(x)), x, tick_label=[0, 1, 2, 3])\n",
"plt.xlabel('Vertices')\n",
"plt.ylabel('Probability')"
],
"outputs": [
{
"output_type": "execute_result",
"execution_count": 7,
"data": {
"text/plain": "Text(0, 0.5, 'Probability')"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEMCAYAAAAxoErWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAZoUlEQVR4nO3de3BU9eH+8Se7EG4JhCy5LESaQluMFqljlKGFFiEYhOiGEWSICEIJCKIWvy1SFZIA4oSOF8q1UEBpnGpT5RYj0HBpleHq2IJNoYxGEVgSyEUIWiKb/f1Bm58h+SSbkN3NwfdrhpnsySf7efYskyfnnD3nhHi9Xq8AAKiHLdgBAACtFyUBADCiJAAARpQEAMCIkgAAGFESAAAjSgIAYNQm2AFaWnn5JVVXW+/UD4cjTKWllcGOYVmsv+vHOrw+Vl1/NluIunbtZPz+DVcS1dVeS5aEJMvmbi1Yf9ePdXh9bsT1x+4mAIARJQEAMKIkAABGlAQAwCggJZGdna0hQ4aoT58++ve//13vGI/Ho6ysLCUlJWnYsGHKzc0NRDQAQAMCUhJDhw7V66+/rh49ehjHbN26VSdPntSOHTv05ptvaunSpTp16lQg4gEADAJSEomJiXI6nQ2Oyc/P15gxY2Sz2RQZGamkpCRt27YtEPEAAAat5jwJt9ut7t271zx2Op06e/Zsk5/H4QhryVgBFRUVHuwIlmbl9Vf1tUehbe3BjhHUddha1sH1sPL/QZNWUxItpbS00pIntERFhevcuYvBjmFZVl9/UVHhuu//Ngc7RlBtfdFl+ffQivlttpAG/7huNZ9ucjqdOnPmTM1jt9ut2NjYICYCALSakhg+fLhyc3NVXV2tsrIyFRQUKDk5OdixAOBbLSAlsXDhQv30pz/V2bNnNWnSJI0cOVKSlJ6erqNHj0qSXC6X4uLidM899+jBBx/UY489pptuuikQ8QAABiFer9d6O/AbwDGJbyerrz+OSXBMIlgsc0wCAND6UBIAACNKAgBgREkAAIwoCQCAESUBADCiJAAARpQEAMCIkgAAGFESAAAjSgIAYERJAACMKAkAgBElAQAwoiQAAEaUBADAiJIAABhREgAAI0oCAGBESQAAjCgJAIARJQEAMKIkAABGlAQAwIiSAAAYURIAACNKAgBgREkAAIwoCQCAESUBADCiJAAARpQEAMCoTaAmKioq0pw5c1RRUaGIiAhlZ2crPj6+1pjS0lL9+te/ltvt1pUrV9S/f38999xzatMmYDEBAN8QsC2JjIwMpaWlafv27UpLS9O8efPqjFm1apV69+6trVu3asuWLfrnP/+pHTt2BCoiAOAaASmJ0tJSFRYWKiUlRZKUkpKiwsJClZWV1RoXEhKiS5cuqbq6WlVVVfr6668VExMTiIgAgHoEpCTcbrdiYmJkt9slSXa7XdHR0XK73bXGzZgxQ0VFRRo4cGDNvzvuuCMQEQEA9WhVO/u3bdumPn366LXXXtOlS5eUnp6ubdu2afjw4T4/h8MR5seE/hUVFR7sCJbG+rM+q7+HVs9fn4CUhNPpVHFxsTwej+x2uzwej0pKSuR0OmuNy8nJ0aJFi2Sz2RQeHq4hQ4bowIEDTSqJ0tJKVVd7W/ol+F1UVLjOnbsY7BiWZfX1dyP+cmkOq7+HVsxvs4U0+Md1QHY3ORwOJSQkKC8vT5KUl5enhIQERUZG1hoXFxenv/3tb5Kkqqoq7du3T9///vcDEREAUI+AfbopMzNTOTk5Sk5OVk5OjrKysiRJ6enpOnr0qCTpmWee0QcffKD77rtPqampio+P14MPPhioiACAawTsmETv3r2Vm5tbZ/maNWtqvu7Zs6fWr18fqEgAgEZwxjUAwIiSAAAYURIAACNKAgBgREkAAIwoCQCAESUBADCiJAAARpQEAMCIkgAAGFESAAAjSgIAYERJAACMKAkAgBElAQAwoiQAAEaUBADAiJIAABhREgAAI0oCAGBESQAAjCgJAIARJQEAMPK5JMrLy/2ZAwDQCvlcEnfffbemT5+ubdu2qaqqyp+ZAACthM8lsWvXLg0YMEBr1qzRwIEDNXfuXB0+fNif2QAAQeZzSURGRmrChAl666239MYbbygyMlKzZ8/W0KFDtWTJEp0+fdqfOQEAQdCsA9fnz5/X+fPndenSJfXs2VPFxcUaNWqUVq9e3dL5AABB1MbXgSdOnNCWLVuUl5enDh06KDU1VZs3b1ZsbKwkacaMGbr//vs1depUv4UFAASWzyUxfvx4jRw5UkuWLNFtt91W5/txcXGaOHFii4YDAASXzyWxbNky3XnnnXWWHzlypKY0nnzyyZZLBgAIOp+PSUybNq3e5VOmTGmxMACA1qXRLYnq6mp5vd5a//7n5MmTstvtPk1UVFSkOXPmqKKiQhEREcrOzlZ8fHydcfn5+Vq5cqW8Xq9CQkK0fv16devWzfdXBABoMY2WxC233KKQkJCar7/JZrPp0Ucf9WmijIwMpaWlyeVyafPmzZo3b542bNhQa8zRo0e1bNkyvfbaa4qKitLFixcVGhrq62sBALSwRkti586d8nq9evjhh5WTk1OzPCQkRJGRkWrfvn2jk5SWlqqwsFDr16+XJKWkpGjBggUqKytTZGRkzbhXX31VkydPVlRUlCQpPDy8yS8IANByGi2JHj16SJJ2797d7EncbrdiYmJqdk3Z7XZFR0fL7XbXKomPP/5YcXFxeuihh/Tll19q2LBhmj59es2WDAAgsBosiblz52rBggWSpNmzZxvHLV68uEXCeDweHT9+XOvXr1dVVZWmTJmi7t27KzU11efncDjCWiRLMERFseV0PVh/1mf199Dq+evTYEnExcXVfN2zZ89mT+J0OlVcXCyPxyO73S6Px6OSkhI5nc5a47p3767hw4crNDRUoaGhGjp0qI4cOdKkkigtrVR1tbfxga1MVFS4zp27GOwYlmX19Xcj/nJpDqu/h1bMb7OFNPjHdYMl8c2Pvc6cObPZIRwOhxISEpSXlyeXy6W8vDwlJCTU2tUkXT1W8de//lUul0tXrlzR/v37lZyc3Ox5AQDXp8GS2Ldvn09PMmDAgEbHZGZmas6cOVqxYoU6d+6s7OxsSVJ6erqeeOIJ9e3bVyNHjtRHH32kESNGyGazaeDAgRo9erRPGQAALS/E+80TH64xZMiQxp8gJEQ7d+5s0VDXg91N305WX39RUeG67/82BztGUG190WX599CK+a9rd9OuXbtaPBAAwDq4xzUAwKjBLYl7771X7777riTpZz/7mfF8hT179rR4MABA8DVYEv87R0KSfvOb3/g9DACgdWmwJBITE2u+vuuuu/weBgDQuvh8P4mqqiqtXLlS77zzjkpKShQdHa0RI0Zo+vTpateunT8zAgCCxOeSyMzMVFFRkZ599ln16NFDp0+f1u9+9zsVFxfrhRde8GdGAECQ+FwSO3fu1F/+8hd17txZkvS9731P/fr10z333OO3cACA4PL5I7DdunXTV199VWvZ5cuXay7rDQC48fh8WQ6Xy6UpU6bo4YcfVkxMjM6ePavXX39dLpfL7yEBAMHRYEk8++yzdZatWrWq1uM333xTU6dObdlUAIBWgctyAACMuCwHAMDI5083VVZWaunSpTp06JDKy8v1zYvHclkOALgx+bwlkZmZqcLCQs2YMUMVFRV67rnn5HQ69cgjj/gxHgAgmHzekti7d6/y8/PVtWtX2e12JSUlqW/fvnr00UcpCgC4Qfm8JVFdXa3w8Kv34e3YsaMuXryoqKgoffbZZ34LBwAILp+3JG6++WYdOnRIAwYMUGJiojIzM9WpUyfFx8f7MR4AIJh83pJYuHChevToIenq+RPt2rXThQsXtHjxYr+FAwAEl89bEjfddFPN1w6HQ4sWLfJLIABA6+FzSUjSn//85zqXCh89erTxjnUAAGvzuSQWL16snTt3auLEiTWXCl+3bp2Kioo0e/Zsf2YEAASJzyWxceNGbdy4UbGxsTXL7r77bo0aNYqSAIAblM8Hrjt16qROnTrVWRYWFtbioQAArUODWxKff/55zdcTJ07UzJkzNXXqVMXGxsrtdmvt2rWcSAcAN7AGS2LYsGEKCQmpdZ2mAwcO1Bqzf/9+jR8/3j/pAABB1WBJHDt2LFA5AACtUJM+AitJZ86cUXFxsWJjY+V0Ov2RCQDQSvhcEiUlJXrqqaf097//XREREaqoqFC/fv300ksvKSYmxp8ZAQBB0qRLhd988806ePCg3n//fR08eFAJCQnKyMjwZz4AQBD5vCXxwQcfaMmSJWrbtq2kq1eCnT17tgYNGuS3cACA4PJ5S6JLly76+OOPay375JNP1Llz5xYPBQBoHXzekpgyZYoeeeQRjR49Wt27d9eZM2f09ttv68knn/RnPgBAEPm8JfHggw/q5ZdfVnl5uXbv3q3y8nK9+OKLGjt2rE8/X1RUpLFjxyo5OVljx47Vp59+ahz7ySefqF+/fsrOzvY1HgDAD3zakvB4PEpOTlZ+fr4GDBjQrIkyMjKUlpYml8ulzZs3a968edqwYUO9c2VkZCgpKalZ8wAAWo5PWxJ2u112u12XL19u1iSlpaUqLCxUSkqKJCklJUWFhYUqKyurM3b16tUaPHgwd7wDgFbA52MSEyZM0C9+8QtNmzZNsbGxte4h8c0bEtXH7XYrJiZGdrtd0tXSiY6OltvtVmRkZM24Y8eO6f3339eGDRu0YsWKpr4WSZLDYd0LDkZFhQc7gqWx/qzP6u+h1fPXx+eSWLBggSRp7969tZaHhIToX//613UH+frrrzV37ly98MILNWXSHKWllaqu9jY+sJWJigrXuXMXgx3Dsqy+/m7EXy7NYfX30Ir5bbaQBv+4brQkvvrqK61cuVKDBw/WLbfcomnTpqldu3ZNCuF0OlVcXCyPxyO73S6Px6OSkpJal/U4d+6cTp48qalTp0qSLly4IK/Xq8rKypqCAgAEVqMlMX/+fH300UcaNGiQduzYoS+++EJz585t0iQOh0MJCQnKy8uTy+VSXl6eEhISau1q6t69e60rzC5dulRffvmlnn766SbNBQBoOY0euH7vvfe0du1azZ49W2vWrNHu3bubNVFmZqZycnKUnJysnJwcZWVlSZLS09N19OjRZj0nAMC/Gt2S+PLLLxUdHS3p6m6jysrKZk3Uu3dv5ebm1lm+Zs2aesc//vjjzZoHANByGi0Jj8ej/fv319x46MqVK7UeS2r2uRMAgNat0ZJwOBx65plnah5HRETUehwSEqKdO3f6Jx0AIKgaLYldu3YFIgcAoBXy+dpNAIBvH0oCAGBESQAAjCgJAIARJQEAMKIkAABGlAQAwIiSAAAYURIAACNKAgBgREkAAIwoCQCAESUBADCiJAAARpQEAMCIkgAAGFESAAAjSgIAYERJAACMKAkAgBElAQAwoiQAAEaUBADAiJIAABhREgAAI0oCAGBESQAAjCgJAIARJQEAMGoTqImKioo0Z84cVVRUKCIiQtnZ2YqPj681Zvny5crPz5fNZlPbtm01a9YsDRo0KFARAQDXCFhJZGRkKC0tTS6XS5s3b9a8efO0YcOGWmNuu+02TZ48WR06dNCxY8c0fvx4vf/++2rfvn2gYgIAviEgu5tKS0tVWFiolJQUSVJKSooKCwtVVlZWa9ygQYPUoUMHSVKfPn3k9XpVUVERiIgAgHoEpCTcbrdiYmJkt9slSXa7XdHR0XK73caf2bRpk3r27KnY2NhARAQA1CNgu5ua4uDBg1qyZInWrVvX5J91OML8kCgwoqLCgx3B0lh/1mf199Dq+esTkJJwOp0qLi6Wx+OR3W6Xx+NRSUmJnE5nnbEffvihfvWrX2nFihXq1atXk+cqLa1UdbW3JWIHVFRUuM6duxjsGJZl9fV3I/5yaQ6rv4dWzG+zhTT4x3VAdjc5HA4lJCQoLy9PkpSXl6eEhARFRkbWGnfkyBHNmjVLv/3tb3XrrbcGIhoAoAEBO08iMzNTOTk5Sk5OVk5OjrKysiRJ6enpOnr0qCQpKytL//nPfzRv3jy5XC65XC4dP348UBEBANcI2DGJ3r17Kzc3t87yNWvW1Hz91ltvBSoOAMAHnHENADCiJAAARpQEAMCIkgAAGFESAAAjSgIAYERJAACMKAkAgBElAQAwoiQAAEaUBADAiJIAABhREgAAI0oCAGBESQAAjCgJAIARJQEAMKIkAABGlAQAwIiSAAAYURIAACNKAgBgREkAAIwoCQCAESUBADCiJAAARpQEAMCIkgAAGFESAAAjSgIAYERJAACMKAkAgBElAQAwClhJFBUVaezYsUpOTtbYsWP16aef1hnj8XiUlZWlpKQkDRs2TLm5uYGKBwCoR8BKIiMjQ2lpadq+fbvS0tI0b968OmO2bt2qkydPaseOHXrzzTe1dOlSnTp1KlARAQDXaBOISUpLS1VYWKj169dLklJSUrRgwQKVlZUpMjKyZlx+fr7GjBkjm82myMhIJSUladu2bZoyZYrPc9lsIS2eP1CsnL01sPr6i+7aIdgRgs7q76EV8zeWOSAl4Xa7FRMTI7vdLkmy2+2Kjo6W2+2uVRJut1vdu3eveex0OnX27NkmzdW1a6eWCR0EDkdYsCNYmtXX39rn7gl2hKCz+nto9fz14cA1AMAoICXhdDpVXFwsj8cj6eoB6pKSEjmdzjrjzpw5U/PY7XYrNjY2EBEBAPUISEk4HA4lJCQoLy9PkpSXl6eEhIRau5okafjw4crNzVV1dbXKyspUUFCg5OTkQEQEANQjxOv1egMx0ccff6w5c+bowoUL6ty5s7Kzs9WrVy+lp6friSeeUN++feXxeDR//nzt3btXkpSenq6xY8cGIh4AoB4BKwkAgPVw4BoAYERJAACMKAkAgBElAQAwCsgZ12hYUVGR5syZo4qKCkVERCg7O1vx8fHBjmUJ2dnZ2r59u06fPq2tW7fqBz/4QbAjWUp5eblmz56tkydPKjQ0VN/5znc0f/78Oh9Ph9mMGTN06tQp2Ww2dezYUXPnzlVCQkKwY7UYPt3UCkyYMEEPPPCAXC6XNm/erLfeeksbNmwIdixLOHz4sHr06KGHHnpIq1atoiSaqKKiQsePH1f//v0lXS3dL774QosWLQpyMuu4ePGiwsPDJUkFBQVavny5Nm7cGORULYfdTUH2v4sfpqSkSLp68cPCwkKVlZUFOZk1JCYm1jlzH76LiIioKQhJ+tGPflTrqgdo3P8KQpIqKysVEmK9i/w1hN1NQebrxQ8Bf6uurtYf//hHDRkyJNhRLOfZZ5/V3r175fV69fvf/z7YcVoUWxIAJEkLFixQx44dNX78+GBHsZznn39ee/bs0axZs7R48eJgx2lRlESQ+XrxQ8CfsrOz9dlnn+mVV16RzcavheZKTU3VgQMHVF5eHuwoLYb/DUHm68UPAX956aWX9NFHH2n58uUKDQ0NdhxLuXTpktxud83jXbt2qUuXLoqIiAheqBbGp5taAdPFD9G4hQsXaseOHTp//ry6du2qiIgIvfPOO8GOZRknTpxQSkqK4uPj1b59e0lSXFycli9fHuRk1nD+/HnNmDFDX331lWw2m7p06aKnn35at956a7CjtRhKAgBgxO4mAIARJQEAMKIkAABGlAQAwIiSAAAYURJAgGzZskWTJ08OdgygSSgJ4L9+/vOfa8mSJXWWFxQU6Cc/+YmuXLni83OdOnVKffr0qfUz999/v9atW9ciWYFAoSSA/xo1apS2bNmia08d2rJli+677z61aePb9TCbUiZAa0dJAP+VlJSkiooKHT58uGbZF198od27dys1NVWrV69WUlKS+vfvryeffFIVFRWS/v9WQ25urgYPHqyJEyfWXCTvzjvv1O23364PP/xQb7/9tsaNG1fz3CdOnNCkSZN011136cc//rFWrVol6erVWE1zXb58Wb/85S/Vv39/JSYm6oEHHtD58+cDs4LwrURJAP/Vvn173Xvvvdq0aVPNsnfffVe9evXSgQMHVFBQoJycHL333nvq0qWL5s+fX+vnDx06pPz8fK1du1Y5OTk1yz788EPdfvvttcZWVlZq0qRJGjRokN577z3t2LFDAwYMkCT94Q9/MM61ceNGVVZWas+ePTpw4ICysrJqLqcB+AMlAXxDamqqtm/frsuXL0uSNm3apFGjRumNN97QrFmzFBsbq9DQUM2cOVPbt2+vtWvp8ccfV8eOHX36pb1nzx5169ZNkydPVrt27RQWFqZ+/fpJUoNztWnTRhUVFfrss89kt9v1wx/+UGFhYf5ZGYC46RBQS2Jiorp27aqCggL17dtXR48e1bJly/Tyyy/rscceq3UZbZvNptLS0prHsbGxPs/jdrvVs2fPer935swZ41wul0tnz57VU089pQsXLuj+++/XrFmz1LZt22a8WqBxlARwDZfLpU2bNqmoqEgDBw5Ut27dFBsbq0WLFumOO+6oM/7UqVOSVOu2lY3dwtLpdCo/P7/e7zU0lyTNnDlTM2fO1KlTpzR16lR997vf1ZgxY3x9eUCTsLsJuEZqaqr27dunP/3pT0pNTZUkjRs3Tq+88opOnz4tSSorK1NBQYHxOSIjI2Wz2fT555/X+/3Bgwfr3LlzevXVV1VVVaXKykr94x//aHSu/fv36/jx4/J4PAoLC1ObNm24SRD8ii0J4BpxcXG6/fbbdezYMQ0dOlSSNGHCBHm9Xk2ePFklJSVyOBwaMWKEkpKS6n2ODh066NFHH9W4ceN05cqVOvc9DgsL07p16/T888/X3Oxn4sSJ6tevX4NznT9/XhkZGSouLlbHjh01YsQIuVwuv68TfHtxPwkAgBHbqQAAI0oCAGBESQAAjCgJAIARJQEAMKIkAABGlAQAwIiSAAAYURIAAKP/BwlHmTZmbVAyAAAAAElFTkSuQmCC\n",
"text/plain": "<Figure size 432x288 with 1 Axes>"
},
"metadata": {}
}
],
"execution_count": 7,
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"Then we can easily visualize how our quantum-walker behaves in graph $C_n$ given an initial state and a time $t = \\pi/2$, and we can see the Perfect State Transfer phenomena from vertice 0 to 2, that will be explained in the detail [here](https://github.com/matheusmtta/Quantum-Computing/blob/master/Quantum%20Information%20Theory/State_Transfer.ipynb)."
],
"metadata": {}
}
],
"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.8.2"
},
"nteract": {
"version": "0.28.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

0 comments on commit 6cadd76

Please sign in to comment.