LoginSignup
205

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-07-01

はじめに

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 量子コンピュータ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
205