#はじめに
IBM Q の公開で無料で量子コンピュータをいじって遊べる素敵な時代がやってきました。私は 1+1 の計算をやってみたのですが、なかなか面白かったので投稿してみることにしました。実用性はありませんが、量子コンピュータの学習には適当かと思います。
#ログイン
IBM Q を開き、ユーザ登録をします。
ログインしたら Composer をクリック、Custom Topology を選択します。
Topology は Quantum 及び Classical の Registers を 4 に減らし、Set Topology を押して次に進みます。
#0+0=0 の回路の作成
下図の回路をマウスで作成します。Gates からゲートを選択し、線の上でクリックすると置けます。
Gates の Advanced チェックボックスをチェックしてください。ccXが使えるようになります。
それぞれの意味は以下の通りです。
・一番左の |0> は、量子ビットが 0 で初期化されることを意味しています。
・q[0], q[1] は入力です。今は何もしていないので、0+0 を計算することになります。
・q[2]は計算結果の2桁め、繰り上がりです。ccX でつなぎます。これは AND にあたります。
・q[3]は計算結果の一桁めです。q[0],q[1]とつないでいますが、この部分は XOR になります。
・計算回路は古典回路の Half Adder と同じです。
・右のピンクの部分が結果を観測します。見やすさのために順番を逆にしていることに注意してください。q[0]->c[3], ... , q[3]->c[0] にマッピングします。
ここまでできたら Simulate をクリック!結果が表示されます。
0000 は 0+0=00 と読んでください。
0+0=0 (100%) という結果を得ました。
#1+0,0+1,1+1 の計算
まずは 1+0 の計算をするために、q[0] に X を追加します。
Simulate を押すと、
1001、1+0=1 (100%) という結果を得ました。
続いて、0+1 を計算します。
0101、0+1=1 (100%)
を得ました。
さらに 1+1
1110、1+1=2 (100%) (二進数なので 10->2)
を得ました。
#0+0,1+0,0+1,1+1 をいっぺんに計算する
さて、やっと量子コンピュータらしい面白い計算に到達しました。
入力を H にします。0と1の重ね合せ状態になります。
ここで Simulate を押すと、
0+0=0 (25%), 0+1=1 (25%), 1+0=1 (25%), 1+1=2 (25%)
という結果を得ます!
25% にならない場合は実行回数を増やしてください。Simulate のオプションで 8000 回くらいまで増やせば、25% に近づきます。
#結果
習うより慣れよで量子コンピュータに触りました。
で、何がすごいの?
と思った方は量子の深遠なりきにお進みください。
なお、ここで計算したのは理想状態のシミュレーションです。実機で試す場合には回路の物理的な制約のため、もうちょっと込み入った配置が必要になります。
#参考文献
BLUE BACKS 量子コンピュータ