Files
Source/qiskit/qiskit-implementation.ipynb
cooney ccfdac1286 1. 랭체인 이미지 인식 후 처리 마무리
2. fastAPI로 프로젝트 구조 실습

1. 랭체인 이미지 인식 후 처리 마무리
2. fastAPI로 프로젝트 구조 실습
2026-06-15 18:13:05 +09:00

1743 lines
317 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "0697d1c5",
"metadata": {},
"source": [
"---\n",
"title: Qiskit implementation\n",
"description: Using Qiskit to implement ideas from the entanglement in action lesson.\n",
"---\n",
"\n",
"{/* cspell:ignore ebit operatorname */}\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "6ed84269",
"metadata": {},
"source": [
"# Qiskit implementation\n",
"\n",
"In this lesson, we implement some of the ideas from the lesson on entanglement in action, using Qiskit.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "073958f0-2367-4dce-b747-7defd256380c",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:41.019574583Z",
"start_time": "2026-06-11T02:04:40.047283273Z"
}
},
"source": [
"from qiskit import __version__\n",
"\n",
"print(__version__)"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.4.1\n"
]
}
],
"execution_count": 1
},
{
"cell_type": "code",
"id": "1a60f419",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:41.467851933Z",
"start_time": "2026-06-11T02:04:41.022537395Z"
}
},
"source": [
"from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister\n",
"from qiskit_aer import AerSimulator\n",
"from qiskit.visualization import plot_histogram, array_to_latex\n",
"from qiskit.result import marginal_distribution\n",
"from qiskit.circuit.library import UGate\n",
"from math import pi\n",
"import random"
],
"outputs": [],
"execution_count": 2
},
{
"cell_type": "markdown",
"id": "d823d15a",
"metadata": {},
"source": [
"Here is a quantum circuit implementation of the teleportation protocol.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "3eb41206",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:42.136576904Z",
"start_time": "2026-06-11T02:04:41.472469590Z"
}
},
"source": [
"qubit = QuantumRegister(1, \"Q\")\n",
"ebit0 = QuantumRegister(1, \"A\")\n",
"ebit1 = QuantumRegister(1, \"B\")\n",
"a = ClassicalRegister(1, \"a\")\n",
"b = ClassicalRegister(1, \"b\")\n",
"\n",
"protocol = QuantumCircuit(qubit, ebit0, ebit1, a, b)\n",
"\n",
"# Prepare ebit used for teleportation\n",
"protocol.h(ebit0)\n",
"protocol.cx(ebit0, ebit1)\n",
"protocol.barrier()\n",
"\n",
"# Alice's operations\n",
"protocol.cx(qubit, ebit0)\n",
"protocol.h(qubit)\n",
"protocol.barrier()\n",
"\n",
"# Alice measures and sends classical bits to Bob\n",
"protocol.measure(ebit0, a)\n",
"protocol.measure(qubit, b)\n",
"protocol.barrier()\n",
"\n",
"# Bob uses the classical bits to conditionally apply gates\n",
"with protocol.if_test((a, 1)):\n",
" protocol.x(ebit1)\n",
"with protocol.if_test((b, 1)):\n",
" protocol.z(ebit1)\n",
"\n",
"display(protocol.draw(output=\"mpl\"))"
],
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 1193.19x451.5 with 1 Axes>"
],
"image/png": "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VAMGDDjvuldccYXmzJlDSAVClG2Dqsvl0oIFC/Twww+rQYMG2r17tw4ePKhbbrlFa9euVceOHQNaz7pNO3QkN1/xsdHq3rltQI8NAABgFfHx8fryyy/1wQcfqHv37mct79Kli95++20tXLhQNWvWNKFCAFZg69N6cXFxmjx5siZPnnzWspYtWyqQo547tW2p40XFioqM4GwqAAAIaeHh4Ro1apRGjRqlLVu2aO/evTIMQ40aNVL79u3lcDjMLhGAyUhMARIRHqYrugX2LC4AAIDVtW3bVm3bMtoMwOlsO/QXAAAAABCcCKoAAAAAAEshqAIAAAAALIWgCgAAAACwFIIqAAAAqtWOHTvUo0cPtWrVSt26ddOmTZvOuf6ePXvUu3dvJSYmqnPnzoEpEoClEFQBAABQre69917dc8892r59ux577DHdfffd51w/ISFB48eP18cffxyYAgFYDkEVAAAA1ebgwYNKSUnRHXfcIUkaPny49u3bp23btqlRo0bavXu3JGnSpEkaOHCgPB6PatWqpV69eik2NtbM0gGYiKAKAACAarNv3z4lJycrLCxMkuRwONS4cWPt379fEydO1IgRI/T9999r6tSpmjZtmpxOPp4CkMLMLgAAAACh6dZbb9XixYs1YMAAffvtt6pbt67ZJQGwCL6yAgAAQLW54IILlJmZqdLSUkmSYRjau3evGjdurNLSUm3cuFG1atXS/v37Ta4UgJUQVAEAAFBt6tWrp4svvlgffvihJGnmzJlq1KiRWrZsqccff1ytW7fW0qVL9cgjj2jnzp0mVwvAKhj6CwAAgGr1r3/9S3fffbdefPFFJSQk6L333tNXX32lr7/+WqtXr1ZMTIwmT56sESNG6IcffpDH41GrVq1UVFSko0ePqlGjRho1apQmTJhg9o8CIEAIqgAAAKhWrVu31ooVK06bd9FFF2no0KFl0zfffLNuvvnmsun09PSA1QfAehj6CwAAAACwFIIqAAAAAMBSCKoAAAAAAEshqAIAAAAALIWgCgAAAACwFIIqAAAAAMBSCKoAAAAAAEshqAIAAAAALIWgCgAAAACwFIIqAAAAAMBSCKoAAAAAAEshqAIAAAAALIWgCgAAAACwFIIqAAAAAMBSCKoAAAAAAEshqAIAAAAALIWgCgAAAACwFIIqAAAAAMBSCKoAAAAAAEshqAIAAAAA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m27SihUryr2ED6HBYVT2vHuQOflAYMMwNGvWLE2ePFkbNmyQYRjq2rWrHn/88XKHBFeXPelZmv3NMjWoX0cjhvQO2HEBAAAAKzIMQ4sXL9ann36qX375RZGRkWrTpo1Gjx6thg0bml0eTGbboGpFHsNQSXGJIiO5tTYAAAAAVISgCgAAAACwFNtfowoAAAAACC4EVQAAAACApRBUAQAAAACWQlAFAAAAAFgKQRUAAABAtdqxY4d69OihVq1aqVu3btq0adM519+zZ4969+6txMREde7cOTBFwlIIqgAAAACq1b333qt77rlH27dv12OPPaa77777nOsnJCRo/Pjx+vjjjwNTICyHoAoAAACg2hw8eFApKSm64447JEnDhw/Xvn37tG3bNjVq1Ei7d++WJE2aNEkDBw6Ux+NRrVq11KtXL8XGxppZOkxEUAUAAABQbfbt26fk5GSFhYVJkhwOhxo3bqz9+/dr4sSJGjFihL7//ntNnTpV06ZNk9NJRIEUZnYBAAAAAELTrbfeqsWLF2vAgAH69ttvVbduXbNLgkXwdQUAAACAanPBBRcoMzNTpaWlkiTDMLR37141btxYpaWl2rhxo2rVqqX9+/ebXCmshKAKAAAAoNrUq1dPF198sT788ENJ0syZM9WoUSO1bNlSjz/+uFq3bq2lS5fqkUce0c6dO02uFlbhMAzDMLsIAAAAAPa1bds23X333Tp06JASEhL03nvvKS0tTY8//rhWr16tmJgYffrpp5owYYJ++OEHeTwetWrVSkVFRTp69Kjq1aunUaNGacKECWb/KAgQgioAAAAAwFIY+gsAAAAAsBSCKgAAAADAUgiqAAAAAABLIagCAAAAACyFoAoAAAAAsBSCKgAAAADAUgiqAAAAAABLIagCAAAAACyFoAoAAAAAsBSCKgAAAADAUgiqAAAAAABLIagCAAAAACyFoAoAAAAAsBSCKgAAAADAUgiqAAAAAABLIagCAAAAACyFoAoAAAAAsBSCKgAAAADAUgiqAAAAAABLIagCAAAAACyFoAoAAAAAsBSCKgAAAADAUgiqAAAAAABLIagCAAAAACyFoAoAAAAAsBSCKgAAAADAUv4fYjHRivS7QdgAAAAASUVORK5CYII="
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 3
},
{
"cell_type": "markdown",
"id": "73ae61c5",
"metadata": {},
"source": [
"The circuit makes use of a few features of Qiskit that we've not yet seen in previous lessons, including the `barrier` and `if_test` functions.\n",
"The `barrier` function creates a visual separation making the circuit diagram more readable, and it also prevents Qiskit from performing various simplifications and optimizations across the barrier during compilation when circuits are run on real hardware.\n",
"The `if_test` function applies an operation conditionally depending on a classical bit or register.\n",
"\n",
"The circuit first initializes $(\\mathsf{A},\\mathsf{B})$ to be in a $\\vert \\phi^+\\rangle$ state (which is not part of the protocol itself), followed by Alice's operations, then her measurements, and finally Bob's operations.\n",
"To test that the protocol works correctly, we'll apply a randomly generated single-qubit gate to the initialized $\\vert 0\\rangle$ state of $\\mathsf{Q}$ to obtain a random quantum state vector to be teleported. By applying the inverse (as in, the conjugate transpose) of that gate to $\\mathsf{B}$ after the protocol is run, we can verify that the state was teleported by measuring to see that it has returned to the $\\vert 0\\rangle$ state.\n",
"\n",
"First we'll randomly choose a unitary qubit gate.\n",
"\n"
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:42.423683772Z",
"start_time": "2026-06-11T02:04:42.232194881Z"
}
},
"cell_type": "code",
"source": "# !pip install sympy",
"id": "f7dfc0114695aea2",
"outputs": [],
"execution_count": 4
},
{
"cell_type": "code",
"id": "f1446c8e-4fb5-416e-a74f-37fc186f7097",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:43.772571065Z",
"start_time": "2026-06-11T02:04:42.479166110Z"
}
},
"source": [
"random_gate = UGate(\n",
" theta=random.random() * 2 * pi,\n",
" phi=random.random() * 2 * pi,\n",
" lam=random.random() * 2 * pi,\n",
")\n",
"\n",
"display(array_to_latex(random_gate.to_matrix()))"
],
"outputs": [
{
"data": {
"text/plain": [
"<IPython.core.display.Latex object>"
],
"text/latex": "$$\n\n\\begin{bmatrix}\n-0.9976900241 & -0.051514418 - 0.044281832 i \\\\\n 0.0670691607 + 0.0107862683 i & -0.6437188742 - 0.7622410347 i \\\\\n \\end{bmatrix}\n$$"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 5
},
{
"cell_type": "markdown",
"id": "ec1b448d",
"metadata": {},
"source": [
"Now we'll create a new testing circuit that first applies our random gate to $\\mathsf{Q},$ then runs the teleportation circuit, and finally applies the inverse of our random gate to the qubit $\\mathsf{B}$ and measures.\n",
"The outcome should be $0$ with certainty.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "ce7568a0-23d2-41d2-aadc-ad898b3a7ebe",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:44.203716772Z",
"start_time": "2026-06-11T02:04:43.844213477Z"
}
},
"source": [
"# Create a new circuit including the same bits and qubits used in the\n",
"# teleportation protocol.\n",
"\n",
"test = QuantumCircuit(qubit, ebit0, ebit1, a, b)\n",
"\n",
"# Start with the randomly selected gate on Q\n",
"\n",
"test.append(random_gate, qubit)\n",
"test.barrier()\n",
"\n",
"# Append the entire teleportation protocol from above.\n",
"\n",
"test = test.compose(protocol)\n",
"test.barrier()\n",
"\n",
"# Finally, apply the inverse of the random unitary to B and measure.\n",
"\n",
"test.append(random_gate.inverse(), ebit1)\n",
"result = ClassicalRegister(1, \"Result\")\n",
"test.add_register(result)\n",
"test.measure(ebit1, result)\n",
"\n",
"display(test.draw(output=\"mpl\"))"
],
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 1929.98x535.111 with 1 Axes>"
],
"image/png": "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UN15w+gq7euXQfwTTzyhJ554oszyTp06afbs2Wrfvn3JsgULFkiS/vnPf5YK4U+JiIjQkCFD9NZbb2nlypUlI92bNGminTt3av78+brpppvc9Ew853hOvrJzyp8L31VOp1PZOXk1ciwAAAAAAAAA5nOisNDoEmqUXwbxTZo0UdOmJyf2P3r0qHbs2KHi4mI1adKk1LQ0krR582ZJ0tSpUzVr1qxyj3fqpqj79+8vWXbvvffq1ltv1T//+U8999xzGjZsmAYMGKBBgwapXr16bnhW7hUZEVqt/f86Gj4yPFRS2Rc1AAAAAAAAAMBXVSdD9csg/sYbb9Tjjz9e8njfvn26+uqrtWjRopKPp2RmZkqSNm48+zQqeXl/jvKeMGGCoqOj9eyzz+rXX3/V9u3b9eKLL8pms+nSSy/VrFmzSl4M8AVVfUuFdHJu+BmvfKQTBYUaNbS/+nRtf/adAAAAAAAAAMAk/DKIP12TJk20YMECtW3bVosXL9a8efM0btw4SSennsnMzNTmzZvVsWNHl447btw4jRs3TocPH9aPP/6o77//XvPmzdNnn32mpKQkbdiwoWT++FPT3jidznKPlZtbM9PCVFV15ohnbngAAAAAAAAA/o454ishJiZG999/vx555BE9+uijuvLKKxUQEKAOHTpo1apV2rJli8tB/Cn169fX6NGjNXr0aD388MNq166dtm7dqp9//lmDBg2SJIWHh0uSDh48WO4xduzY4fJ5y5vTvqpqYo545oYHAAAAAAAAgLJME8RL0h133KEZM2Zo165d+uCDD/S3v/1NV1xxhVatWqUXXnihJJyvjtjYWMXHx2vTpk06cOBAyfJWrVpJkn755Zcy+9jtdr3++usunys09OScRPn5VRvJ/ldVnd+IueEBAAAAAAAAmAFzxFdSdHS0brvtNk2bNk1Tp07Vddddp5tvvlkvv/yyfvnlF40ePVovvviimjdvXrJPUVGRVq5cqddff11vvfWWgoODlZ2drX/+85+6+eabNXDgQNlsNkknR4R//PHH+v333yVJ3bp1KznORRddpHvuuUcLFy7UggULNGbMGElSTk6O7rnnHiUlJbn8fFq2bKk//vhD33//vdq1a1eNz0zV5ohnbngAAAAAAAAAODur0QV42j333KPQ0FAlJiZq/vz5CgsL0+LFi9W2bVt9+eWXio+PV+vWrdW3b1+dc845ioyM1JAhQ/Thhx+WzO/ucDg0f/58DRkyRJGRkercubN69eqlRo0a6aqrrpLdbtfEiRNLheMJCQm6/fbb5XA4dMUVV6hp06bq0aOHGjZsqPnz52v69OkuP5dT89zfcccd6tChgwYOHKiBAwdqyZIlNfPJOov1mxOVnZOr6Mhw9ejYxiPnBAAAAAAAAABfY7ogvn79+vrnP/8pSXr66afldDrVokUL/frrr3rhhRd07rnn6siRI1q3bp3279+vjh076qGHHtK6desUEhIiSYqMjNR7772nG264Qc2bN9e+ffu0ceNGOZ1OjRw5UgsXLtQzzzxT5twvvviipk+frjZt2ujgwYPau3evLrnkEm3YsEFdunRx+blcc801mjNnjrp27ao9e/bohx9+0A8//KD09PRqfY4qo6i4WMtXb5IkDerbVQEBNrefEwAAAAAAAAB8kcV5apg34ILjuXn6/NuflJp2WPfffDVBPAAAAAAAAABUgCAe1XKioFAhwUFGlwEAAAAAAAAAXosgHgAAAAAAAAAANzLdHPEAAAAAAAAAAHgSQTwAAAAAAAAAAG5EEA8AAAAAAAAAgBsRxAMAAAAAAAAA4EYE8QAAAAAAAAAAuBFBPAAAAAAAAAAAbkQQDwAAAAAAAACAGxHEAwAAAAAAAADgRgTxAAAAAAAAAAC4EUE8AAAAAAAAAABuRBAPAAAAAAAAAIAbEcQDAAAAAAAAAOBGBPEAAAAAAAAAALgRQTwAAAAAAAAAAG5EEA8AAAAAAAAAgBsRxAMAAAAAAAAA4EYE8QAAAAAAAAAAuBFBPAAAAAAAAAAAbkQQDwAAAAAAAACAGxHEAwAAAAAAAADgRgTxAAAAAAAAAAC4EUE8AAAAAAAAAABuRBAPAAAAAAAAAIAbEcQDAAAAAAAAAOBGBPEAAAAAAAAAALgRQTwAAAAAAAAAAG5EEA8AAAAAAAAAgBsRxAMAAAAAAAAA4EYE8QAAAAAAAAAAuBFBPAAAAAAAAAAAbkQQDwAAAAAAAACAGxHEAwAAAAAAAADgRgTxAAAAAAAAAAC4EUE8AAAAAAAAAABuRBAPAAAAAAAAAIAbEcQDAAAAAAAAAOBGBPEAAAAAAAAAALgRQTwAAAAAAAAAAG5EEA8AAAAAAAAAgBv9HyxtrrnnTJPCAAAAAElFTkSuQmCC"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 6
},
{
"cell_type": "markdown",
"id": "13f847a6",
"metadata": {},
"source": [
"Finally, let's run the Aer simulator on this circuit and plot a histogram of the outputs.\n",
"We'll see the statistics for all three classical bits:\n",
"the bottom/leftmost bit should always be $0,$ indicating that the qubit $\\mathsf{Q}$ was successfully teleported into $\\mathsf{B},$ while the other two bits should be roughly uniform.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "4db32a9d",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:44.495163857Z",
"start_time": "2026-06-11T02:04:44.209755118Z"
}
},
"source": [
"result = AerSimulator().run(test).result()\n",
"statistics = result.get_counts()\n",
"display(plot_histogram(statistics))"
],
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 7
},
{
"cell_type": "markdown",
"id": "29560bcd",
"metadata": {},
"source": [
"We can also filter the statistics to focus solely on the test result qubit if we wish, like this:\n",
"\n"
]
},
{
"cell_type": "code",
"id": "b3e3be9a",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:44.713022093Z",
"start_time": "2026-06-11T02:04:44.500535597Z"
}
},
"source": [
"filtered_statistics = marginal_distribution(statistics, [2])\n",
"display(plot_histogram(filtered_statistics))"
],
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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pkOHmiRJXd3CBuN1C+vSoUOHJElNh5q89NJLDbavWbMmS5YsqX9/h5oOmT1ndsN9/HWfNTU1Wbp06XrHrqysTGVlZf3rqqqqzTwbAIDmtV2F3bZ01pnfyKBBA9cb79PnoKxcuTLjx09Ir14906ZNmyxbtiwzZ87K/vvvlySZM3tOKlpUpEuXLkmSCRMmpkePvVJVVZUVK17J9OnTc+CBByRJ5s2blzVr1qZbt65JktqtdH4AQNP069c3SfLcc8+lbduqdOrUMUkyZszY7Ldf77Ru3TpLly7N3Lnz0rv3vkmSmTNnpbKyMp0775YkG+2IRS8t2uS1bFdht2BBXZKkpmbXLFiwoH68ZteaTJo0KUlSt6Au7du3b/C+HXbYITvvvHP9+xfULUjNrjUN5tTU7PrG++vqNnjsm26+JT+59bb611VVVRk3dnTGjRuf5cuXJ0kmTXqmwXtGjx7T4PWLL/5vpk2ePGWjc/92fl27bXA5AMA7xJv/Dl+0aHHmzp1b//qpp55+y7lJMn/+/Prf36ojqqurN3kt29U9drNnz05tbW0GDBhQP1ZdXZ0+fQ7KmDFjkySjx4zJzjvvnP33379+zoBDD02LFi0ybty4JG8UdP/+/dOy5f927WGHHZbp06dv8GPYJFm1alWWL19e/7NixYotcYoAAE32jgu7tm3bpnfvfesvVXbt1jW9e++b3Tt3TpLcfvtP882zz8rHjjwye++9d2684frU1tbmv/7whyTJ9OnT86c/jcg1g3+Ygw46KO/v1y+XX/GD/OY396e29o0rZvfd9+usXr0q1147OD179syxxx6TM774hQZX5AAAtjfvuI9iDzzwgPxy+LD619+77NIkyZChw3LuuQNzy4//LW3bts3VV1+Vdu3a5cknn8wpp56W1157rf49Z551dq64/AcZOuTnWbt2bR544P/lku98t377smXL8pnPnpIrr7gi//X/fp9FixfnRz+63ledAADbtYrdOndZt60XsT2qrq7O1Gcnp2evfervsdsSup7w4BbbNwCw+eb86qNbdP+NaY533EexAAA0jbADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKISwAwAohLADACiEsAMAKMR2GXajHn808+fNWe/nyisuT5IMHzZ0vW1XXXVlg33s3rlz7rrrjsyYPjUTJ4zLdy65ODvssMO2OB0AgGbRclsvoCn+8Z8+3iDC9t67V4b84uf57e9+Vz929933ZPA119a/XrlyZf3vLVq0yF133Zm6ugU59rhPpEOHDrnxhuuz+vXXc9VVP9w6JwEA0My2y7BbtGhRg9dnnvn1PP/8zDz22OP1YytfXZm6uroNvv/www9Lz57vy0knfyYLFy7MpEnP5OrB1+Tii76da6+9LqtXr96i6wcA2BK2y49i36xVq1b55Akn5BdDhjQYP+H44/P0UxPypwf/J9++8IK02XHH+m39+vbNlClTsnDhwvqxkSMfSrt27dKrZ8+ttnYAgOa0XV6xe7Ojjz4q7dq1y9Chw+rH7vv1rzN37rzU1tZmn332zsUXX5S99torZ3zpy0mSmpqa1NUtbLCfhX+9ulfToSaZtP5xKisrU1lZWf+6qqpqC5wNAEDTbfdh95mTT86IESNSW1tbP3bPPffW/z5lypQsWLAgw4YOyR577JFZs2Y16ThnnfmNDBo0cL3xPn0OysqVKzN+/IT06tUzbdq0ybJlyzJz5qzsv/9+SZI5s+ekokVFunTpkiSZMGFievTYK1VVVVmx4pVMnz49Bx54QJJk3rx5WbNmbbp165okqV3viADAO0m/fn2TJM8991zatq1Kp04dkyRjxozNfvv1TuvWrbN06dLMnTsvvXvvmySZOXNWKisr07nzbkmy0Y5Y9NKiDRx1wyp269xlXXOe3Na0++675/HH/pIzzvhy/vDHP77lvDZt2mTG9Kn5zGdPzUMPPZTzzxuUj33syBz5saPr53Tt2jWjHn80H/vY0Xl60vqX7DZ0xW7c2NHp2WufLF++vHlP7E26nvDgFts3ALD55vzqo1t0/9XV1Zn67ORNao7t+h67k086MQsXLsz/PLjx+Nmvd+8kyYIFb1z/Gj1mTPbee++0b9++fs5hh30oL7/8cqZOm7bBfaxatSrLly+v/1mxYkUznQUAQPPYbsOuoqIiJ510YoYNG541a9bUj++xxx4555xvZv/990+XLl3ysSOPzA03XJ/HHns8kydPSZI89NCfM3XqtNx04w3Zd999cvjhh+eCb52fO+68K6tWrdpWpwQAsFm223vsDvvQh9KlS5f1noZdvXpVPjRgQM4444tp26ZN5r/wQh544IFcf8ON9XPWrl2bz53++Vz1r1fmt/f/Jq+88kqGDRuewYOv2dqnAQDQbLbbsHvoz39O5927rjc+f/4L+eSnPv227583b15O+9zpW2JpAADbxHb7USwAAA0JOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCCDsAgEIIOwCAQgg7AIBCNDns+vfvn907d97onM6dd0v//v2beggAABqhyWE3fNiQnHjipzc651Of+lSGDxvS1EMAANAITQ67ioqKt995ixZZt25dUw8BAEAjbNF77Pbcs3teXrZsSx4CAIC/atmYyddde02D10cffVS6du263rwWO7RI586d84H+/TNixIjNWyEAAJukUWH35nvq1q1bl969e6d3794bnLtu3bqMnzAhl172/c1bIQAAm6RRYdf/A4ckeeP+uscf+0tuu/2nuf32n643b+3aNVmyZGlWrlzZPKsEAOBtNSrs5s2bV//7uQMH5emnn24wBgDAttOosHuzYcOGN+c6AADYTE0Ou7856KCDctCBB6bde9plhxbrP2S7Lsn119+wuYcBAOBtNDnsdt55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x6dLly6ZO3fuRud26dIlhx56SIYP/2VjDtFoL7/8cp577vl07949f3744bRu3Trt2rVrcNWupmbXLPjrVbm6urr06XNQg33s+tereXUL6t7yODfdfEt+cutt9a+rqqoybuzojBs3PsuXL0+STJr0TIP3jB49psHrF1/830ybPHnKRucuWLAgSdK121suCQB4B3jz3+GLFi1u0EhPPfX0W85Nkvnz59f//lYdUV1dvclradQ9dnfccWdatWqV2279Sd67yy5vOW+XXXbOrT/597Rs2TJ33fWzxhyi0dq2bZs99tgjCxYsyMSJT2XVqlUZMODQ+u177fV36dKlS8aMeeN/zugxY7L33nunffv29XMOO+xDefnllzN12rS3PM6qVauyfPny+p8VK1ZsuZMCAGiCRl2xe+rpp3Pb7T/Nl874YkaO/FN+9rO785dHH80LL7yQJOnUqVMGDBiQU0/5bNq3b59bb70tTz399NvstXG++51L8sf//p/MnTs3nTp1zHmDBmbt2jW579e/ybJly/LzXwzJZZd+N0uWLMmyZctzxeXfz+jRozN27LgkyUMP/TlTp07LTTfekMuvuCI1NR1ywbfOzx133rVJT/sCALxTNfpfnvje976f1157LV/76ldy9tln5eyzz2qwvaKiImvWrMlNN9+SH/7w6mZb6N/stttu+fEtN2eXXXbOS4sW5cknnszHjzkuixa98fnzZZd9L+vWrs1tt96a1q0rM3LkQ/n2RRfXv3/t2rX53Omfz1X/emV+e/9v8sorr2TYsOEZPPiaZl8rAMDWVLFb5y7rmvLGPfbYIyeddGL69etb/8Tpgrq6PPnk6AwdOiyzZs1q1oW+01RXV2fqs5PTs9c+9ffYbQldT3hwi+0bANh8c3710S26/8Y0R6Ov2P3NrFmzcvXVg5v6dgAAmlmjHp4AAOCdS9gBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELYAQAUQtgBABRC2AEAFELY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"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 8
},
{
"cell_type": "markdown",
"id": "32fded1e",
"metadata": {},
"source": [
"## Superdense coding\n",
"\n",
"Superdense coding is a protocol that, in some sense, achieves a complementary aim to teleportation.\n",
"Rather than allowing for the transmission of one qubit using two classical bits of communication (at the cost of one e-bit of entanglement), it allows for the transmission of two classical bits using one qubit of quantum communication (again, at the cost of one e-bit of entanglement).\n",
"\n",
"In greater detail, we have a sender (Alice) and a receiver (Bob) that share one e-bit of entanglement.\n",
"According to the conventions in place for the lesson, this means that Alice holds a qubit $\\mathsf{A},$ Bob holds a qubit $\\mathsf{B},$ and together the pair $(\\mathsf{A},\\mathsf{B})$ is in the state $\\vert\\phi^+\\rangle.$\n",
"Alice wishes to transmit two classical bits to Bob, which we'll denote by $c$ and $d,$ and she will accomplish this by sending him one qubit.\n",
"\n",
"It is reasonable to view this feat as being less interesting than the one that teleportation accomplishes.\n",
"Sending qubits is likely to be so much more difficult than sending classical bits for the foreseeable future that trading one qubit of quantum communication for two bits of classical communication, at the cost of an e-bit no less, hardly seems worth it.\n",
"However, this does not imply that superdense coding is not interesting, for it most certainly is.\n",
"\n",
"Fitting the theme of the lesson, one reason why superdense coding is interesting is that it demonstrates a concrete and (in the context of information theory) rather striking use of entanglement.\n",
"A famous theorem in quantum information theory, known as *Holevo's theorem*, implies that without the use of a shared entangled state, it is impossible to communicate more than one bit of classical information by sending a single qubit.\n",
"(Holevo's theorem is more general than this.\n",
"Its precise statement is technical and requires explanation, but this is one consequence of it.)\n",
"So, through superdense coding, shared entanglement effectively allows for the *doubling* of the classical information-carrying capacity of sending qubits.\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "7abef6c9",
"metadata": {},
"source": [
"### Protocol\n",
"\n",
"The following quantum circuit diagram describes the superdense coding protocol:\n",
"\n",
"![Superdense coding circuit](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/superdense-coding.avif)\n",
"\n",
"In words, here is what Alice does:\n",
"\n",
"1. If $d=1,$ Alice performs a $Z$ gate on her qubit $\\mathsf{A}$ (and if $d=0$ she does not).\n",
"\n",
"2. If $c=1,$ Alice performs an $X$ gate on her qubit $\\mathsf{A}$ (and if $c=0$ she does not).\n",
"\n",
"Alice then sends her qubit $\\mathsf{A}$ to Bob.\n",
"\n",
"What Bob does when he receives the qubit $\\mathsf{A}$ is to first perform a controlled-NOT gate, with $\\mathsf{A}$ being the control and $\\mathsf{B}$ being the target, and then he applies a Hadamard gate to $\\mathsf{A}.$\n",
"He then measures $\\mathsf{B}$ to obtain $c$ and $\\mathsf{A}$ to obtain $d,$ with standard basis measurements in both cases.\n",
"\n",
"### Analysis\n",
"\n",
"The idea behind this protocol is simple:\n",
"Alice effectively chooses which Bell state she would like to be sharing with Bob,\n",
"she sends Bob her qubit, and Bob measures to determine which Bell state Alice chose.\n",
"\n",
"That is, they initially share $\\vert\\phi^+\\rangle,$ and depending upon the bits $c$ and $d,$ Alice either leaves this state alone or shifts it to one of the other Bell states by applying $\\mathbb{I},$ $X,$ $Z,$ or $XZ$ to her qubit\n",
"$\\mathsf{A}.$\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"(\\mathbb{I} \\otimes \\mathbb{I}) \\vert \\phi^+ \\rangle & = \\vert \\phi^+\\rangle \\\\\n",
"(\\mathbb{I} \\otimes Z) \\vert \\phi^+ \\rangle & = \\vert \\phi^-\\rangle \\\\\n",
"(\\mathbb{I} \\otimes X) \\vert \\phi^+ \\rangle & = \\vert \\psi^+\\rangle \\\\\n",
"(\\mathbb{I} \\otimes XZ) \\vert \\phi^+ \\rangle & = \\vert \\psi^-\\rangle\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"Bob's actions have the following effects on the four Bell states:\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"\\vert \\phi^+\\rangle & \\mapsto \\vert 00\\rangle\\\\\n",
"\\vert \\phi^-\\rangle & \\mapsto \\vert 01\\rangle\\\\\n",
"\\vert \\psi^+\\rangle & \\mapsto \\vert 10\\rangle\\\\\n",
"\\vert \\psi^-\\rangle & \\mapsto -\\vert 11\\rangle\\\\\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"This can be checked directly, by computing the results of Bob's operations on these states one at a time.\n",
"\n",
"So, when Bob performs his measurements, he is able to determine which Bell state Alice chose.\n",
"To verify that the protocol works correctly is a matter of checking each case:\n",
"\n",
"* If $cd = 00,$ then the state of $(\\mathsf{B},\\mathsf{A})$ when Bob receives $\\mathsf{A}$ is $\\vert \\phi^+\\rangle.$ He transforms this state into $\\vert 00\\rangle$ and obtains $cd = 00.$\n",
"\n",
"* If $cd = 01,$ then the state of $(\\mathsf{B},\\mathsf{A})$ when Bob receives $\\mathsf{A}$ is $\\vert \\phi^-\\rangle.$ He transforms this state into $\\vert 01\\rangle$ and obtains $cd = 01.$\n",
"\n",
"* If $cd = 10,$ then the state of $(\\mathsf{B},\\mathsf{A})$ when Bob receives $\\mathsf{A}$ is $\\vert \\psi^+\\rangle.$ He transforms this state into $\\vert 10\\rangle$ and obtains $cd = 10.$\n",
"\n",
"* If $cd = 11,$ then the state of $(\\mathsf{B},\\mathsf{A})$ when Bob receives $\\mathsf{A}$ is $\\vert \\psi^-\\rangle.$ He transforms this state into $-\\vert 11\\rangle$ and obtains $cd = 11.$ (The negative-one phase factor has no effect here.)\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "0f10b8e4",
"metadata": {},
"source": [
"### Superdense coding implementation\n",
"\n",
"Here is a simple implementation of superdense coding where we specify the circuit itself depending on the bits to be transmitted. First we'll choose two bits to be transmitted. (Later we'll choose them randomly, but for now we'll just make an arbitrary choice.)\n",
"\n"
]
},
{
"cell_type": "code",
"id": "a4bdda80",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:44.782489998Z",
"start_time": "2026-06-11T02:04:44.727019271Z"
}
},
"source": [
"c = \"1\"\n",
"d = \"0\""
],
"outputs": [],
"execution_count": 9
},
{
"cell_type": "markdown",
"id": "0b6b0573",
"metadata": {},
"source": [
"Now we'll build the circuit accordingly. Here we'll allow Qiskit to use the default names for the qubits: $\\mathsf{q}_0$ for the top qubit and $\\mathsf{q}_1$ for the bottom one.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "05ae9b94",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:44.974466859Z",
"start_time": "2026-06-11T02:04:44.785732876Z"
}
},
"source": [
"protocol = QuantumCircuit(2)\n",
"\n",
"# Prepare ebit used for superdense coding\n",
"protocol.h(0)\n",
"protocol.cx(0, 1)\n",
"protocol.barrier()\n",
"\n",
"# Alice's operations\n",
"if d == \"1\":\n",
" protocol.z(0)\n",
"if c == \"1\":\n",
" protocol.x(0)\n",
"protocol.barrier()\n",
"\n",
"# Bob's actions\n",
"protocol.cx(0, 1)\n",
"protocol.h(0)\n",
"protocol.measure_all()\n",
"\n",
"display(protocol.draw(output=\"mpl\"))"
],
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 998.442x284.278 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxQAAADuCAYAAACgYkFzAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAM19JREFUeJzt3XlclPXe//H3MKwiKAgKioiouJsn9y2X1NzNrazusqxsszwd77Sf1SnbU0+nkx2zju11zMo6mVtpZqKloojlrggmAhqugIjCzO8PbzgSoMzlzFwwvJ6PR4+YubbP+J3vNfOe6/pel8Vut9sFAAAAAAZ4mV0AAAAAgKqLQAEAAADAMAIFAAAAAMMIFAAAAAAMI1AAAAAAMIxAAQAAAMAwAgUAAAAAwwgUAAAAAAwjUAAAAAAwjEABAAAAwDACBQAAAADDCBQAAAAADCNQAAAAADCMQAEAAADAMAIFAAAAAMMIFAAAAAAMI1AAAAAAMIxAAQAAAMAwAgUAAAAAwwgUAAAAAAwjUAAAAAAwjEABAAAAwDACBQAAAADDCBQAAAAADCNQAAAAADCMQAEAAADAMAIFAAAAAMO8zS4AQNWWkJDg0PxZWVn68ssvNXr0aIWFhVVomU6dOhkpDW7iyHvASPtLvAdQubEfRHXHEQoAbpWVlaUFCxYoKyvL7FJgAtofoB/A8xAoAAAAABhGoAAAAABgGIECAAAAgGEECgBuFRQUpEGDBikoKMjsUmAC2h+gH8DzWOx2u93sIgBUXY5e3cQIrm5SufEeQHVHH0B1xxEKAG6Vn5+vw4cPKz8/3+xSYALaH6AfwPMQKAC4VUpKisaMGaOUlBSzS4EJaH+AfgDPQ6AAAAAAYBh3ykaZ7Ha7VNUOxfr5yWKxmF0FPITdbtfZvAKzy3BIjQBv+gCchs8B2O12FRYWml2GQ6xWK+8BExAoULb8fBXcNMHsKhzi/dkHkr+/2WXAQ5zNK1DNrh+aXYZDcjbeocAaPmaXAU/B50C1V1hYqMWLF5tdhkPGjBkjb2++3robpzwBAAAAMIwIB8CtWrRooc2bN5tdBkxC+wP0A3gejlAAAAAAMIxAAcCtDh06pIkTJ+rQoUNmlwIT0P4A/QCeh0ABwK3y8vK0Y8cO5eXlmV0KTED7A/QDeB4CBQAAAADDCBQAAAAADCNQAAAAADCMQAHArSIjIzVz5kxFRkaaXQpMQPsD9AN4Hu5DAcCtatWqpcGDB5tdBkxC+wP0A3gejlAAcKuTJ0/q888/18mTJ80uBSag/YHq2w/sdrtOnTqlzMxMHT16VGfOnJHdbq/w8jabTV9//bXOnTvnwiphBEcoALjV0aNHNXv2bLVt21YhISFmlwM3o/2B6tUPfvvtN23YsEHJyclKSUlRbm5uiem1atVSbGysmjZtql69eqlu3bplrsdms2nevHlav369kpKSNH36dPn7+7vjJaACCBQAAABwGrvdrk2bNmnlypXas2fPZec9ffq0tm3bpm3btumLL77Qn/70Jw0dOlStW7cunufSMCFJ+/btU3Jycol5YC4ChRtkZWVp1qxZ+vLLL5WWlqbw8HCNHj1aL774oh555BG9++67mjt3riZPnmx2qXCR9GO5euerffp1/0mdyy9Undp+GtWvkYZe11BWK2ceAp7OZrPru5+O6PNVKco6eU6+Pl5qGVtb94xurujImmaXBzjN8ePH9a9//UtJSUmlpoWEhKhRo0YKDAyU3W7XmTNnShy1sNvtSkxMVGJiovr06aPbb79dAQEBJcKE1WrVo48+SpioZAgULpaUlKTBgwcrMzNTgYGBatWqldLT0/X6668rOTlZJ06ckCS1b9/e3EJd5MesYxrw81q93Kqd/tKkRZnz+H7zmYbUjdR/uvRyc3Wul3XynB568SctXp2qwsKS54m+//V+RUcG6rmHOuiOEc1MqhCu9sIjHTTjnvaa+Nd1eu8/+0tN/+GdIep2TV11GP+1dh6oXudTVxeffXtQM17fouTD2aWmvfCv7RrRJ1rznuiuyPAaJlTnetX9c6A62bx5s+bPn6+zZ88WPxcVFaX+/furc+fOCg0NLbWM3W7X0aNH9fPPP2v16tU6fvy4JGnt2rXavn27GjZsqF9++UXSf8NEx44d3fOCUGEEChfKysrS8OHDlZmZqalTp+rpp59WUFCQJGnWrFmaPn26vL29ZbFY1K5dO5OrhbNl/H5WvScu0/5DZ8qd57eMXE14cp3SjuZqxr3t3VeciWrUqKEuXbqoRg3P/PL0R8/M26bhvaP16v920Xc/H9GRo//9oP3z/7RWn06Revy1hGoTJqpb+7/+yU5NeWVjudNtNrv+s+aQEndnad17Q9WofpAbq4NZPLEfrFu3Tm+++WbxIOuQkBDdfffd6tChgywWS7nLWSwWRUREaNSoURoxYoTWrl2rjz/+WHl5eTp58mTxwHXCROXGuRYu9MgjjygtLU2TJ0/WnDlzisOEJE2bNk3XXHONCgoKFBMTo+DgYBMrhbPZbHaNeGTVZcPEpZ6Yu1Wff5fi4qoqh+joaM2dO1fR0dFml+IWFwpsmvDkOgUG+OidZ/7762tcTC298HBHbfzlmGa//6uJFbpXdWr/FfGHLxsmLvVbRq6GPPSdLlywubgqVAae1g+2bNlSIkx07dpVs2fPVseOHS8bJv7IarXq+uuv1yuvvFLqe9H48eMJE5UYgcJFdu/erUWLFiksLEwvvfRSmfN06NBBknTNNdeUeD4lJUUjRoxQUFCQQkJCdMcddxQfAkTV8O2GNG3ZmeXQMi/8K8mhy+dVVYWFhcrJyVFhYaHZpbjNtt3H9dI723VDjyjdO6a5vLws+vCF62SxSBOeXCebzfPbvUh1av8XF2x3aP5dyaf0nx8OuagaVCae1A9OnDhRIkwMHDhQjzzyiGrWNDY2yGaz6bPPPtOZMyV/kPv++++Vn59/1fXCNQgULrJw4ULZbDbddttt5XaqgIAASSUDRXZ2tvr27au0tDQtXLhQb7/9tuLj4zVs2DDZbFX3l6uzhYXKys8v8z9PNG/RboeX2b73hH7efswF1VQu+/fvV79+/bR/f+nxBJ7sube3KWnPcc2Z2llz/183dWlbV0/M3ap9qafNLs2tqkv7/7LvhNZvO+rwckb2HVVFdfscuBxP6Qd2u10LFiwoHlTdpUsX3XnnnfLyMvb18o9Xc7JarYqIiJAkZWZm6rPPPnNO4XA6xlC4yJo1ayRJffv2LXeetLQ0SSUDxdtvv60jR45o3bp1xYdCo6Ki1L17dy1ZskQ33nij64p2oWf37tSze3eaXYZb2O12rfwpzdCyK9anqXv7ek6uCJVBQYFdE55cp4SFI/TgzS0Vn5ip1z7eYXZZcJGV643tA9YmZCjvXIEC/D3v47k6fQ5UF1u3blViYqKki/eTuOeee5waJh599FFFRkbq8ccf14ULF7R8+XL16dNHDRs2dNprgHN43h6rkjh06OJh60aNGpU5vaCgQBs2bJBUMlAsXbpUPXv2LHFeZbdu3RQbG6tvvvnGUKDo2LGjMjMzHVomwMtLu9p3c3hb5bknOlZj6pe9Axi88UenbCMuLk55leAojk0+Kgh90tCyf399vt57eYWTK3KtsWPHOjT/sWMXj8KsWLFCW7durdAyo0aNcriuq2WTj2SwHctzOue88s8XytfHquXxh+XsM9yaxcXJSxecu9IKcOQ9YKT9JXPeA1fjdMD1UsB1hpaNbdZGVnuOkytyHJ8DFeep+0FfX99yT9uWpG+//bb477vuuqvEWFFHlBcmisZMjB07VgsXLpTdbtd3332nu+++u9x1xcXF6fz584bqqO4iIiK0ZcsWQ8sSKFyk6PBfXl5emdMXLVqkrKwsBQUFqXHjxsXP79q1S+PGjSs1f+vWrbVr1y5DtWRmZurIkSMOLVPDapXaG9pcmZrWrKnrw137y3t6errOVorzUS1SiE2yOP4rTe6ZE8o96lhbme2Pdz29kqI+kZeXV+FlHX3/OoXFVyp9hcOr8t6zveTrY9Wu5JN6clJ7ffZtig6mlb6UqFEZ6emS3f0fpI68B4y0v2TSe+BqhGdJAcYWzUxPlWzmnwbE50DFeep+0M/Pr9xp6enp+vXXixeUiIiIUOfOnQ1t40phQpIGDBigL7/8Uvn5+YqPj9ctt9xS7hWy0tPTGWthAgKFi0REROjkyZNKTExUt24lf+HJyMjQY489Jklq165diSsgnDx5UrVr1y61vtDQUO3du9dwLY4KMHjI0kz169evFEcoJOlYYboueEc5vFxowGkFNGjggopcJzAw0KH5iz48AwICKrxsAxP+TWzyUYYT1/fwra3Ut3N9zXh9i77+4ZASF92od5/tpT4TlzttG5H165tyhMKR94CR9pfMeQ9cjXPe2TouSXa75MBVbrwLj6luZJgqvoTr8DlQcZ66H/T19S132k8//VT894ABAwyd6lSRMCFdvMxur169tHr1ap07d06JiYnq2bNnmeusX78+RygMMvJ9sQiBwkX69++v3bt365VXXtGAAQMUFxcnSUpISNDtt9+urKyLVwByxw3tjBy+sp87p4KbJrigGtfZt2+fLP7+ZpchSXr/632666l4h5ZpULeGUhO/k7d31foQT0hIcGj+goIC3XnnnQoKCpK3d8V2Qa+99pqByq5O7tkLqtn1Q6esq2l0sF6a0lGbf/1dr7z7i2w2u555M1EvTemkh29tpbn/Nnb08Y/279unwBo+TlmXIxx5Dxhpf8mc98DVsNnsajHyiwpfOrrIq0+M0MO3/j8XVeUYPgcqzlP3gwUFBVq8eHGZ05KTk4v/LrpqpSMqGiaKdOzYUatXr5YkHTx4sNxAsW/fPof2LXCOqvXNpQqZNm2a6tSpo8OHD6t169Zq27atmjVrps6dOys2Nlb9+vWTVPqSsSEhITp16lSp9Z04caLMO0yicrr5hlhFhDl2vsPDt7aqcmHCCG9vb4WEhFSbHb7FIr3/3HWyelk04ckfiy8RO+u9X5Ww43e9NKWjYqOqz83Mqkv7e3lZNOW21g4tExLsqzuGN3NRRahMPKEfpKRcvHdSYGCg6tVz7FQ2R8OEJMXGxpbaNioPz//2YpKoqCjFx8dr6NCh8vf3V2pqqkJDQ/XWW29p2bJl2rdvn6TSgaJly5ZljpXYtWuXWrZs6ZbacfUC/L215PUBCgyo2IfFqOsb6X8ntHVxVZVDWlqapk6dWnyVM083dUJb9fhTPf11XqL2pPz3ErE2m113PrVO3lYvvftsr8uswbNUp/Z/8OaW+p9hTSo0r5+vl756rb9qBZV/igk8R1XvB2fPni3+8TM6Otqhm9cZCROSFBwcXPzDapUbU1UNEChcqGXLllq6dKmys7OVnZ2tTZs2adKkScrNzVVqaqq8vLzUpk2bEssMGzZM69evL7GT2bRpk5KTkzV8+HB3vwRchU5twvXje0MVU7/8m/t4eVl0/7gWWjSrn6zW6tEdc3JyFB8fr5wc869i42otGtfScw9dq5+3H9PfPih9idhdyaf0zJuJ6t0xUg/f2sqECt2vOrW/xWLR+89dp7/c0UZWa/lfuBrUraHv/zVEvTtGurE6mKmq94OCggLVq1dPISEhCgsLq/BydrvdUJgoEh4ertDQUIWEhBiqG65TdY+1VWE7d+6U3W5XXFxcqasUTJo0SXPnztXIkSM1c+ZMnTt3TtOmTVPnzp01cuRIkyo2rndYXZ0fftNl57nS9KqsQ6swHVg2Tsvj0zT/8936dsMRFdrs8rZaNO2udrpvXAtFRxq7mygqvz0ppxXQ6YPLzvPyO7/o5Xd+cVNFcDer1Ut/+98u+svtbbTgy7367LsU7Tl4Sja75OfjpX+/0lfDe0fLx8dzf1Co7p8Dnig4OFj/+Mc/HF7OYrGoadOmWr9+vcNhQpJmzpzp8DbhHgQKExRdZu2PpztJFzvpmjVrNGXKFI0fP17e3t4aNmyY/v73vxu+WQzMZbV6aXifaA3vE62o/gt15NhZ1asToBceqfhOFEDV1qBeoJ5+4Fo9/cC1xfuBsBB/je4fY3ZpgFsNGjRIkhQWFuZQmEDlRqAwweUChSQ1adJES5cudWdJAAAAblEUKuA5+MnbBFcKFIAnCw8P15QpUxQeHm52KTAB7Q/QD+B5OEJhgjVr1phdAmCaOnXq6LbbbjO7DJiE9gfoB/A8HKEA4FZnzpzR6tWrdeaMYzf8gmeg/QH6ATwPgQKAW6Wnp2vGjBlKT083uxSYgPYH6AfwPAQKAAAAAIYRKAAAAAAYRqAAAAAAYBiBAoBb+fn5qXnz5vLz8zO7FJiA9gfoB/A8XDYWgFs1btxYH330kdllwCS0P0A/gOfhCAUAAAAAwwgUANxq79696tGjh/bu3Wt2KTAB7Q/QD+B5CBQA3Mput+vChQuy2+1mlwIT0P4A/QCeh0ABAAAAwDAGZaNsfn7y/uwDs6twDFfLgBPVCPBWzsY7zC7DITUC2KXDifgcqPasVqvGjBnjtPXNfmuRsnNzFRQYqMfuu7nUY2ewWq1OWQ8cw6cPymSxWCR/f7PLAExjsVgUWMPH7DIA0/A5AIvFIm9v531VtEuy2S/+39vbu9RjVF20HgC3iomJ0cKFC9WgQQOzS4EJaH+AfgDPQ6AA4Fb+/v5q0qSJ2WXAJLQ/QD+A52FQNgC3ysjI0PPPP6+MjAyzS4EJaH+AfgDPQ6AA4FanT5/WkiVLdPr0abNLgQlof4B+AM9DoAAAAABgGIECAAAAgGEECgAAAACGESgAuFVoaKgmTJig0NBQs0uBCWh/gH4Az0OgAOBWXl5e8vHxkZcXu5/qiPYH6AfwPLyTAbhVVlaWFixYoKysLLNLgQlof4B+AM9DoAAAAABgGIECAAAAgGEECgAAAACGESgAuFVQUJAGDRqkoKAgs0uBCWh/gH4Az+NtdgEAqpcGDRro2WefNbsMmIT2B+gH8DwcoQDgVvn5+Tp8+LDy8/PNLgUmoP0B+gE8D4ECgFulpKRozJgxSklJMbsUmID2B+gH8Dyc8gQAAAD8gd1uV2FhodllOMRqtcpisbh9uwQKAAAA4A8KCwu1ePFis8twyJgxY+Tt7f6v95zyBAAAAMAwAgUAAAAAwzjlCYBbtWjRQps3bza7DJiE9gfoB/A8HKEAAAAAYBiBAnATu90uu91e/Hd1dejQIU2cOFGHDh0yuxSYoLq3v81ml439QLVX3fsBPA+nPAEucv5Cob5Z+5viE49qy64sJe05rty8AklS+u95ajxokTq0ClPH1mEa1a+RmjeubW7BbpKXl6cdO3YoLy/P7FJggurW/smHz+jL1anasitLW3dlKflwdvG0jN/z1P32b9ShVZh6tK+rG/s1kr8fH8vVQXXrB/B87LkAJ0s/lqt5i3brX4v36tiJc+XOl5qeo9T0HC1enar/948tur5LfT00vqVu7NfIlGtIA3AOu92uZesO65+f7tbKDWnlzyfp5+3H9PP2Y3pj4S7Vqe2niTfGafItrRQdWdN9BQPAVSJQAE5it9v17lf79Jc5m3Qm54LDy3+/KV3fb0rX9V3q652ZPdWofpALqgTgSkeO5uq+5zZo2brDDi97/FS+Zr//q+Yt2q1XHu2kB25qKS8vflwAUPkxhgJwghOn8zXkwe90zzPrDYWJS32/KV1tRn+lj77Z76TqALjD4lUpajP6S0Nh4lK5eQWa/OLPuv7eFTp2nFNiAFR+BArgKh07nqc+E5dd9tQGR+WcvaA7nlinv3+0w2nrrCwiIyM1c+ZMRUZGml0KTOCp7f+vL/Zo3P+u0ans805b59qEDPW6c5nSMnOdtk5UDp7aD1B9ESiAq3A6+7wG3r9Sv+4/6ZL1/2X2Jr39xR6XrNsstWrV0uDBg1WrVi2zS4EJPLH9/70sWZOe3SBXXLRp36HTGnDfCmWdLH88FqoeT+wHcI/s7GydO1f59geMoQCuwpRXNmr73hMu3cbkF39W13Z11S4u1KXbcZeTJ09q9erV6t+/v0JCQswuB27mae2//9Bp3TMz3qXb2JNyWpOeXa/Fr17PBRs8hKf1A1xeTk6OkpOTdfDgQaWkpCgnJ0eFhYXy9fVVeHi4YmNjFRsbq5iYGHl5lf9b/5kzZ/TCCy8oICBAjz/+uPz9/d34Ki6PQAEYtGzdb/pgiWPjHBIWjlBEWA1lZp1Vp1uWVGiZCwU23fnkOm36ZIR8fKr+QcWjR49q9uzZatu2LR+k1ZAntX9hoU13/TVeeecKHVrOyH7gq+8PadHKgxo/uImRUlHJeFI/QNnsdrsOHDig7777Ths3btSFC+WPr1yzZo0kKSwsTNdff7369u2r2rVrl5inKEwU3btk/vz5+vOf/+yq8h1W9b+dVAFZWVmaNm2amjZtKn9/fzVs2FBTpkxRbm6u7r77blksFr3xxhtmlwkH5J8v1H3PbnB4uYiwGoqqF6iIsBoOLbdtz3HNXbjT4e0BcJ13vtqnDduOOryc0f3A5Jd+Vnau88ZoAHCNY8eO6YUXXtBTTz2l+Pj4y4aJS2VlZWnRokWaPHmyFi9erIKCi/eu+mOYCAkJ0U033eSy+o3gCIWLJSUlafDgwcrMzFRgYKBatWql9PR0vf7660pOTtaJExdPl2nfvr25hcIhi1el6sixs27d5tx/79KU21rLauV3AMBsdrtd//jEvSH/+Kl8/Xv5Qd03roVbtwugYux2u1avXq2PP/5Y+fn5xc/XrFlT3bt3V1xcnBo3bqywsDBZrVadO3dOaWlpOnjwoH799VclJSXJbreroKBAn3/+uRISEnTnnXfqvffeKxEmnnrqKdWvX9+sl1kmAoULZWVlafjw4crMzNTUqVP19NNPKyjo4r0FZs2apenTp8vb21sWi0Xt2rUzuVo44p+Ldrl9m6npOVqxPk3Deke7fdsASlq3NVO7kk+5fbvzFu3WpLHNGUsBVDI2m00ffvihVq5cWfxcWFiYxo4dq+7du8vX17fUMjVr1lSLFi3UokULDRkyRMeOHdOKFSv07bffymazKTU1VTNnzpT9/674UFnDhMQpTy71yCOPKC0tTZMnT9acOXOKw4QkTZs2Tddcc40KCgoUExOj4OBgEyuFIw6mndFPScdM2faH3xwwZbvOVKNGDXXp0kU1ajh2ugc8g6e0/0cm9cVf9p3QL/tceyEIuJ6n9ANcZLfbS4WJ66+/XrNmzVKfPn3KDBNlqVu3riZMmKDnnnuu+JLCRWEiKCio0oYJiUDhMrt379aiRYsUFhaml156qcx5OnToIEm65pprip8rCiCdO3eWn58fv0JVQpt//d20bSfsMG/bzhIdHa25c+cqOpojLdWRp7T/ZhP7YsKOLNO2DefwlH6Ai77//vviMGGxWPTAAw/o3nvvNRwYw8PD5ePjU+I5m81WqQMogcJFFi5cKJvNpttuu001a9Ysc56AgABJJQPFgQMHtHjxYkVERKhTp05uqRWO2bLTvA/z1PQcHT9V+a4/7YjCwsLiS+ah+vGE9j+bV6CdJpzuVGTLLgJFVecJ/QAX/f777/r444+LH993333q3bu34fUVDcD+7bffJEne3hdHJ+Tm5uqdd94pPmJR2RAoXKToEmB9+/Ytd560tIt3Vr40UFx33XXKyMjQkiVL1L9/f9cWCUPM/CIhyZTztp1p//796tevn/bvd+ySu/AMntD+e1NPyWYz70N95wHX3EgT7uMJ/QAXLViwoPhGc3379lWfPn0Mr6usqzk9/fTTxafFJyQkaOPGjVddsyswKNtFit4MjRo1KnN6QUGBNmy4eNnRSwPF5W5oYlTHjh2VmZnp9PVWV78H3SX5xJQ5rej68uWJCAso/v/hVeMvu53yrlE/aux4+V+oPGMpxo4d69D8x45dHH+yYsUKbd26tULLjBo1yuG64D6OvAeMtL9Uud4D+d7RUvDdZU670j5Aqvh+oLx9wKaEJEVF3e9AxXA19oMVM+quPyuwZrAyMjMUFRVV6nFl4+vrW+5p65J08OBBbd++XZIUGhqq22+/3fC2ygoTRWMmJk6cqNdee02S9PXXX6tr167lnhIfFxen8+eNXV46IiJCW7ZsMbQsgcJFcnNzJUl5eXllTl+0aJGysrIUFBSkxo0bu7SWzMxMHTlyxKXbqFYa50s+ZU8qur78lXhbvSo0X1mOZ2VJOZWnPYve6xVV1Cfy8vIqvCzv38rNkfeAkfaXKtl7oEaAVM51NCq6D5CM7wcuXDhfuf49wH6wgmz/d4qXrbBQR44cKfW4svHz87vs9FWrVhX/PXr0aMNjHC4XJiSpa9euatKkiZKTk5Wamqr9+/crLi6uzHWlp6eXuGStuxAoXCQiIkInT55UYmKiunXrVmJaRkaGHnvsMUlSu3btXD7wOiIiwqXrr26yfC0qr6tmZl3+3hQRYQHytnqpoNCmzKyyw+aV1hVWJ1h+tRpUpFS3CAx07AtR0YdnQEBAhZdt0KDyvF6U5sh7wEj7S5XrPXDeWkvlDcm+0j5Aqvh+oLx1+XpL4ZXo3wPsByvKy2ot/n+DBg1KPa5sLnd1pnPnzhWfaRIQEKCePXsa2saVwkSRgQMH6s0335R0cRB4eYGifv36V3WEwigChYv0799fu3fv1iuvvKIBAwYUN3xCQoJuv/12ZWVdHFTnjhvaGT18hbI99rfNmvPBr2VOK+v0hEsdXjVeUfUClZmVp4YDPjW0/b3bf1Borcv/auJOCQkJDs2/Z88eLVy4UIMHD1aLFhW7QVfRoV5UTo68B4y0v1S53gN55woU1O1DFRaWHkdxpX2AdPX7gYm33qA3n3rW4eXgOuwHK+bFf36iMzm5ioyIVFpaWqnHlU1BQYEWL15c5rSDBw8Wf3Hv2rWr/P39HV5/RcOEJHXr1k3vvPOOzp8/rz179pS7zn379hUP5HYnBmW7yLRp01SnTh0dPnxYrVu3Vtu2bdWsWTN17txZsbGx6tevn6SS4ydQNXRoVce0bTduEFSpwoQRTZs21bfffqumTZuaXQpM4AntH+DvrVaxtU3bfodWYaZtG87hCf2guktJSSn+u1mzZg4v70iYkC4eLSkal3v06FHl5OQYqNp1CBQuEhUVpfj4eA0dOlT+/v5KTU1VaGio3nrrLS1btkz79u2TRKCoijq3DTdx21X/i4S3t7dCQkJM+QUF5vOU9u9i6n7AvG3DOTylH1RnqampxX87OhbW0TBRJDY2tvjvomUrCwKFC7Vs2VJLly5Vdna2srOztWnTJk2aNEm5ublKTU2Vl5eX2rRpY3aZcFBsVLB6/qmeKdu+Y7jjv4JUNmlpaZo6dWqlPLwN1/OU9jerL7ZvEaq2zUJM2Tacx1P6QXV26RGCsLCK/9hnNExIUp06/z1DwtELAbga0dgEO3fulN1uV1xcXJlXBPjiiy8kSbt27SrxOCYmRh07dnRfoSjXgze31PptR926zcYNgnRD98o3aM1ROTk5io+P17333mt2KTCBp7R/z2vrqU3TEO1w8z0hHryppcsv5AHX85R+UJ3deuutGjJkiC5cuFB8o+KK2L59u6EwIUmdO3dWdHS0fHx81LBhQ0N1uwqBwgS//npxQG95pzuNGzeuzMcTJkzQ+++/79LaUDFjBsSo4WuBOpzpvl8IHrm1laxWDioClYHFYtGf/6e17nlmvdu2GRbir1uHNHHb9gCUr2HDhoa+1Pfq1Us5OTlasmSJQ2FCungVpsp65U4ChQmuFCgq623V8V++Pla99VQPDXnoO7dsr2PrME2+pZVbtgWgYu66MU4fLT2gH7e458ah857orsAa5dwEB0CVMXjwYPXu3dvwfSsqI37uNMGVAgWqhsG9GmriqLKvA12ezKyzSjuaW6Fr1Rfx9fHS+89dJ29vuitQmXh5WfTOzF6q4e/Yb3NG9gPjBjbWuIGuvQkqAPfxpDAhcYTCFGvWrDG7BDjJ3x/roqQ9x5W4+3iF5q/INer/6M0ne6h1U88ZhBkeHq4pU6YoPJwr1VRHntb+TRoG673nemn8tB9U0YPLju4HWjWprTef7G6gOlRWntYPAH7yBK5CcE1frXzzBrVvEeqS9b/+eFeHj4JUdnXq1NFtt91W4moVqD48sf1vuiFW78zsJS8v5w+WbtG4lla9NUh1ajt+0yxUXp7YD1C9ESiAqxQeGqAfFgzRsOucd8WF4Jo++vfLffTwra2dts7K4syZM1q9erXOnDljdikwgae2/103xmnxq/2ceuPJ/l3ra917Q1W/bqDT1onKwVP7AaovAgXgBLWD/bRk7gB98Px1qh3ke1XrGtQjSju+HK1bPPRqLunp6ZoxY4bS09PNLgUm8OT2v7FfjHZ+NVoj+0Zf1Xpq1vDRW3/toe/eGqTw0IpfjhJVhyf3A1RPjKEAnMRiseiOEc10Q48ozf9st95evFfpxyo+6HJQjyg9NL6lhl7XkOvMA1VURFgNffVaf636+YjeWLhbS9f9VuGxFXVD/XXvmOZ64KaWalCPoxIAqg4CBeBk9eoE6OkHrtWMe9pr+frDWp94VFt3ZWnbnuM6lX1ekmS1WtQkKlgdWtVRh1ZhurFfIzVpGGxy5QCcwWKxaGD3KA3sHqXUI9n6as0hbd2Vpa27srT/tzMqLLyYMIJr+qh98zrq0KqOerSvp+F9ouXrYzW5egBwHIECcBEfHy+N7NtII/s2Kn7OZrOrsNAuHx/ONgSqg5gGQXr09jYlnrtwwSar1eKSQdwAYAYCBeBGXl58ifDz81Pz5s3l5+e8wauoOmh/8YMC6AfwOAQKAG7VuHFjffTRR2aXAZPQ/gD9AJ6Hn0kAAAAAGEagAOBWe/fuVY8ePbR3716zS4EJaH+AfgDPQ6AA4FZ2u10XLlyQvaLX0oRHof0B+gE8D2MoAAAAgD+wWq0aM2aM09Y3+61Fys7NVVBgoB677+ZSj53BajXn0tMECgAAAOAPLBaLvL2d91XZLslmv/h/b2/vUo+rMk55AgAAAGBY1Y5DAKqcmJgYLVy4UA0aNDC7FJiA9gfoB/A8BAoAbuXv768mTZqYXQZMQvsD9AN4Hk55AuBWGRkZev7555WRkWF2KTAB7Q/QD+B5CBQA3Or06dNasmSJTp8+bXYpMAHtD9AP4HkIFAAAAAAMI1AAAAAAMIxAAQAAAMAwrvIE4Kp06tTJofmjoqL09NNPq3///oqMjHRRVXAnR94DtD88EftBVHcECgBuFRkZqWeeecbsMmAS2h+gH8DzcMoTAAAAAMMIFAAAAAAMI1AAAAAAMIxAAQAAAMAwAgUAAAAAwwgUAAAAAAwjUAAAAAAwjEABAAAAwDACBQAAAADDCBQAAAAADCNQAAAAADCMQAEAAADAMAIFJEmzZ89Wt27dFBISotq1a6tnz55auXKl2WUBAACUa/ny5Wrfvr38/PwUExOjV1991eyS3GrdunUaOXKkGjVqJIvFoueff96UOggUkCStWbNGEydO1A8//KDNmzere/fuGjZsmDZs2GB2aQAAAKVs2bJFI0eO1ODBg5WUlKRnnnlGM2bM0Pz5880uzW1ycnLUqlUrzZo1SxEREabV4W3allGprFixosTjWbNmaeXKlfryyy/Vo0cPk6oCAAAo26uvvqpOnTrppZdekiS1bNlSO3fu1Msvv6z777/f5OrcY8iQIRoyZIgkafr06abVQaBAmWw2m86cOaPAwECzSwEAAFXImZyzyvz9RKnnCwoLi/+/LyWt1ONLRdevK38/38tuZ8OGDbr77rtLPDdo0CDNmTNHaWlpioqKupqXYZjdblfyoXTZ7PYSzzvy+msHBapuWIh7CnYCAgXK9OKLL+rUqVOaNGmS2aUAAIAqxM/XR//5Ll4nTmWXOf1s3jm9+9nych83bhipe8cPveJ2MjIySp3mU/Q4IyPDtEBhsVh04NARrd2YVOb0K71+q9VLD08Y7eoynYoxFChl3rx5evHFF/XFF1+Y1hkBAEDV5Ofro5uH9pXFYjG07LihfeTlVbW/ovbv2UGRdesYWvaG6zorIjzUyRW5VtVuLTjdnDlz9Nhjj2nJkiXq37+/2eUAAIAqqFFUhPp0vcbh5Yb3767QWkEVmjcyMlKZmZklnjt69GjxNDN5W626eVhfWa2OfdWOjY5Uz05tXVSV6xAoUOyvf/2rZs6cqeXLlxMmAADAVbm+RwfVr1fxX+lbx8WoQ5u4Cs/fo0cPffvttyWeW7lypRo1alQpzrCICA/VoOs6V3h+P18fjRvSR14GjuyYjUABSdKf//xnzZ49Wx999JGaN2+uzMxMZWZm6vTp02aXBgAAqiBvq1U3D+0rb6v1ivPWDAzQqBt6OXSa1KOPPqrNmzfriSee0J49e/TBBx9o7ty5evzxx6+mbKfq0amtYqMrdrRkxIAeCqng0ZkiOTk5SkpKUlJSks6fP6/MzEwlJSXpwIEDRso1zGK3/2EIOqql8jrwhAkT9P7777u3GAAA4DHiE37RsjUbLzvPhDE3qGXTRg6ve9myZZoxY4b27NmjiIgITZkyRX/5y1+MluoSJ09n67V3v1D++QvlztM6Lkb/c+MAh8edrF27Vn379i31fO/evbV27VpHSzWMQAGHnM07pxOnshUVGW52KQAAoAqw2e1a8OkyHfwtvczpna9podGDrnNzVe61dcc+fb5sbZnTagYG6NGJ4xRYw9+9RTkRpzzBIfEJv+qND7+64i8NAAAAkuRlseimoX3k5+tTalpo7SAN7dfNhKrc69rWzdQmrnGZ08YO7l2lw4REoIADcvPO6aetOyRJMVHm3d4dAABULbWDa+rGgT1LPGexWHTz0L5lBg1PY7FYNOqGXqoZGFDi+S7tW6pFk2iTqnIejwkUFoul+Lyzb775Rr169VJwcLDCwsI0duxYJScnF8+7dOlS9e7dW7Vr11ZwcLBGjhyp/fv3l7vu/Px8/eMf/1D37t1Vu3Zt+fv7q3nz5nrssceUlZVV5jKbNm3S9OnT1alTJ0VERMjPz08NGjTQTTfdpISEhHK3tXz5cg0ZMkR169aVj4+P6tSpo5YtW2rixInasGGDwX8d51if8Kvyz19QZN06atXM8fMcAQBA9dW+VVO1bf7fX+n7dL1GjarRD5SBNfw1dnDv4sd1agdrSN+uJlbkPB4zhqIoTLzxxhuaPHmy6tevr3r16mnPnj3Ky8tTgwYNtG3bNn3yySd69NFHFRkZqYiIiOLpERER+uWXXxQeXnJswNGjRzV48GBt27ZNXl5eatiwoYKDg7Vv3z7l5+crOjpaP/zwg2JjY0ss17RpUyUnJys0NFSRkZHy9fXVb7/9puPHj8vb21uffvqpxowZU2KZefPm6aGHHpIk1alTR40aNVJeXp4OHz6snJwc3XfffZo/f74L/xXLl5t3TrPmL1T++Qu6fdRAtY6LMaUOAABQdeXmndNr736hoMAAPXj7jRW6ApSn+erbeG3evkf33zZCjRrUM7scp/C4QFGjRg29+eabuuOOOyRJJ06c0KBBg5SQkKBhw4bp+++/1/z584unHz9+XDfccIO2bt2q6dOn6+WXXy5ep91uV9++ffXjjz9q6NCheuONNxQTEyPp4mW6pkyZonfffVfdunXTTz/9VKKeDz/8UN27d1fTpk2Ln7PZbPr66691xx13yNvbW4cPH1bNmjUlSQUFBapbt65OnjypefPmadKkSbL+Xyez2+2Kj4/X8ePHNWrUKIf/beZ+8KWyc/IcXu5S+efPK//8BXl5ealmjYArLwAAAFCGgoICWSxeDt/0zVPY7XZdKCiQr0/lOtUrqGaAHp4w2tCyHhcoHn74Yb3++uslpq1cuVKDBw8ud/qKFSs0ZMgQtWvXTtu3by9+fvny5Ro6dKjatGmjhIQE+fuXHDBTWFiozp07KzExUevXr1ePHj0qVOtTTz2l559/XgsXLtT48eMlSZmZmYqMjFRISIhOnDjh2Iu/ghf/+YnO5OQ6dZ0AAADwHME1AzXjodsMLevt5FpMd88995R67tprr63Q9IMHD5Z4fvHixZIu3ovhj2FCkqxWq0aMGKHExEStXbu2VKDYv3+/Pv30U23fvl3Hjx/XhQsXrz987NgxSVJSUlJxoAgPD5e/v79OnTqlVatWacCAARV+zVcSVPPqjihwdAIAAMCzXc33RY8LFE2aNCn13KXjIsqaXrduXUkXT2O61C+//CJJeu+99/Sf//ynzO0dPXpUknTkyJESz//tb3/T448/roKCgnJrPX78ePHfVqtVU6ZM0SuvvKKBAwfq2muvVf/+/dWzZ0/17t1bwcHB5a7nSowevpL+O3ZCkm4b2Z+xEwAAACjB4055Ku/lGJnerFmzCt+6/NI7Sm/YsEE9e/aU1WrVzJkzNXLkSMXExCgwMFAWi0Xvvvuu7r777lJ3obbZbJo3b57++c9/as+ePcXP+/n56dZbb9WcOXMUGhpaoXoudTVjKDg6AQAA4PmuZgyFxx2hcKaiAdNLlizR8OHDK7zcRx99JEmaOnWqnnjiiVLTLz0ycSkvLy9NnjxZkydPVlpamuLj47Vq1Sp99tlneu+993T48GGtWrXK4deRnZN31WMobDYb4zAAAABQCoHiMlq3bq2kpCTt2LHDoUCRkpIiSerZs2eZ0zduvPJdpqOionTLLbfolltu0dSpU9W2bVutXr1aKSkpaty47DstlsfoOXEcnQAAAKgeGEPhImPHjtUnn3yit99+Ww8//HDxEYsrCQi42CCZmZmlpu3fv19Lly51qI7WrVurVq1aOnXqlNLT0x0OFEYOXzF2AgAAABVRPS8AXEEjR45U7969lZqaqoEDB2rHjh0lpttsNv3888+6//77S1whqlevXpKkl156qcQdunfu3Knhw4fLy6v0P/uuXbt07733auPGjSXGcRQWFuq1117TqVOn5O/vr9atWzv7ZZaJu2IDAACgIhiUfYXpWVlZGjlyZPGN6xo1aqSIiAjl5eUpOTlZubkXxxXs3r1bLVq0kCRlZ2fr2muv1YEDB+Tj46PmzZvLZrNp9+7dioyM1IMPPqgnn3yyxKDspKQk/elPf5IkBQUFqUmTJrJarUpNTS0eczFv3jw98MADhv59HMFdsQEAAFBRHKG4grCwMP344496//33NWDAAOXm5mrLli1KSUlR06ZNNWXKFP3444+Ki4srXiYoKEjr16/XxIkTFRISor179yonJ0f33XefEhMT1aBBg1LbiYuL04IFC3TzzTcrMjJSBw8e1Pbt2+Xv769x48YpPj7eLWFCks7ln1d0/bocnQAAAMAVecwRCjjfufzz8vfzNbsMAAAAVGIECgAAAACGccoTAAAAAMMIFAAAAAAMI1AAAAAAMIxAAQAAAMAwAgUAAAAAwwgUAAAAAAwjUAAAAAAwjEABAAAAwDACBQAAAADDCBQAAAAADCNQAAAAADCMQAEAAADAMAIFAAAAAMMIFAAAAAAMI1AAAAAAMIxAAQAAAMAwAgUAAAAAwwgUAAAAAAwjUAAAAAAwjEABAAAAwDACBQAAAADDCBQAAAAADCNQAAAAADCMQAEAAADAMAIFAAAAAMMIFAAAAAAMI1AAAAAAMIxAAQAAAMAwAgUAAAAAwwgUAAAAAAwjUAAAAAAwjEABAAAAwDACBQAAAADDCBQAAAAADCNQAAAAADCMQAEAAADAMAIFAAAAAMMIFAAAAAAMI1AAAAAAMOz/A8/BJuqGtwsRAAAAAElFTkSuQmCC"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 10
},
{
"cell_type": "markdown",
"id": "8d3e094f",
"metadata": {},
"source": [
"Not much is new here, except the `measure_all` function, which measures all of the qubits and puts the results into a single classical register (and therefore having two bits in this case).\n",
"\n",
"Running the Aer simulator produces the expected output.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "6309a901-c3da-4b7d-b762-c6a7b542457b",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:45.157029715Z",
"start_time": "2026-06-11T02:04:44.976138486Z"
}
},
"source": [
"result = AerSimulator().run(protocol).result()\n",
"statistics = result.get_counts()\n",
"\n",
"for outcome, frequency in statistics.items():\n",
" print(f\"Measured {outcome} with frequency {frequency}\")\n",
"\n",
"display(plot_histogram(statistics))"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Measured 10 with frequency 1024\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJz9JREFUeJzt3XlYlXX+//EXu3AIdfSgIriMfgHFNWicMbWZGpf5Tpo6pe02ZdOmpaBZ2WKLjrk0bs132mbU0lIs239TTYlpLskiKoqIJgIaHBQQkGT9/WFzpjO4ncMB5OPzcV1cce77c+77ffdHPa/7LHh0CAmtFQAAAJo9z6YeAAAAAO5B2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACG8G7qAZqzdu3aqaysrKnHAAAAhrNYLMrLy7vgOsLORe3atVNKcmJTjwEAAC4T/a+MuWDcEXYu+veduv5XxnDXDgAANBiLxaKU5MSL6g3Crp7KyspUWlra1GMAAADw4QkAAABTEHYAAACGIOwAAAAMQdgBgJMGDBigFcv/ruSkRB3NzdaI4cPrrJk+LU4pyYk6mHlAa95Zra5du9j3hYaGauGC+dq29RsdzDygLd9s1rS4WPn4+Jz1fF26dFHG/n3at3dPQ10SAEMQdgDgpIAAf6Xt3acnZj551v0PPfiA7r77j3rssSd0/ciROnWqXKtXvSU/Pz9JUvfu3eXp6akZMx7Xb669TrNmPas77rhdjz82o86xvL299deXl2n79m8b9JoAmIFPxQKAkzZsSNCGDQnn3D9x4j1avHipPvv8c0nSw49MUerOZI0YPlwffPihEhISlJDwn+cfOXJE3f72c9155x167vkXHI4149HpyjyYqc2bv1FMTHRDXA4Ag3DHDgDcqFOnTmrXrp02bd5k31ZSUqKUlJ2Kjr7ynM+7IihIRUXFDtuuvnqgrr/+93riibPfGQSA/0bYAYAbBQdbJUk2W4HDdluBTcHBwWd9TpcuXXT3H+/Sm2+9Zd/WunUrLfrLS5oyNY7vygRw0Qg7AGhC7du316q33tTHH3+i1avftm+fP2+e1q9/X9u3b2/C6QA0N4QdALhRfr5NkmS1tnXYbm1rVX5+vsO2du3aKT5+jRKTEjX9UccPTlx99UDdf/99OpL1nY5kfaeFC+arZcuWOpL1nW4eP75hLwJAs8WHJwDAjY4cOaK8vDwNGjRIaWl7JUmBgYHq37+fVq58076uffv2io9fo927dmvq1DjV1tY6HGfkqNHy8vKyPx4+fJgeevABjbphjL7//vvGuRgAzQ5hBwBOCggIcPheurBOYYqK6qmiwiLlHj2q119/Q488PFnfHfpOR7Kz9ej0acrLy9M/P/tM0pmoW7durXJzcvTc8y+oTZs29mPZbGfu+GVmZjqcs2/fPqqpqdH+/fsb/gIBNFuEHQA4qW/fPnp3Xbz98bOznpEkrVkbr6lTY/XyX/9PAQEBmjdvroKCgrRjxw7ddvsdOn36tCRpyJDB+nnXrvp5165KTtrhcOyQjmGNdyEAjOPRISS09sLL8N8CAwOVsX+fwiN68Ik1AADQYJxpDj48AQAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhvBu6gFwfmFjv2zqEQAAwHlkv3ddU49gxx07AAAAQxB2AAAAhiDsAAAADEHYAQAAGOKSC7sBAwZoxfK/KzkpUUdzszVi+PA6a6ZPi1NKcqIOZh7QmndWq2vXLg77W7VqpWVLl2h/+l7t27tHCxfMV0BAgMOaHj0itf69d3Xo4AEl7tiuBx+4vyEvCwAAoMFdcmEXEOCvtL379MTMJ8+6/6EHH9Ddd/9Rjz32hK4fOVKnTpVr9aq35OfnZ1+zbOkSRUSE6+ZbbtWECX/UgF8O0Px5L9r3BwYG6u3Vq5STk6MRv/u9nn9+tuLiYnXbbbc2+PUBAAA0lEvu6042bEjQhg0J59w/ceI9Wrx4qT77/HNJ0sOPTFHqzmSNGD5cH3z4obp3765rr/2NRvzu99q1a5ck6cknn9Zbb67Qc8+/oLy8PI0dO0Y+Pr6KjZumyspKZWRkKCqqp+77071atWp1Y1wmAACA211yd+zOp1OnTmrXrp02bd5k31ZSUqKUlJ2Kjr5SkhQTHa2ioiJ71EnSpk2bVFNTo/79+0uSoqOv1Pbt21VZWWlfk7Bxo7p3766WLVue9dy+vr4KDAy0/1gsloa4RAAAAJddcnfszic42CpJstkKHLbbCmwKDg6WJFmDrTp+/LjD/urqahUVFdmfH2wN1pHsI47H+PGYVqtVxcXFdc49edJDiouLrbO9f/9+Ki8v186dqYqICJe/v79KSkp0+HCWevfuJUnKPpItD08PhYaGSpJSU3epe/duslgsKis7pczMTPXt20eSlJubq+rqGnXqFCZJynPi3w8AAGh8MTHRkqRDhw4pIMCi9u3bSZKSkpLVq1eU/Pz8VFxcrJycXEVF9ZQkHT6cJV9fX4WEdJCk83bEieMnLnqWZhV2TWnpspf1yquv2R9bLBalJCcqJWWnSktLJUlpaXsdnpOYmOTw+Pvv/5Np+/aln3dtfn6+JCmsU/1nBwAADeen/w8/caJQOTk59se7d+8551pJOnr0qP33c3VEYGDgRc/SrF6Kzc+3SZKs1rYO261trfYQsuXb1KZNG4f9Xl5eatWqlf35+bZ8WdtaHY/x4zFtNttZz11RUaHS0lL7T1lZWf0vCAAAwI2aVdgdOXJEeXl5GjRokH1bYGCg+vfvp6SkZElSYlKSWrVqpd69e9vXDLr6anl6eiolJUXSmVujAwYMkLf3f25YDhkyRJmZmWd9GRYAAKA5uOTCLiAgQFFRPe2vQYd1ClNUVE91DAmRJL3++ht65OHJGjZ0qCIjI7Vk8SLl5eXpn599JknKzMzUV19t0IL5L6pfv366KiZGL8x+Xh988KHy8s68FLp+/fuqrKzQwoXzFR4erlGjRmriPXc7vNQKAADQ3Fxy77Hr27eP3l0Xb3/87KxnJElr1sZr6tRYvfzX/1NAQIDmzZuroKAg7dixQ7fdfodOnz5tf86kyQ9r9gvPa+2at1VTU6NPP/1/evKpp+37S0pKdMutt2nO7Nn65//7RCcKC/WXvyziq04AAECz5tEhJLS2qYdojgIDA5Wxf5/CI3rYPzzREMLGftlgxwYAAPWX/d51DXp8Z5rjknspFgAAAK4h7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGaJZht33bFh3Nza7zM2f2C5KkdfFr6+ybO3eOwzE6hoRo5crlOpiZoV2pKXrqyZny8vJqissBAABwC++mHsAVv/vf6x0iLDIyQmveeVsfffyxfdtbb63S/AUL7Y/Ly8vtv3t6emrlyhWy2fI16obRCg4O1pLFi1RZVaW5c19snIsAAABws2YZdidOnHB4PGnSg/ruu8PaunWbfVv5D+Wy2Wxnff411wxRePj/aPzNt6igoEBpaXs1b/4CzXzicS1c+JIqKysbdH4AAICG0Cxfiv0pHx8f/WHsWL2zZo3D9rFjxmjP7lR99eW/9PhjM+TfooV9X0x0tNLT01VQUGDflpCwUUFBQYoID2+02QEAANypWd6x+6kRI4YrKChIa9fG27etf/995eTkKi8vTz16RGrmzCfUrVs3Tbz3T5Ikq9Uqm63A4TgFP97dswZbpbS65/H19ZWvr6/9scViaYCrAQAAcF2zD7tbbr5ZGzZsUF5enn3bqlWr7b+np6crPz9f8WvXqHPnzsrKynLpPJMnPaS4uNg62/v376fy8nLt3JmqiIhw+fv7q6SkRIcPZ6l3716SpOwj2fLw9FBoaKgkKTV1l7p37yaLxaKyslPKzMxU3759JEm5ubmqrq5Rp05hkqS8OmcEAACXkpiYaEnSoUOHFBBgUfv27SRJSUnJ6tUrSn5+fiouLlZOTq6ionpKkg4fzpKvr69CQjpI0nk74sTxE2c569l5dAgJrXXnxTWmjh07atvWbzRx4p/02eefn3Odv7+/DmZm6JZbb9fGjRs1fVqchg0bqqHDRtjXhIWFafu2LRo2bIT2pNW9ZXe2O3YpyYkKj+ih0tJS917YT4SN/bLBjg0AAOov+73rGvT4gYGByti/76Kao1m/x+7m8eNUUFCgf315/vjpFRUlScrPP3P/KzEpSZGRkWrTpo19zZAhg3Xy5EllHDhw1mNUVFSotLTU/lNWVuamqwAAAHCPZht2Hh4eGj9+nOLj16m6utq+vXPnzpoy5RH17t1boaGhGjZ0qBYvXqStW7dp3750SdLGjV8rI+OAli5ZrJ49e+iaa67RjEena/mKlaqoqGiqSwIAAKiXZvseuyGDBys0NLTOp2ErKys0eNAgTZx4jwL8/XX02DF9+umnWrR4iX1NTU2N7pxwl+b+eY4++vADnTp1SvHx6zR//oLGvgwAAAC3abZht/HrrxXSMazO9qNHj+kPN950wefn5ubqjjsnNMRoAAAATaLZvhQLAAAAR4QdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAzhctgNGDBAHUNCzrsmJKSDBgwY4OopAAAA4ASXw25d/BqNG3fTedfceOONWhe/xtVTAAAAwAkuh52Hh8eFD+7pqdraWldPAQAAACc06HvsunbtopMlJQ15CgAAAPzI25nFLy1c4PB4xIjhCgsLq7PO08tTISEh+uWAAdqwYUP9JgQAAMBFcSrsfvqeutraWkVFRSkqKuqsa2tra7UzNVXPzHqufhMCAADgojgVdgN+OVDSmffXbdv6jV57/Q29/vobddbV1FSrqKhY5eXl7pkSAAAAF+RU2OXm5tp/nxobpz179jhsAwAAQNNxKux+Kj5+nTvnAAAAQD25HHb/1q9fP/Xr21dBLYPk5Vn3Q7a1khYtWlzf0wAAAOACXA67Vq1a6e9vvK6rroo573fa1dbWEnYAAACNwOWwe+aZp/WLX1ylLVu3Kj5+nY4dO6aqqmp3zgYAAAAnuBx2Q397nVJ27tS4cTe7cx4AAAC4yOW/PNGiRQtt37bdnbMAAACgHlwOu7S0NIWGhbpzFgAAANSDy2H30kuLNGzoUF15ZX93zgMAAAAXufweO2uwVV9++ZXeXRev9evf1+7du1VSWnrWtevWvevygAAAALg4Lofdor+8pNraWnl4eGjcuJs0btxNqq2tdVjj4eGh2tpawg4AAKARuBx2U2Pj3DkHAAAA6ok/KQYAAGAIlz88AQAAgEuLy3fsOoaEXPTa3KNHXT0NAAAALpLLYbd9+9Y6H5Y4m9raWnXq3NXV0wAAAOAiuf4eu3XvSmcJuyuuuEI9e/ZUp05h2rptm3Kyc+o1IAAAAC6O65+KnRp73v3333efHnzwfsXFTXf1FAAAAHBCg3144m+vvKL9GRl66smZDXUKAAAA/ESDfip2V+ouXX31wIY8BQAAAH7UoGHXuXNneXu7/GovAAAAnOD26vLw8FCHDu01btw4DR8+TJs3f+PuUwAAAOAsXA67nOys837diYeHh4qKi/Xsc8+7egoAAAA4weWw27Ztu2pVN+xqampUXFys1J2pemfNWh0/frxeAwIAAODiuBx2N940zp1zAAAAoJ74W7EAAACGcMuHJ66KiVFUVJQCrwhUaUmp0tLStCMx0R2HBgAAwEWqV9jFxETrLy8tVJcuXSSd+cDEvz9Q8d1332lqbJySkpLrPSQAAAAuzOWwCw8P19urV8nf319ff71JW7ZsUV5+voKtVg0cOFDXXDNEq1e9petH3qADBw64c2YAAACchcthFzt1inx8fHT7HROUkJDgsO/lv/6ffv3rX2v5P95Q7NQpeuDBh+o7JwAAAC7A5Q9P/OpXv9Qnn3xaJ+r+LSEhQZ988qkGDvyVq6cAAACAE1wOuyuuuEJHsrPPu+ZIdrauuOIKV08BAAAAJ7gcdnl5ebryyv7nXXNl/37Ky8tz9RQAAABwgsth9/kXX2jgr36l6dOnyc/Pz2Gfn5+fpsXFauDAgfrs8y/qPSQAAAAuzOUPTyxatFi/ve63enjyJN1x+21K2blTBbYCtbW2Vb++fdWmTRtlZR3RokWL3TkvAAAAzsHlsCssLNLIkaP05JMzdcMNo3Tdtdfa950+fVpr1qzV7NlzVFRU5I45AQAAcAH1+oLiE4WFio2bpkdnPKbu3bvrisBAlZSWKjMzU1VVVe6aEQAAABfB6bB7+OHJCggI0IIFC+3xVlVVpfT0dPsaHx8fzZjxqMpKS7Xs5b+6b1oAAACck1Mfnhg8eJCmT4tTYWHhee/IVVZWqrCwUDNmPOr277GLi52qo7nZDj9fb9xg3+/n56c5s1/Qnj27dCAjXa+9+oratm3rcIyOISFauXK5DmZmaFdqip56cqa8vLzcOicAAEBjcyrsbrzxDyouLtY//rH8gmuXL1+hoqIijR8/ztXZzik9fb/69rvS/jN69Fj7vlmzntHQob/Vfffdr7F/uEnt2rfTG6+/at/v6emplStXyNfHR6NuGK1HpkzVuHE3afr0aW6fEwAAoDE5FXYx0THatGmzKioqLri2oqJCmzZt1lUxV7k83LlUV1fJZrPZf04UFko686XJt9w8XrOefU7ffLNFu3fvVuzUOF111VX279y75pohCg//H02a/IjS0vZqw4YEzZu/QHdNuFM+Pj5unxUAAKCxOBV27du3U9aRIxe9/kh2ttq1C3Z6qAvp2rWrkpMStXXLZi1bukQdQ0IkSX369Javr682bdpsX5t58KBycnIUHR0tSYqJjlZ6eroKCgrsaxISNiooKEgR4eFunxUAAKCxOPXhiZqaGvl4X/xTfLy9VVNT4/RQ55OckqIpU2N18OBBBQe3U1zsFK1f/65+c+1vFWwN1unTp3Xy5EmH59hsBQq2WiVJVqtVNluBw/4Cm+3MvmCrlHb28/r6+srX19f+2GKxuPGqAAAA6s+psPs+L08REREXvT4iIkLff/+900Odz4YNCfbf9+1LV0pKir7dvlWjRl6vH3447dZz/dTkSQ8pLi62zvb+/fupvLxcO3emKiIiXP7+/iopKdHhw1nq3buXJCn7SLY8PD0UGhoqSUpN3aXu3bvJYrGorOyUMjMz1bdvH0lSbm6uqqtr1KlTmCSJP8gGAMClLSbmzKuChw4dUkCARe3bt5MkJSUlq1evKPn5+am4uFg5ObmKiuopSTp8OEu+vr4KCekgSeftiBPHT1z0LE6F3bfbv9XYsWMUGhqqnJyc864NDQ3V1VcP1Lp17zpzCqedPHlShw59py5duujrTZvk5+enoKAgh7t2Vmtb5f94V85ms6l//34Ox2j74908W77tnOdZuuxlvfLqa/bHFotFKcmJSknZqdLSUklSWtpeh+ckJiY5PP7++/9k2r596eddm5+fL0kK63TOkQAAwCXgp/8PP3Gi0KGRdu/ec861knT06FH77+fqiMDAwIuexan32C1fvkI+Pj567dVX9LPWrc+5rnXrVnr1lb/J29tbK1e+6cwpnBYQEKDOnTsrPz9fu3btVkVFhQYNutq+v1u3nys0NFRJSWf+5SQmJSkyMlJt2rSxrxkyZLBOnjypjAMHznmeiooKlZaW2n/Kysoa7qIAAABc4NQdu9179ui119/QvRPvUULCV3rzzbf0zZYtOnbsmCSpffv2GjRokG6/7Va1adNGr776mnbv2XOBozrn6aee1Odf/Es5OTlq376dpsXFqqamWuvf/0AlJSV6+501mvXM0yoqKlJJSalmv/CcEhMTlZycIknauPFrZWQc0NIli/XC7NmyWoM149HpWr5i5UV92hcAAOBS5fRfnnj22ed0+vRpPXD/fXr44cl6+OHJDvs9PDxUXV2tpcte1osvznPboP/WoUMH/fXlZWrdupWOnzihHd/u0PUjb9CJE2def54161nV1tTotVdflZ+frxISNurxJ2ban19TU6M7J9yluX+eo48+/ECnTp1SfPw6zZ+/wO2zAgAANCaPDiGhta48sXPnzho/fpxiYqLtnzjNt9m0Y0ei1q6NV1ZWllsHvdQEBgYqY/8+hUf0sL/HriGEjf2ywY4NAADqL/u96xr0+M40h9N37P4tKytL8+bNd/XpAAAAcDOnPjwBAACASxdhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADBEswu7SZMe0qeffKyM/fu0KzVFf3/jdXXr9nOHNevi1+pobrbDz9y5cxzWdAwJ0cqVy3UwM0O7UlP01JMz5eXl1ZiXAgAA4FbeTT2As371y19q+YoV2rkzVd7eXnrssRl6e/UqXfPra1VeXm5f99ZbqzR/wUL745/u8/T01MqVK2Sz5WvUDaMVHBysJYsXqbKqSnPnvtio1wMAAOAuzS7sbrv9DofHU6bEas/uVPXp00fbt2+3by//oVw2m+2sx7jmmiEKD/8fjb/5FhUUFCgtba/mzV+gmU88roULX1JlZWWDXgMAAEBDaHYvxf63oKAgSVJRUZHD9rFjxmjP7lR99eW/9PhjM+TfooV9X0x0tNLT01VQUGDflpCwUUFBQYoID2+UuQEAANyt2d2x+ykPDw89++wz+vbbb7V//3779vXvv6+cnFzl5eWpR49IzZz5hLp166aJ9/5JkmS1WmWzFTgcq+DHu3vWYKuUVvdcvr6+8vX1tT+2WCwNcEUAAACua9ZhN2fObEVGRGj0mLEO21etWm3/PT09Xfn5+Ypfu0adO3dWVlaWS+eaPOkhxcXF1tnev38/lZeXa+fOVEVEhMvf318lJSU6fDhLvXv3kiRlH8mWh6eHQkNDJUmpqbvUvXs3WSwWlZWdUmZmpvr27SNJys3NVXV1jTp1CpMk5bk0LQAAaCwxMdGSpEOHDikgwKL27dtJkpKSktWrV5T8/PxUXFysnJxcRUX1lCQdPpwlX19fhYR0kKTzdsSJ4ycuehaPDiGhte68uMYy+4XnNXz4MI0Ze6Oys7PPu9bf318HMzN0y623a+PGjZo+LU7Dhg3V0GEj7GvCwsK0fdsWDRs2QnvS6t6yO9sdu5TkRIVH9FBpaan7Luy/hI39ssGODQAA6i/7vesa9PiBgYHK2L/vopqjWb7HbvYLz2vEiBG6adz4C0adJPWKipIk5eefuf+VmJSkyMhItWnTxr5myJDBOnnypDIOHDjrMSoqKlRaWmr/KSsrc8OVAAAAuE+zeyl2zpzZGjP6Bv3x7okqLS2T1WqVJJWUlOiHH35Q586dNWbMaH355VcqLCxUzx49NGvWM9q6dZv27UuXJG3c+LUyMg5o6ZLFemH2bFmtwZrx6HQtX7FSFRUVTXl5AAAALmt2YXfXhDslSe+9G++wfcrUWK1dG6/KygoNHjRIEyfeowB/fx09dkyffvqpFi1eYl9bU1OjOyfcpbl/nqOPPvxAp06dUnz8Os2fv6BRrwUAAMCdml3YhXQMO+/+o0eP6Q833nTB4+Tm5uqOOye4aywAAIAm1yzfYwcAAIC6CDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMARhBwAAYAjCDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGAIwg4AAMAQhB0AAIAhCDsAAABDEHYAAACGIOwAAAAMQdgBAAAYgrADAAAwBGEHAABgCMIOAADAEIQdAACAIQg7AAAAQ1z2YXfXhAnavm2LDh08oI8/+lD9+vVr6pEAAABcclmH3ahRI/XMM0/ppZcWafiI/9XevXu1etWbatOmTVOPBgAA4LTLOuz+dO+9Wr36ba1Zu1YHDhzQjMceV3n5D7rl5vFNPRoAAIDTLtuw8/HxUZ8+vbVp02b7ttraWm3avEnR0dFNOBkAAIBrvJt6gKbys5/9TN7e3rIV2By2F9gK1L1b9zrrfX195evra39ssVgc/tlQLC0u2/YGAKBZCAwMbNDjO9Mal23YOWvypIcUFxdbZ3tKcmITTAMAAC4Z8/c1ymksFotKS0vPu+ayDbsTJ06oqqpK1rZWh+1trW1ls9nqrF+67GW98uprDttat26twsLCBp0TgFksFotSkhPV/8oYlZWVNfU4AJoJi8WivLy8C667bMOusrJSu3bt1qBBV+ufn30mSfLw8NCgQYO0/B/L66yvqKhQRUWFw7YLVTMAnEtZWRn/DQFw0S72vxeXbdhJ0quvvaZFf3lJqbt2KSVlp+699x4F+PvrnTVrm3o0AAAAp13WYffhhx+pzc9+punT4mS1WpWWtle33X6HCgoKmno0AAAAp3l0CAmtbeohAOBy4evrq8mTHtLSZS/XeXsHANQXYQcAAGAIviQNAADAEIQdAACAIQg7AAAAQxB2AAAAhiDsAAAADEHYAQAAGIKwAwAAMMRl/ZcnAKCpXHvtb9SyZUt5e3vr+PHjSklJUWFhUVOPBaCZI+wAoBFZLBa9OPfPGjJksLy8vJWXl6eyU2UqLCzU1i1b9eFHHys3N7epxwTQTBF2ANCI7rnnbkVGRmrivffp22+/VUREhK66KkYDfvELjR07Rn379tX0R2eopKSkqUcF0AzxJ8UAoBG9v/5dffTxJ3rjjb87bPfw8NCQwYM1f/6L2r17j+6ZeG8TTQigOePDEwDQSLy9vbU/I0O/GzFCrVu3kiR5eXnJ09NTtbW12vj113pi5pPq0qWLIiIimnZYAM0SYQcAjaSqqkpr1qxV+w7tNXHiRLVu3UrV1dWqqamxr0lLS1OnTmEqLi5uwkkBNFe8FAsAjcjb21vjx4/T44/NkKenpz76+GO9//4HysnJVVRUlIYPG6rIyEj97n9/39SjAmiGCDsAaAJBQUEaN+4mjRk9WlFRPVVSUqLTp09r9+49WrpsmZKTU5p6RADNEGEHAI2gRYsW+uGHH+ps92/RQgEWi3r0iFRZWZlSUnY2/nAAjEHYAUAjePrpp7Rjxw7t2rVbNptNFRUVdda0bNmS99YBqBfCDgAa2JjRo7V06WJVVVXp2LFj+udnn+uLL75QRsYBFRUVqaqqSoGBgVqyeJHmzV+g9PT0ph4ZQDNF2AFAA1swf54qKiv1t7+9otGjb9Ctt9ys0NBQ7dmzRx9//IkSEjYqKipK8+bNVecuP2/qcQE0Y4QdADQgLy8vPfjgA7JYLJo790X79h49InXXXRM0auRIeXl5ydfXV++9t16xcdOacFoAzR1hBwANLCgoSFZrWx08eEg+Pj6qrKx02D9mzGgtXbJYw4aP0N69+5poSgAm4G/FAkADO3nypE6ePClJ9qjz8PCQh4eHampq5O/vr9OnTxN1AOqNsAOAJlBbW6va2jMvmAQGBmrBgoVNPBEAE/BSLAA0MW9vb1VXV9tDDwBcxR07AGhiVVVVTT0CAEN4NvUAAAAAcA/CDgAAwBCEHQAAgCEIOwAAAEMQdgAAAIYg7AAAAAxB2AEAABiCsAMAADAEYQcAAGCI/w8KsYkF7jH3RgAAAABJRU5ErkJggg=="
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 11
},
{
"cell_type": "markdown",
"id": "a6e90734",
"metadata": {},
"source": [
"Now let's use an additional qubit as a random bit generator — essentially to flip fair coins. We'll use it to randomly choose $c$ and $d,$ and then run the superdense coding protocol.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "06e461e9",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:45.444576244Z",
"start_time": "2026-06-11T02:04:45.159739069Z"
}
},
"source": [
"rbg = QuantumRegister(1, \"coin\")\n",
"ebit0 = QuantumRegister(1, \"A\")\n",
"ebit1 = QuantumRegister(1, \"B\")\n",
"\n",
"Alice_c = ClassicalRegister(1, \"Alice c\")\n",
"Alice_d = ClassicalRegister(1, \"Alice d\")\n",
"\n",
"test = QuantumCircuit(rbg, ebit0, ebit1, Alice_d, Alice_c)\n",
"\n",
"# Initialize the ebit\n",
"test.h(ebit0)\n",
"test.cx(ebit0, ebit1)\n",
"test.barrier()\n",
"\n",
"# Use the 'coin' qubit twice to generate Alice's bits c and d.\n",
"test.h(rbg)\n",
"test.measure(rbg, Alice_c)\n",
"test.h(rbg)\n",
"test.measure(rbg, Alice_d)\n",
"test.barrier()\n",
"\n",
"# Now the protocol runs, starting with Alice's actions, which depend\n",
"# on her bits.\n",
"with test.if_test((Alice_d, 1), label=\"Z\"):\n",
" test.z(ebit0)\n",
"with test.if_test((Alice_c, 1), label=\"X\"):\n",
" test.x(ebit0)\n",
"test.barrier()\n",
"\n",
"# Bob's actions\n",
"test.cx(ebit0, ebit1)\n",
"test.h(ebit0)\n",
"test.barrier()\n",
"\n",
"Bob_c = ClassicalRegister(1, \"Bob c\")\n",
"Bob_d = ClassicalRegister(1, \"Bob d\")\n",
"test.add_register(Bob_d)\n",
"test.add_register(Bob_c)\n",
"test.measure(ebit0, Bob_d)\n",
"test.measure(ebit1, Bob_c)\n",
"\n",
"display(test.draw(output=\"mpl\"))"
],
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 1685.96x618.722 with 1 Axes>"
],
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 12
},
{
"cell_type": "markdown",
"id": "0dcfb5e3",
"metadata": {},
"source": [
"Running the Aer simulator shows the results: Alice and Bob's classical bits always agree.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "77fd1434",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:45.637139759Z",
"start_time": "2026-06-11T02:04:45.448217305Z"
}
},
"source": [
"result = AerSimulator().run(test).result()\n",
"statistics = result.get_counts()\n",
"display(plot_histogram(statistics))"
],
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 13
},
{
"cell_type": "markdown",
"id": "335949b7",
"metadata": {},
"source": [
"## The CHSH game\n",
"\n",
"The last example to be discussed in this lesson is not a protocol, but a *game* known as the\n",
"*CHSH game*.\n",
"\n",
"When we speak of a game in this context, we're not talking about something that's meant to be played for fun or sport, but rather a mathematical abstraction in the sense of *game theory*.\n",
"Mathematical abstractions of games are studied in economics and computer science, for instance, and they are both fascinating and useful.\n",
"\n",
"The letters CHSH refer to the authors — John Clauser, Michael Horne, Abner Shimony, and Richard Holt — of a 1969 paper where the example was first described.\n",
"They did not describe the example as a game, but rather as an experiment.\n",
"Its description as a game, however, is both natural and intuitive.\n",
"\n",
"The CHSH game falls within a class of games known as *nonlocal games*.\n",
"Nonlocal games are incredibly interesting and have deep connections to physics, computer science, and mathematics — holding mysteries that still remain unsolved.\n",
"We'll begin the section by explaining what nonlocal games are, and then we'll focus in on the CHSH game and what makes it interesting.\n",
"\n",
"### Nonlocal games\n",
"\n",
"A nonlocal game is a *cooperative game* where two players, Alice and Bob, work together to achieve a particular outcome.\n",
"The game is run by a *referee*, who behaves according to strict guidelines that are known to Alice and Bob.\n",
"\n",
"Alice and Bob can prepare for the game however they choose, but once the game starts they are *forbidden from communicating*.\n",
"We might imagine the game taking place in a secure facility of some sort — as if the referee is playing the role of a detective and Alice and Bob are suspects being interrogated in different rooms.\n",
"But another way to think about the set-up is that Alice and Bob are separated by a vast distance, and communication is prohibited because the speed of light doesn't allow for it within the running time of the game.\n",
"That is to say, if Alice tries to send a message to Bob, the game will be over by the time he receives it, and vice versa.\n",
"\n",
"The way a nonlocal game works is that the referee first asks Alice and Bob one question each.\n",
"We'll use the letter $x$ to refer to Alice's question and $y$ to refer to Bob's question.\n",
"Here we're thinking of $x$ and $y$ as being classical states, and in the CHSH game $x$ and $y$ are bits.\n",
"\n",
"The referee uses *randomness* to select these questions.\n",
"To be precise, there is some probability $p(x,y)$ associated with each possible pair $(x,y)$ of questions, and the referee has vowed to choose the questions randomly, at the time of the game, in this way.\n",
"Everyone, including Alice and Bob, knows these probabilities — but nobody knows specifically which pair $(x,y)$ will be chosen until the game begins.\n",
"\n",
"After Alice and Bob receive their questions, they must then provide answers: Alice's answer is $a$ and Bob's answer is $b.$\n",
"Again, these are classical states in general, and bits in the CHSH game.\n",
"\n",
"At this point the referee makes a decision: Alice and Bob either *win* or *lose* depending on whether or not the pair of answers $(a,b)$ is deemed correct for the pair of questions $(x,y)$ according to some fixed set of rules.\n",
"Different rules mean different games, and the rules for the CHSH game specifically are described in the section following this one.\n",
"As was already suggested, the rules are known to everyone.\n",
"\n",
"The following diagram provides a graphic representation of the interactions.\n",
"\n",
"![Nonlocal game](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/nonlocal-game.avif)\n",
"\n",
"It is the uncertainty about which questions will be asked, and specifically the fact that each player doesn't know the other player's question, that makes nonlocal games challenging for Alice and Bob — just like colluding suspects in different rooms trying to keep their story straight.\n",
"\n",
"A precise description of the referee defines an instance of a nonlocal game.\n",
"This includes a specification of the probabilities $p(x,y)$ for each question pair along with the rules\n",
"that determine whether each pair of answers $(a,b)$ wins or loses for each possible question pair $(x,y).$\n",
"\n",
"We'll take a look at the CHSH game momentarily, but before that let us briefly acknowledge that it's also interesting to consider other nonlocal games.\n",
"In fact, it's extremely interesting; there are some pretty simple nonlocal games for which it's currently not known how well Alice and Bob can play using entanglement.\n",
"The set-up is simple, but there's complexity at work — and for some games it can be impossibly difficult to compute best or near-best strategies for Alice and Bob.\n",
"This is the surprisingly unintuitive nature of the nonlocal games model.\n",
"\n",
"### CHSH game description\n",
"\n",
"Here is the precise description of the CHSH game, where (as above) $x$ is Alice's question, $y$ is Bob's question, $a$ is Alice's answer, and $b$ is Bob's answer:\n",
"\n",
"* The questions and answers are all bits: $x,y,a,b\\in\\{0,1\\}.$\n",
"\n",
"* The referee chooses the questions $(x,y)$ *uniformly at random*. That is, each of the four possibilities, $(0,0),$ $(0,1),$ $(1,0),$ and $(1,1),$ is selected with probability $1/4.$\n",
"\n",
"* The answers $(a,b)$ *win* for the questions $(x,y)$ if $a\\oplus b = x\\wedge y$ and *lose* otherwise. The following table expresses this rule by listing the winning and losing conditions on the answers $(a,b)$ for each pair of questions $(x,y).$\n",
"\n",
"$$\n",
"\\begin{array}{ccc}\n",
"(x,y) & \\text{win} & \\text{lose} \\\\[1mm]\\hline\n",
"\\rule{0mm}{4mm}(0,0) & a = b & a \\neq b \\\\[1mm]\n",
"(0,1) & a = b & a \\neq b \\\\[1mm]\n",
"(1,0) & a = b & a \\neq b \\\\[1mm]\n",
"(1,1) & a \\neq b & a = b\n",
"\\end{array}\n",
"$$\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "5c7b49a1",
"metadata": {},
"source": [
"### Limitation of classical strategies\n",
"\n",
"Now let's consider strategies for Alice and Bob in the CHSH game, beginning with *classical* strategies.\n",
"\n",
"#### Deterministic strategies\n",
"\n",
"We'll start with *deterministic* strategies, where Alice's answer $a$ is a function of the question $x$ that she receives, and likewise Bob's answer $b$ is a function of the question $y$ he receives.\n",
"So, for instance, we may write $a(0)$ to represent Alice's answer when her question is $0,$ and $a(1)$ to represent Alice's answer when her question is $1.$\n",
"\n",
"No deterministic strategy can possibly win the CHSH game every time.\n",
"One way to understand this is simply to go one-by-one through all of the possible deterministic strategies and check that every one of them loses for at least one of the four possible question pairs.\n",
"Alice and Bob can each choose from four possible functions from one bit to one bit — which we encountered in the lesson on [Single systems](/learning/courses/basics-of-quantum-information/single-systems/introduction) — and so there are $16$ different deterministic strategies in total to check.\n",
"\n",
"We can also reason this analytically.\n",
"If Alice and Bob's strategy wins when $(x,y) = (0,0),$ then it must be that $a(0) = b(0);$\n",
"if their strategy wins when $(x,y) = (0,1),$ then $a(0) = b(1);$ and similarly,\n",
"if the strategy wins for $(x,y)=(1,0)$ then $a(1) = b(0).$\n",
"So, if their strategy wins for all three possibilities, then\n",
"\n",
"$$\n",
"b(1) = a(0) = b(0) = a(1).\n",
"$$\n",
"\n",
"This implies that the strategy loses in the final case $(x,y) = (1,1),$ and for here winning requires that\n",
"$a(1) \\neq b(1).$\n",
"Thus, there can be no deterministic strategy that wins every time.\n",
"\n",
"On the other hand, it is easy to find deterministic strategies that win in three of the four cases, such as $a(0)=a(1)=b(0)=b(1)=0.$\n",
"From this we conclude that the maximum probability for Alice and Bob to win using a deterministic strategy is $3/4.$\n",
"\n",
"#### Probabilistic strategies\n",
"\n",
"As we just concluded, Alice and Bob cannot do better than winning the CHSH game 75% of the time using a deterministic strategy.\n",
"But what about a probabilistic strategy?\n",
"Could it help Alice and Bob to use randomness — including the possibility of *shared randomness*, where their random choices are correlated?\n",
"\n",
"It turns out that probabilistic strategies don't help at all to increase the probability that Alice and Bob win.\n",
"This is because every probabilistic strategy can alternatively be viewed as a random selection of a deterministic strategy, just like (as was mentioned in the [Single systems](/learning/courses/basics-of-quantum-information/single-systems/introduction) lesson) probabilistic operations can be viewed as random selections of deterministic operations.\n",
"The average is never larger than the maximum, and so it follows that probabilistic strategies don't offer any advantage in terms of their overall winning probability.\n",
"\n",
"Thus, winning with probability $3/4$ is the best that Alice and Bob can do using any classical strategy, whether deterministic or probabilistic.\n",
"\n",
"### CHSH game strategy\n",
"\n",
"A natural question to ask at this point is whether Alice and Bob can do any better using a *quantum* strategy.\n",
"In particular, if they share an entangled quantum state as the following figure suggests, which they could have prepared prior to playing the game, can they increase their winning probability?\n",
"\n",
"![Nonlocal game with entanglement](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/nonlocal-game-entanglement.avif)\n",
"\n",
"The answer is yes, and this is the main point of the example and why it's so interesting.\n",
"So let's see exactly how Alice and Bob can do better in this game using entanglement.\n",
"\n",
"#### Required vectors and matrices\n",
"\n",
"The first thing we need to do is to define a qubit state vector $\\vert \\psi_{\\theta}\\rangle,$ for each real number\n",
"$\\theta$ (which we'll think of as an angle measured in radians) as follows.\n",
"\n",
"$$\n",
"\\vert\\psi_{\\theta}\\rangle = \\cos(\\theta)\\vert 0\\rangle + \\sin(\\theta) \\vert 1\\rangle\n",
"$$\n",
"\n",
"Here are some simple examples:\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" \\vert\\psi_{0}\\rangle & = \\vert 0\\rangle \\\\\n",
" \\vert\\psi_{\\pi/2}\\rangle & = \\vert 1\\rangle \\\\\n",
" \\vert\\psi_{\\pi/4}\\rangle & = \\vert + \\rangle \\\\\n",
" \\vert\\psi_{-\\pi/4}\\rangle & = \\vert - \\rangle\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"We also have the following examples, which arise in the analysis below:\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
" \\vert\\psi_{-\\pi/8}\\rangle & = \\frac{\\sqrt{2 + \\sqrt{2}}}{2}\\vert 0\\rangle -\\frac{\\sqrt{2 - \\sqrt{2}}}{2}\\vert 1\\rangle \\\\[1mm]\n",
" \\vert\\psi_{\\pi/8}\\rangle & = \\frac{\\sqrt{2 + \\sqrt{2}}}{2}\\vert 0\\rangle + \\frac{\\sqrt{2 - \\sqrt{2}}}{2}\\vert 1\\rangle \\\\[1mm]\n",
" \\vert\\psi_{3\\pi/8}\\rangle & = \\frac{\\sqrt{2 - \\sqrt{2}}}{2}\\vert 0\\rangle + \\frac{\\sqrt{2 + \\sqrt{2}}}{2}\\vert 1\\rangle \\\\[1mm]\n",
" \\vert\\psi_{5\\pi/8}\\rangle & = -\\frac{\\sqrt{2 - \\sqrt{2}}}{2}\\vert 0\\rangle + \\frac{\\sqrt{2 + \\sqrt{2}}}{2}\\vert 1\\rangle\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"Looking at the general form, we see that the inner product between any two of these vectors has this formula:\n",
"\n",
"$$\n",
"\\langle \\psi_{\\alpha} \\vert \\psi_{\\beta} \\rangle\n",
"= \\cos(\\alpha)\\cos(\\beta) + \\sin(\\alpha)\\sin(\\beta)\n",
"= \\cos(\\alpha-\\beta).\n",
"\\tag{3}\n",
"$$\n",
"\n",
"In detail, there are only real number entries in these vectors, so there are no complex conjugates to worry about:\n",
"the inner product is the product of the cosines plus the product of the sines.\n",
"Using one of the *angle addition formulas* from trigonometry leads to the simplification above.\n",
"This formula reveals the geometric interpretation of the inner product between real unit vectors as the cosine of the angle between them.\n",
"\n",
"If we compute the inner product of the *tensor product* of any two of these vectors with the $\\vert \\phi^+\\rangle$ state, we obtain a similar expression, except that it has a $\\sqrt{2}$ in the denominator:\n",
"\n",
"$$\n",
"\\langle \\psi_{\\alpha} \\otimes \\psi_{\\beta} \\vert \\phi^+ \\rangle\n",
"= \\frac{\\cos(\\alpha)\\cos(\\beta) + \\sin(\\alpha)\\sin(\\beta)}{\\sqrt{2}}\n",
"= \\frac{\\cos(\\alpha-\\beta)}{\\sqrt{2}}.\n",
"\\tag{4}\n",
"$$\n",
"\n",
"Our interest in this particular inner product will become clear shortly, but for now we're simply observing this as a formula.\n",
"\n",
"Next, define a unitary matrix $U_{\\theta}$ for each angle $\\theta$ as follows.\n",
"\n",
"$$\n",
"U_{\\theta} = \\vert 0 \\rangle \\langle \\psi_{\\theta} \\vert + \\vert 1\\rangle\\langle \\psi_{\\theta+\\pi/2} \\vert\n",
"$$\n",
"\n",
"Intuitively speaking, this matrix transforms $\\vert\\psi_{\\theta}\\rangle$ into $\\vert 0\\rangle$ and $\\vert \\psi_{\\theta + \\pi/2}\\rangle$ into $\\vert 1\\rangle.$\n",
"To check that this is a unitary matrix, a key observation is that the vectors $\\vert\\psi_{\\theta}\\rangle$ and $\\vert\\psi_{\\theta + \\pi/2}\\rangle$ are orthogonal for every angle $\\theta$:\n",
"\n",
"$$\n",
"\\langle \\psi_{\\theta} \\vert \\psi_{\\theta + \\pi/2} \\rangle = \\cos(\\pi/2) = 0.\n",
"$$\n",
"\n",
"Thus, we find that\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"U_{\\theta} U_{\\theta}^{\\dagger}\n",
"& = \\bigl(\\vert 0 \\rangle \\langle \\psi_{\\theta} \\vert + \\vert 1\\rangle\\langle \\psi_{\\theta+\\pi/2} \\vert\\bigr)\n",
"\\bigl(\\vert \\psi_{\\theta} \\rangle \\langle 0 \\vert + \\vert \\psi_{\\theta+\\pi/2}\\rangle\\langle 1 \\vert\\bigr) \\\\[1mm]\n",
"& =\n",
"\\vert 0 \\rangle \\langle \\psi_{\\theta} \\vert \\psi_{\\theta} \\rangle \\langle 0 \\vert\n",
"+ \\vert 0 \\rangle \\langle \\psi_{\\theta} \\vert \\psi_{\\theta+\\pi/2} \\rangle \\langle 1 \\vert\n",
"+ \\vert 1 \\rangle \\langle \\psi_{\\theta+\\pi/2} \\vert \\psi_{\\theta} \\rangle \\langle 0 \\vert\n",
"+ \\vert 1 \\rangle \\langle \\psi_{\\theta+\\pi/2} \\vert \\psi_{\\theta+\\pi/2} \\rangle \\langle 1 \\vert \\\\[1mm]\n",
"& =\n",
"\\vert 0 \\rangle \\langle 0 \\vert + \\vert 1 \\rangle \\langle 1 \\vert\\\\[1mm]\n",
"& = \\mathbb{I}.\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"We may alternatively write this matrix explicitly as\n",
"\n",
"$$\n",
"U_{\\theta}\n",
"= \\begin{pmatrix}\n",
"\\cos(\\theta) & \\sin(\\theta)\\\\[1mm]\n",
"\\cos(\\theta+ \\pi/2) & \\sin(\\theta + \\pi/2)\n",
"\\end{pmatrix}\n",
"= \\begin{pmatrix}\n",
"\\cos(\\theta) & \\sin(\\theta)\\\\[1mm]\n",
"-\\sin(\\theta) & \\cos(\\theta)\n",
"\\end{pmatrix}.\n",
"$$\n",
"\n",
"This is an example of a *rotation matrix*, and specifically it rotates two-dimensional vectors with real number entries by an angle of $-\\theta$ about the origin.\n",
"If we follow a standard convention for naming and parameterizing rotations of various forms, we have\n",
"$U_{\\theta} = R_y(-2\\theta)$ where\n",
"\n",
"$$\n",
"R_y(\\theta) = \\begin{pmatrix}\n",
"\\cos(\\theta/2) & -\\sin(\\theta/2)\\\\[1mm]\n",
"\\sin(\\theta/2) & \\cos(\\theta/2)\n",
"\\end{pmatrix}.\n",
"$$\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "f85a94d1",
"metadata": {},
"source": [
"#### Strategy description\n",
"\n",
"Now we can describe the quantum strategy.\n",
"\n",
"* **Set-up:** Alice and Bob start the game sharing an e-bit: Alice holds a qubit $\\mathsf{A},$ Bob holds a qubit $\\mathsf{B},$ and together the two qubits $(\\mathsf{X},\\mathsf{Y})$ are in the $\\vert\\phi^+\\rangle$ state.\n",
"\n",
"* **Alice's actions:**\n",
"\n",
" * If Alice receives the question $x=0,$ she applies $U_{0}$ to her qubit $\\mathsf{A}.$\n",
" * If Alice receives the question $x=1,$ she applies $U_{\\pi/4}$ to her qubit $\\mathsf{A}.$\n",
"\n",
" The operation Alice performs on $\\mathsf{A}$ may alternatively be described like this:\n",
"\n",
" $$\n",
" \\begin{cases}\n",
" U_0 & \\text{if $x = 0$}\\\\\n",
" U_{\\pi/4} & \\text{if $x = 1$}\n",
" \\end{cases}\n",
" $$\n",
"\n",
" After Alice applies this operation, she measures $\\mathsf{A}$ with a standard basis measurement and sets her answer $a$ to be the measurement outcome.\n",
"\n",
"* **Bob's actions:**\n",
"\n",
" * If Bob receives the question $y=0,$ he applies $U_{\\pi/8}$ to his qubit $\\mathsf{B}.$\n",
" * If Bob receives the question $y=1,$ he applies $U_{-\\pi/8}$ to his qubit $\\mathsf{B}.$\n",
"\n",
" Like we did for Alice, we can express Bob's operation on $\\mathsf{B}$ like this:\n",
"\n",
" $$\n",
" \\begin{cases}\n",
" U_{\\pi/8} & \\text{if $y = 0$}\\\\\n",
" U_{-\\pi/8} & \\text{if $y = 1$}\n",
" \\end{cases}\n",
" $$\n",
"\n",
" After Bob applies this operation, he measures $\\mathsf{B}$ with a standard basis measurement and sets his answer $b$ to be the measurement outcome.\n",
"\n",
"Here is a quantum circuit diagram that describes this strategy:\n",
"\n",
"![CHSH game circuit](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/CHSH.avif)\n",
"\n",
"In this diagram we see two ordinary controlled gates, one for $U_{-\\pi/8}$ on the top and one for $U_{\\pi/4}$ on the bottom.\n",
"We also have two gates that look like controlled gates, one for $U_{\\pi/8}$ on the top and one for $U_{0}$ on the bottom, except that the circle representing the control is not filled in.\n",
"This denotes a different type of controlled gate where the gate is performed if the control is set to $0$ (rather than $1$ like an ordinary controlled gate).\n",
"So, effectively, Bob performs $U_{\\pi/8}$ on his qubit if $y=0$ and $U_{-\\pi/8}$ if $y=1;$\n",
"and Alice performs $U_0$ on her qubit if $x=0$ and $U_{\\pi/4}$ if $x=1,$ which is consistent with the description of the protocol in words above.\n",
"\n",
"It remains to figure out how well this strategy for Alice and Bob works.\n",
"We'll do this by going through the four possible question pairs individually.\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "eafe1025",
"metadata": {},
"source": [
"#### Case-by-case analysis\n",
"\n",
"* Case 1: $(x,y) = (0,0).$\n",
"\n",
" In this case Alice performs $U_{0}$ on her qubit and Bob performs $U_{\\pi/8}$ on his, so the state of the two qubits $(\\mathsf{A},\\mathsf{B})$ after they perform their operations is\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\bigl(U_0 \\otimes U_{\\pi/8}\\bigr) \\vert \\phi^+\\rangle\n",
" & =\n",
" \\vert 00 \\rangle \\langle \\psi_0 \\otimes \\psi_{\\pi/8}\\vert \\phi^+\\rangle\n",
" + \\vert 01 \\rangle \\langle \\psi_0 \\otimes\\psi_{5\\pi/8}\\vert \\phi^+\\rangle \\\\\n",
" & \\qquad + \\vert 10 \\rangle \\langle \\psi_{\\pi/2} \\otimes \\psi_{\\pi/8}\\vert \\phi^+\\rangle\n",
" + \\vert 11 \\rangle \\langle \\psi_{\\pi/2} \\otimes \\psi_{5\\pi/8}\\vert \\phi^+\\rangle\\\\[2mm]\n",
" & = \\frac{\n",
" \\cos\\bigl(-\\frac{\\pi}{8}\\bigr) \\vert 00\\rangle\n",
" + \\cos\\bigl(-\\frac{5\\pi}{8}\\bigr) \\vert 01\\rangle\n",
" + \\cos\\bigl(\\frac{3\\pi}{8}\\bigr) \\vert 10\\rangle\n",
" + \\cos\\bigl(-\\frac{\\pi}{8}\\bigr) \\vert 11\\rangle}{\\sqrt{2}}.\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" The probabilities for the four possible answer pairs $(a,b)$ are therefore as follows.\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\operatorname{Pr}\\bigl((a,b)=(0,0)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(-\\frac{\\pi}{8}\\Bigr) = \\frac{2+\\sqrt{2}}{8} \\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(0,1)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(-\\frac{5\\pi}{8}\\Bigr) = \\frac{2-\\sqrt{2}}{8}\\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(1,0)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{3\\pi}{8}\\Bigr) = \\frac{2-\\sqrt{2}}{8}\\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(1,1)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(-\\frac{\\pi}{8}\\Bigr) = \\frac{2+\\sqrt{2}}{8}\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" We can then obtain the probabilities that $a=b$ and $a\\neq b$ by summing.\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\operatorname{Pr}(a = b) & = \\frac{2 + \\sqrt{2}}{4}\\\\[2mm]\n",
" \\operatorname{Pr}(a \\neq b) & = \\frac{2 - \\sqrt{2}}{4}\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" For the question pair $(0,0),$ Alice and Bob win if $a=b,$ and therefore they win in this case with probability\n",
"\n",
" $$\n",
" \\frac{2 + \\sqrt{2}}{4}.\n",
" $$\n",
"\n",
"* Case 2: $(x,y) = (0,1).$\n",
"\n",
" In this case Alice performs $U_{0}$ on her qubit and Bob performs $U_{-\\pi/8}$ on his, so the state of the two qubits $(\\mathsf{A},\\mathsf{B})$ after they perform their operations is\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\bigl(U_0 \\otimes U_{-\\pi/8}\\bigr) \\vert \\phi^+\\rangle\n",
" & =\n",
" \\vert 00 \\rangle \\langle \\psi_0 \\otimes \\psi_{-\\pi/8}\\vert \\phi^+\\rangle\n",
" + \\vert 01 \\rangle \\langle \\psi_0 \\otimes\\psi_{3\\pi/8}\\vert \\phi^+\\rangle \\\\\n",
" & \\qquad + \\vert 10 \\rangle \\langle \\psi_{\\pi/2} \\otimes \\psi_{-\\pi/8}\\vert \\phi^+\\rangle\n",
" + \\vert 11 \\rangle \\langle \\psi_{\\pi/2} \\otimes \\psi_{3\\pi/8}\\vert \\phi^+\\rangle\\\\[2mm]\n",
" & = \\frac{\n",
" \\cos\\bigl(\\frac{\\pi}{8}\\bigr) \\vert 00\\rangle\n",
" + \\cos\\bigl(-\\frac{3\\pi}{8}\\bigr) \\vert 01\\rangle\n",
" + \\cos\\bigl(\\frac{5\\pi}{8}\\bigr) \\vert 10\\rangle\n",
" + \\cos\\bigl(\\frac{\\pi}{8}\\bigr) \\vert 11\\rangle}{\\sqrt{2}}.\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" The probabilities for the four possible answer pairs $(a,b)$ are therefore as follows.\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\operatorname{Pr}\\bigl((a,b)=(0,0)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2+\\sqrt{2}}{8} \\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(0,1)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(-\\frac{3\\pi}{8}\\Bigr) = \\frac{2-\\sqrt{2}}{8}\\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(1,0)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{5\\pi}{8}\\Bigr) = \\frac{2-\\sqrt{2}}{8}\\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(1,1)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2+\\sqrt{2}}{8}\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" Again, we can obtain the probabilities that $a=b$ and $a\\neq b$ by summing.\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\operatorname{Pr}(a = b) & = \\frac{2 + \\sqrt{2}}{4}\\\\[2mm]\n",
" \\operatorname{Pr}(a \\neq b) & = \\frac{2 - \\sqrt{2}}{4}\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" For the question pair $(0,1),$ Alice and Bob win if $a=b,$ and therefore they win in this case with probability\n",
"\n",
" $$\n",
" \\frac{2 + \\sqrt{2}}{4}.\n",
" $$\n",
"\n",
"* Case 3: $(x,y) = (1,0).$\n",
"\n",
" In this case Alice performs $U_{\\pi/4}$ on her qubit and Bob performs $U_{\\pi/8}$ on his, so the state of the two qubits $(\\mathsf{A},\\mathsf{B})$ after they perform their operations is\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\bigl(U_{\\pi/4} \\otimes U_{\\pi/8}\\bigr) \\vert \\phi^+\\rangle\n",
" & =\n",
" \\vert 00 \\rangle \\langle \\psi_{\\pi/4} \\otimes \\psi_{\\pi/8}\\vert \\phi^+\\rangle\n",
" + \\vert 01 \\rangle \\langle \\psi_{\\pi/4} \\otimes\\psi_{5\\pi/8}\\vert \\phi^+\\rangle \\\\\n",
" & \\qquad + \\vert 10 \\rangle \\langle \\psi_{3\\pi/4} \\otimes \\psi_{\\pi/8}\\vert \\phi^+\\rangle\n",
" + \\vert 11 \\rangle \\langle \\psi_{3\\pi/4} \\otimes \\psi_{5\\pi/8}\\vert \\phi^+\\rangle\\\\[2mm]\n",
" & = \\frac{\n",
" \\cos\\bigl(\\frac{\\pi}{8}\\bigr) \\vert 00\\rangle\n",
" + \\cos\\bigl(-\\frac{3\\pi}{8}\\bigr) \\vert 01\\rangle\n",
" + \\cos\\bigl(\\frac{5\\pi}{8}\\bigr) \\vert 10\\rangle\n",
" + \\cos\\bigl(\\frac{\\pi}{8}\\bigr) \\vert 11\\rangle}{\\sqrt{2}}.\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" The probabilities for the four possible answer pairs $(a,b)$ are therefore as follows.\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\operatorname{Pr}\\bigl((a,b)=(0,0)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2+\\sqrt{2}}{8} \\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(0,1)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(-\\frac{3\\pi}{8}\\Bigr) = \\frac{2-\\sqrt{2}}{8}\\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(1,0)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{5\\pi}{8}\\Bigr) = \\frac{2-\\sqrt{2}}{8}\\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(1,1)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2+\\sqrt{2}}{8}\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" We find, once again, that probabilities that $a=b$ and $a\\neq b$ are as follows.\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\operatorname{Pr}(a = b) & = \\frac{2 + \\sqrt{2}}{4}\\\\[2mm]\n",
" \\operatorname{Pr}(a \\neq b) & = \\frac{2 - \\sqrt{2}}{4}\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" For the question pair $(1,0),$ Alice and Bob win if $a=b,$ so they win in this case with probability\n",
"\n",
" $$\n",
" \\frac{2 + \\sqrt{2}}{4}.\n",
" $$\n",
"\n",
"* Case 4: $(x,y) = (1,1).$\n",
"\n",
" The last case is a little bit different, as we might expect because the winning condition is different in this case. When $x$ and $y$ are both $1,$ Alice and Bob win when $a$ and $b$ are *different*. In this case Alice performs $U_{\\pi/4}$ on her qubit and Bob performs $U_{-\\pi/8}$ on his, so the state of the two qubits $(\\mathsf{A},\\mathsf{B})$ after they perform their operations is\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\bigl(U_{\\pi/4} \\otimes U_{-\\pi/8}\\bigr) \\vert \\phi^+\\rangle\n",
" & =\n",
" \\vert 00 \\rangle \\langle \\psi_{\\pi/4} \\otimes \\psi_{-\\pi/8}\\vert \\phi^+\\rangle\n",
" + \\vert 01 \\rangle \\langle \\psi_{\\pi/4} \\otimes\\psi_{3\\pi/8}\\vert \\phi^+\\rangle \\\\\n",
" & \\qquad + \\vert 10 \\rangle \\langle \\psi_{3\\pi/4} \\otimes \\psi_{-\\pi/8}\\vert \\phi^+\\rangle\n",
" + \\vert 11 \\rangle \\langle \\psi_{3\\pi/4} \\otimes \\psi_{3\\pi/8}\\vert \\phi^+\\rangle\\\\[2mm]\n",
" & = \\frac{\n",
" \\cos\\bigl(\\frac{3\\pi}{8}\\bigr) \\vert 00\\rangle\n",
" + \\cos\\bigl(-\\frac{\\pi}{8}\\bigr) \\vert 01\\rangle\n",
" + \\cos\\bigl(\\frac{7\\pi}{8}\\bigr) \\vert 10\\rangle\n",
" + \\cos\\bigl(\\frac{3\\pi}{8}\\bigr) \\vert 11\\rangle}{\\sqrt{2}}.\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" The probabilities for the four possible answer pairs $(a,b)$ are therefore as follows.\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\operatorname{Pr}\\bigl((a,b)=(0,0)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{3\\pi}{8}\\Bigr) = \\frac{2-\\sqrt{2}}{8} \\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(0,1)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(-\\frac{\\pi}{8}\\Bigr) = \\frac{2+\\sqrt{2}}{8}\\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(1,0)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{7\\pi}{8}\\Bigr) = \\frac{2+\\sqrt{2}}{8}\\\\[2mm]\n",
" \\operatorname{Pr}\\bigl((a,b)=(1,1)\\bigr) & = \\frac{1}{2}\\cos^2\\Bigl(\\frac{3\\pi}{8}\\Bigr) = \\frac{2-\\sqrt{2}}{8}\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" The probabilities have effectively swapped places from in the three other cases.\n",
" We obtain the probabilities that $a=b$ and $a\\neq b$ by summing.\n",
"\n",
" $$\n",
" \\begin{aligned}\n",
" \\operatorname{Pr}(a = b) & = \\frac{2 - \\sqrt{2}}{4}\\\\[2mm]\n",
" \\operatorname{Pr}(a \\neq b) & = \\frac{2 + \\sqrt{2}}{4}\n",
" \\end{aligned}\n",
" $$\n",
"\n",
" For the question pair $(1,1),$ Alice and Bob win if $a\\neq b,$ and therefore they win in this case with probability\n",
"\n",
" $$\n",
" \\frac{2 + \\sqrt{2}}{4}.\n",
" $$\n",
"\n",
"They win in every case with the same probability:\n",
"\n",
"$$\n",
" \\frac{2 + \\sqrt{2}}{4} \\approx 0.85.\n",
"$$\n",
"\n",
"This is therefore the probability that they win overall.\n",
"That's significantly better than any classical strategy can do for this game; classical strategies have winning probability bounded by $3/4.$ And that makes this a very interesting example.\n",
"\n",
"This happens to be the *optimal* winning probability for quantum strategies; we can't do any better than this, no matter what entangled state or measurements we choose.\n",
"This fact is known as *Tsirelson's inequality*, named for Boris Tsirelson who first proved it — and who first described the CHSH experiment as a game.\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "e9d02fe9",
"metadata": {},
"source": [
"#### Geometric picture\n",
"\n",
"It is possible to think about the strategy described above geometrically, which may be helpful for understanding the relationships among the various angles chosen for Alice and Bob's operations.\n",
"\n",
"What Alice effectively does is to choose an angle $\\alpha,$ depending on her question $x,$ and then to apply $U_{\\alpha}$ to her qubit and measure.\n",
"Similarly, Bob chooses an angle $\\beta,$ depending on $y,$ and then he applies $U_{\\beta}$ to his qubit and measures.\n",
"We've chosen $\\alpha$ and $\\beta$ as follows.\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"\\alpha & = \\begin{cases}\n",
"0 & x=0\\\\\n",
"\\pi/4 & x=1\n",
"\\end{cases}\\\\[4mm]\n",
"\\beta & = \\begin{cases}\n",
"\\pi/8 & y = 0\\\\\n",
"-\\pi/8 & y = 1\n",
"\\end{cases}\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"For the moment, though, let's take $\\alpha$ and $\\beta$ to be arbitrary.\n",
"By choosing $\\alpha,$ Alice effectively defines an orthonormal basis of vectors that looks like this:\n",
"\n",
"![Basis for Alice](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/alpha-basis.avif)\n",
"\n",
"Bob does likewise, except that his angle is $\\beta$:\n",
"\n",
"![Basis for Bob](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/beta-basis.avif)\n",
"\n",
"The colors of the vectors correspond to Alice and Bob's answers: blue for $0$ and red for $1.$\n",
"\n",
"Now, if we combine together ($3$) and ($4$) we get the formula\n",
"\n",
"$$\n",
"\\langle \\psi_{\\alpha} \\otimes\\psi_{\\beta} \\vert \\phi^+ \\rangle\n",
"= \\frac{1}{\\sqrt{2}} \\langle \\psi_{\\alpha} \\vert \\psi_{\\beta} \\rangle;\n",
"$$\n",
"\n",
"this works for all real numbers $\\alpha$ and $\\beta.$\n",
"\n",
"Following the same sort of analysis that we went through above, but with $\\alpha$ and $\\beta$ being variables, we find this:\n",
"\n",
"$$\n",
" \\begin{aligned}\n",
" & \\bigl(U_{\\alpha} \\otimes U_{\\beta}\\bigr) \\vert \\phi^+\\rangle\\\\[1mm]\n",
" & \\qquad =\n",
" \\vert 00 \\rangle \\langle \\psi_{\\alpha} \\otimes \\psi_{\\beta}\\vert \\phi^+\\rangle\n",
" + \\vert 01 \\rangle \\langle \\psi_{\\alpha} \\otimes\\psi_{\\beta + \\pi/2}\\vert \\phi^+\\rangle \\\\\n",
" & \\qquad \\qquad + \\vert 10 \\rangle \\langle \\psi_{\\alpha+\\pi/2} \\otimes \\psi_{\\beta}\\vert \\phi^+\\rangle\n",
" + \\vert 11 \\rangle \\langle \\psi_{\\alpha+\\pi/2} \\otimes \\psi_{\\beta+\\pi/2}\\vert \\phi^+\\rangle\\\\[2mm]\n",
" & \\qquad = \\frac{\n",
" \\langle \\psi_\\alpha \\vert \\psi_\\beta \\rangle \\vert 00\\rangle\n",
" + \\langle \\psi_\\alpha \\vert \\psi_{\\beta+\\pi/2} \\rangle \\vert 01\\rangle\n",
" + \\langle \\psi_{\\alpha+\\pi/2} \\vert \\psi_\\beta \\rangle \\vert 10\\rangle\n",
" + \\langle \\psi_{\\alpha+\\pi/2} \\vert \\psi_{\\beta+\\pi/2} \\rangle \\vert 11\\rangle\n",
" }{\\sqrt{2}}.\n",
" \\end{aligned}\n",
"$$\n",
"\n",
"We conclude these two formulas:\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"\\operatorname{Pr}(a = b) & = \\frac{1}{2} \\vert \\langle \\psi_\\alpha \\vert \\psi_\\beta \\rangle \\vert^2\n",
"+ \\frac{1}{2} \\vert \\langle \\psi_{\\alpha+\\pi/2} \\vert \\psi_{\\beta+\\pi/2} \\rangle \\vert^2\n",
"= \\cos^2(\\alpha - \\beta)\\\\[2mm]\n",
"\\operatorname{Pr}(a \\neq b) & = \\frac{1}{2} \\vert \\langle \\psi_\\alpha \\vert \\psi_{\\beta+\\pi/2} \\rangle \\vert^2\n",
"+ \\frac{1}{2} \\vert \\langle \\psi_{\\alpha+\\pi/2} \\vert \\psi_\\beta \\rangle \\vert^2\n",
"= \\sin^2(\\alpha - \\beta).\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"These equations can be connected to the figures above by imagining that we superimpose the bases chosen by Alice and Bob.\n",
"\n",
"#### Explore the strategy\n",
"\n",
"When $(x,y) = (0,0),$ Alice and Bob choose $\\alpha = 0$ and $\\beta = \\pi/8,$ and by superimposing their bases we obtain this figure:\n",
"\n",
"![Alice and Bob bases case 1](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/strategy00.avif)\n",
"\n",
"The angle between the red vectors is $\\pi/8,$ which is the same as the angle between the two blue vectors.\n",
"The probability that Alice and Bob's outcomes agree is the cosine-squared of this angle,\n",
"\n",
"$$\n",
"\\cos^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2 + \\sqrt{2}}{4},\n",
"$$\n",
"\n",
"while the probability they disagree is the sine-squared of this angle,\n",
"\n",
"$$\n",
"\\sin^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2 - \\sqrt{2}}{4}.\n",
"$$\n",
"\n",
"When $(x,y) = (0,1),$ Alice and Bob choose $\\alpha = 0$ and $\\beta = -\\pi/8,$ and by superimposing their bases we obtain this figure:\n",
"\n",
"![Alice and Bob bases case 1](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/strategy01.avif)\n",
"\n",
"The angle between the red vectors is again $\\pi/8,$ as is the angle between the blue vectors.\n",
"The probability that Alice and Bob's outcomes agree is again the cosine-squared of this angle,\n",
"\n",
"$$\n",
"\\cos^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2 + \\sqrt{2}}{4},\n",
"$$\n",
"\n",
"while the probability they disagree is the sine-squared of this angle,\n",
"\n",
"$$\n",
"\\sin^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2 - \\sqrt{2}}{4}.\n",
"$$\n",
"\n",
"When $(x,y) = (1,0),$ Alice and Bob choose $\\alpha = \\pi/4$ and $\\beta = \\pi/8,$ and by superimposing their bases we obtain this figure:\n",
"\n",
"![Alice and Bob bases case 1](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/strategy10.avif)\n",
"\n",
"The bases have changed but the angles haven't — once again the angle between vectors of the same color is $\\pi/8.$\n",
"The probability that Alice and Bob's outcomes agree is\n",
"\n",
"$$\n",
"\\cos^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2 + \\sqrt{2}}{4},\n",
"$$\n",
"\n",
"and the probability they disagree is\n",
"\n",
"$$\n",
"\\sin^2\\Bigl(\\frac{\\pi}{8}\\Bigr) = \\frac{2 - \\sqrt{2}}{4}.\n",
"$$\n",
"\n",
"When $(x,y) = (1,1),$ Alice and Bob choose $\\alpha = \\pi/4$ and $\\beta = -\\pi/8.$ When we superimpose their bases, we see that something different has happened:\n",
"\n",
"![Alice and Bob bases case 1](https://quantum.cloud.ibm.com/learning/images/courses/basics-of-quantum-information/entanglement-in-action/qiskit-implementation/strategy11.avif)\n",
"\n",
"By the way the angles were chosen, this time the angle between vectors having the same color is $3\\pi/8$ rather than $\\pi/8.$\n",
"The probability that Alice and Bob's outcomes agree is still the cosine-squared of this angle, but this time the value is\n",
"\n",
"$$\n",
"\\cos^2\\Bigl(\\frac{3\\pi}{8}\\Bigr) = \\frac{2 - \\sqrt{2}}{4}.\n",
"$$\n",
"\n",
"The probability the outcomes disagree is the sine-squared of this angle, which in this case is this:\n",
"\n",
"$$\n",
"\\sin^2\\Bigl(\\frac{3\\pi}{8}\\Bigr) = \\frac{2 + \\sqrt{2}}{4}.\n",
"$$\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "8ce0e191",
"metadata": {},
"source": [
"### Remarks\n",
"\n",
"The basic idea of an experiment like the CHSH game, where entanglement leads to statistical results that are inconsistent with purely classical reasoning, is due to John Bell, the namesake of the Bell states.\n",
"For this reason, people often refer to experiments of this sort as *Bell tests*.\n",
"Sometimes people also refer to *Bell's theorem*, which can be formulated in different ways — but the essence of it is that quantum mechanics is not compatible with so-called *local hidden variable theories*.\n",
"The CHSH game is a particularly clean and simple example of a Bell test, and can be viewed as a proof, or demonstration, of Bell's theorem.\n",
"\n",
"The CHSH game offers a way to experimentally test the theory of quantum information.\n",
"We can perform experiments that implement the CHSH game, and test the sorts of strategies based on entanglement described above.\n",
"This provides us with a high degree of confidence that entanglement is real — and unlike the sometimes vague or poetic ways that we come up with to explain entanglement, the CHSH game gives us a concrete and testable way to *observe* entanglement.\n",
"The 2022 Nobel Prize in Physics acknowledges the importance of this line of work: the prize was awarded to Alain Aspect, John Clauser (the C in CHSH), and Anton Zeilinger, for observing entanglement through Bell tests on entangled photons.\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "edbf2b68",
"metadata": {},
"source": [
"### Qiskit implementation\n",
"\n",
"We can implement the CHSH game, together with the quantum strategy defined above, in Qiskit as follows.\n",
"\n",
"First, here's the definition of the game itself, which allows an arbitrary strategy to be plugged in as an argument.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "854d0fbf",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:45.710930373Z",
"start_time": "2026-06-11T02:04:45.647512505Z"
}
},
"source": [
"def chsh_game(strategy):\n",
" # This function runs the CHSH game, using the strategy (a function\n",
" # from two bits to two bits), returning 1 for a win and 0 for a loss.\n",
"\n",
" # Choose x and y randomly\n",
" x, y = random.randint(0, 1), random.randint(0, 1)\n",
"\n",
" # Use the strategy to determine a and b\n",
" a, b = strategy(x, y)\n",
"\n",
" # Decide if the strategy wins or loses\n",
" if (a != b) == (x & y):\n",
" return 1 # Win\n",
" return 0 # Lose"
],
"outputs": [],
"execution_count": 14
},
{
"cell_type": "markdown",
"id": "38a10fe4",
"metadata": {},
"source": [
"Now we'll create a function that outputs a circuit depending on the questions for Alice and Bob. We'll let the qubits have their default names for simplicity, and we'll use the built-in $R_y(\\theta)$ gate for Alice and Bob's actions.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "072bbab3",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:45.780642768Z",
"start_time": "2026-06-11T02:04:45.714836292Z"
}
},
"source": [
"def chsh_circuit(x, y):\n",
" # This function creates a `QuantumCircuit` implementing the quantum\n",
" # strategy described above (including the e-bit preparation).\n",
"\n",
" qc = QuantumCircuit(2, 2)\n",
"\n",
" # Prepare an e-bit\n",
" qc.h(0)\n",
" qc.cx(0, 1)\n",
" qc.barrier()\n",
"\n",
" # Alice's actions\n",
" if x == 0:\n",
" qc.ry(0, 0)\n",
" else:\n",
" qc.ry(-pi / 2, 0)\n",
" qc.measure(0, 0)\n",
"\n",
" # Bob's actions\n",
" if y == 0:\n",
" qc.ry(-pi / 4, 1)\n",
" else:\n",
" qc.ry(pi / 4, 1)\n",
" qc.measure(1, 1)\n",
"\n",
" return qc"
],
"outputs": [],
"execution_count": 15
},
{
"cell_type": "markdown",
"id": "574ac485",
"metadata": {},
"source": [
"Here are the four possible circuits, depending on which questions are asked.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "4f57a9c8",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:46.876499633Z",
"start_time": "2026-06-11T02:04:45.782459193Z"
}
},
"source": [
"# Draw the four possible circuits\n",
"\n",
"print(\"(x,y) = (0,0)\")\n",
"display(chsh_circuit(0, 0).draw(output=\"mpl\"))\n",
"\n",
"print(\"(x,y) = (0,1)\")\n",
"display(chsh_circuit(0, 1).draw(output=\"mpl\"))\n",
"\n",
"print(\"(x,y) = (1,0)\")\n",
"display(chsh_circuit(1, 0).draw(output=\"mpl\"))\n",
"\n",
"print(\"(x,y) = (1,1)\")\n",
"display(chsh_circuit(1, 1).draw(output=\"mpl\"))"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(x,y) = (0,0)\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 621.739x284.278 with 1 Axes>"
],
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"(x,y) = (0,1)\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 621.739x284.278 with 1 Axes>"
],
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"(x,y) = (1,0)\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 621.739x284.278 with 1 Axes>"
],
"image/png": "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1zqAU6dO4b777oOjoyMyMzPRo4fhz/E1NV4bJyIifdjnjYR/0r9/fzz22GOor69HQkICDh061GR5SUkJFi9ejKoqy9xCxlHciIhIXzwj/115eTnGjx+ve/Rchw4dEBwcjOLiYhQWFkKr1aK0tBSenp5mr4Vn40REpC+ekf/Ow8MDP/74I9auXYsRI0aguroav/76K6RSKR566CGsXbsWcrncIrW0c3eFi7MTz8aJiOieeEZupW7X1sHZyZFBTkREd8UgJyIiEjE2rRMREYkYg5yIiEjEGOREREQixiAnIiISMQY5ERGRiDHIiYiIRIxBTkREJGIMciIiIhFjkBMREYkYg5yIiEjEGOREREQixiAnIiISMQY5ERGRiDHIiYiIRIxBTkREJGIMciIiIhFjkBMREYkYg5yIiEjEGOREREQixiAnIiISMQY5ERGRiDHIiYiIRIxBTkREJGIMciIiIhFjkBMREYkYg5yIiEjEGOREREQixiAnIiISMQY5ERGRiDHIiYiIRIxBTkREJGIMciIiIhFjkBMREYkYg5yIiEjEGOREREQixiAnIiISMQY5ERGRiDHIiYiIRIxBTkREJGL/H1l3UGoGLS3RAAAAAElFTkSuQmCC"
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"(x,y) = (1,1)\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 621.739x284.278 with 1 Axes>"
],
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 16
},
{
"cell_type": "markdown",
"id": "008fa3e8",
"metadata": {},
"source": [
"Now we'll create a job using the Aer simulator that runs the circuit a single time for a given input pair $(x,y).$\n",
"\n"
]
},
{
"cell_type": "code",
"id": "a8799503-f844-4099-b3a6-47137d72b499",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:47.111276251Z",
"start_time": "2026-06-11T02:04:47.007563427Z"
}
},
"source": [
"def quantum_strategy(x, y):\n",
" # This function runs the appropriate quantum circuit defined above\n",
" # one time and returns the measurement results\n",
"\n",
" # Setting `shots=1` to run the circuit once\n",
" result = AerSimulator().run(chsh_circuit(x, y), shots=1).result()\n",
" statistics = result.get_counts()\n",
"\n",
" # Determine the output bits and return them\n",
" bits = list(statistics.keys())[0]\n",
" a, b = bits[0], bits[1]\n",
" return a, b"
],
"outputs": [],
"execution_count": 17
},
{
"cell_type": "markdown",
"id": "b0afbdfa",
"metadata": {},
"source": [
"Finally, we'll play the game 1000 times and compute the fraction that the strategy wins.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "26306e3c",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:48.952536727Z",
"start_time": "2026-06-11T02:04:47.130171509Z"
}
},
"source": [
"NUM_GAMES = 1000\n",
"TOTAL_SCORE = 0\n",
"\n",
"for _ in range(NUM_GAMES):\n",
" TOTAL_SCORE += chsh_game(quantum_strategy)\n",
"\n",
"print(\"Fraction of games won:\", TOTAL_SCORE / NUM_GAMES)"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fraction of games won: 0.851\n"
]
}
],
"execution_count": 18
},
{
"cell_type": "markdown",
"id": "2ba5960a",
"metadata": {},
"source": [
"We can also define a classical strategy and see how well it works.\n",
"This is just one strategy — others can be tested by changing the code — but it is among the optimal classical strategies.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "b8eb8d23",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:49.086970864Z",
"start_time": "2026-06-11T02:04:49.045122650Z"
}
},
"source": [
"def classical_strategy(x, y):\n",
" # This function implements just one example of an optimal classical\n",
" # strategy for the CHSH game. Other classical strategies can be\n",
" # implemented by changing the bit values assigned to a and b.\n",
"\n",
" # Alice's answer\n",
" if x == 0:\n",
" a = 0\n",
" elif x == 1:\n",
" a = 1\n",
"\n",
" # Bob's answer\n",
" if y == 0:\n",
" b = 1\n",
" elif y == 1:\n",
" b = 0\n",
"\n",
" return a, b"
],
"outputs": [],
"execution_count": 19
},
{
"cell_type": "markdown",
"id": "6ced89cf",
"metadata": {},
"source": [
"Again let's play the game 1000 times to see how well it works.\n",
"\n"
]
},
{
"cell_type": "code",
"id": "2b26410d",
"metadata": {
"ExecuteTime": {
"end_time": "2026-06-11T02:04:49.179848870Z",
"start_time": "2026-06-11T02:04:49.091422931Z"
}
},
"source": [
"NUM_GAMES = 1000\n",
"TOTAL_SCORE = 0\n",
"\n",
"for _ in range(NUM_GAMES):\n",
" TOTAL_SCORE += chsh_game(classical_strategy)\n",
"\n",
"print(\"Fraction of games won:\", TOTAL_SCORE / NUM_GAMES)"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fraction of games won: 0.738\n"
]
}
],
"execution_count": 20
},
{
"cell_type": "markdown",
"id": "a2582a40",
"metadata": {},
"source": [
"Although there's randomness involved, the statistics are very unlikely to deviate too much after 1000 runs. The quantum strategy wins about 85% of the time while a classical strategy can't win more than about 75% of the time.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"id": "a1b8767d",
"source": "© IBM Corp., 2017-2026"
}
],
"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"
}
},
"nbformat": 4,
"nbformat_minor": 5
}