Skip to content

Instantly share code, notes, and snippets.

@Miura-KR
Created September 28, 2019 04:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Miura-KR/60b291310b9167bf2797c687b4e63476 to your computer and use it in GitHub Desktop.
Save Miura-KR/60b291310b9167bf2797c687b4e63476 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'qiskit-terra': '0.9.0',\n",
" 'qiskit-ignis': '0.2.0',\n",
" 'qiskit': '0.12.0',\n",
" 'qiskit-aer': '0.3.0',\n",
" 'qiskit-ibmq-provider': '0.3.2',\n",
" 'qiskit-aqua': '0.6.0'}"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import qiskit\n",
"qiskit.__qiskit_version__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Quantum Fourier Transform\n",
"https://quantum-computing.ibm.com/support/guides/quantum-algorithms-with-qiskit?page=5cbc5e2d74a4010049e1a2b0#"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import math\n",
"\n",
"# importing Qiskit\n",
"from qiskit import Aer, IBMQ\n",
"from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, execute\n",
"from qiskit.extensions import U1Gate\n",
"\n",
"from qiskit.providers.ibmq import least_busy\n",
"from qiskit.tools.monitor import job_monitor"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AccountProvider for IBMQ(hub='ibm-q', group='open', project='main')>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"IBMQ.load_account()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 3qubit 手書き"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 528.556x264.88 with 1 Axes>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q = QuantumRegister(3)\n",
"c = ClassicalRegister(3)\n",
"\n",
"qft3 = QuantumCircuit(q, c)\n",
"qft3.h(q[0])\n",
"qft3.cu1(math.pi/2.0, q[1], q[0]) # CROT_2 from q[1] to q[0]\n",
"qft3.cu1(math.pi/4.0, q[2], q[0]) # CROT_3 from q[2] to q[0]\n",
"qft3.h(q[1])\n",
"qft3.cu1(math.pi/2.0, q[2], q[1]) # CROT_2 from q[2] to q[1]\n",
"qft3.h(q[2])\n",
"\n",
"qft3.draw(output='mpl')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"U1Gate\n",
"\n",
"$U_1(\\theta) = \n",
"\\begin{bmatrix}\n",
"1 & 0 \\\\\n",
"0 & e^{i\\theta}\n",
"\\end{bmatrix}$"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1.+0.0000000e+00j, 0.+0.0000000e+00j],\n",
" [ 0.+0.0000000e+00j, -1.+1.2246468e-16j]])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"U1Gate(math.pi).to_matrix()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# QFT の実装\n",
"ここから,QFTを実装していく.\n",
"\n",
"関数の定義"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def input_state(circ, q, n):\n",
" \"\"\"n-qubit input state for QFT that produces output 1. QFT すると001が返ってくるような入力\"\"\"\n",
" for j in range(n):\n",
" circ.h(q[j])\n",
" U1G = U1Gate(math.pi/float(2**(j)))\n",
" circ.append(U1G.inverse(), [q[j]], [])\n",
"\n",
"def qft(circ, q, n):\n",
" \"\"\"n-qubit QFT on q in circ.\"\"\"\n",
" for j in range(n):\n",
" circ.h(q[j])\n",
" for k in range(j+1,n):\n",
" circ.cu1(math.pi/float(2**(k-j)), q[k], q[j])\n",
" circ.barrier()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 入力状態の生成\n",
"ここでは,QFT をすると 001 状態だけになる入力を生成する."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"OPENQASM 2.0;\n",
"include \"qelib1.inc\";\n",
"qreg x[3];\n",
"creg c[3];\n",
"h x[0];\n",
"u1(-3.14159265358979) x[0];\n",
"h x[1];\n",
"u1(-1.57079632679490) x[1];\n",
"h x[2];\n",
"u1(-0.785398163397448) x[2];\n",
"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAN8AAADWCAYAAABR9lfkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAWcklEQVR4nO3de1TUdf7H8ScXRUAuAg6gIA5BoGmsipdFsrZwdb20RqWG/jx2TrZ52Z8dtKN52dQO/uzYapeTrplJu5XtmmZpnf0Vbbn+zthPMCT66aowgIJzURAElOvM7w+L9usFIWA+DPN+nMM58P5+vsybM7zm853vZb5udrvdjhDC4dxVNyCEq5LwCaGIhE8IRSR8Qigi4RNCEQmfEIpI+IRQRMInhCISPiEUkfAJoYiETwhFJHxCKCLhE0IRCZ8Qikj4hFBEwieEIhI+IRSR8AmhiIRPCEUkfEIoIuETQhEJnxCKSPiEUETCJ4QiEj4hFJHwCaGIhE8IRTxVNyDa5tn31DzuK3M6tn7jc3s6p5F26LX5CYc/5s8hM58Qikj4hFBEwieEIhI+IRSR8AmlrLVV9H45jRPWYk29pOoivV9O41R5mZrGHEDCJ5TKMRvp49mLYSGRmnq2uRC/3t7EBYUr6qzrSfiEUsctRn6hG4ynu4emnmMqZGSoHne3nvsv2nP/MuEUjpuNJIZF31TPNhcy6hb1nsSlwldUVISXlxfp6ema+saNG+nVqxcHDx5U1JnryrUUMSrsLk3NZreRayluCeXkv2UQ/sbTbDz6kYoWu4xLhU+v17No0SK2bdtGaWkpADt37mTNmjXs2rWL6dOnK+6w87y1ZADff71LU7Pb7Wx/yp+C7O7xT1xWXYGptpKRoXpNPc9aQk1jHWPDYwF46zfP8NL9HTzVphtyqfABrF27Fm9vb9avX8/+/ftZuHAhW7duZd68eS1jLBYLv/71r/Hx8SEhIYHc3FyFHbdfTUUZtZUm+g9K0NSrrEYa6qoJjU5U1JlWWU0FAIFePpr6B6cMjA2PIdI/GIAIv2CH9+YILhe+oKAgVq5cSWZmJmlpaaxatYqlS5dqxixcuJD4+HjKy8tZvHgxjz32GM3NzYo6bj+LMRs3dw+CI+7R1C+dy8MnIBS/4MjbrOlY8UEDCPDyYfOxT6isq6XiWg1vnsjiTye+IGOCc5yf2REuFz6AuLg4mpqa0Ov1bNiwQbOsurqaTz/9lD/84Q94e3vz9NNP09zczDfffKOo2/azGLPpF3Y3nr29NfWL5/LQ6bvHrAfg7+XDgUeWc9xchH7HEoa/vZwDZ7M59OgKJkQOUd1el3O5qxoMBgNz5swhKSkJg8FAVlYWKSkpLcvPnj1LcHAwISEhLbXhw4dz8uRJxo8f3yU9ubm53XHM0nftbf59FmM2lZYCdjwToqk31teQOP35Tu+tNQ3L3291+fiIeA6nrevQY9yooz13lN3etufKpcKXn5/PtGnTSE1NJTMzk8TERFasWEFOTk7LE1ZbW4u/v79mPX9/f2pqalS0/LNYinIYm7qOIcnzNPX3nh9OaDea+dpqwd93cMxUQENzE8dMBRxIfU51S53CZcJnNBqZNGkSSUlJ7N69Gw8PDzIyMpg6dSp79uwhLS0NAF9fX6qrqzXrXrlyhb59+3ZZb215pWzr9XyV5gLqay8Tde8k/IIjtPWrlejaubOlra/it9MZ1/PtnPy7do3vaM+O4hLv+cxmMxMnTiQ6Opq9e/fi6Xn9NWfKlCkkJyezevVqGhoaAIiNjeXSpUuUl5e3rP/9998zdOhQJb23l8WYjaeXz017Ok1nDfQNjsQ3IFRRZ+JGLjHzhYWFUVhYeMtlR44c0fzs5+fH1KlTefHFF9m0aRPvvvsubm5ujBs3zhGtdpjFmE2ofjTuHtqn1lRw1Ck3OXsylwhfe23fvp25c+fSr18/YmNj2bdvHx4eHndesRuYMHfLLesPPrndwZ2IO5Hw3UJoaChffPGF6jZ6vC3Zh/jVoGGMCB3c5nXyrCVkFX/HsjHOfzaSS7znE92PzW7DUHamXcEDSNBFcfTCWWx2W9c05kAy8wkl8qzniPALanXM4XMnefzjLdzbP4riqoskhEaxb8YyYvqFkWctYcQN54Q6G5n5hBIFl81E+fdvdcx9kfGMDr+LrNlruS8yntceehKA6AAd/6q44Ig2u5TMfEIJOz8dizPXVjL34Oua5aG+AaxPnok+QAdAaXUFA3+YKe3YcUPtWSydQcInlIjtF46h7DQAYb6BZM1ee9OYTwpyGBocQbPNhvu/nTJWVHWRWfExDuu1q8hmp1AiQTeI89XlrY45eamUoSER1Dc3Yr16BVPNZQDOVJhI0EU5os0uJTOfUMLdzZ3xA+PItRTfdo/nynEzWr7Pnf8ScP1Qwy8HxPaIz3aR8All0kdPa/c6CbqoHjHrgWx2CqGMm91ZTgEXooeRmU8IRSR8Qigi4RNCEQmfEIpI+IRQRMInhCISPiEUkfAJoYiETwhFJHxCKCLhE0IRCZ8Qikj4hFBEwieEIhI+IRSRK9mdRFvvUtTZXungrdA74y5F7dVrs3Pc1VZmPiEUkfAJoYiETwhFJHxCKWttFb1fTuOEtVhTL6m6SO+X0zhVXqamMQeQ8AmlcsxG+nj2YlhIpKaebS7Er7c3cUHhijrrehI+odRxi5Ff6Abj6a69+WiOqZCRofoe8eG4t9Nz/zLhFI6bjSSGRd9UzzYXMuoW9Z5EwieUyrUUMSrsLk3NZreRayluCeXkv2UQ/sbTbDz6kYoWu4xLha+oqAgvLy/S09M19Y0bN9KrVy8OHjyoqDPXVFZdgam2kpE33OQyz1pCTWMdY8NjAXjrN8/w0v0dPNrfDblU+PR6PYsWLWLbtm2UlpYCsHPnTtasWcOuXbuYPt357/P9o7eWDOD7r3dpana7ne1P+VOQ3T1mkLKaCgACvXw09Q9OGRgbHkOkfzAAEX7BDu/NEVwqfABr167F29ub9evXs3//fhYuXMjWrVuZN29ey5gXXniBoUOH4u7uzocffqiw25+npqKM2koT/QclaOpVViMNddWERicq6kwrPmgAAV4+bD72CZV1tVRcq+HNE1n86cQXZExwjlPEOsLlwhcUFMTKlSvJzMwkLS2NVatWsXTpUs2Y2NhYXn31VcaMGaOoy46xGLNxc/cgOOIeTf3SuTx8AkLxC468zZqO5e/lw4FHlnPcXIR+xxKGv72cA2ezOfToCiZEDlHdXpdzyROr4+LiaGpqIiYmhg0bNty0fO7cuQBkZGQ4urVOYTFm0y/sbjx7e2vqF8/lodN3j1nvR+Mj4jmctk51G0q4XPgMBgNz5swhKSkJg8FAVlYWKSkpSntyc7vz/cWXvtv2m0lZjNlUWgrY8UyIpt5YX0Pi9Oc7vbfWNCx/v0PrAyz4+w6OmQpoaG7imKmAA6nPtTq+oz13VFtv/OVS4cvPz2fatGmkpqaSmZlJYmIiK1asICcnR/kT1pksRTmMTV3HkOR5mvp7zw8ntJvNfG2xc/LvVLfQJVzmPZ/RaGTSpEkkJSWxe/duPDw8yMjI4Ntvv2XPHsdfc/bv7Hb7Hb/aqtJcQH3tZaLunYRfcETLV3NjHfVXK9G1c2dLW3rrjL47U0d7dtTf7BLhM5vNTJw4kejoaPbu3Yun5/UJf8qUKSQnJ7N69WoaGhoUd9k5LMZsPL18btrTaTproG9wJL4BoYo6Ezdyic3OsLAwCgsLb7nsyJEjN9UaGxtpbm7GZrPR2NhIXV0dXl5eTrFpajFmE6ofjbuH9qk1FRx1yk3OnswlwtdeCxYs4J133gF+CmdRURGDBw9W2FXbTJi75Zb1B5/c7uBOxJ24xGZne2VmZt60He8MwevutmQfItdS3O71yqorWPaPP3PMVMCE91/gV3vWs/yrvwDXT0X74zHnPC1Qwiccwma3YSg7w4jQwe1e98uSfB6KGs4g/xA+n7mar554AevVKvIvniNBF8XRC2ex2W2d33QXk81O4RB51nNE+AW1OubwuZM8/vEW7u0fRXHVRRJCo9g3YxmHz5/i1Yfm07d3n5axnm4eePxwrV9MvzDyrCWMuOEE7e5OZj7hEAWXzUT59291zH2R8YwOv4us2Wu5LzKe1x56ErvdztXGek3wvrt4jvJr1QwNiQAgOkDHvyoudGn/XUFmPuEQdn46/mWurWTuwdc1y0N9A1ifPBN9gA6A0uoKBvoFccJazL26qJZxFddqePbLTN6f/p+a3+1G998TfSMJn3CI2H7hGMpOAxDmG0jW7LU3jfmkIIehwRE022y4/3BYJ6s4n5SoYQA02ZqZ/9kbbLo/jTDfwJb1iqouMis+xgF/ReeSzU7hEAm6QZyvLm91zMlLpQwNiaC+uRHr1SuYai7zraWo5eMkPjz9v+SYjaw6vIeUD17kmwtnADhTYSLh32ZHZyEzn3AIdzd3xg+MI9dSfNs9nivHzWj5Pnf+SwA8Ejum5UOUZg9JYvaQJM06edYSfjkg1ik/aEnCJxwmffS0dq/zePy4Vpcn6KKcctYDcLOrOvtVCBfnfHO1ED2EhE8IRSR8Qigi4RNCEQmfEIpI+IRQRMInhCISPiEUkfAJoYiETwhFJHxCKCLhE0IRCZ8Qikj4hFBEwieEInIxrZN49j01j/tKB2+F3vic429C02uzc9zVVmY+IRSR8AmhiIRPCEUkfEIoIuETSllrq+j9chonrMWaeknVRXq/nMap8jI1jTmAhE8olWM20sezF8NCIjX1bHMhfr29iQsKV9RZ15PwCaWOW4z8QjcYT3cPTT3HVMjIUL1TfhhuW/Xcv0w4heNmI4k/fBz8v8s2F7Z8THxP5VLhKyoqwsvLi/T0dE1948aN9OrVi4MHnfMOp84s11LEqLC7NDWb3UaupbgllJP/lkH4G0+z8ehHKlrsMi4VPr1ez6JFi9i2bRulpaUA7Ny5kzVr1rBr1y6mT5+uuMPO89aSAXz/9S5NzW63s/0pfwqyu8c/cVl1BabaSkbecFPLPGsJNY11jA2PBeCt3zzDS/d38FSbbsilwgewdu1avL29Wb9+Pfv372fhwoVs3bqVefPmAVBfX8/8+fMZOHAggYGBPPjgg5w6dUpx1+1TU1FGbaWJ/oMSNPUqq5GGumpCoxMVdaZVVlMBQKCXj6b+wSkDY8NjiPQPBiDCL9jhvTmCy4UvKCiIlStXkpmZSVpaGqtWrWLp0qUty5uamoiJieHYsWOUl5eTkpLCrFmzFHbcfhZjNm7uHgRH3KOpXzqXh09AKH7BkbdZ07HigwYQ4OXD5mOfUFlXS8W1Gt48kcWfTnxBxgTnOD+zI1wufABxcXE0NTWh1+vZsGGDZpmvry9r1qxh4MCBeHh48Pvf/578/Hzq6uoUddt+FmM2/cLuxrO3t6Z+8VweOn33mPUA/L18OPDIco6bi9DvWMLwt5dz4Gw2hx5dwYTIIarb63Iud1WDwWBgzpw5JCUlYTAYyMrKIiUlpdXxgwcPpk+fPrcd01Fubne+pfHSd9t+MymLMZtKSwE7ngnR1Bvra0ic/nyn99aahuXvt7p8fEQ8h9PWdegxbtTRnjuqrTf+cqnw5efnM23aNFJTU8nMzCQxMZEVK1aQk5Nzyyfs8uXLLF68mIyMDAXd/nyWohzGpq5jSPI8Tf2954cT2o1mvrZa8PcdHDMV0NDcxDFTAQdSn1PdUqdwmfAZjUYmTZpEUlISu3fvxsPDg4yMDKZOncqePXtIS0vTjL927RoPP/wws2bNumlZZ2vLK2Vbr+erNBdQX3uZqHsn4Rccoa1frUTXzp0tHb19Y2dcz7dz8u/aNd5ZbjnpEu/5zGYzEydOJDo6mr179+Lpef01Z8qUKSQnJ7N69WoaGhpaxjc1NTFz5kxiY2Odb9YzZuPp5XPTnk7TWQN9gyPxDQhV1Jm4kUvMfGFhYRQWFt5y2ZEjR26qPfXUU9hsNt58882ubq3TWYzZhOpH4+6hfWpNBUedcpOzJ3OJ8LVHSUkJ77zzDn369CEwMLClfvLkSQYNGqSws7aZMHfLLesPPrndwZ2IO3GJzc72iIqKwm63c+3aNWpqalq+nCF43d2W7EPkWorbvV5ZdQXL/vHnlp9fyfmUB/asA66fDfPHY855WqCETziEzW7DUHaGEaGD273ulyX5PBQ1HID6pka+s55rWZagi+LohbPY7LbOatVhJHzCIfKs54jwC2p1zOFzJ9G9/hQpH7xIzI7/5NEDf7xeP3+q5aD72/lf8R/DJmjWi+kXRp61pGsa70ISPuEQBZfNRPn3b3XMfZHxjA6/i6zZa7kvMp7XHnoSu93O1cZ6+vbuQ2NzE/88f4pfDdKeNhcdoONfFRe6sv0uITtchEPY+enYm7m2krkHX9csD/UNYH3yTPQBOgBKqysY6BfECWsx9+qiAHjv5P8we0jSLX+3G2rPavk5JHzCIWL7hWMoOw1AmG8gWbPX3jTmk4IchgZH0Gyz4f7DGUdZxfmkRA0D4HSFie8uFrMz70tOXirljW//m8UjJ1FUdZFZ8TGO+2M6iYRPOESCbhDnq8tbHXPyUinjBsRS39yI9eoVTDWX+dZSRProqQD81/0/XenwwJ51LB45CYAzFSYSfpgdnYmETziEu5s74wfGkWspvu0ez5XjZrR8nzv/JQAeiR1zy89x+fqJdcD1Qw2/HBDrlJ/1IuETDpM+elq713k8flyryxN0UU4564Hs7RRCGTe7s5wCLkQPIzOfEIpI+IRQRMInhCISPiEUkfAJoYiETwhFJHxCKCLhE0IRCZ8Qikj4hFBEwieEIhI+IRSR8AmhiIRPCEUkfEIoIleyu5CJEyditVqx2+3cfffdvP322/j7+6tuy2XJxbQupKqqioCAAADS09Px9/dn3bp1aptyYbLZ6UJ+DJ7NZqO2tlb5HVxdnYTPxTz88MOEhYVx+vRpli1bprodlyabnS7IZrOxevVqQkJCJIAKSfhc1OnTp3nsscfIz89X3YrLks1OF3HlyhVMJlPLz/v27eOee+5pZQ3R1eRQg4uoqqoiNTWVuro63NzciI+P5/XXX7/ziqLLyGanwG63y55PBWSz8wYff/wx06ZNQ6fT4eXlRVRUFGlpaT36vdEHB//B5//MVt2Gy5Hw/aCpqYnZs2czY8YM8vLySE1NZenSpYwYMYJ9+/ZRVlamusUuccFyibxThbi7y7+Co8l7vh8sWbKEv/71ryxYsICtW7fi6+vbsuz8+fMEBgYq7K7rfGn4lj5evRmfOEx1Ky5H3vMBR44cYcKECUyePJnPPvvM4e9/Vr70pkMfT3StTSuebtM42dYAXnnlFQA2bdokOx6Ew8jMB/j7+xMcHExRUZHqVhzmguUSr2XuJ2X8KFKSR6luxyW5fPgqKyvp168fDzzwAF999ZWSHmSzs2eRzc42+vG1x2q1Ku5EuBqXn/kAYmJiMBqNfP7556SkpGiWnT59mri4OEWddY2/fPQ5hSUXWPHME3j38VLdjsuSQw3Axo0bmTVrFpMnT+a3v/0tMTExWK1WDAYDQ4cO5aOPPlLdYqe5YLnE/50pJmX8KAmeYhI+YObMmQQEBLB582aysrI4dOgQOp2OMWPG8Oyzz6pur1NVVFYTFOgnx/W6AdnsdEE2m03OaOkGJHxCKCIvf0IoIuETQhEJnxCKSPiEUETCJ4QiEj4hFJHwCaGIhE8IRSR8Qigi4RNCEQmfEIpI+IRQRMInhCISPiEUkfAJoYiETwhFJHxCKCLhE0IRCZ8Qikj4hFBEwieEIhI+IRSR8AmhiIRPCEUkfEIoIuETQhEJnxCK/D/lGYgZjJ7fDQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 276.92x264.88 with 1 Axes>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q = QuantumRegister(3, 'x')\n",
"c = ClassicalRegister(3, 'c')\n",
"qft3 = QuantumCircuit(q, c)\n",
"\n",
"# first, prepare the state that should return 001 and draw that circuit:\n",
"input_state(qft3, q, 3)\n",
"\n",
"print(qft3.qasm())\n",
"qft3.draw(output='mpl')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"入力\n",
"\n",
"\\begin{align}\n",
"|000\\rangle &\\xrightarrow{H^{\\otimes 3}} \\frac{1}{\\sqrt{2}^3} \\left[ \\vert0\\rangle + \\vert1\\rangle \\right] ^{\\otimes 3}\n",
"\\\\\n",
"&\\xrightarrow{U_1(-\\pi)\\otimes U_1(-\\pi/2) \\otimes U_1(-\\pi / 4)} \\frac{1}{\\sqrt{2}^3} \\left[|0\\rangle + \\exp\\left(- \\frac{2\\pi i}{2} \\right) |1\\rangle \\right]\n",
"\\otimes \\left[|0\\rangle + \\exp\\left(- \\frac{2\\pi i}{2^2} \\right) |1\\rangle \\right]\n",
"\\otimes \\left[|0\\rangle + \\exp\\left(- \\frac{2\\pi i}{2^3} \\right) |1\\rangle \\right]\n",
"\\\\\n",
"&= \\frac{1}{\\sqrt{2}^3} \\Bigl[|000\\rangle + \\exp\\left(- \\frac{2\\pi i}{2^3} \\right)|001\\rangle + \\exp\\left(- \\frac{2\\pi i}{2^2} \\right)|010\\rangle + \\exp\\left(- \\frac{2\\pi i}{2^2} - \\frac{2\\pi i}{2^3} \\right)|011\\rangle \n",
"\\\\\n",
"&+ \\exp\\left(- \\frac{2\\pi i}{2} \\right)|100\\rangle + \\exp\\left(- \\frac{2\\pi i}{2}- \\frac{2\\pi i}{2^3} \\right)|101\\rangle + \\exp\\left(- \\frac{2\\pi i}{2}- \\frac{2\\pi i}{2^2} \\right)|110\\rangle + \\exp\\left(- \\frac{2\\pi i}{2} - \\frac{2\\pi i}{2^2} - \\frac{2\\pi i}{2^3} \\right)|111\\rangle \\Bigr]\n",
"\\end{align}\n",
"\n",
"出力\n",
"\n",
"\\begin{align}\n",
"y_{000} &= \\frac{1}{\\sqrt{2}^3} \\sum_{j=0}^7 x_j \\underbrace{\\exp(\\frac{2\\pi i}{2^3} k\\cdot 0)}_{=1} = 0\n",
"\\\\\n",
"y_{001} &= \\frac{1}{\\sqrt{2}^3} \\sum_{j=0}^7 x_j \\exp(\\frac{2\\pi i}{2^3} k\\cdot 1) \n",
"= 1\n",
"\\end{align}\n",
"その他は0になる.\n",
"\n",
"どうやってこの入力を見つけたのかはわからない.知りたい."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"入力状態の確認"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.35355+0.j -0.35355+0.j 0. -0.35355j 0. +0.35355j\n",
" 0.25 -0.25j -0.25 +0.25j -0.25 -0.25j 0.25 +0.25j ]\n"
]
}
],
"source": [
"backend = Aer.get_backend('statevector_simulator')\n",
"job = execute(qft3, backend)\n",
"result = job.result()\n",
"outputstate = result.get_statevector(qft3, decimals=5)\n",
"print(outputstate)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# QFT 回路の構成"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"OPENQASM 2.0;\n",
"include \"qelib1.inc\";\n",
"qreg x[3];\n",
"creg c[3];\n",
"h x[0];\n",
"u1(-3.14159265358979) x[0];\n",
"h x[1];\n",
"u1(-1.57079632679490) x[1];\n",
"h x[2];\n",
"u1(-0.785398163397448) x[2];\n",
"h x[0];\n",
"cu1(1.57079632679490) x[1],x[0];\n",
"cu1(0.785398163397448) x[2],x[0];\n",
"barrier x[0],x[1],x[2];\n",
"h x[1];\n",
"cu1(1.57079632679490) x[2],x[1];\n",
"barrier x[0],x[1],x[2];\n",
"h x[2];\n",
"barrier x[0],x[1],x[2];\n",
"measure x[0] -> c[0];\n",
"measure x[1] -> c[1];\n",
"measure x[2] -> c[2];\n",
"\n"
]
},
{
"data": {
"image/png": "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n6tzB/Tupn1uQitrKwwf0EtQopZlPPdYbmFz5szBZ599hunTpyMyMhKtW7eufSwzMxN2dqZX/QHA93G/wtrKEgNCuoqOQkRERH8x9P4eSEhKwY3SWwCAQX27wb4RJ62K1K5tGwzp1wOxP9fczbd1K2sM6y//FemHBvdB0u9pKP/jsqChA3ujlY214FQtg+cAAPjpp58wePBgjBw5Et98843kx8MvXvu+pK9HRERERKZnzaIZjerH4z4AvPXWWwCANWvW8GRYIiIiIjJp3AMAoG3btnBwcEB6erroKJK5kluAd6I+R+iA3ggd2Ft0HCIiItIh72oROti3g9qINlRqNBrkXy2CY4f2oqM0SW7BNTgZWeamUnwBUFRUhPbt22Po0KE4dOiQkAw8BIiIiIiImouHADXSnfonLy9PcBIiIiIiopan+D0AAODj44O0tDQcOHAAoaGhWo/9/vvv8POTzy2rDeGjLw7gwqUrWPT8RNhYW4mOQ0REREQS4mVAAaxevRoTJkzAyJEj8be//Q0+Pj7Iy8tDXFwcAgMD8cUXX4iOaDBXcgtw+txFhA7ozZV/IiIiIgViAQAgPDwc7dq1w7p16xAbG4v9+/fD0dERffv2xbx580THM6jCohuwt7Pldf+JiIiIFIqHAClQdXU17/xLREREpFAsAIiIiIiIFISbgYmIiIiIFIQFABERERGRgrAAICIiIiJSEBYAREREREQKwgKAiIiIiEhBWAAQERERESkICwAiIiIiIgVhAUBEREREpCAsAIiIiIiIFIQFABERERGRgrAAICIiIiJSEBYAREREREQKwgKAiIiIiEhBWAAQERERESkICwAiIiIiIgVhAUBEREREpCAsAIiIiIiIFIQFABERERGRgrAAICIiIiJSEBYAREREREQKwgKAiIiIiEhBWAAQERERESkICwAiIiIiIgVhAUBEREREpCAsAIiIiIiIFIQFABERERGRgrAAICIiIiJSkP8H2kczLBeY6R0AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 999.32x264.88 with 1 Axes>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qft(qft3, q, 3)\n",
"for i in range(3):\n",
" qft3.measure(q[i], c[i])\n",
"\n",
"print(qft3.qasm())\n",
"qft3.draw(output='mpl')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# シミュレーション\n",
"理論的には出力状態は 001 だけなので,回路を1024回走らせると 001 状態が 1024 回観測される."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'001': 1024}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"backend = Aer.get_backend(\"qasm_simulator\")\n",
"\n",
"simulate = execute(qft3, backend=backend, shots=1024).result()\n",
"simulate.get_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 実機での実行"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<IBMQSimulator('ibmq_qasm_simulator') from IBMQ(hub='ibm-q', group='open', project='main')>,\n",
" <IBMQBackend('ibmqx2') from IBMQ(hub='ibm-q', group='open', project='main')>,\n",
" <IBMQBackend('ibmq_16_melbourne') from IBMQ(hub='ibm-q', group='open', project='main')>,\n",
" <IBMQBackend('ibmq_vigo') from IBMQ(hub='ibm-q', group='open', project='main')>,\n",
" <IBMQBackend('ibmq_ourense') from IBMQ(hub='ibm-q', group='open', project='main')>]"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"IBMQ.providers()\n",
"provider.backends()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"# Use the IBM Quantum Experience\n",
"provider = IBMQ.get_provider(group='open')"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"BackendStatus(backend_name='ibmqx2', backend_version='2.0.0', operational=True, pending_jobs=27, status_msg='active')"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"backend = provider.get_backend('ibmqx2')\n",
"backend.status()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Job Status: job has successfully run\n"
]
}
],
"source": [
"job_exp = execute(qft3, backend=backend)\n",
"job_monitor(job_exp)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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B4499ljWrFmTuItACbFJY8aMYcyYMXttu+666+ofH3zwwTz00EMxzz333HM599xz99l+ySWXcMkll7RqnCIiqRSrE+L8+fMbPSa6EyKEatOTTjqJzp0788Mf/pBhw4btde6WLVt48cUXmThxYkKvQwlRRERapCWdELt37867775LXl4e77zzDhdccAFz586lS5cuQOifcdlll3H55ZfXl0ATRW2IIq3sQDsXzJ8/v75jwYgRI3juuecAWL16NWeddVZ954J77703qdcjsj8t6YSYnZ1NXl4eAJ/73Ofo27cvf//73+vPu+qqqzjyyCO54oorEn4dKiHuxzUP5yb09adctDmhry/JVde5oLy8nMLCQkaPHs3YsWP3akuJ7lwwffp0brjhBqZNm0ZJSQmzZs2iXbt2rF27lpEjRzJ27FjatWvHTTfdxJAhQ9i2bRtf+tKXGDVq1F6vKZJK0Z0QCwoKKC8v5/7779/rmLpOiEOHDt2rE+KGDRvIzc0lKyuLFStWUFVVVV8S/NnPfsbWrVvrx3InmkqIIq2oJTMc5eTk0K5duEetqampr3Lq0aMHQ4YMAaBz584cffTR+0wSIZJK0Z0QTzjhBMaNG1ffCbHu9/+CCy5g06ZNlJWVcc8993D99dcDMHfuXE488URGjBjBxRdfzO23305ubi4fffQRt99+O5WVlYwaNYqRI0fyyCOPJPY6EvrqIp8xLelckJ+fz1//+leuvPJKVq9ezT333FOfIOusWrWKd999l7KyssRfjEgcDrQT4llnncVZZ521z/aePXvWd7pJFpUQRVpRSzoXABx//PHMmzePmTNncuedd9avkgLwr3/9i4suuoibb765vsOBiLQelRBFWlE8nQt69uy5V+eCaP379ycnJ4elS5dSWlrK7t27ueiiizjnnHM488wzE3oNM2fO5LrrrqO2tpYLL7yQq666aq/9NTU1XHHFFVRUVJCbm8u0adMoKipi06ZNXHzxxSxcuJDzzjuPKVOm1J8zffp0pk6dipnRo0cP7rvvPvLz8zMi9vLycqZOnUptbS2nnHJKUmZMyURtob+FSogiraglMxytXLmSPXv2APDhhx+yfPlyioqKcHe++93vcvTRR/Ptb387ofG3ZMaR7OxsrrvuOn7605/udXyylj1LROybNm3i+uuv5+mnn2bevHmsX7+e2bNnt3rs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\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result_exp = job_exp.result()\n",
"\n",
"from qiskit.visualization import plot_histogram\n",
"counts_exp = result_exp.get_counts(qft3)\n",
"plot_histogram(counts_exp)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment