量子コンピュータ

量子コンピュータで1+1を計算する

はじめに

IBM Q の公開で無料で量子コンピュータをいじって遊べる素敵な時代がやってきました。私は 1+1 の計算をやってみたのですが、なかなか面白かったので投稿してみることにしました。実用性はありませんが、量子コンピュータの学習には適当かと思います。

ログイン

IBM Q を開き、ユーザ登録をします。
ログインしたら Composer をクリック、Custom Topology を選択します。

New1.png

Topology は Quantum 及び Classical の Registers を 4 に減らし、Set Topology を押して次に進みます。

New2.png

0+0=0 の回路の作成

下図の回路をマウスで作成します。Gates からゲートを選択し、線の上でクリックすると置けます。
Gates の Advanced チェックボックスをチェックしてください。ccXが使えるようになります。

00.png

それぞれの意味は以下の通りです。
・一番左の |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 をクリック!結果が表示されます。

00_result.png

0000 は 0+0=00 と読んでください。
0+0=0 (100%) という結果を得ました。

1+0,0+1,1+1 の計算

まずは 1+0 の計算をするために、q[0] に X を追加します。

10.png

Simulate を押すと、
1001、1+0=1 (100%) という結果を得ました。

10_result.png

続いて、0+1 を計算します。

01.png

01_result.png

0101、0+1=1 (100%)
を得ました。

さらに 1+1

11.png

11_result.png

1110、1+1=2 (100%)  (二進数なので 10->2)
を得ました。

0+0,1+0,0+1,1+1 をいっぺんに計算する

さて、やっと量子コンピュータらしい面白い計算に到達しました。
入力を H にします。0と1の重ね合せ状態になります。

HH.png

ここで Simulate を押すと、
0+0=0 (25%), 0+1=1 (25%), 1+0=1 (25%), 1+1=2 (25%)
という結果を得ます!

HH_result.png

25% にならない場合は実行回数を増やしてください。Simulate のオプションで 8000 回くらいまで増やせば、25% に近づきます。

結果

習うより慣れよで量子コンピュータに触りました。
で、何がすごいの?
と思った方は量子の深遠なりきにお進みください。
なお、ここで計算したのは理想状態のシミュレーションです。実機で試す場合には回路の物理的な制約のため、もうちょっと込み入った配置が必要になります。

参考文献

BLUE BACKS 量子コンピュータ