{ "cells": [ { "cell_type": "markdown", "id": "91ad3d04-8f28-49c8-91bc-39fec385235d", "metadata": {}, "source": [ "# Practice Exercise 1 (\"due\" October 14)" ] }, { "cell_type": "code", "execution_count": 82, "id": "4695ad83-81f7-4aab-b442-c190e2c26648", "metadata": {}, "outputs": [], "source": [ "from qiskit import QuantumCircuit, transpile\n", "from qiskit_aer import AerSimulator\n", "from qiskit.visualization import plot_histogram\n", "import numpy as np\n", "from scipy.linalg import expm" ] }, { "cell_type": "markdown", "id": "1aa322a6-03e6-4a2d-8e0f-c01867c73dca", "metadata": {}, "source": [ "## Question 1: Generating entanglement \n", "\n", "Bell states are foundational to quantum information science and represent the simplest examples of entangled states. The four Bell states are typically denoted\n", "\n", "$$\\vert \\Phi^+\\rangle=\\frac{1}{\\sqrt{2}}\\left(\\vert 00\\rangle+\\vert 11\\rangle\\right),$$\n", "$$\\vert \\Phi^-\\rangle=\\frac{1}{\\sqrt{2}}\\left(\\vert 00\\rangle-\\vert 11\\rangle\\right),$$\n", "$$\\vert \\Psi^+\\rangle=\\frac{1}{\\sqrt{2}}\\left(\\vert 01\\rangle+\\vert 10\\rangle\\right),$$\n", "$$\\vert \\Psi^-\\rangle=\\frac{1}{\\sqrt{2}}\\left(\\vert 01\\rangle-\\vert 10\\rangle\\right).$$" ] }, { "cell_type": "markdown", "id": "40dde07a-fbc8-48ef-b65a-4418f8ee9959", "metadata": {}, "source": [ "The following Qiskit code generates a quantum circuit that prepares the Bell state $\\vert \\Phi^+\\rangle$:" ] }, { "cell_type": "code", "execution_count": 83, "id": "86507470-9c79-4640-a1e9-c931f4ad3a1d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
┌───┐ ┌─┐ \n",
"q_0: ┤ H ├──■──┤M├───\n",
" └───┘┌─┴─┐└╥┘┌─┐\n",
"q_1: ─────┤ X ├─╫─┤M├\n",
" └───┘ ║ └╥┘\n",
"c: 2/═══════════╩══╩═\n",
" 0 1 "
],
"text/plain": [
" ┌───┐ ┌─┐ \n",
"q_0: ┤ H ├──■──┤M├───\n",
" └───┘┌─┴─┐└╥┘┌─┐\n",
"q_1: ─────┤ X ├─╫─┤M├\n",
" └───┘ ║ └╥┘\n",
"c: 2/═══════════╩══╩═\n",
" 0 1 "
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qc = QuantumCircuit(2,2)\n",
"qc.h(0)\n",
"qc.cx(0,1)\n",
"qc.measure([0,1],[0,1])\n",
"qc.draw()"
]
},
{
"cell_type": "markdown",
"id": "a701a1ee-998d-40d0-8705-218d1c02fd0a",
"metadata": {},
"source": [
"We can sample the measurement outcomes using the ```AerSimulator```:"
]
},
{
"cell_type": "code",
"execution_count": 84,
"id": "cc082fc1-bcaa-4035-a2ab-3a8ab979f81d",
"metadata": {},
"outputs": [],
"source": [
"backend = AerSimulator()\n",
"job = backend.run(qc, shots=2048)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"id": "b17f5172-ede9-4dff-843d-9b715258cff5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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AABA4LQq7L5v1qxZbbkOAAAAXCW/w67B/v37deDAAZ05c0Z1dXWNrrfZbFq6dOnV3g0AAACuwO+wO3XqlKZOnar33nvvsp9pR9gBAABcG36H3cKFC7Vr1y6NGDFCs2bNUrdu3eR0XvUBQAAAAPjJ7xJ74403dPvtt+vvf/873y4BAADQAfj9zRPfffedhg0bRtQBAAB0EH6HXVpaWpPfOgEAAIDA8Dvsli1bptdff1179+5ty/UAAADAT36fY/f1119r0qRJGj58uP7zP/9TaWlpioyMbHLuAw884PcCAQAA0DJ+h93s2bNls9nk9XqVnZ2t7OzsRufbeb1e2Ww2wg4AAOAa8DvssrKy2nIdAAAAuEp8pRgAAIAh/H7zBAAAADoWv4/YHTlypMVzu3fv7u/dAAAAoIX8DrsePXq06MOJbTabPB6Pv3cDAACAFvI77B544IEmw87tdusf//iHSktLNXz4cPXo0eNq1gcAAIAW8jvssrOzm73O6/Xqz3/+s9asWaMXXnjB37sAAABAK7TLmydsNpsWL16sW265RY8++mh73AUAAAAu0a7vir3ttttUWFjYnncBAACA/9OuYffll1/yxgkAAIBrxO9z7JpTX1+vr7/+WtnZ2Xrttdc0atSotr4LAAAANMHvsLPb7Zf9uBOv16uoqCj96U9/8vcuAAAA0Ap+h92wYcOaDDu73a4uXbrotttu05w5cxQfH39VCwQAAEDL+B12b7/9dhsuAwAAAFeL74oFAAAwRJu8eWL37t0qLi6W2+1WRESEBgwYoKFDh7bFTQMAAKCFrirs9u3bp1mzZungwYOSLr5houG8u169eikrK0vp6elXv0oAAABckd9h99lnn2n06NE6f/68xo0bpxEjRighIUHffvut3n77beXl5WncuHHau3evbr755rZcMwAAAJrgd9gtX75cNTU1euuttzRmzBif6x577DFt375dEydO1B/+8Afl5ORc9UIBAABweX6/eWLHjh368Y9/3CjqGowePVr33nuvduzY4ffiAAAA0HJ+h53b7VaPHj0uOyc1NVVut9vfuwAAAEAr+B12SUlJ2rt372Xn7Nu3T0lJSf7eBQAAAFrB77CbMmWK3n77bS1dulTfffedz3Xfffedfv/732vHjh2aMmXKVS8SAAAAV+b3myeWLl2qN954QytXrtSzzz6r22+/XfHx8fr222914MABnThxQjfeeKOWLl3alusFAABAM/wOu+joaO3bt0+PPvqocnJylJuba113ww03aM6cOVq9erWio6PbZKEAAAC4vKv6gOLo6Gi98MILeuaZZ/T555+rsrJSERER6tOnj0JCQtpqjQAAAGiBVofdE088ofPnz2v58uVWvIWEhKhfv37WnJqaGi1ZskTh4eF6/PHH2261AAAAaFar3jyxfft2/e53v1NMTMxlj8iFhoYqJiZGS5YsUWFh4VUvEgAAAFfWqrDbtGmTunTpol/+8pdXnDt//nxFR0crKyvL78UBAACg5VoVdrt379bo0aPlcrmuONflcmn06NHavXu334sDAABAy7Uq7L755hvdeOONLZ6fmpqqsrKyVi/qcpYtWyabzebzk5CQYF3v9Xq1bNkyJSUlKSwsTCNGjNAnn3zicxvV1dVasGCBYmNj1blzZ02ePFnHjh1r03UCAABca60KO7vdrtra2hbPr62tld3u92cgN+uWW25RWVmZ9fPxxx9b161Zs0Zr167Vhg0bdODAASUkJGjMmDE6e/asNSczM1Pbtm1TTk6Odu3apXPnzmnSpEmqq6tr87UCAABcK616V2xSUpJKSkpaPL+kpET//u//3upFXYnT6fQ5StfA6/Vq/fr1WrJkie655x5J0saNGxUfH6+tW7fq4Ycfltvt1gsvvKDNmzdr9OjRkqSXXnpJycnJ2r59u8aNG9fm6wUAALgWWnU47Y477lBhYaEOHTp0xbmHDh1SYWGhhg0b5u/amnXw4EElJSUpNTVVP/nJT/TVV19JkkpLS1VeXq6xY8dac10ul4YPH26d61dUVKTa2lqfOUlJSerbty/nAwIAgKDWqiN28+fPV1ZWln784x8rLy9PsbGxTc47efKkpk2bJo/Ho1/84hdtstAGgwYN0qZNm/SDH/xA3377rVasWKEhQ4bok08+UXl5uSQpPj7e53fi4+N1+PBhSVJ5eblCQ0PVpUuXRnMafr851dXVqq6uti5XVlZKuvgn54Y/UdvtdjkcDtXV1am+vt6a2zDu8Xjk9XqtcYfDIbvd3uw40JF4vV55PB6fMafz4tPIpeMhISGqr6/3OcXBZrPJ6XQ2O97cftNW+9Olp5I0t3a2KTi2CegoGh6z7bU/teY0uFaF3a233qrMzEytX79eN998s37+858rIyND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",
"text/plain": [
" ┌───┐ ┌───┐┌─┐ \n",
"q_0: ┤ H ├──■──┤ H ├┤M├───\n",
" └───┘┌─┴─┐├───┤└╥┘┌─┐\n",
"q_1: ─────┤ X ├┤ H ├─╫─┤M├\n",
" └───┘└───┘ ║ └╥┘\n",
"c: 2/════════════════╩══╩═\n",
" 0 1 "
],
"text/plain": [
" ┌───┐ ┌───┐┌─┐ \n",
"q_0: ┤ H ├──■──┤ H ├┤M├───\n",
" └───┘┌─┴─┐├───┤└╥┘┌─┐\n",
"q_1: ─────┤ X ├┤ H ├─╫─┤M├\n",
" └───┘└───┘ ║ └╥┘\n",
"c: 2/════════════════╩══╩═\n",
" 0 1 "
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Use this as a skeleton\n",
"qc2 = QuantumCircuit(2,2)\n",
"\n",
"#Prepare |Psi^+> (do not alter)\n",
"qc2.h(0)\n",
"qc2.cx(0,1)\n",
"\n",
"## YOUR CODE GOES HERE ###\n",
"qc2.h(0)\n",
"qc2.h(1)\n",
"qc2.measure([0,1],[0,1])\n",
"qc2.draw()"
]
},