概要
- Qiskit について, サンプルプログラムを動かしてみた.
- 動作環境は, Google Colaboratory で行った
- 実行プログラム, 解説は, 下記の参照サイトをご覧ください
感想
- 量子物理学に関する知識(用語, 数式の意味ほか)は, 徐々に身につけていく必要があると感じた.
- 時間を見つけて, 今後も, ドキュメントの残りの部分を進めていこうと思う.
Installing Qiskit
- Qiskit の インストール
- Qiskit の バージョン
- Qiskit の サンプルプログラム
- Qiskit の サンプルプログラム(Xゲート, Yゲート, Zゲート)
1 2 |
[編集内容(qiskit install)] !pip install qiskit |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
[出力結果] Collecting qiskit Downloading https://files.pythonhosted.org/packages/f7/4c/2d3065e1feca573a6f9f5f53d6d9db3896d50b6575191e33401956608955/qiskit-0.24.1.tar.gz Collecting qiskit-terra==0.16.4 Downloading https://files.pythonhosted.org/packages/89/64/d70a10bce894ec81a227aabc47305449b48bcffd7dde76d30e7cea6c9786/qiskit_terra-0.16.4-cp37-cp37m-manylinux2010_x86_64.whl (8.5MB) |████████████████████████████████| 8.5MB 7.7MB/s Collecting qiskit-aer==0.7.6 Downloading https://files.pythonhosted.org/packages/03/98/735a869724392a8fa084a65d601a8c8940aacdc4c245aba9a65d9a2669ec/qiskit_aer-0.7.6-cp37-cp37m-manylinux2010_x86_64.whl (17.6MB) |████████████████████████████████| 17.6MB 211kB/s Collecting qiskit-ibmq-provider==0.12.2 Downloading https://files.pythonhosted.org/packages/08/ac/69bb35892303c3a4a52eaaf7ea95431dd3f57963b580a011ee92693a7fcc/qiskit_ibmq_provider-0.12.2-py3-none-any.whl (198kB) |████████████████████████████████| 204kB 56.2MB/s Collecting qiskit-ignis==0.5.2 Downloading https://files.pythonhosted.org/packages/b2/1d/d5df8cf48cf20a26deb6e0535f020cd2ad625cb27457abb0ab39c2104e38/qiskit_ignis-0.5.2-py3-none-any.whl (203kB) |████████████████████████████████| 204kB 54.2MB/s Collecting qiskit-aqua==0.8.2 Downloading https://files.pythonhosted.org/packages/0e/82/528741676960a7fd1c75151639601826118f2729ad53034fa3b39290c056/qiskit_aqua-0.8.2-py3-none-any.whl (2.1MB) |████████████████████████████████| 2.1MB 15.9MB/s Collecting ply>=3.10 Downloading https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl (49kB) |████████████████████████████████| 51kB 8.2MB/s Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.7/dist-packages (from qiskit-terra==0.16.4->qiskit) (2.6.0) Requirement already satisfied: networkx>=2.2 in /usr/local/lib/python3.7/dist-packages (from qiskit-terra==0.16.4->qiskit) (2.5) Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.7/dist-packages (from qiskit-terra==0.16.4->qiskit) (1.19.5) Requirement already satisfied: psutil>=5 in /usr/local/lib/python3.7/dist-packages (from qiskit-terra==0.16.4->qiskit) (5.4.8) Requirement already satisfied: scipy>=1.4 in /usr/local/lib/python3.7/dist-packages (from qiskit-terra==0.16.4->qiskit) (1.4.1) Collecting retworkx>=0.5.0 Downloading https://files.pythonhosted.org/packages/1b/92/f007f8b9d88dcd5b90e363967e5d54431a68c5fe06d83400732e3b438084/retworkx-0.8.0-cp37-cp37m-manylinux2010_x86_64.whl (1.0MB) |████████████████████████████████| 1.0MB 55.0MB/s Requirement already satisfied: sympy>=1.3 in /usr/local/lib/python3.7/dist-packages (from qiskit-terra==0.16.4->qiskit) (1.7.1) Requirement already satisfied: python-dateutil>=2.8.0 in /usr/local/lib/python3.7/dist-packages (from qiskit-terra==0.16.4->qiskit) (2.8.1) Requirement already satisfied: dill>=0.3 in /usr/local/lib/python3.7/dist-packages (from qiskit-terra==0.16.4->qiskit) (0.3.3) Collecting fastjsonschema>=2.10 Downloading https://files.pythonhosted.org/packages/89/1c/8be51fa42aadc1c1611a52b866e1a5a1032a504f24789cf140b4e6d7c940/fastjsonschema-2.15.0-py3-none-any.whl Collecting python-constraint>=1.4 Downloading https://files.pythonhosted.org/packages/37/8b/5f1bc2734ca611943e1d6733ee244238679f6410a10cd45ede55a61a8402/python-constraint-1.4.0.tar.bz2 Requirement already satisfied: cython>=0.27.1 in /usr/local/lib/python3.7/dist-packages (from qiskit-aer==0.7.6->qiskit) (0.29.22) Collecting pybind11>=2.4 Downloading https://files.pythonhosted.org/packages/8d/43/7339dbabbc2793718d59703aace4166f53c29ee1c202f6ff5bf8a26c4d91/pybind11-2.6.2-py2.py3-none-any.whl (191kB) |████████████████████████████████| 194kB 44.6MB/s Requirement already satisfied: nest-asyncio!=1.1.0,>=1.0.0 in /usr/local/lib/python3.7/dist-packages (from qiskit-ibmq-provider==0.12.2->qiskit) (1.5.1) Requirement already satisfied: urllib3>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from qiskit-ibmq-provider==0.12.2->qiskit) (1.24.3) Requirement already satisfied: requests>=2.19 in /usr/local/lib/python3.7/dist-packages (from qiskit-ibmq-provider==0.12.2->qiskit) (2.23.0) Collecting requests-ntlm>=1.1.0 Downloading https://files.pythonhosted.org/packages/03/4b/8b9a1afde8072c4d5710d9fa91433d504325821b038e00237dc8d6d833dc/requests_ntlm-1.1.0-py2.py3-none-any.whl Collecting websockets>=8 Downloading https://files.pythonhosted.org/packages/5a/0b/3ebc752392a368af14dd24ee041683416ac6d2463eead94b311b11e41c82/websockets-8.1-cp37-cp37m-manylinux2010_x86_64.whl (79kB) |████████████████████████████████| 81kB 8.8MB/s Requirement already satisfied: scikit-learn>=0.17 in /usr/local/lib/python3.7/dist-packages (from qiskit-ignis==0.5.2->qiskit) (0.22.2.post1) Requirement already satisfied: setuptools>=40.1.0 in /usr/local/lib/python3.7/dist-packages (from qiskit-ignis==0.5.2->qiskit) (54.1.2) Collecting yfinance Downloading https://files.pythonhosted.org/packages/a7/ee/315752b9ef281ba83c62aa7ec2e2074f85223da6e7e74efb4d3e11c0f510/yfinance-0.1.59.tar.gz Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from qiskit-aqua==0.8.2->qiskit) (1.1.5) Collecting docplex==2.15.194 Downloading https://files.pythonhosted.org/packages/9b/76/ebf5b75a25c4357c9a4758cae7fea778dd7f282b83c2f22e150dc7e3c852/docplex-2.15.194.tar.gz (582kB) |████████████████████████████████| 583kB 50.7MB/s Collecting dlx Downloading https://files.pythonhosted.org/packages/54/c0/b8fb5bb727e983b6f5251433ef941b48f38c65bb0bd6ec509e9185bcd406/dlx-1.0.4.tar.gz Requirement already satisfied: h5py in /usr/local/lib/python3.7/dist-packages (from qiskit-aqua==0.8.2->qiskit) (2.10.0) Requirement already satisfied: fastdtw in /usr/local/lib/python3.7/dist-packages (from qiskit-aqua==0.8.2->qiskit) (0.3.4) Collecting quandl Downloading https://files.pythonhosted.org/packages/8b/2b/feefb36015beaecc5c0f9f2533e815b409621d9fa7b50b2aac621796f828/Quandl-3.6.1-py2.py3-none-any.whl Requirement already satisfied: decorator>=4.3.0 in /usr/local/lib/python3.7/dist-packages (from networkx>=2.2->qiskit-terra==0.16.4->qiskit) (4.4.2) Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.7/dist-packages (from sympy>=1.3->qiskit-terra==0.16.4->qiskit) (1.2.1) Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.8.0->qiskit-terra==0.16.4->qiskit) (1.15.0) Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19->qiskit-ibmq-provider==0.12.2->qiskit) (3.0.4) Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19->qiskit-ibmq-provider==0.12.2->qiskit) (2.10) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19->qiskit-ibmq-provider==0.12.2->qiskit) (2020.12.5) Collecting cryptography>=1.3 Downloading https://files.pythonhosted.org/packages/b2/26/7af637e6a7e87258b963f1731c5982fb31cd507f0d90d91836e446955d02/cryptography-3.4.7-cp36-abi3-manylinux2014_x86_64.whl (3.2MB) |████████████████████████████████| 3.2MB 41.1MB/s Collecting ntlm-auth>=1.0.2 Downloading https://files.pythonhosted.org/packages/ff/84/97c550164b54942b0e908c31ef09d9469f3ba4cd7332a671e2125732f63b/ntlm_auth-1.5.0-py2.py3-none-any.whl Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.17->qiskit-ignis==0.5.2->qiskit) (1.0.1) Requirement already satisfied: multitasking>=0.0.7 in /usr/local/lib/python3.7/dist-packages (from yfinance->qiskit-aqua==0.8.2->qiskit) (0.0.9) Collecting lxml>=4.5.1 Downloading https://files.pythonhosted.org/packages/cf/4d/6537313bf58fe22b508f08cf3eb86b29b6f9edf68e00454224539421073b/lxml-4.6.3-cp37-cp37m-manylinux1_x86_64.whl (5.5MB) |████████████████████████████████| 5.5MB 44.4MB/s Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas->qiskit-aqua==0.8.2->qiskit) (2018.9) Collecting inflection>=0.3.1 Downloading https://files.pythonhosted.org/packages/59/91/aa6bde563e0085a02a435aa99b49ef75b0a4b062635e606dab23ce18d720/inflection-0.5.1-py2.py3-none-any.whl Requirement already satisfied: more-itertools in /usr/local/lib/python3.7/dist-packages (from quandl->qiskit-aqua==0.8.2->qiskit) (8.7.0) Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.7/dist-packages (from cryptography>=1.3->requests-ntlm>=1.1.0->qiskit-ibmq-provider==0.12.2->qiskit) (1.14.5) Requirement already satisfied: pycparser in /usr/local/lib/python3.7/dist-packages (from cffi>=1.12->cryptography>=1.3->requests-ntlm>=1.1.0->qiskit-ibmq-provider==0.12.2->qiskit) (2.20) Building wheels for collected packages: qiskit, python-constraint, yfinance, docplex, dlx Building wheel for qiskit (setup.py) ... done Created wheel for qiskit: filename=qiskit-0.24.1-cp37-none-any.whl size=2919 sha256=ff29c727e4784ef214489254c465b1fced90c40a7af7c24e7659f4532f94bf1f Stored in directory: /root/.cache/pip/wheels/4a/3e/be/606704f95c92255208f2c6c571d95cc075a12d8672515ec7a5 Building wheel for python-constraint (setup.py) ... done Created wheel for python-constraint: filename=python_constraint-1.4.0-py2.py3-none-any.whl size=24079 sha256=bf4f277e7c979232a94c124c9b30df6ae70a1d1cde032a4b6fbc760236adbcb2 Stored in directory: /root/.cache/pip/wheels/34/31/15/7b070b25d0a549d20ce2e9fe6d727471c2c61ef904720fd40c Building wheel for yfinance (setup.py) ... done Created wheel for yfinance: filename=yfinance-0.1.59-py2.py3-none-any.whl size=23442 sha256=7377354156be5233a67b078debfeb9242b14297934060f8440ac2c69246b823d Stored in directory: /root/.cache/pip/wheels/f8/2a/0f/4b5a86e1d52e451757eb6bc17fd899629f0925c777741b6d04 Building wheel for docplex (setup.py) ... done Created wheel for docplex: filename=docplex-2.15.194-cp37-none-any.whl size=645116 sha256=ef2dfc072d928a4f7db38ec4b0bb54b0825cade9cd274f6dff829df3a96fb379 Stored in directory: /root/.cache/pip/wheels/ce/fa/5d/8f4d5fed1b8edb72e453cb2ac6fb75c6776b49d7174eb70457 Building wheel for dlx (setup.py) ... done Created wheel for dlx: filename=dlx-1.0.4-cp37-none-any.whl size=5712 sha256=b29aa61a575be43da4cfc7eb11dba7a9079461dc9092f3af879354a7cc1a6b45 Stored in directory: /root/.cache/pip/wheels/bb/ba/15/fdd0deb104df3254912998150ba9245668db06b00af5912d1a Successfully built qiskit python-constraint yfinance docplex dlx Installing collected packages: ply, retworkx, fastjsonschema, python-constraint, qiskit-terra, pybind11, qiskit-aer, cryptography, ntlm-auth, requests-ntlm, websockets, qiskit-ibmq-provider, qiskit-ignis, lxml, yfinance, docplex, dlx, inflection, quandl, qiskit-aqua, qiskit Found existing installation: lxml 4.2.6 Uninstalling lxml-4.2.6: Successfully uninstalled lxml-4.2.6 Successfully installed cryptography-3.4.7 dlx-1.0.4 docplex-2.15.194 fastjsonschema-2.15.0 inflection-0.5.1 lxml-4.6.3 ntlm-auth-1.5.0 ply-3.11 pybind11-2.6.2 python-constraint-1.4.0 qiskit-0.24.1 qiskit-aer-0.7.6 qiskit-aqua-0.8.2 qiskit-ibmq-provider-0.12.2 qiskit-ignis-0.5.2 qiskit-terra-0.16.4 quandl-3.6.1 requests-ntlm-1.1.0 retworkx-0.8.0 websockets-8.1 yfinance-0.1.59 |
1 2 3 |
[編集内容(qiskit version)] import qiskit qiskit.__version__ |
1 2 |
[出力結果] 0.16.4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[編集内容(qiskit sample)] import numpy as np from qiskit import( QuantumCircuit, execute, Aer) from qiskit.visualization import plot_histogram # Use Aer's qasm_simulator simulator = Aer.get_backend('qasm_simulator') # Create a Quantum Circuit acting on the q register circuit = QuantumCircuit(2, 2) # Add a H gate on qubit 0 circuit.h(0) # Add a CX (CNOT) gate on control qubit 0 and target qubit 1 circuit.cx(0, 1) # Map the quantum measurement to the classical bits circuit.measure([0, 1], [0, 1]) # Execute the circuit on the qasm simulator job = execute(circuit, simulator, shots=1000) # Grab results from the job result = job.result() # Returns counts counts = result.get_counts(circuit) print("\nTotal count for 00 and 11 are:",counts) # Draw the circuit circuit.draw() |
1 2 3 4 5 6 7 8 9 10 11 |
[出力結果] ※実行するごとに, 測定結果が変わってくる. Total count for 00 and 11 are: {'00': 472, '11': 528} ┌───┐ ┌─┐ q_0: ┤ H ├──■──┤M├─── └───┘┌─┴─┐└╥┘┌─┐ q_1: ─────┤ X ├─╫─┤M├ └───┘ ║ └╥┘ c: 2/═══════════╩══╩═ 0 1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[編集内容(qiskit sample)] import numpy as np from qiskit import( QuantumCircuit, execute, Aer) from qiskit.visualization import plot_histogram # Use Aer's qasm_simulator simulator = Aer.get_backend('qasm_simulator') # Create a Quantum Circuit acting on the q register circuit = QuantumCircuit(2, 2) # Add a X or Y or Z gate on qubit 0 # -> コメントアウトを切り替える. circuit.x(0) # circuit.y(0) # circuit.z(0) # Map the quantum measurement to the classical bits circuit.measure([0, 1], [0, 1]) # Execute the circuit on the qasm simulator job = execute(circuit, simulator, shots=1000) # Grab results from the job result = job.result() # Returns counts counts = result.get_counts(circuit) print("\nTotal count for 0 and 1 are:", counts) # Draw the circuit circuit.draw() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
[出力結果] ※実行するごとに, 測定結果は変わらない. [Xゲートの場合] Total count for 0 and 1 are: {'01': 1000} ┌───┐┌─┐ q_0: ┤ X ├┤M├ └┬─┬┘└╥┘ q_1: ─┤M├──╫─ └╥┘ ║ c: 2/══╩═══╩═ 1 0 [Yゲートの場合] Total count for 0 and 1 are: {'01': 1000} ┌───┐┌─┐ q_0: ┤ Y ├┤M├ └┬─┬┘└╥┘ q_1: ─┤M├──╫─ └╥┘ ║ c: 2/══╩═══╩═ 1 0 [Zゲートの場合] Total count for 0 and 1 are: {'00': 1000} ┌───┐┌─┐ q_0: ┤ Z ├┤M├ └┬─┬┘└╥┘ q_1: ─┤M├──╫─ └╥┘ ║ c: 2/══╩═══╩═ 1 0 |
Circuit Basics
- Qiskit の サンプルプログラム
- Qiskit の サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[編集内容(GHZ state)] import numpy as np from qiskit import * %matplotlib inline # Create a Quantum Circuit acting on a quantum register of three qubits circ = QuantumCircuit(3) # Add a H gate on qubit 0, putting this qubit in superposition. circ.h(0) # Add a CX (CNOT) gate on control qubit 0 and target qubit 1, putting # the qubits in a Bell state. circ.cx(0, 1) # Add a CX (CNOT) gate on control qubit 0 and target qubit 2, putting # the qubits in a GHZ state. circ.cx(0, 2) # Visualize Circuit # ImportError: The class MatplotlibDrawer needs pylatexenc. to install, run "pip install pylatexenc". # circ.draw('mpl') circ.draw() |
1 2 3 4 5 6 7 8 |
[出力結果] ┌───┐ q_0: ┤ H ├──■────■── └───┘┌─┴─┐ │ q_1: ─────┤ X ├──┼── └───┘┌─┴─┐ q_2: ──────────┤ X ├ └───┘ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[編集内容(GHZ state)] import numpy as np from qiskit import * %matplotlib inline # Create a Quantum Circuit acting on a quantum register of five qubits circ = QuantumCircuit(5) # Add a H gate on qubit 0, putting this qubit in superposition. circ.h(0) # Add a CX (CNOT) gate on control qubit 0 and target qubit 1, putting # the qubits in a Bell state. circ.cx(0, 1) # Add a CX (CNOT) gate on control qubit 0 and target qubit 2, putting # the qubits in a GHZ state. circ.cx(0, 2) # Add a CX (CNOT) gate on control qubit 0 and target qubit 3, putting # the qubits in a ??? state. circ.cx(0, 3) # Add a CX (CNOT) gate on control qubit 0 and target qubit 4, putting # the qubits in a ??? state. circ.cx(0, 4) # Visualize Circuit circ.draw() |
1 2 3 4 5 6 7 8 9 10 11 12 |
[出力結果] ┌───┐ q_0: ┤ H ├──■────■────■────■── └───┘┌─┴─┐ │ │ │ q_1: ─────┤ X ├──┼────┼────┼── └───┘┌─┴─┐ │ │ q_2: ──────────┤ X ├──┼────┼── └───┘┌─┴─┐ │ q_3: ───────────────┤ X ├──┼── └───┘┌─┴─┐ q_4: ────────────────────┤ X ├ └───┘ |