ラベル 量子重ね合わせ の投稿を表示しています。 すべての投稿を表示
ラベル 量子重ね合わせ の投稿を表示しています。 すべての投稿を表示

2023年5月16日火曜日

光子が偏光板を通過する確率のグラフ表示

[要旨] 偏光板の重ね合わせで起こる不思議な現象を再現するスマホアプリを前回作成しました。そこでの要点は、量子重ね合わせの原理に基づき、光子が偏光板を通過する確率を計算することでした。今回は、単にそのビジュアライゼーションに過ぎませんが、2D、3Dグラフ表示で通過確率の様子を楽しみます。

■光子が偏光板を通過する確率のグラフ表示
 偏光角度θの光子が軸角度αの偏光板に到達した場合、光子がそこを通過する確率pは、量子計算の基礎事項にも基づき以下のように計算できます。

p = (cosθcosα + sinθsinα)の平方

 この確率pを3Dグラフ表示したのが図1です。ちょっとたいそうなグラフになってしまいました。角度θとαが等しい場合だけ確率p = 1.0(最大値)となり、両者が直交する場合はp = 0.0(底面の最小値)となることが確認できます。また、全体としては、対角線に直交して進むsin波のようになっています。

 さらにもう少し分かりやすくするため、光子の偏光θの軸でスライスして、2Dグラフ表示したものが図2です。

 
 ついでに、Mac Grapherによる、方程式からのグラフ描画も載せておきます。

2022年11月4日金曜日

量子鍵配送プロトコルBB84をスマホアプリで確認

abstract: 理論上(計算上)は明確になっている事項でも、実際に一歩づつトレースして理解することは意味があると考えました。AliceからBobへ、長い古典ビット列を送信することを想定します。問題は、それをEveに盗聴される可能性です。しかし、量子コンピューティングの世界では、Eveが盗聴すれば必ず露呈するという、量子鍵配送プロトコルBB84があります。そのエッセンスを、自作したスマホアプリを使って説明を試みました。

【改訂】2023-05-28、後半に「実際にBB84を構成するには」を追加し補足した。

Check the quantum key distribution protocol BB84 with a smartphone app
Even if the conclusion is known in theory, it is useful to deepen understanding by actually proceeding step by step. Now imagine sending a long string of classical bits from Alice to Bob. The problem is that it can be eavesdropped on by Eve. However, in the world of quantum computing, there is a quantum key distribution protocol (BB84) that if Eve eavesdrops, it will always be revealed. This time, I will explain the essence using a self-made smartphone app.

●量子鍵配送プロトコルBB84の概要
 このプロトコルは1984年に発表されたもので、量子ビットの重ね合わせ(Quantum Superposition)を利用している。ここでは、単一量子ビットをひとつづゝ連続して送信するので、量子もつれ(Quantum Entanglement)は無い。(量子もつれ状態の量子ビット対の送信用には、Ekertプロトコルがあるが、それは別記事とする。)

 図1は、BB84の原理を確認するためのアプリである。量子シミュレータではない。Aliceは、例えば古典ビット2048個(これを暗号鍵にするつもり)の4倍の8192個を用意するが、これをそのままBobへ送信はしない。代わりに、2種類の2次元正規直交基底(以後、単に基底と呼ぶ)HかVを各ビット毎にランダムに選択して、ビット値に対応する、基底のケットベクトル(縦ベクトル)を送信する。古典ビット0と1は、それぞれ、基底の1番目と2番目のケットベクトルに対応させている。つまり、量子ビット(の状態ベクトル)を送信するのである。具体例は後で示す。
 Bobは、受信した量子ビット毎に、ランダムに(Aliceとは無関係に)同様にHかVを選択して、それによって量子ビットを「測定」する。その結果として、全部の受信が完了後には、Aliceと同じ長さの古典ビット列(8192個で構成)を得る。AliceとBobの持つこの古典ビット列の合致度によって、盗聴の有無を判定できるのである。

  Eveが盗聴する場合、受信量子ビットをそのままBobへ転送して自分はそのコピーを盗聴する、ということは量子原理から不可能である。盗聴するには、受信した量子ビットを必ず「測定」し、その結果としての量子ビットをBobへ転送するしかない。測定前の量子ビットは、(日常思考からは不思議なことだが)量子基本原理として、0に対応するか1に対応するかは決まらない。また、測定するには、どの基底を用いるかを決める必要がある。基底の選択によって0か1かに決まる確率は変化するが、Eveにとっては、ランダムに基底を選択する以外に方策がない。

●正規直交基底と量子ビットの重ね合わせと測定
 上で述べた基底とその測定について、具体例で説明する。ここで選択できる基底VとHは以下のようなものである。
 一般に量子ビットは、基底(|u>, |v>)を用いる場合、以下のような状態にある。これは量子重ね合わせ状態(Quantum Superposition)と呼ばれる。そして測定を行うと|u>か|v>のどちらかに確定する。つまり、0か1かになる。その確率は、それぞれの係数の2乗で決まる。
 ある量子ビットに対して同一基底を適用するのならば、何度測定しても必ず同一の結果になる。しかし、異なる基底で計測した場合は、0と1のどちらに倒れるかの確率は、基底のケットベクトルの係数(振幅確率)の平方となる。振幅確率の求め方は、参考文献[1]にあるので、それを使って、基底H, Vの場合を計算すると以下のようになる。
 このことから、HとVを使う限り、元の計測と今回の計測で異なる基底が使われる場合は、ちょうど確率0.5(= (±1/√2)の平方)で元の計測結果と同一となることが分かる。そこがポイントである。

●盗聴があったとすれば何が変化するのか
 以上の準備をした上で、盗聴の有無で何が異なるのかを図2で見てみよう。すでに述べた通り、Eveが盗聴するとすれば、Eveは盗聴した量子ビット毎に、ランダムに基底HかVをに選択し、測定しなければならない。その結果として②に示された量子ビット列をBobへ送る。すなわち、Bobは本来の①の量子ビットとは異なる②を受信することになる。
 それにより、Bobの測定結果は本来のものと異なるであろう。Bobの測定結果として得られる古典ビット列は、Aliceが元々設定した古典ビット列と比較される。盗聴されていない場合は、上に述べた手順から、AliceとBobがそれぞれ選択した基底(H, V)は0.5の確率で一致するので、古典ビット列の少なくとも1/2が一致する。さらに、すでに述べた通り、異なる基底で測定したケースでは(量子ビットの重ね合わせにより)、確率0.5で両者の古典ビットが合致する。結局、(1/2)+(1/2)*(1/2) = 3/4 = 0.75の確率で両者の古典ビットは合致する。
 一方、盗聴があった場合は、Eveによる基底選択が加わるので、AliceとBobの基底の一致確率は(1/2)*(1/2)に低下する。そして、基底が一致しない場合のAliceとBobの古典ビットの一致確率は3/8となる。結局、確率(1/4)+(3/8)=5/8 = 0.625でAliceとBobの古典ビットが一致する。従って、最終的にAliceとBobの古典ビットの一致確率が0.75であれば盗聴は無く、0.625であれば盗聴されたと結論付けられる。

●実際にBB84を構成するには
 これで理論は説明された。上の説明から、AliceとBobの選択した基底が一致する回数は2nとなる。その合致した基底でBobが測定した結果のビット列は、Aliceが持っているビット列と一致する。従って、盗聴がないと仮定すれば、Aliceはその2n長のビット列をBobに送らずに、両者がキーとしてそのビット列を共有できる。
 だが、実際には、Aliceは基底の量子状態ベクトルをBobに送信しているのでその盗聴の有無を確認しなければならない。そこで、両者はこの2n長のビット列の半分のn長のビット列を「暗号化しない通常通信」で送り合って、その一致度を確認する。もしも完全に一致すれば盗聴はないと言える。一方、その1/4が一致しなければ盗聴があったと言える。(そこでは、盗聴するにはその量子ビット(量子状態ベクトル)を測定する必要があり、そうすれば、Bobに送られるべき量子の状態は変化することを巧みに利用している。)
 盗聴がないと分かった場合には、合致した2n長のビット列の残りの半分であるn長のビット列をキーとして安全に使える。(実際には2n長が合致しているのだが、上記通常通信により、そのうちの半分は他人に知られている可能性があるためである。)

●AliceとBobの持つ情報の一致度をスマホで計算
 ここでようやく前述のスマホアプリが登場する。今回は、両者の選択基底が異なる場合の振幅確率の平方はいずれの場合も0.5であった。このため、重ね合わせ状態にある量子ビットの測定結果は単にコイントス乱数で決めることができる。ただし、本当は、その乱数が「真の乱数」であることが求められる。スマホの数学ライブラリの乱数でも、非常に多く発生させれば問題は生じないだろう。図3には、Aliceが8192個の古典ビットを乱数で一つづゝ発生させた場合の結果を示している。
 盗聴なしとありの場合の両方とも、AliceとBobの最終的な古典ビットの一致度は、上に述べた数値とほぼ同一(小数点以下3桁まで一致)となった。このことから、BB84の理論通りの結果が得られたと言える。

参考文献
[1] Chris Bernhardt: Quantum Computing for Everyone, The MIT Press, 2020.

2022年8月28日日曜日

初級量子コンピューティングの旅の目的地Grover

【要旨】初級量子コンピューティングの旅を2ヶ月ほど続けてきたが、ようやくその目的地Grover(グローバーアルゴリズム)に達した。旅の魅力は尽きないが、次の出発に向けて、ここでひと息とする。グローバー探索アルゴリズムは、ショアの因数分解アルゴリズムと並んで、量子の性質を巧みに利用した傑作である。量子の概念と量子ビット/ゲート/回路の基礎を学んだ後に、このアルゴリズムをIBM Quautum実機で確かめることができた。(→ 一連の旅の日記はこの記事の末尾を参照されたい。)

■今回の記事で何をしたいのか
 グローバー探索アルゴリズムを簡単な例で実装するのだが、まず、その狙いを説明する。図1にあるように、整列されていない電話番号簿(小学校名-電話番号)がある。例えば、電話番号241-7312の小学校名を知りたい場合、普通は順番に一件一件、名簿を調べていくだろう。しかし、グローバーは、これと全く異なり、名簿の全ての項目を重ね合わせた状態にして、一度に問い合わせることができる。ただし、精度を上げるために、項目数をNとした場合、√N回の問い合わせを行う。従来の探索では平均N/2回の問い合わせが必要なので、Nが巨大になれば、グローバーの優位性は顕著になるだろう。
 本記事では、グローバーアルゴリズムを量子コンピュータ実機で動かして観察する都合上、扱う電話番号簿は図1右下のように、僅か4項目に縮小して、電話番号 "11" の小学校名を探すという、簡単な例題とした。

■グローバー探索アルゴリズムの概要
 ロブ・グローバーによって1996年に発表された探索アルゴリズは、「振幅増幅法」という量子特有の性質を利用したものである。図2にあるように、ステップ(1)として、N個(今回N=4)のデータに対応した量子状態ベクトルを用意し、全状態ベクトルの確率振幅が等しい重ね合わせ状態を作ることから始める。
 次に、ステップ(2)として、探索したい項目番号(今回は"11")の状態ベクトルの確率振幅を位相反転させる。(マイナスの振幅となる。)これは、探したいものにマーキングすることになる。ここで誤解しやすいのだが、「マーキングしたらもう解は分かっているのじゃないのか」と言うかも知れないが、それは違う。解はこの時点で分かっていない。問い合わせたある小学校の電話番号が、マーキングされたものと一致するかを判定するために使うのだ。
 続いてステップ(3)はまさに、振幅増幅である。ステップ(2)でターゲットにマーキングはしたが、振幅の位相が反転しただけであり、依然として全状態ベクトルの確率振幅の大きさは揃っていて見分けがつかない。そこで、全確率振幅の平均値周りに、全確率振幅を反転させる。すると、ターゲットの確率振幅だけが大きくなる。すなわち、それが解に対応する。ただし、他の状態ベクトルの確率振幅もまだ相当大きいかも知れないので、ステップ(2)とステップ(3)を何度か繰り返すことによって、ターゲットの確率振幅の大きさを際立せるのである。

■グローバー探索アルゴリズムを実現する量子回路
 このアルゴリズムを実現する量子回路は種々考えられるが、図3はその一例である。それは、アダマールゲート(H)、パウリXゲート(丸の中に+)、CNOT(制御付きNOT)で構成されている。それらのゲートの働きは学んで来たので、この回路の動作を把握することはそれほど難しくない。また、IBM QuantumのComoserでこの回路を作る場合、Investigatorにより、各ゲートを通過した後の状態ベクトルの確率振幅と位相の状況がシミュレーションで表示されるので、理解の助けとなる。

■IBM Quantum実機による実行結果
 この量子回路をIBM Quantum実機(5量子ビット構成のmanila機)での実行結果は図4のとおりである。図2でのシミュレーションでは、"11"だけが観測されたが、現状の実機では、種々のノイズによる誤差がどうしても含まれるため、他の"01"、"10"なども若干出現しているが、"11"はダントツに出現頻度が高いので問題ではない。
 さて、念の為、この結果を見方を述べておく。この例では、"11"、すなわち、0番から初めて3番目(電話番号簿では上から4番目)の「香川小学校」が正解であるということである。
 そして、繰り返しになるが、この例では、4件の候補の小学校のうちの正解校をただ1回の問い合わせだけで得ることができたのである。
 今回の記事では、以下の参考資料[1][2][3][4]を参考にさせていただいた。特に、武田俊太郎著[2]から学んだ「量子の波の性質を使って複数のパタンを並列に計算し、波と波をうまく干渉させて正しいパターンだけに絞り込んでいく」という、量子コンピュータだからこそできる芸当を見ることができた。

■これまでの初級量子コンピュータの旅の日記
 量子アニーリング以外の量子コンピューテング(ゲート型)を学んできた際に記した日記(ブログ記事)を以下に列挙しておきたい。

(11) 初級量子コンピュータの旅の目的地Grover(この記事)


参考資料
[1] 中山茂:量子アプリQni - 量子プログラミング初歩、Gaia教育シリーズ52、2022-8-8初版
[2] 武田俊太郎:量子コンピュータが本当に分かる!、技術評論社、2020-3-3初版
[3] 宇津木健:絵で見てわかる量子コンピュータの仕組み、翔泳社、2019-7-10初版
[4] 沼田祈史(IBM):量子コンピューター入門ハンズオン
https://www.youtube.com/watch?v=_b_yEgZh3BE

【付録】
その後、3量子ビット回路でも、グローバーアルゴリズムを実行できたので、記録しておく。


2022年8月26日金曜日

量子もつれをIBM Quantum実機で体験

 前報のアダマールゲートの模型まで行ったところで、今回は、そのような量子ゲートを使った簡単な量子回路を試してみる。ここに出現するのは「量子のもつれ」である。これは、複数量子ビットのうちのあるビットを量子ゲートで操作した時に、別の量子ビットの状態に瞬時に影響を与える現象のようだ。これを利用して、演算結果として得たい状態を作り出す(結果を絞り込む)量子回路を作ることができる。これは重要な機能となるだろう。

■2量子ビット回路による結果の絞り込み
  まず、図1(a)の量子回路だが、これは2つの量子ビットを共に確定値 |0>に初期化し、それらにアダマールゲートとCNOTゲートを適用している。これらのゲートの機能から、最初のビットを観測すると|0> と|1>がそれぞれ50%の確率で得られる。それが |0>ならば、2番目のビットは何も影響を受けないが、|1>ならば、2番目のビットは反転して |1>となる。すなわち、この回路の実行結果としては、"00"と"11"がそれぞれ確率50%で得られる。これを、量子シミュレータQniでやってみると、図1(b)(c)のように、確かにそうなるようだ。

■3量子ビット回路による結果の絞り込み
 次に、図2(a)は、3量子ビットで量子もつれを引き起こす回路である。今度は、アダマールゲートとCNOTゲートに加えて、パウリXゲートも使われている。この回路の実行結果を予測する手計算も可能ではある。というのも、前回の記事で実施したアダマールゲートの2回適用と同様の計算をすれば良いからである。しかしながら、かなり入り込んだ計算となるので、ちょっとやめておく。

 そこで、図1の場合と同じく、量子シミュレータQniでやってみた。図2 (b) (c)のように、この量子回路の実行結果として、"000"と"111"がそれぞれ50%の確率で得られるようだ。すなわち、量子重ね合わせ状態 (|000> + |111>) / √2 が得られる。ただ、本当にその確率になることを知るには、何度もこの回路を実行して観測する必要がある。

■IBM Quantum実機による3量子ビット回路の実行
 この3量子ビット回路の量子もつれによる、上記のような"000"と"111"への絞り込みを実際に確認するため、IBM Quantum実機(5量子ビットのmanilaというマシン)を使ってみた。回路の作成は、図2と同じようなインタフェースで行える。実際、それは図3のようになり、量子シミュレータQniとあまり差はないようだ。
 そして、その実行結果が図4である。ここで注意すべきは、黒枠内の"computational basis states"のグラフである。これは回路を構成(compose)した後に得られたものだ。回路の実行前である。従って、これは事前予測なのだろう。これから試行する1024回のうち、確かに、"000"と"111"がそれぞれ確率50%で得られることを示している。

一方、外側の赤枠の結果が、このIBM機での実際の実行結果である。確かに、"000"と"111"がそれぞれ確率50%近い出現状況となっているが、少し歪んでいる。また、"110"や"101"などの他のビット組み合わせも僅かながら観測された。これは現実の量子コンピュータには種々のノイズが生ずることを示唆しているのかも知れない。
 これは、5量子ビットのmanila機の場合だが、別の7量子ビットのoslo機でも状況は同じようだ。下図も参照願いたい。
 しかしながら、量子コンピュータは、従来のコンピュータとは全く異なり、このように確率の概念の上に組み立てられているのだろう。その特性を把握して、利用価値を見出して行くものなのだろう。
 量子コンピュータは、量子状態の重ね合わせと波の干渉の両方をうまく活かすことができて初めてその真価を発揮すると言われる。上記のように量子ゲートを用いて量子回路を作るという現状は、従来コンピュータで言えば、まだアセンプラかそれ以下の低水準の操作に留まる。しかし、ここまでくると、「波の干渉」を直接考慮する場面は多分少ないので、情報系技術者にとって良いことであろう。