環境構築から始める無償の量子コンピューティング@その4

GMOアドマーケティング(株)のK.Aです。
過去の記事は下記URLを参照して下さい

■ 環境構築から始める無償の量子コンピューティング

■ 環境構築から始める無償の量子コンピューティング@その2

■ 環境構築から始める無償の量子コンピューティング@その3

前回までの記事で、サンプルを動作させ開発環境の構築が完了したので、今回からQ#を使って基本的なコードを作成します。
お題として「1+1=2」をシミュレーションしてみようと思います。

その事前準備として今回は量子力学的な基礎を必要最低限に絞って解説します。


量子ビット

量子コンピュータの最小単位は量子ビット(Qubit)を使用します。
具体的な表記としては、0 は |0⟩ 、1 は |1⟩ になります。
これが1qubit(キュービット)。|00⟩ であれば2qubit。|⟩ はケットと読みます。
これをQ#のコードで表すなら以下の通りです。

M ゲートにより q1 の状態を「観測」し、変数 current に0または1が代入されます。
ここで重要なのは、q1 は常に変化し続けている為、値の比較や計算を行うには、一度観測して値を確定させてから、変数に格納する必要があるという事です。
let は不変変数を定義する関数。それに対して可変変数があり定義するにはmutableを用います。

量子ゲート

Q#は量子ゲート方式を採用している為、量子回路も理解しておく必要があります。
これは、現在のコンピュータで言うところの論理回路(ブール論理にもとづいた論理ゲートによる論理演算)に相当すると考えていただくと理解しやすいと思います。
下記に今回利用する代表的なゲートを紹介します。

  • Mゲート
    量子ビットを「観測」するゲートになります。
    このゲートを通過させる事である条件下の量子ビットが確定し参照することができるようになります。
  • Xゲート
    論理回路の「NOT」に相当する、量子ビットを反転させるゲートになります。
  • Hゲート(アダマールゲート)
    量子力学の基本的な性質である「重ね合わせ」状態を表現するゲートになります。重ね合わせとは0と1が共存した状態です。
    この性質を利用し0と1が観測される確率を全く等しい量子ビットを生成するゲートになります。
  • CNOTゲート(Controlled NOTゲート)
    論理回路の「XOR」に相当します。

この量子回路を現実の物理現象で計算装置として使えるよう実装するには非常に高い技術が必要であり、量産なんてまだまだ先の話。なので、量子ゲートを現在のコンピュータでシミュレートすることでいち早く体験できるようにしたのがQ#になります。
あくまでシミュレータですから、現在のコンピュータを超越した計算能力はなく、実用にならないのは言うまでもありませんが、それでも最先端の量子論を実証したり、アイデアがあるなら新たな量子ゲートを開発することが可能になる環境がすぐに無料で整えられるのは凄いと思います。

次回は、実際にコードを記述して実行し1+1が確定するところまでを記載する予定です。気長にお待ち下さい。