
{
"cell_type": "markdown",
"id": "8cc9b15e-1518-454d-a6b0-994f583c8c05",
"metadata": {},
"source": [
"Run this cell to sample the output of your circuit and plot a histogram of the results. Vary the number of shots if you like."
]
},
{
"cell_type": "code",
"execution_count": 87,
"id": "8e6ec719-b213-434f-9843-3c9634a7075b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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fmRkpGJiYpSenq5hw4bV+pjl5eUqLy93fV9aWipJcjgccjgckiQfHx9ZrVZVVVWpurraNffyeGVlpZxOp2vcarXKx8enzvHL9wt4m8s/m76+PzxFVFZWum232Wyqrq52OwtusVjk6+tb53hdx01THU91rZ19atn7BHij5jie6svrwi4tLU0HDx7UgQMHat2enJysMWPGKDo6WkePHlVqaqoGDx6sjIwM2e12FRQUyM/Pr8aZvrCwMBUUFNT5uAsXLtTcuXNrjG/evFlt2rSRJHXq1ElxcXH64osvlJub65rTvXt39ejRQ/v379epU6dc471791Z0dLR27typc+fOucb79eun0NBQbd68uX7/KUAzu3x5w4gRI1RWVqbt27e7tvn6+mrkyJEqKirSnj17XOMBAQEaPHiw8vLylJmZ6Rrv0KGD+vfvr5ycHB0+fNg13hTH04+f/BITE9W6desal2qwTy17nwBv1NTH0+7du+u9Fovzx2noYXl5eerTp482b96sXr16SZISEhLUu3dvvfTSS7XeJj8/X9HR0UpLS9N9992nd955RxMnTnQ7+yZJd955p7p27aoVK1bUej+1nbGLiopSUVGRAgMDJTXNK9duqcQdvE/OX3444/1zOhPEPrWMfeI5E97oyILkJj2eiouLFRISopKSEleT1MWrXv5kZGSosLBQ8fHxrrGqqirt3LlTy5cvV3l5uaxWq9ttIiIiFB0drZycHElSeHi4KioqdObMGbezdoWFherfv3+dj22322W322uM22w22Ww2tzGr1VpjHVLdrybrGv/p/QLe4qc/m7X9rPr4+MjHp+ZlunWN13XcNPXx1JBx9qll7BPgbTx1PNW6lnrPbAZDhgxRVlaWMjMzXV99+vTRI488oszMzFr/E06fPq28vDxFRERIkuLj42Wz2bRlyxbXnPz8fGVnZ18x7AAAAFo6rzpjFxAQoJiYGLcxf39/hYSEKCYmRufPn9ecOXN0//33KyIiQseOHdMzzzyj9u3b695775UkBQUFadKkSZo5c6ZCQkIUHBysWbNmKTY2VklJSZ7YLQAAgGbhVWF3NVarVVlZWVq9erXOnj2riIgIJSYmat26dQoICHDNW7p0qXx9fTV27FiVlZVpyJAhWrVqVa1n/AAAAEzh9WG3Y8cO179bt26tTZs2XfU2rVq10rJly7Rs2bIm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cu2WStzB++T85Ycz3j+nM0HsU8vYJ54z4Y2OLEhu0uOpuLhYISEhTfur2B+X5tV06tSpQfft5+fnevNEnz59dODAAf31r391XVdXUFDgFnaFhYWus3jh4eGqqKjQmTNn3M7aFRYWqn///nU+pt1ul91urzFus9lks9ncxqxWa61vwqjr1WRd4z+9X8Bb/PRns7afVR8fH/n41HxjfV3jdR03TX08NWScfWoZ+wR4G08dT7XOrffMn+jcuXO9PpzYYrFc8zUSTqdT5eXl6tKli8LDw7VlyxbFxcVJ+uHs3qeffqrnn39ekhQfHy+bzaYtW7Zo7NixkqT8/HxlZ2frhRdeuKZ1AAAAeLNGh9348eNrDbuSkhL993//t44ePapBgwapc+fODbrfZ555RsnJyYqKitK5c+eUlpamHTt2aOPGjbJYLEpJSdGCBQvUrVs3devWTQsWLFCbNm308MMPS5KCgoI0adIkzZw5UyEhIQoODtasWbMUGxurpKSkxu4uAACA12t02K1atarObU6nU4sXL9YLL7ygN954o0H3e/LkSY0bN075+fkKCgrSrbfeqo0bN+rOO++UJP3xj39UWVmZnnjiCZ05c0a33367Nm/e7PoMO0launSpfH19NXbsWJWVlWnIkCFatWoVn2EHAACM1qRvnkhMTFRwcLDef//9pnqIJsPn2OHnjM+xg7fiORPeyJs+x67Rf1KsPvr06aNt27Y15UMAAADg/zRp2H377bd8uCQAAEAzue6f9lhdXa3vv/9eq1at0ocffqghQ4Zc74cAAABALRoddpf/VmxdnE6n2rZtqxdffLGxDwEAAIAGaHTYDRw4sNaw8/HxUbt27dSnTx9NnDixxp//AgAAQNNodNjt2LHjOi4DAAAA16pJ3zwBAACA5nNd3jyRnp6uzMxM1+er9O7dWwMGDLgedw0AAIB6uqaw27dvnyZMmKCcnBxJP7xh4vJ1d926ddPKlSvVr1+/a18lAAAArqrRYffVV18pKSlJFy5c0LBhw5SQkKDw8HCdPHnS9bddhw0bpr179+qWW265nmsGAABALRoddnPnzlVFRYU2bdrk+juul/3xj3/U1q1bNXLkSP35z39WWlraNS8UAAAAV9boN09s375dDzzwQI2ouywpKUn333+/tm/f3ujFAQAAoP4aHXYlJSXq3LnzFed06dJFJSUl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",
"text/plain": [
"