量子テレポーテーションを実際にやってみた話
IBMの量子コンピュータで遊んでみて量子テレポーテーションを実装してみました. 今回はその量子テレポーテーションについてとどのように実装したか,そして実際の動作結果についてまとめてみました.
量子テレポーテーションとは
量子テレポーテーションとは古典の情報の送信と量子もつれの効果を用いて量子状態を離れた場所へ転送させる現象のことです. 実際に量子がテレポートしているわけではありませんが,離れた場所へ量子状態をまるでテレポートしたかのように移すことができるのでこの名前がついています.
どのような原理でこの現象が起きているのでしょうか.
Wikipediaのページではありますが結構しっかりと書いてあるのでわからなかったらWikipediaを参照してください.
量子テレポーテーションを行う際にはベル測定という特殊な測定を行う必要があります. 通常の測定は1つのqubitに対して,の基底への射影測定となっています. ベル測定は2つのqubitに対して,の基底への射影測定となります. 量子テレポーテーションでは用意した量子状態をこのベル測定を用いて測定します.
実際に量子テレポーテーションに利用する量子状態を用意します. まず,テレポーテーションさせたいqubitをとします.これ以外に,もつれさせた2qubit,を用意します.準備するのはこの3qubitです.
量子テレポーテーションの手順について説明します.qubitを送る方をAlice,受け取る方をBobとします.送る方なので当然最初はAliceが持っています.残ったもつれている2qubitをAliceとBobで1qubitずつ保持します.初期の3qubitの状態はとなります. ここで2qubitの状態に関してベル基底と通常の基底の関係を考えると,
の関係が成り立ちます.これを3qubitのうち,Aliceの持つ2qubitをベル基底に置き換えると次のようになります.
そうすると,Aliceの持つ2qubitをベル測定することで,ベル測定の結果とBobの持つ残りの1qubitの状態が次のような対応関係になります.
よってBobはアリスの測定結果に応じて,の時は何もせず,の時はZゲート,の時はXゲート,の時はXゲートの後にZゲートを適用させることで自分の持っているqubitをの状態にすることができ,あたかもAliceの持っていたqubitがBobの元へテレポーテーションしたかのような状態になります.
実装
実際にこのテレポーテーションをIBMの量子コンピュータで行ってみます.ただし,現時点では測定の結果に応じて適用させるゲートを変えるという操作は出来ないので,全ての場合で実験をし,最終的に確率を計算するという方法をとります.
ベル測定の実装
最初からベル測定があったら楽だったんですが無いので自分で実装します.どのように実装すれば良いのでしょう.測定として用意されているのは通常の測定のみです.通常の測定で2qubitを測定すると,の4つの基底での測定となります.したがってベル測定を通常の測定で実現するにはベル基底をそれぞれ対応する通常の基底へ変換するようなゲートを適用させてから通常の基底で測定することで,得られた通常の基底がそれぞれ対応するベル基底を表すことになるので,ベル測定が実現できます.この変換を実現するゲートの組は次のものになります.
このゲートにより,次のような対応を持つ変換が行われます.
これでベル測定を行うことが可能となりました.
送る量子状態の準備
qubitの初期状態はとなっているので移して面白そうな量子状態を用意します.前回にもやったように次のゲートを適用させての量子状態を作ります.
もつれの準備
もつれさせた2qubitを準備します.この状態を作成するには一方にHゲートを適用させ,Hゲートを適用させた方をコントロールビットとしてCNOTゲートを適用させます.
回路全体
これまで用意したゲートを量子テレポーテーションを実現させるために順番に適用させると次の図の様になります.
最初の2つのqubitがAliceの持つqubitで最後の1つのqubitがBobの持つqubitです.実際に量子テレポーテーションさせるにはAliceの持つ2つのqubitのベル測定の結果に応じてBobの持つqubitに適切にゲートを適用させる必要がありますが,この量子コンピュータではその部分を実装することが出来ないので,適用させるゲートのパターンを全て別に実行し,最終的に確率を計算することで結果を見ます.
結果
Aliceの持つ2つのqubitの測定結果毎に結果を見ていきます.まず,Aliceの持つqubitの測定結果は次のようになります.
次に適用させるゲートのパターン毎に見ていきます.
の時
この時はBobの持つqubitには何もゲートを適用させる必要はありません.測定結果は次のようになります.
の時
この時はBobの持つqubitにZゲートを適用させます.測定結果は次のようになります.
の時
この時はBobの持つqubitにXゲートを適用させます.測定結果は次のようになります.
の時
この時はBobの持つqubitにXゲートを適用させた後Zゲートを適用させます.測定結果は次のようになります.
最終的な結果
Aliceの持つ2つのqubitの測定結果とBobの持つqubitにそれぞれのゲートを適用させた結果から最終的な量子テレポーテーションを実行した後のBobのqubitの測定結果は次のように計算できます.
量子テレポーテーションが成功していればBobの持つqubitはの状態になっているはずなのでが測定される確率は0.852ほどになるはずですがそこそこずれていますね.ちなみに同じ回路をIdealQuantumProccessorで実行した結果は次のようになります.上からAliceの持つ2つのqubitの測定結果,の時,の時,の時,の時の結果です.
この結果を元に計算するとが測定される確率は0.852となり,正しく量子テレポーテーションにより量子状態が移されていることが確認できます.
まとめ
量子テレポーテーションという結構量子っぽい雰囲気を感じられることを実際に量子コンピュータでやってみましたがどうだったでしょうか.実際の物理デバイスで実行した結果はやはりそれなりに誤差があり,量子コンピュータを実用化することの難しさも同時に感じられたような気がします.今回コントロール付きのゲートがCNOTゲートしか無く,更に測定結果をコントロールbitとすることができなかったのでこんな面倒な方法でしか最終的な確率を出すことが出来ませんでしたがその2つが使えたら1つの回路で量子テレポーテーションを実現できたのでもう少し最終的な結果が分かりやすかったかもしれませんね.CNOT以外のコントロール付きゲートをこの量子コンピュータで実装する方法が分かる人がいましたらコメント等で教えていただけるとありがたいです.