Skip to content

Instantly share code, notes, and snippets.

@IvanIsCoding
Created December 31, 2019 06:20
Show Gist options
  • Save IvanIsCoding/89356c91607ed73fec75f7b0db33cf25 to your computer and use it in GitHub Desktop.
Save IvanIsCoding/89356c91607ed73fec75f7b0db33cf25 to your computer and use it in GitHub Desktop.
Multiple qubit circuits in Qiskit
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Multiple Qubits\n",
"\n",
"A single qubit is represented by $ |\\psi\\rangle = \\begin{bmatrix}\\alpha \\\\ \\beta\\end{bmatrix}$, where $\\alpha, \\beta \\in \\mathbb{C}$ and $|\\alpha|^{2} + |\\beta|^{2} = 1$.\n",
"\n",
"A system of multiple qubits is represented by more states. More specifcially, a system of n qubits is represented by $2^{n}$ states i.e. a column matrix of $2^{n}$ entries.\n",
"\n",
"For example, for $n = 2$, the qubit can be seen as the superposition of $|00\\rangle$, $|01\\rangle$, $|10\\rangle$, and $|11\\rangle$:\n",
"\n",
"$$\n",
"|\\psi\\rangle = \\alpha|00\\rangle + \\beta|01\\rangle + \\gamma|10\\rangle + \\delta|11\\rangle\n",
"$$\n",
"\n",
"For some systems, we may describe it using the tensor product of a $ |\\psi\\rangle = \\begin{bmatrix}\\alpha \\\\ \\beta\\end{bmatrix}$ and another qubit $|\\phi\\rangle$:\n",
"\n",
"$$\n",
"|\\psi\\rangle \\otimes |\\phi\\rangle = \\begin{bmatrix}\\alpha|\\phi\\rangle \\\\ \\beta|\\phi\\rangle\\end{bmatrix}\n",
"$$\n",
"\n",
"Sometimes, $|\\psi\\rangle \\otimes |\\phi\\rangle $ is written as $|\\psi\\rangle|\\phi\\rangle $. Also, $|000\\rangle = |0\\rangle|0\\rangle|0\\rangle = |0\\rangle \\otimes |0\\rangle \\otimes |0\\rangle$ thus the base for system of many qubits is defined as the tensor product of single qubits.\n",
"\n",
"Notice that not all systems of n qubits can be described by tensor products: those that cannot are called entangled.\n",
"\n",
"# Multiple Qubit Gates\n",
"\n",
"Multiple qubit gates are gates that act on multiple qubit systems. They can interact with one or multiple qubits of the system. A gate that interacts with n qubits will have dimensions $2^{n} \\times 2^{n}$. Multiple qubit gates are still unitary, that is their still respect:\n",
"\n",
"$$\n",
"UU^{\\dagger} = I\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from qiskit import *\n",
"from qiskit.visualization import plot_histogram"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tensor Product\n",
"\n",
"When applying a gate for a single qubit $G$ to a system of multiple qubits, it can be seen as applying the gate of multiple qubits $G \\otimes I$.\n",
"\n",
"For example, the following circuit can be described by $U = X \\otimes Z$."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 216.72x144.48 with 1 Axes>"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(2)\n",
"circuit.x(0)\n",
"circuit.z(1)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 0.+0.j 1.+0.j 0.+0.j 0.+0.j]\n",
" [ 1.+0.j 0.+0.j 0.+0.j 0.+0.j]\n",
" [ 0.+0.j 0.+0.j 0.+0.j -1.+0.j]\n",
" [ 0.+0.j 0.+0.j -1.+0.j 0.+0.j]]\n"
]
}
],
"source": [
"unitary_simulator = Aer.get_backend(\"unitary_simulator\")\n",
"unitary = execute(circuit, backend=unitary_simulator).result().get_unitary()\n",
"print(unitary)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Controlled Not\n",
"\n",
"The Controlled NOT gate is a gate that applies the X gate conditionally to a qubit based on a control qubit.\n",
"\n",
"If the control qubit is $|0\\rangle$, then nothing happens to the target qubit. But if it is $|1\\rangle$ instead, then the Pauli-X gate is applied to the control qubit.\n",
"\n",
"Notice that the CNOT gate matrix cannot be expressed as the tensor product of $2\\times2$ matrices. Thus, it can be used to generate entangled states like the one we build below. The circuit creates:\n",
"\n",
"$$\n",
"|\\Psi^{+}\\rangle = \\frac{|01\\rangle + |10\\rangle}{\\sqrt 2} \n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 276.92x144.48 with 1 Axes>"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(2)\n",
"circuit.h(0)\n",
"circuit.x(1)\n",
"circuit.cx(0, 1)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0. +0.j 0.70710678+0.j 0.70710678+0.j 0. +0.j]\n"
]
}
],
"source": [
"state_simulator = Aer.get_backend(\"statevector_simulator\")\n",
"state_vector = execute(circuit, backend=state_simulator).result().get_statevector()\n",
"print(state_vector)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The same way we can apply $X$ conditionally, we can also apply any gate conditionally. The next circuit applies the $Z$ gate conditionally."
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAN8AAAB7CAYAAAD0dFXUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAJQElEQVR4nO3df0zU9x3H8dfd8XtYIpweEYVw8iN4elgOUsaMjGVTMDFxTubYhpFgsYBdJ2mW2QTX1exMlW1ujdFGV9hagyuEWZNRN7fBqaFZDkkx7I+d5PjRM+f1sMUViqeD2x+0111RBDnuDXxfj+T+ed8Z3gk8+Xw5uFPl9Xq9IKKgU0svQKRUjI9ICOMjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIhjI9ICOMjEhIivQDNzI/PyXzcEz+Q+bhKwJOPSAjjIxLC+IiEMD4iIYyPSAjjIxLC+IiEMD4iIYyPFpz/3gc8o8DEuPQm80tx8U1MTKCurg6pqamIiIhAZmYmLBYL0tPTUVFRIb1ewJw9sAo9bWf9Zl6vF6f2PYVe65+EtprekB24/keg/bfA1VOA5SRga5sMcSlS3J+XlZeXo6WlBbW1tTCZTOjo6EBJSQncbjdqamqk1wuIkY9uYXTYiRVJG/3mdz+04/69T6DTZwtt9mgDncDNdgCqL2bj94HB64Dr30B2CRAZI7Xd/FBUfI2NjWhoaEB7ezvy8/MBAAUFBejq6kJLSwuysrKENwwMl90KlVqDuNXr/eZDg92IitFhWdwaoc0e7j+3PwsPALxT7/eMAv96F8j+XjC3mn+Kuuw0m80oLCz0hfe5lJQUhIaGwmg0AgD6+/uRn5+PtLQ0bNiwAVevXpVY94m57FYsj09DSFiE39w92I2VyQvv1PvgffideFN4gWEHMOIO1kbBoZiTz+FwoKenBwcPHpxy3+DgIAwGA8LDwwEA+/fvx+7du1FVVYWOjg4UFxejr68PYWFh87KbSjXdV96kF956yJHwCC67FcOuXrz+nNZv/sAzguzthwK+21yde2kAK5cnPvZxP9xxAO90nJz3febK653Z50pR8QFAfHy833xsbAwWiwVFRUUAgKGhIVy7dg0XL14EAOTl5WHVqlVoa2vD1q1bg7v0E3L1deKZnS8jY9Mev/m5QxugW4Ann1qtCejjFgvFXHZqtZOngM1m85sfO3YMTqcTJpMJwOQpqNPpfKcgACQnJ2NgYGDedvN6vY+9zdTw7V54Rj9GknErlsWt9t3GH9yD59Nh6PQ5Ad9trrcMU8L0l52feaPxN0HZZ663mVLMyafX62E0GmE2mxEbG4uEhAQ0NzejtbUVAHzxLXYuuxUh4VFYkZjpN3fe7EB03BpExawU2uzRVm8E3L3TPEAFfCUWiEkI2kpBoZiTT61Wo6mpCQaDAZWVlSgrK4NWq0V1dTU0Go3vyZbExES4XC54PB7fv+3r60NSUpLU6rPisluhS86BWuP/fdXZ+96CvOQEgNgkICHzEXeqALUGMBQBQfjxM6hU3tmck0tQaWkpuru7cePGDd9sy5Yt2LFjh+8Jl127dqG/v3/ennCZiaX+NhJeL/BBFzBgBTwjX8zjkoGUzcCyFcHZI5gUc9n5KJ2dncjNzfWbnT59Gnv37sWJEycQFhaGxsZG0fCUQKUCEk3AmqeBv/9qcrapAoh4Snav+aTo+EZGRmCz2VBVVeU31+v1uHLlitBWyqb6vx+ElnJ4gMLji46Oxvj4Ev/rXVqwFPOEC9FCw/iIhDA+IiGMj0gI4yMSwviIhDA+IiGK/j3fYsL/LWjp4clHJITxEQlhfERCGB+REMZHJITxEQlhfERCGB+REMZHJITxEQlhfERCGB+REMZHJITxEQlhfERCFP928YvFYn27+L/VBWaP2fjmi8H/mE+CJx+REMZHJITxEQlhfERCGB+REMZHJITxEQlhfERCFBffxMQE6urqkJqaioiICGRmZsJisSA9PR0VFRXS65GCKO4dq8vLy9HS0oLa2lqYTCZ0dHSgpKQEbrcbNTU10usFzNkDq5D7nVewvmCfb+b1enH62Rh8a//vkZLzbcHtHu6StR4nLzw/ZX7/wRgA4MKRu4gMjw72WvNGUfE1NjaioaEB7e3tyM/PBwAUFBSgq6sLLS0tyMrKEt4wMEY+uoXRYSdWJG30m9/90I779z6BTp8ttNn0CnPKUJhT5jezdL+NV8/vwY92nlpS4QEKu+w0m80oLCz0hfe5lJQUhIaGwmg0AgAOHz6MtLQ0qNVqNDc3S6w6Jy67FSq1BnGr1/vNhwa7ERWjw7K4NUKbzc7l62/i1fN78OJ335gS5VKgmPgcDgd6enpQXFw85b7BwUEYDAaEh4cDAAoLC3Hp0iVs3rw52GsGhMtuxfL4NISERfjN3YPdWJm8ME+9L2v95xn8uvlZHCo5h288/X3pdeaFYi47HQ4HACA+Pt5vPjY2BovFgqKiIt8sLy8vqLupVKrHPuaFt2b+4hOX3YphVy9ef07rN3/gGUH29kMB3206l4/P/kUzF669hjN//glqS5vw1XXbZ/3v57rzXM30hUKKiU+rnfxCtNls2LZtm29+7NgxOJ1OmEwmqdUCztXXiWd2voyMTXv85ucObYBugZ98b7cfxx/++jP8fO87yE7fIr3OvFJMfHq9HkajEWazGbGxsUhISEBzczNaW1sBQDS+mXynnOnr+YZv98Iz+jGSjFuxLG61//zTYej0OQHfbTqzeT3fm5dfQZPlOH5R3orMtV9/4o+5WF6iqpif+dRqNZqammAwGFBZWYmysjJotVpUV1dDo9H4nmxZ7Fx2K0LCo7AiMdNv7rzZgei4NYiKWSm02fR+9+5LaL7ySxzd95c5hbeYKObkA4C0tDS0tbX5zUpLS7Fu3TpERkYKbRVYLrsVuuQcqDX+n1pn73sL9pKz99b7OP+Po9CoQ/DTM1MvNXd87XmUbzsqsNn8UvzbSGRkZCA3Nxf19fW+WW1tLerr6+F2uxEdHY3IyEhYLBasXbtWbE++jcTM8W0kFoGRkRHYbLYpv1w/cuQIHA4HPB4P7ty5A4fDIRoeLU2Kuuz8sujoaIyPj0uvQQql6JOPSBLjIxLC+IiEMD4iIYyPSAjjIxLC+IiEKP4vXIik8OQjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIhjI9ICOMjEsL4iIQwPiIh/wNHoUjQoAlnKQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 276.92x144.48 with 1 Axes>"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(2)\n",
"circuit.h(0)\n",
"circuit.h(1)\n",
"circuit.cz(0, 1)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.5+0.j 0.5+0.j 0.5+0.j -0.5+0.j]\n"
]
}
],
"source": [
"state_vector = execute(circuit, backend=state_simulator).result().get_statevector()\n",
"print(state_vector)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Toffoli Gate\n",
"\n",
"The Toffoli gate is used to calculate the logical AND of classical computers on quantum circuits.\n",
"\n",
"Because the gate would not be unitary with two qubits, a third working qubit is needed. The next circuit exemplifies that idea:"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 457.52x264.88 with 1 Axes>"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(3, 3)\n",
"circuit.h([0, 1])\n",
"circuit.ccx(0, 1, 2)\n",
"circuit.measure([0, 1, 2], [0, 1, 2])\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAFDCAYAAABY/1W1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deZgdZZn38e9NAigGJGyRbIQmDAOJhIRWEEOCIDjiC+Ng2MRBRFkEQQZFdF5kZBRlXhFh1IACoywDIiqLC4uIJIIRTAJRAiZIFtlMyIIskpX7/aNOx07TndRJus853f39XFdf9nmqTuU+lKd/VU899VRkJpIkaf02qXcBkiR1F4amJEklGZqSJJVkaEqSVJKhKUlSSYamJEkl9a13AfW03Xbb5bBhw+pdhiSpgUybNm1RZm7f3rJeHZrDhg1j6tSp9S5DktRAImJ+R8vsnpUkqSRDU5KkkgxNSZJKMjQlSSrJ0JQkqSRDU5KkkgxNSZJKMjQlSSrJ0JQkqSRDU5KkkgxNSZJKMjQlSSrJ0JQkqSRDU5KkkgxNSZJKMjQlSSrJ0JQkqSRDU5KkkgxNSZJKMjQlSSrJ0JQkqSRDU5KkkgxNSQ3tzjvvZLfddmP48OFcdNFFr1t+ySWXsMcee7Dnnnty0EEHMX/+/DXL+vTpw1577cVee+3F4Ycfvqb9uOOOY7fddmPkyJGceOKJrFy5siafRd2foSmpYa1evZrTTz+dO+64g8cee4wbb7yRxx57bK11Ro8ezdSpU/n973/PhAkT+MxnPrNm2Rvf+EYeeeQRHnnkEW6//fY17ccddxx//OMf+cMf/sCrr77KVVddVbPPpO7N0KyTrjh6njt3Lvvssw/Dhw/n6KOPZsWKFTX5LD2F+6TxPPTQQwwfPpympiY222wzjjnmGG677ba11nnXu97FFltsAcC+++7L008/vd7tHnrooUQEEcHb3/72Uu/R323MdwXgxRdfZPDgwXziE59Y03bTTTex5557MmLECM4999wu/wwbLDN77c/ee++d9bBq1apsamrKJ598MpcvX5577rlnzpw5c6117r333nzllVcyM3PixIl51FFHrVn2pje9qd3tHnnkkXnjjTdmZuYpp5ySEydO7KJP0PO4TxrTzTffnB/96EfXvL722mvz9NNP73D9008/Pb/4xS+ued2nT5/ce++9c5999slbbrnldeuvWLEiR48enZMnT+7cwnuwjf2uZGaeeeaZeeyxx67Zl4sWLcohQ4bkwoULMzPz+OOPz3vuuacGn6Z9wNTsIDc806yDrjh6zkzuvfdeJkyYAMCHP/xhbr311q75AD2Q+6T7u/7665k6dSrnnHPOmrb58+czdepUbrjhBs466yyefPLJtd5z2mmnMW7cOPbff/9al9ttbex3Zdq0aSxYsIBDDjlkTducOXPYdddd2X777QF497vfzY9+9KMafJrqGZp18MwzzzBkyJA1rwcPHswzzzzT4fpXX301733ve9e8XrZsGc3Nzey7775r/ggvXryYrbfemr59+5baptbmPmlMgwYN4qmnnlrz+umnn2bQoEGvW++ee+7hwgsv5Pbbb2fzzTdf6/0ATU1NHHDAATz88MNrll1wwQU8//zzXHLJJV34CXqejfmuvPbaa3zqU5/i4osvXmud4cOHM2vWLObNm8eqVau49dZb19rvjaRvvQvQurUcPU+aNGlN2/z58xk0aBBz5szhwAMP5K1vfStvfvOb61hl7+I+qZ23ve1tPPHEE8ydO5dBgwbx/e9/nxtuuGGtdR5++GFOOeUU7rzzTnbYYYc17UuXLmWLLbZg8803Z9GiRTzwwANrBgldddVV3HXXXfzyl79kk008d+gqbb8rEydO5NBDD2Xw4MFrrde/f38uv/xyjj76aDbZZBP222+/1/UKNApDsw6qPXqeNGnSeo+eP/CBD/DCCy+watUq+vbt2+E21T73SWPq27cv3/zmN3nPe97D6tWrOfHEExkxYgTnn38+zc3NHH744Zxzzjm8/PLLHHnkkQAMHTqU22+/nccff5xTTjmFTTbZhNdee43Pfvaz7LHHHgCceuqp7LTTTrzjHe8A4IgjjuD888+v2+fsTjbmuzJlyhR+/etfM3HiRF5++WVWrFhBv379uOiiizjssMM47LDDAPjOd75Dnz59avOBqtXRxc7e8FOvgUArV67MnXfeOefMmbPmQvqjjz661jrTp0/PpqamnD179lrtS5YsyWXLlmVm5vPPP5/Dhw9fcxF+woQJaw06+da3vlWDT9MzuE+kcjbmu9Lad7/73bUGdS1YsCAzi+/TqFGjctasWV3zAUpgHQOB6h5c9fypV2hmZv7sZz/LXXfdNZuamvJLX/pS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\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simulator = Aer.get_backend(\"qasm_simulator\")\n",
"counts = execute(circuit, backend=simulator, shots=2**16).result().get_counts()\n",
"plot_histogram(counts)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Reversible Computing\n",
"\n",
"The inverse of the Toffoli gate is the Toffoli gate, and the inverse of the CNOT gate is the CNOT gate.\n",
"\n",
"Thus, if applied twice to the same target qubit, they do no change. The circuit belows exploits that ideas, in which the Toffoli cancels with the Toffoli, the CNOT cancels with the CNOT and the $X$ cancels with the $X$. Hence, we expect the measurements to be always 0 for all qubits."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 577.92x264.88 with 1 Axes>"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(3, 3)\n",
"circuit.x(0)\n",
"circuit.cx(0, 1)\n",
"circuit.ccx(0, 1, 2)\n",
"circuit.ccx(0, 1, 2)\n",
"circuit.cx(0, 1)\n",
"circuit.x(0)\n",
"circuit.measure([0, 1, 2], [0, 1, 2])\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"counts = execute(circuit, backend=simulator, shots=2**16).result().get_counts()\n",
"plot_histogram(counts)"
]
}
],
"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.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment