量子コンピュータ関連書籍を読んで(その3、その4)
3.量子コンピューター・シミュレーター
なんだか、たくさんの本を読んだみたいなタイトルだが、実は、読了したと言えるのは、
「先読み!IT×ビジネス講座 量子コンピューター(湊雄一郎、酒井麻里子、ISBN978-4-295-01737-0)」
一冊だけである。他には、読みかけの本が何冊かあるが、それ等については、またの機会に。
この本には、量子コンピューター・シミュレーターが紹介されている。
そのURLは、
http://qplat-education.devel-q.com/
である。このリンクを開くと、下図のような量子コンピューター・シミュレーター画面が表示される。この画面の表示は、ブラウザ等によって微妙に異なるが、内容としては同じである。
画面は、3つの領域に分かれている。
- 左は、「ゲート」の一覧である。
- 中央は、「キュービット」に「ゲート」を配置した図である。
- 右は、「計算」結果などを表示する。
「キュービット」(「量子ビット」とも呼ばれる)は、左端に各キュービットの初期値である|0〉を持つ水平の線で表示される。
キュービット上では、時間は左から右へ進む。
量子コンピュータでも、繰り返し処理は可能であるが、これはシミュレータなので、時間は一方にしか進まない。
値|0〉は、古典コンピュータにおける0(false、yes/noのno、偽)に当たる。
1(true、yes/noのyes、真)に当たるのは、|1〉である。
単に0、1と書かないのは、これらが「ベクトル量」とでも言うべきものだからである。
「ゲート」を、ドラッグ&ドロップにより中央部に配置し、中央部右上の「EXECUTION」をクリックすると、「計算」が行われ、その結果が右部に表示される。
だだし、ゲート種別名に「two」あるいは「three」と付いているものは、複数の「キュービット」にまたがって配置しなければいけないので、後述する調整操作が必要になることがある。
「ゲート」は、古典コンピュータにおける「ゲート」との機能的な類似性からそう呼ばれる。
しかし、古典コンピュータとは違って、「ゲート」は、いわば「『量子』の照射のしかた」である。
「量子」を照射することによって、そろばん珠を指で弾いたのと同様に、キュービットが「値」を変える。
「ゲート」一覧の一番下にある、measurement「M」ゲートは重要である。これは、「計算」をするゲートではなく、計算結果を「観測」する。だから、各「キュービット」の一番右に、一つずつ置かれることになる。
この本に説明のある、他のゲートについて説明しておく。
pauli gate「X」。これは、キュービットの値を反転させる(コインをひっくり返す)。
one qubit gate「H」。「コインを回す」と表現されている。
表が出るか裏が出るか、「観測」されるまで分からないということ。
two qubit gate「CX」。2つのキュービットの値により、計算結果が決まる。
配置すると、黒丸と四角に「X」が縦線で結んだ表示となる。
1つ目のキュービット(control bit)の値は不変。
2つ目(target bit)は1つ目が偽のときはそのまま、1つ目が真のときは反転。
つまり、2つ目は両者の排他的論理和となる。
tree qubit gate「CCX」。3つのキュービットの値により、計算結果が決まる。
配置すると、黒丸2つと四角に「X」が縦線で結んだ表示となる。
1つ目、2つ目のキュービット(control bit)の値は不変。
3つ目(target bit)は、1つ目、2つ目がともに真のときにのみ反転する。
ここで、「CX」や「CCX」のような、複数のキュービットにまたがるゲートのキュービットの指定方法について述べておく。
「画面右の[Result]を[Detail]に切り替えたうえでブロックをダブルクリックすると云々」とある。
例えば「CX」と「CCX」をドラッグ&ドロップにより配置し、[Detail]をクリック。下図のようになる。
「CCX」をダブルクリックすると、下図のようになる。
このとき表示される数値は、黒丸2つと四角に「X」の位置であるが、先頭のキュービットの番号は0、つまり「ゼロオリジン」となっている。
しかし、パソコンに内蔵のポインティングデバイス(タッチパッド)でダブルクリックしたら、見事に表示された。
この発見に至るまで、数か月にわたり、この本の著者、コンピュータ・ユニオンのソフトウェア・セクションの特に技術部の方々にご迷惑をおかけしたことをお詫び申し上げます。
[Detail]に表示された、[control bit1]、[control bit2]、[target bit]の数値を書き換える。
すると、対応する黒丸2つと四角に「X」が、指定されたキュービット上に移動する。
これで、当該の「CCX」は、配置したいところに配置された。
中央部左上の「Qubits:5」とあるのは、使用する「キュービット」の個数。この数値を変更すると、表示される「キュービット」の個数が変わる。
その隣の「Shots:1000」は、計算回数。古典計算機上では、同じ計算を多数回行うことで、確率が求められるので。
中央部右にあるポリバケツは、配置されているゲートをすべて捨てる。「ご破算で願いましては」ということ。
ポリバケツの下に並んでいるのは、中央部の表示倍率の調整用。
シミュレータの操作法が分かった(と思えた)ので、やってみる。
上2ビットの足し算で、3ビット目が10の位、4ビット目が1の位。下図が、その結果。
最下行に、[ [ “0101”, 264 ], [ “1001”, 254 ], [ “1110”, 248 ], [ “0000”, 234 ] ]とあるが、
これは、
計算結果="0101"となったのが、264件
計算結果="1001"となったのが、254件
計算結果="1110"となったのが、248件
計算結果="0000"となったのが、234件
という意味である。計算結果は「観測」されたものなので、ベクトル量ではなく、スカラー量である。
ちゃんと計算できているもののみであることが確認できる。
4.量子コンピューターはピアノ?
筆者は、以前、「量子コンピュータはそろばん」と書いた(量子コンピュータ関連書籍を読んで(その1、その2))。
しかし、この本には、「ピアノの鍵盤のようなものが並んでいて、それを演奏するようなイメージ」とある。
ピアノとそろばんとでは、かなり違う。
どちらが正しいのか、あるいはどちらも正しいのか。
そろばんは、指で弾くことによって、珠を動かして計算する。
ピアノは、指で弾くことによって音を出し、人間の魂に働きかける。
やはり、ピアノとそろばんとでは、一見、違うように見えて、よく似ている。
だから、きっと、どちらも正しい。
一覧表示 ▶︎ スタッフの日記