Skip to content

Instantly share code, notes, and snippets.

@marekyggdrasil
Last active November 8, 2019 07:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marekyggdrasil/f77a984e99adb6e06ce1d74cbce4515f to your computer and use it in GitHub Desktop.
Save marekyggdrasil/f77a984e99adb6e06ce1d74cbce4515f to your computer and use it in GitHub Desktop.
PHYS-GA-2023 HW3
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PHYS-GA-2023 HW3 - P5 - Marek Narozniak\n",
"\n",
"Problems 1-4 have been submitted in a form of PDF document. This notebook is submission of problem 5.\n",
"\n",
"To complete this homework I am going to be using following dependencies."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"import qiskit \n",
"from qiskit.tools.visualization import plot_histogram\n",
"from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n",
"from qiskit import Aer, execute\n",
"\n",
"import itertools\n",
"backend = qiskit.BasicAer.get_backend('qasm_simulator')\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A superdense coding circuit consists of two qubits, but let us setup a function creating $N$ quantum registers and $N$ classical registers."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def makeCircuit(N):\n",
" q = QuantumRegister(2)\n",
" c = ClassicalRegister(2)\n",
" qc = QuantumCircuit(q, c)\n",
" return q, c, qc"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And a function that builds `superdense coding` circuit and its diagram."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def superDenseCoding(b1, b2, shots=1024):\n",
" q, c, qc = makeCircuit(2)\n",
" # prepare share entangled state\n",
" qc.h(q[0])\n",
" qc.cx(q[0], q[1])\n",
" # superdense coding operation depend on sended binary bits\n",
" # this part of the circuit is classically controlled\n",
" if b1: qc.x(q[0])\n",
" if b2: qc.z(q[0])\n",
" # suppose q0 register is sent to receiver\n",
" # decode the transfered information by the receiver\n",
" qc.cx(q[0], q[1])\n",
" qc.h(q[0])\n",
" # measurement\n",
" qc.measure(q, c)\n",
" # build diagram for visualisation\n",
" diagram = qc.draw(output=\"mpl\")\n",
" # perform simulation and extract counts\n",
" job = qiskit.execute(qc, backend, shots=shots)\n",
" result = job.result()\n",
" counts = result.get_counts()\n",
" comb = [\"\".join(seq) for seq in itertools.product(\"01\", repeat=2)]\n",
" for key in comb:\n",
" if key not in counts.keys(): \n",
" counts[key] = 0\n",
" # return everything\n",
" return qc, diagram, counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Testing\n",
"\n",
"Now we are going to perform a test for all the outcomes - we will send all four possible combinations of two classical bits from Alice to Bob by transfering a single quantum register $q_0$.\n",
"\n",
"### Sending 00\n",
"\n",
"Build and simulate the circuit that transfers $00$ to Bob."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"qc, diagram, counts = superDenseCoding(0, 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Visualize the circuit diagram."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 468.356x204.68 with 1 Axes>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diagram"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the histogram of counts for all measured outcomes on Bob's side."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot_histogram(counts)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see, $100$% of times Bob measured configuration $00$, so $00$ was successfully transfered from Alice to Bob."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sending 01\n",
"\n",
"Build and simulate the circuit that transfers $01$ to Bob."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"qc, diagram, counts = superDenseCoding(0, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Visualize the circuit diagram."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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+yJGyLOfZOrst4wuw2NvvL/K6BI8NvOFCTV6nbrsfjZnzhwAZs6cGTDfRkREzER7SD/btGkTN998M127djW6lCrV9NtHRa5cKWH2mx9yU/OmTBg91Ktti5hBaWlpnfuiWRdrri0FEnDu3DkKCwuvXnDU7HzVZXeh8CefdweKSP2nLrtaKDsV69QpDXUWETGK9pCAiIgIYmNjOXDgAJs3b2bgwIFu8w8dOkSnTp0Mqq48b3bZfZa1j4//sYPxox+kY/sor7UrIuIpXanhZ8uWLeORRx4hKCiI4cOH07FjR06dOsWOHTtISEhg5cqVV5d9++232b59OwB79+7lyy+/pHfv3sTFxQGu+6iMGzfOkJ/DEyUOB7PmL9GxIxExBQXSNTZu3Mirr77Krl27KC4uJjIykttvv53JkyfTp0+fq8s9/vjjvPfeexW2k56eXmcutppnP0lwUJCpLjQpIoFJgSQiIqagQQ0iImIKCiQRETEFBZKIiJiCAklERExBgSQiIqagQBIREVNQIImIiCkokERExBQUSCIiYgoKJBERMQUFkoiImIICSURETEGBJCIipqBAEhERU1AgiYiIKSiQRETEFBRIIiJiCgokERExBQWSiIiYggJJRERMQYEkIiKmoEASERFTUCCJiIgpKJBERMQUFEgiImIKCiQRETEFBZKIiJiCAklERExBgSQiIqagQBIREVNQIImIiCn8f/rdGDz3n0lJAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 528.556x204.68 with 1 Axes>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diagram"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the histogram of counts for all measured outcomes on Bob's side."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot_histogram(counts)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see, $100$% of times Bob measured configuration $01$, so $01$ was successfully transfered from Alice to Bob."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sending 10\n",
"\n",
"Build and simulate the circuit that transfers $10$ to Bob."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"qc, diagram, counts = superDenseCoding(1, 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Visualize the circuit diagram."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 528.556x204.68 with 1 Axes>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diagram"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the histogram of counts for all measured outcomes on Bob's side."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot_histogram(counts)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see, $100$% of times Bob measured configuration $10$, so $10$ was successfully transfered from Alice to Bob."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sending 11\n",
"\n",
"Build and simulate the circuit that transfers $11$ to Bob."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"qc, diagram, counts = superDenseCoding(1, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Visualize the circuit diagram."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdEAAACvCAYAAACinOSeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHaFJREFUeJzt3Xl4VOX99/H3zGRhSQyEsATCHkACJiwBJEIIBYUgyiKLgVIFLKFqiwI/qlZ9fB4te12qtS2C2irCTwKKWBahQmRRAavIpsgaEvYghMiWzMzzxxRkCEkmJzNzEubzuq65nJzlnu/gOfOZc8597rE4nU4nIiIiUmZWswsQERGprBSiIiIiBilERUREDFKIioiIGKQQFRERMUghKiIiYpBCVERExCCFqIiIiEEKUREREYMUoiIiIgYpREVERAxSiIqIiBikEBURETFIISoiImKQQlRERMQghaiIiIhBClERERGDFKIiIiIGKURFREQMUoiKiIgYpBAVERExSCEqIiJikEJURETEIIWoiIiIQQpRERERgxSiIiIiBilERUREDFKIioiIGKQQFRERMUghKiIiYlCQ2QWIbzw23/+v+fJI/79mRRCyeoXfX/PynanlWt+MmqH8dVdGZuyLUL790WKxeK+QMnA6naa8bnnoSFRERMQghaiIiIhBClERERGDFKIiIiIGKURFREQMUoiKiIgYpBAVERG/q1q1qtkleIXuExUREcNatGhBamoqHTt2pGnTpthsNn788Ue++eYbNm3axKpVq7Db7W7rJCYmsmzZMh588EFWrVplUuXeoRAtxpo1a5g2bRq7du3i9OnTREZG0rFjR/7whz/QtWtXs8uTaxT+d/8Msplbh1RMDgcUOiDYBiaNIXBTSkpK4rnnnuPOO++84fy7774bgOzsbF577TVefPFFCgoKSExMZPXq1dSoUYNf/vKXCtGbVW5uLgkJCYwfP546depw7NgxXnrpJZKTk8nMzCQpKcnsEgOa3QFf7IP138Oxs65pDSMhuRV0bApWfVgGvAMnYe1u2JENDidUD4WkWOhxK4RVMbu6yiskJITp06czYcIErFYr58+fZ8mSJWzcuJHdu3dTUFBAdHQ0HTt2ZPDgwbRq1Yrp06czYsQIpk+fzuuvv06NGjXIyMhg9OjRZr+dcrM4K+M4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qFmzJikpKaxdu9ZwO2fPnqVGjRp07tyZL7/80osVFqXTuSIi3qfTuQZc+Q5x4kT5buk4cuQIAMHBweWuSUREKoeA751bs2ZNmjVrxu7du1mzZg29e/d2m//999/TqpXrZuFdu3bRpEkTqlWr5rbM+fPnmThxIgD9+vXzec1Gvi0VZ+PWHSz79yZ+ndaf5o3qe61dEZFAEPAhCjBt2jSGDx9OamoqAwYMoHnz5pw4cYJNmzYRFxfHBx98AMD777/Piy++SLdu3WjSpAm33HILOTk5rFixgtzcXLp3787jjz9u8rvxXKHdfvW+UAWoiEjZBfw10StWrVrFrFmz2LJlCxcvXqROnTp07tyZxx57jO7duwOwdetW5syZw6ZNm8jJySE/P5+IiAji4+O5//77GTNmjF9ucfGmg9nHCA4KokG9qNIXFhERNwpRERERgwK+Y5GIiIhRClERERGDFKIiIiIGKURFREQMUoiKiIgYpBAVERExSCEqIiJikEJURETEIIWoiIiIQQpRERERgxSiIiIiBilERUREDFKIioiIGKQQFRERMUghKiIiYpBCVERExCCFqIiIiEEKUREREYMUoiIiIgYpREVERAxSiIqIiBikEBURETFIISoiImKQQlRERMQghaiIiIhBClERERGDFKIiIiIGKURFREQMUoiKiIgYpBAVERExSCEqIiJi0P8HWaAznhOiTEoAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 588.756x204.68 with 1 Axes>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diagram"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the histogram of counts for all measured outcomes on Bob's side."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdAAAAE+CAYAAAA9E0HyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X+8VXWd7/HXJwQEA+UQA+dIQAQRv8Ij2JT9kEqbspmmrJuajVpTXitrysr03qbJ7tg8Bsv01jiV0+SPulbaj5lpcDTEyVJLRSR+ReARGORICAgMICB97h9r4+w5nsM5e3l+bDiv5+OxH2fvtb5r7c/iq+d91q/visxEkiTV5nl9XYAkSYcjA1SSpBIMUEmSSjBAJUkqwQCVJKkEA1SSpBIMUEmSSjBAJUkqwQCVJKkEA1SSpBKO6usC+tLIkSNz3LhxfV2GJKmOPPzww09k5qjO2vXrAB03bhwLFy7s6zIkSXWkoaFhXVfaeQhXkqQSDFBJkkowQCVJKsEAlSSpBANUkqQSDFBJkkowQCVJKsEAlSSpBANUkqQSDFBJkkowQCVJKsEAlSSpBANUkqQSDFBJkkowQCVJKsEAlSSpBANUkqQSDFBJkkowQCVJKsEAlSSpBANUkqQSDFBJkkowQCVJNbnooot4yUtewsknn9zu/Mzk0ksvZfbs2bz61a9myZIlz8y7+eabmTNnDnPmzOHmm29+ZvrDDz/Mq171KmbPns2ll15KZvb4djxXBqgkqSbvfve7ueWWWzqcv2DBAh555BEefPBBvvzlL/OJT3wCgG3btjFv3jx++tOfsmDBAubNm8eTTz4JwCc/+UmuvvpqHnzwQR555BEWLFjQK9vyXBigkqSanHzyyYwYMaLD+fPnz+ess84iIjjppJPYsWMHjz/+OAsXLmTu3LmMGDGC4447jrlz53LnnXfy+OOPs3PnTk466SQigrPOOov58+f34haVY4BKkrpVa2srxx9//DOfm5qaaG1tZePGjc+avnHjRlpbW2lqanpW+3pngEqSVIIBKknqVo2NjTz22GPPfN64cSONjY00NTU9a3pTUxONjY1s3LjxWe3rnQEqSepWb37zm/nud79LZvLAAw8wfPhwxowZw+tf/3ruuusunnzySZ588knuuusuXv/61zNmzBiGDRvGAw88QGby3e9+l9NPP72vN6NTR/V1AZKkw8v73/9+7rnnHrZs2cL06dO59NJLefrppwF473vfy2mnncZPf/pTZs+ezZAhQ/jqV78KwIgRI/jkJz/JG97wBgA+9alPPXMx0pVXXsmHP/xhnnrqKU499VROPfXUvtm4GsThcK9NT2lubs6FCxf2dRmSpDrS0NCwKDPndNbOQ7iSJJVggEqSVIIBKklSCQaoJEklGKCSJJVggEqSVIIBKklSCb0aoBHx2oj454h4LCIyIs7vwjIzI+JnEbGnstxnIyLatHlHRKyIiL2Vn2/vsY2QJIne3wN9PrAM+AtgT2eNI2I48FNgE3BSZblPARdXtXkl8D3gO8AJlZ+3RMQfdnfxkiQd1KtD+WXmfGA+QERc34VFzgGGAudl5h5gWUS8FLg4Iq7KYhiljwF3ZeYVlWWuiIjXVaaf3d3bIEkS1P850FcCP6+E50G3A03AhKo2d7RZ7nbg5B6vTpLUb9V7gI6hOHxbbVPVvEO1GYMkST2k3z2NJSIuAC6A4pl1Dz30EFA8AX3o0KGsWbMGgGOPPZaJEyeyePFiAAYMGMCsWbNYtWoVu3btAmDq1Kls3bqVTZuK/B47diyDBg2ipaUFKJ48MG7cOJYsWQLAwIEDmTlzJitXrmTPnmKnetq0aWzevJnNmzcDMH78eCKCtWvXAjBy5EgaGxtZtmwZAIMHD2b69OksX76cvXv3AjBjxgxaW1vZsmULABMmTCAzWbduHQCjRo1i1KhRrFixAoAhQ4YwdepUli5dyv79+wGYNWsW69evZ9u2bQBMnDiRffv2sWHDBgBGjx5NQ0MDK1euBOCYY45hypQpLFmyhAMHDgDQ3NxMS0sL27dvB2DSpEns3r37mef8NTY2Mnz4cFatWgXAsGHDmDx5MosXLyYziQiam5tZvXo1O3fuBGDKlCns2LHjmafT20/2k/3Uvf101e1TOVJ8+o/XdEs/dVWfPY0lIv4TuCgzrz9EmxuBkZn5lqppJwH3AxMz89GIWA98JTOvrGrzqcq6xx+qBp/GIqm/u+SGEX1dQreZd962blnPkfI0lvuA10TE0VXTTgM2Amur2pzWZrnTgHt7vDpJUr/V2/eBPj8iToiIEyrfPa7yeVxl/t9ExJ1Vi/w/YDdwfUTMiIgzgEuBg1fgAlwDvD4iLo2Il0bEZcDrgKt7bcMkSf1Ob++BzgEWV15DgMsr7z9fmd8IvPhg48zcTrE32QQ8CPwd8CXgqqo29wJnAecDvwbOBc7MzF/17KZIkvqz3r4P9N+BOMT889uZthR4bSfrvRW49TmWJ0lSl9X7OVBJkuqSASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklRCTQEaEe+KiDdWff5sRGyIiNsjorH7y5MkqT7Vugf6uYNvIuJE4H8B/xcYCHypKyuIiA9FxKMR8VRELIqI1xyi7fURke28dlW1mdtBm5fWuG2SJHXZUTW2Hw+sqrx/O/DjzJwXEXcAt3e2cEScCVwDfAj4ReXnbRExLTPXt7PIXwCXtpl2D3B3O22nA1urPm/urB5JksqqdQ/0KWBY5f0bgAWV99urph/KxcD1mXldZq7MzI8ArcAH22ucmdsz8/GDL+DFwETgunaa/666bWYeqGG7JEmqSa0B+nPgSxHxl8AcYH5l+kuA/zjUghExCJgN3NFm1h3AyV38/g8AyzPz3nbmPRgRrRFxZ0S8rovrkySplFoP4V4E/D3wTuDCzNxYmf5mOj+E+wJgALCpzfRNwKmdfXFEHAu8C7iszayDe7APAIOAPwPujIhTMvPn7aznAuACgMbGRh566CEAmpqaGDp0KGvWrAHg2GOPZeLEiSxevBiAAQMGMGvWLFatWsWuXcUp2KlTp7J161Y2bSo2aezYsQwaNIiWlhYARowYwbhx41iyZAkAAwcOZObMmaxcuZI9e/YAMG3aNDZv3szmzcUR5/HjxxMRrF27FoCRI0fS2NjIsmXLABg8eDDTp09n+fLl7N27F4AZM2bQ2trKli1bAJgwYQKZybp16wAYNWoUo0aNYsWKFQAMGTKEqVOnsnTpUvbv3w/ArFmzWL9+Pdu2bQNg4sSJ7Nu3jw0bNgAwevRoGhoaWLlyJQDHHHMMU6ZMYcmSJRw4UOzsNzc309LSwvbt2wGYNGkSu3fvZuPG4j+TxsZGhg8fzqpVxVmAYcOGMXnyZBYvXkxmEhE0NzezevVqdu7cCcCUKVPYsWMHra2t9pP9ZD/1QD/BCI4UW7Zs6ZZ+6qrIzG7ehA6+KKIJeAw4JTPvrpr+WeCczJzSyfIfprhQqSkzt3bSdj7wdGa+9VDtmpubc+HChV3dBEk64lxyw5EToPPO29Yt62loaFiUmXM6a1fzfaARcXREvDMiPh0Rx1WmvTgiGjpZ9AngADC6zfTRwONd+OoPAD/oLDwrfgVM7kI7SZJKqfU+0EnAb4CvAVcAB0Pzg8C8Qy2bmfuARcBpbWadBrR3TrP6e18OzKL9i4facwLFoV1JknpEredAr6a46OeDwJNV0/8Z+FYXlr8KuCki7qe4HeVCoIkikImIGwEy89w2y10ArM7Mf2+7woj4GLAWWE5xDvQ9wNuAd3RxmyRJqlmtAXoy8IrMPBAR1dPXUwThIWXm9yJiJPAZoBFYBpyemesqTca1XSYihgFnAZ/vYLWDgCuBscAeiiB9S2bO76C9JEnPWa0BCsWoQ22No7gXtFOZeS1wbQfz5rYzbSfw/EOsbx6dHD6WJKm71XoR0R0UgyEclBExHLgc+Nduq0qSpDpX6x7oxcBdEbEKOBr4HjCJ4l7Od3VzbZIk1a2aAjQzN0bECcDZwIkUe7DfAL6TmXt6oD5JkupSzedAK0H5j5WXJEn9UqcBGhFnAP+Smfsr7zuUmT/stsokSapjXdkDvRUYA/yu8r4jSTHWrSRJR7xOAzQzn9fee0mS+rNah/J7bUQ8K3QjYkBEvLb7ypIkqb7Vukd5F/81/m214yrzJEnqF2oN0KA419nWSGDXcy9HkqTDQ5duY4mIf668TeDbEbG3avYAYAadPFFFkqQjSVfvA91S+RnANopB2w/aB/yCrj9qTJKkw16XAjQz3wsQEWuBL2amh2slSf1arUP5Xd5ThUiSdDjpykhEvwZOycxtEbGU9i8iAiAzX9adxUmSVK+6sgf6A+DgRUOHGolIkqR+oysjEV3e3ntJkvozh+aTJKmErpwDPeR5z2qeA5Uk9RddfRqLJEmqUtM5UEmSVPAcqCRJJXgfqCRJJXgfqCRJJXgfqCRJJdQ0Fu5BEfFiYGrl48rMfKT7SpIkqf7VFKARMRL4JvBW4Pf/NTl+ArwvM7d0uLAkSUeQWq/C/QdgEvAa4OjK67XAi/B5oJKkfqTWQ7h/BLwhM++rmnZPRPxPYEH3lSVJUn2rdQ90M9Dew7R3Ax6+lST1G7UG6OeBqyPi+IMTKu+/VJknSVK/UGYw+RcBayPiscrn44GngD+gOEcqSdIRz8HkJUkqwcHkJUkqwcHkJUkqoaYAjYhBEXF5RPw2Ip6KiAPVr54qUpKkelPrHuj/Ac6juOr298CngL+juIXlQ91bmiRJ9avWAH0XcGFmfh04APxTZn4U+CvgtO4uTpKkelVrgI4GVlTe/ydwXOX9vwFv7K6iJEmqd7UG6HqgqfJ+DcXQfgCvBPZ0V1GSJNW7WgP0R8AbKu+vAS6PiEeB63EQBUlSP1LTYPKZeVnV+1sjYgNwMvDbzPxJdxcnSVK9KvVA7YMy85fAL7upFkmSDhs1D6QQESdGxI0R8WDldVNEnNgTxUmSVK9qHUjhHOABoBGYX3mNBu6PiPd0f3mSJNWnWg/hXgH8ZWZ+oXpiRFwG/DXw7e4qTJKkelbrIdxRwPfbmX4LxePMOhURH4qIRytDAS6KiNccou3ciMh2Xi9t0+4dEbEiIvZWfr69pq2SJKlGtQboXcDcdqbPBX7W2cIRcSbF7S9fAJqBe4HbImJcJ4tOpzhsfPC1umqdrwS+B3wHOKHy85aI+MPO6pEkqayuPFD7jKqPtwF/ExFz+K+rb18BnAF8rgvfdzFwfWZeV/n8kYh4E/BB4LKOF+N3mflEB/M+BtyVmVdUPl8REa+rTD+7CzVJklSzsg/UvqDyqvYV4NqOVhIRg4DZwBfbzLqD4l7SQ3kwIgZTDCP415l5V9W8V1a+u9rtwEWdrFOSpNK68kDt7npm6AuAAcCmNtM3Aad2sEwrxd7pA8Ag4M+AOyPilMz8eaXNmA7WOaa9FUbEM+Hf2NjIQw89BEBTUxNDhw5lzZo1ABx77LFMnDiRxYsXAzBgwABmzZrFqlWr2LVrFwBTp05l69atbNpUfP3YsWMZNGgQLS0tAIwYMYJx48axZMkSAAYOHMjMmTNZuXIle/YUIx9OmzaNzZs3s3nzZgDGjx9PRLB27VoARo4cSWNjI8uWLQNg8ODBTJ8+neXLl7N3714AZsyYQWtrK1u2bAFgwoQJZCbr1q0DYNSoUYwaNYoVK4phjIcMGcLUqVNZunQp+/fvB2DWrFmsX7+ebdu2ATBx4kT27dvHhg0bABg9ejQNDQ2sXLkSgGOOOYYpU6awZMkSDhwonmTX3NxMS0sL27dvB2DSpEns3r2bjRs3cvDfe/jw4axatQqAYcOGMXnyZBYvXkxmEhE0NzezevVqdu7cCcCUKVPYsWMHra2t9pP9ZD/1QD/BCI4UW7Zs6ZZ+6qrIzG7ehA6+KKIJeAw4JTPvrpr+WeCczJzSxfXMB57OzLdWPu8D3p+ZN1a1ORe4LjMHH2pdzc3NuXDhwto3RpKOEJfccOQE6LzztnXLehoaGhZl5pzO2pUZSOEtEXF3RDwREZsj4mcRcXoXFn2C4hFoo9tMHw08XkMJvwImV31+vBvWKUlSTWodSOH9FAPKPwJ8GrgUeBT4UUS871DLZuY+YBHPfm7oaRRX43bVCRSHdg+6rxvWKUlSTWodSOHTwMWZ+dWqad+MiEUUYfqPnSx/FXBTRNwP3ANcSPF4tK8BRMSNAJl5buXzx4C1wHKKc6DvAd4GvKNqndcAd0fEpcCPgbcDrwNeXeO2SZLUZbUG6DiKh2e3dRvPvrr2WTLzexExEvgMxf2cy4DTM3Nd1fqrDQKuBMZSPG90OfCWzJxftc57I+IsipGQPk+xd3xmZv6qlg2TJKkWtQboeorDo2vaTH8jsO7ZzZ8tM6+lg9tdMnNum8/zgHldWOettH+7jSRJPaLWAP0i8JXK01cOnmN8FcXtJR/pzsIkSapntT5Q++sR8TvgExSjDwGsBN6Vmf/U3cVJklSvuhygEXEUxaHauzPzRz1XkiRJ9a/Lt7Fk5tPAD4FhPVeOJEmHh1oHUlgCTOqJQiRJOpzUGqCfA74UEW+LiBdGREP1qwfqkySpLtV6Fe6/Vn7+EKgeRDcqnwd0R1GSJNW7WgP0dT1ShSRJh5kuBWhEDKUYEehtwEBgAfDRQzzkWpKkI1pXz4FeDpxPcQj3ZorRiP6+h2qSJKnudfUQ7hnAn2fmdwEi4jvAPRExIDMP9Fh1kiTVqa7ugb4Q+PnBD5l5P/A0xZNUJEnqd7oaoAOAfW2mPU3tFyFJknRE6GoABvDtiNhbNe1o4LqI2H1wQma+tTuLkySpXnU1QG9oZ9q3u7MQSZIOJ10K0Mx8b08XIknS4aTWofwkSRIGqCRJpRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgkGqCRJJRigkiSVYIBKklSCASpJUgm9HqAR8aGIeDQinoqIRRHxmkO0PSMi7oiIzRGxMyJ+FRFvbdPm/IjIdl5H9/zWSJL6q14N0Ig4E7gG+ALQDNwL3BYR4zpY5BRgIfCWSvv5wI/aCd3dQGP1KzOf6v4tkCSpcFQvf9/FwPWZeV3l80ci4k3AB4HL2jbOzL9oM+nyiHgL8Dbg5/+9aT7eEwVLktSeXtsDjYhBwGzgjjaz7gBOrmFVw4BtbaYNiYh1EbEhIn4SEc3PoVRJkjrVm4dwXwAMADa1mb4JGNOVFUTEh4GxwE1Vk1cB7wP+FDgbeAq4JyImP9eCJUnqSG8fwi0tIt4BXAmcmZnrDk7PzPuA+6ra3Qs8DHwE+Gg767kAuACgsbGRhx56CICmpiaGDh3KmjVrADj22GOZOHEiixcvBmDAgAHMmjWLVatWsWvXLgCmTp3K1q1b2bSp+Jtg7NixDBo0iJaWFgBGjBjBuHHjWLJkCQADBw5k5syZrFy5kj179gAwbdo0Nm/ezObNmwEYP348EcHatWsBGDlyJI2NjSxbtgyAwYMHM336dJYvX87evXsBmDFjBq2trWzZsgWACRMmkJmsW1f8M40aNYpRo0axYsUKAIYMGcLUqVNZunQp+/fvB2DWrFmsX7+ebduKnfuJEyeyb98+NmzYAMDo0aNpaGhg5cqVABxzzDFMmTKFJUuWcODAAQCam5tpaWlh+/btAEyaNIndu3ezceNGDv57Dx8+nFWrVgEwbNgwJk+ezOLFi8lMIoLm5mZWr17Nzp07AZgyZQo7duygtbXVfrKf7Kce6CcYwZFiy5Yt3dJPXRWZ2c2b0MEXFYdwdwNnZ+YtVdP/DpiRmaccYtl3AjcC52bmrV34rm8BYzLzzYdq19zcnAsXLuzqJkjSEeeSG46cAJ13Xtuze+U0NDQsysw5nbXrtUO4mbkPWASc1mbWaRRX47YrIt5Fccj2/C6GZwAvA1rLVytJ0qH19iHcq4CbIuJ+4B7gQqAJ+BpARNwIkJnnVj6fRRGenwTujoiD50r3ZebWSpu/An4JrAaGUxy2fRnFlb2SJPWIXg3QzPxeRIwEPkNxv+Yy4PSqc5pt7we9kKLGqyuvg34GzK28Pw74BsWFSNuBxcBrM/P+ntgGSZKgDy4iysxrgWs7mDf3UJ87WObjwMe7ozZJkrrKsXAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAlSSrBAJUkqQQDVJKkEgxQSZJKMEAPAwsWLODlL385s2fP5uqrr+7rcoR9Uq/sF/UmA7TOHThwgEsuuYTvf//73HffffzgBz/gN7/5TV+X1a/ZJ/XJflFvM0Dr3KJFi3jRi17EhAkTGDRoEGeccQa33XZbX5fVr9kn9cl+UW8zQOtca2srxx9//DOfm5qaaG1t7cOKZJ/UJ/tFvc0AlSSpBAO0zjU2NvLYY48983njxo00Njb2YUWyT+qT/aLe1usBGhEfiohHI+KpiFgUEa/ppP0plXZPRURLRFz4XNd5ODnxxBNpaWlh3bp17Nu3jx/+8Ie86U1v6uuy+jX7pD7ZL+ptR/Xml0XEmcA1wIeAX1R+3hYR0zJzfTvtXwTMB/4ReA/wauDaiNicmT8os87DzVFHHcW8efN45zvfyYEDBzjnnHOYOnVqX5fVr9kn9cl+UW+LzOy9L4v4FfDrzPxA1bTVwK2ZeVk77f8WOCMzJ1dN+wdgema+ssw6qzU3N+fChQuf62ZJ0mHrkhtG9HUJ3Wbeedu6ZT0NDQ2LMnNOZ+167RBuRAwCZgN3tJl1B3ByB4u9sp32twNzImJgyXVKkvSc9eYh3BcAA4BNbaZvAk7tYJkxwIJ22h9VWV/Uus6IuAC4oPLxPxsaGlZ1pfg68ALgib4uQs9iv9Qf+6Q+9Xi//MPHu21V47vSqFfPgdaDzPwG8I2+rqNWEfFgVw4pqHfZL/XHPqlPR2K/9GaAPgEcAEa3mT4aeLyDZR7voP3TlfVFiXVKkvSc9do50MzcBywCTmsz6zTg3g4Wu6+D9g9m5v6S65Qk6Tnr7UO4VwE3RcT9wD3AhUAT8DWAiLgRIDPPrbT/GnBRRFwNfB14FXA+cHZX13kEOewOO/cT9kv9sU/q0xHXL716GwsUgx4AlwCNwDLg45l5d2XevwNk5tyq9qcAXwamAxuBv83Mr3V1nZIk9YReD1BJko4EjoUrSVIJBqgkSSUYoJIklWCASjpiRERU/5R6khcR1bGIGAtMohgw4vfAqsx0gAipiw4GafqLTj3AAK1TEfFB4H3ALGAXsAbYAPwS+HFmroqI52Xm7/uwzH4nIoZk5p6+rkP/XUQ8D/hTYBQwFHgM+Flm/q5PC9MRzQCtQxExkiIwvwT8PcUvhVOBucBUiiD9eGauiIjwr+veEREjgCXAvwLfBu49+G9f3Q8R8VJgY2bu6LNi+5GIGAZ8E3gdxZGaDUACTwE/A27KzN/4/0rviYiBwIuAdZm5t6/r6SmeA61P7wZ+m5l/nZlbMvM3mfnVzHwn8D8p/sL+SUS8wF8Iveo9FOMszwbuBtZExOcjYkpVeL4QuJniyRPqHR8FpgCnZ+Zo4BzgamAp8EZgXkSM8v+VXvVhYDHwtYj4k4gYExEDqhtExPCIeHMlbA9LBmh92gcMi4gZABExuPLsUzLzFxS/IJ6i+OWg3vMy4FvAHwPNwPcphpVcERG/rDwq7z3A5Mxs6bsy+503ATdk5gMAlT84vw1cBHyC4qjNTX1YX390JnA/xTUcP6YY1/zKiHh1RBxbafNu4K8yc38f1ficGaD16VaKQ1Efi4hhmbk3M/dVzvOQmeuBJ4GxfVlkfxIRg4EVwH9k5u8y89eZeRkwB/ijyrzPAVcAf9tnhfYzEXEUxfCd74iIUZVpAyrXBxyoDOl5ITA2Imb1Za39RaUf9gPXZeZrKJ6t+U2KPzzvBhZGxKeBjwG/6rNCu4HnQOtM1eX3fwpcAzRQ7OlcS3FIZCzwWopzozMzc20flNkvVUJ0RGY+XjkcldUXcUXEXGAhMC4zN/RRmf1ORLwC+A7FH55XZeamNvNfCKwEpmTmY31QYr8SEY3AWcCKzLy9zbxm4P2V+SOAFx7OfWKA1qmIOA4YB5wMvJ3iSTRQPOc0KC6M+FzfVNf/HLwAJSImAruqf0lXzfsscH5mTuy7SvuXylGZ5wHvBb5A8YSpHwDfA9ZTHHb/Y2BaZp7UV3X2NxExhOIPzKeq78mtulbgCopz1s19VWN3MEDrSET8AfBnFOdtngD2UByq/QXF7SsDKc4p/Ftm/rav6uxvqvrlYuB3FA90bwVuAX6YmbsqvyQ+QHH17U/6rNh+rPJH5/kU59ZOAHZSXCvwAPA3mXlYHy483HR01XNEDAUeAr6VmYf16Q4DtI5ExPUUj237F2ArxeHbmcBLKH5xf8ZfAr2vg35pBl5KccvElZl5R58V2E9FxHBgZ/Uv6coe6dHA84EZFEcL/H+ml7TXJ+20OZriIqObM3NfrxXXAwzQOlHZg9lJcVjj7qpp44A/pDhvMBF4V2Y+1GeF9jOH6JexwCso9jqJZOe5AAAB1ElEQVTHA2fbL70rIr5OcaXn/RT3Gz7rvtuIGJGZ27wHtHd0sU+Oy8wne724HuBVuPVjGvAoxS0sQHG+IDPXZeb3gT+hOJz7P/qovv6qo375j8y8heL82k7sl14VEWdT/PHyJeCfKG6ROCMiJlXOvxERzwe+FREzDc+e10GfvD0iXlzVJ0OAGw7eone4cw+0TlT+w/oJxSAJ5wKPtB2mLyI+Avx5Zp7QByX2S/ZLfYqI64ADwDzgDOA84MXAKmA+cCfF4ArXZOagvqqzP+mPfeIeaJ2ojK/6v4EhwI3AuRHxwspf0QdPvJ9Ccc+beon9Un8q934+CjyZmS2Z+cXMnAmcRDF033kUt359BQdQ6BX9tU/cA60zlUMbfwm8lWIQ+fuAzRRj4bYC78/MpX1XYf9kv9SXyrjEoytj3A4C9re5mOhMiiEVT8zMh/uqzv6kP/aJAVqnKrdOvAV4G8Wl+MuAWzLzN31aWD9nv9SvyhW4kZkHIuIDFIcKh/Z1Xf3Zkd4nBuhhIHxsWV2yX+pXRFwMDMjMK/u6FhWOxD4xQCUdcSpP+DjgHzj140jsEwNUkqQSvApXkqQSDFBJkkowQCVJKsEAlSSpBANUkqQSDFBJkkr4/wuuEDr+d1RwAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot_histogram(counts)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see, $100$% of times Bob measured configuration $11$, so $11$ was successfully transfered from Alice to Bob."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusion\n",
"\n",
"We build a function that dynamically constructs and simulates the quantum circuit corresponding to superdense coding. Circuit is dynamically build based on the kind of $2$-bit binary string Alice wants to send to Bob, conceptually Alice would run this part of the function, send single qubit to Bob who would then perform a measurement and receive $2$-bits of information.\n",
"\n",
"We plotted the histograms of measured counts by Bob for each of possible outcomes and it confirmed that he received exactly the bits that Alice intended to send."
]
}
],
"metadata": {
"authors": [
{
"name": "Marek Narozniak"
}
],
"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.5.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment