要旨:量子コンピューティングでは、量子ビットを測定してしまうとそこでお終いになる。つまり、その測定結果に応じて量子回路を変更することはできない、と思っていたが、最近それができるようになっていた。QiskitでIBM Quantumマシンを使う場合のDynamic Circuits機能がそれだ。
●動的回路(Dynamic Circuits)機能
量子回路を実行していて、あるところで測定を実行したとする。その結果(古典ビット0か1)に応じて、その後に必要な量子ゲートを動的に加えて実行を継続することができる機能[1][2][3]である。具体的には、図1(a)のようなif文による制御、(b)のようなswitch(case)文による制御、それ以外に、forループやwhileループも使える。ただし、使用するシミュレータ、および実機マシンによっては、これらのいくつかはサポートされていないようだ。
●動的回路で量子テレポーテーションを実行
参考資料[3]に示されているように、このような動的回路で思いつくのが、量子テレポーテーションである。量子テレポーテーションの仕組みについては、[4]の記事を参照願いたい。図2に示す、Aliceによる2つの量子q0とq1の測定後、Bobにその古典2ビット情報を通常通信で送るのだが、そこでその量子回路はおしまいになっていた。その後別途、Bobは受信内容を確認し、それに応じたデコード用の量子回路を設定していた。
●量子テレポーテーションの実機による確認
さて、図3の量子回路がうまく働くかを、IBM Quantum実機(ibm_kyoto)で確認した結果が図4である。結論を言うと、この図から、この実機では80%の確率で量子テレポーテーションが成功した。全部で1000shotの実行のうち、図4の赤点線で囲ったカウント(合計200)は、何らかのノイズによるエラーであろう。本来はこの部分は全て0となるはずである。
なお、IBM Quantum Composer(ただし、シミュレータによる実行)でも以下ように同様にできる。だが、古典ビットレジスタCの検査が、図3の場合と異なり、ビット毎ではなく、3ビットの10進数として扱うので、注意が必要である。if文による動的ゲートの設定が4つになっている。
(補足事項1)Quantum Labに置くfile容量に注意突然、QuantumのLabサーバ起動しなくなった。ブラウザのキャッシュやクッキーを削除したりしてみたが直らない。Qiskiには、ipynbファイル内で、ブロッホ球やその上のtransition表示や、Latex形式回路図表示などができる。しかし、これらはかなりのファイル容量を占める。一つの回路で35MBにもなっていた。それが数十個もあった。そこが原因だったらしい。これらの表示をコメントアウトしてsaveして、再起動したところ回復したようだ。
(補足事項2)実機使用可能無料枠
実機での実行を繰り返してきたので、使用状況を見てみた。今月は、無料枠ではあと3分強しか使えない。有効に活用しよう。
参考文献
[1] Classical feedforward and control flow
https://docs.quantum.ibm.com/build/classical-feedforward-and-control-flow
[2] Repeat until success
https://learning.quantum.ibm.com/tutorial/repeat-until-success
[3] @kifumi、動的回路で量子テレポーテーションを実行する
Qiita記事、最終更新日 2023年03月20日
[4] 超高密度符号化と量子テレポーテーション(その3)
https://sparse-dense.blogspot.com/2022/12/blog-post_2.html
0 件のコメント:
コメントを投稿