安定するqBarid環境(Python3+Qiskit1.3+JupyterNotebook)とIBM Composer環境が入手出来たら、次はいよいよ量子コンピューターを動かしてみよう。
IBM ComposerはOpenQASM2.0というコードで記載することができる。ただ、そのお作法を量子コンピューターに触れるためだけに学ぶのはちょっとハードルが高い。そこで、Shorのアルゴリズム(素因数分解)とGroverのアルゴリズム(データ検索)をPythonからOpenQASM2.0に変換したコードがあるのでここに公開する。
Shorのアルゴリズム(素因数分解)OpenQASM2.0サンプル
OPENQASM 2.0;
include "qelib1.inc";
qreg q[4];
creg c[4];
h q[0];
h q[1];
h q[2];
h q[3];
cx q[0],q[1];
cx q[1],q[2];
cx q[2],q[3];
h q[0];
rz(pi/4) q[1];
rz(pi/4) q[0];
cx q[1],q[0];
rz(-pi/4) q[0];
cx q[0],q[1];
cx q[1],q[0];
rz(pi/8) q[2];
rz(pi/8) q[0];
cx q[2],q[0];
rz(-pi/8) q[0];
cx q[0],q[2];
cx q[2],q[0];
rz(pi/16) q[3];
rz(pi/16) q[0];
cx q[3],q[0];
rz(-pi/16) q[0];
cx q[0],q[3];
cx q[3],q[0];
h q[1];
rz(pi/4) q[2];
rz(pi/4) q[1];
cx q[2],q[1];
rz(-pi/4) q[1];
cx q[1],q[2];
cx q[2],q[1];
rz(pi/8) q[3];
rz(pi/8) q[1];
cx q[3],q[1];
rz(-pi/8) q[1];
cx q[1],q[3];
cx q[3],q[1];
h q[2];
rz(pi/4) q[3];
rz(pi/4) q[2];
cx q[3],q[2];
rz(-pi/4) q[2];
cx q[2],q[3];
cx q[3],q[2];
h q[3];
measure q[0] -> c[0];
measure q[1] -> c[1];
measure q[2] -> c[2];
measure q[3] -> c[3];
Groverのアルゴリズム(データ検索)OpenQASM2.0サンプル
// Name of Experiment: Grover N=2 A=11 v1
OPENQASM 2.0;
include "qelib1.inc";
qreg q[5];
creg c[5];
h q[1];
h q[2];
h q[2];
cx q[1],q[2];
h q[2];
h q[1];
h q[2];
x q[1];
x q[2];
h q[2];
cx q[1],q[2];
h q[2];
x q[1];
x q[2];
h q[1];
h q[2];
measure q[1] -> c[1];
measure q[2] -> c[2];
これでIBM Composerを使って、ShorのアルゴリズムをIBM Quantumで実行した場合の観測結果が得られる。
ただこれは観測結果を受け取るだけで、観測結果を評価、利用は出来ない。
観測結果を評価、利用するにはPythonで実装する必要があります。