簡単な式で見る量子テレポーテーション
簡単な式で見る量子テレポーテーション
量子テレポーテーションについて勉強したので備忘録を残しておきます
よくある誤解
-
物質がワープできる?
いいえ、物質はワープしません -
情報が光速を超えて伝わるということ?
いいえ、情報は光速を超えません -
じゃあ何がテレポーテーション?
「量子状態」が「最低限の通信」で「遠隔地に再現できる」こと(条件付き)をそう呼んでいます
量子テレポーテーションは事前にもつれさせた関係をうまく利用して
もつれ関係にある量子間で「量子状態」の転送を行います
量子状態と基本操作
量子状態というのは、単体の量子あるいは複数のもつれを含む量子の状態を指すもので
これは通常アナログ的な数値を含み、デジタルで完全に記述しきれない情報量を持っています
それはデジタルコンピュータ上でいくら精度を確保しても再現しきれないということですが、
無理数を数式で表記できるのと同様に、数式を使えば記述できます
一般的に1つの量子の量子状態は以下のように記述します
a|0> + b|1>
0がaに応じた確率で出て、1がbに応じた確率で出るという状態を意味しています
(実際は a^2 と b^2 に 応じた割合で、a^2 + b^2 = 1 に正規化されています)
もつれていない2つの量子について全体の状態を考える場合は、以下のようになります
(a|0> + b|1>)(c|0> + d|1>) = ac|00> + ad|01> + bc|10> + bd|11>
量子プログラミングの世界で行う操作は、基本的にこの量子状態で記述される中の、特定の量子ビットに対する操作です
たとえば、
a|0> + b|1>
↓ X操作(ビットNOT相当)を加える
a|1> + b|0>
ac|00> + ad|01> + bc|10> + bd|11>
↓ 0番目の量子ビットにX操作(ビットNOT相当)を加える
ac|10> + ad|11> + bc|00> + bd|01>
量子もつれについて
先ほどもつれていない2つの量子について
(a|0> + b|1>)(c|0> + d|1>) = ac|00> + ad|01> + bc|10> + bd|11>
のような状態になると述べました
たとえば、必ず両方の量子が0になる場合は、単に
|00>
ですが、これは ac = 1, ad = 0, bc = 0, bd = 0 と考えれば a = 1, c = 1, b = 0, d = 0 となり、
上記の式の範疇に収まります
これとは異なり、上記の式に収まらない「特別な相関」を持った状態も考えることができます
たとえば、
a|00> + b|11>
のような状態です。これは上記の式ではどのように係数を取っても記述できません
(ad = 0, bc = 0 とすると ac か bd もどちらかが0になる)
これは0番目の量子で0が出れば1番目の量子も0、0番目の量子で1が出れば1番目の量子も1となる
そしてそれ以外のパターンはあり得ない、という強い相関関係を持っている状態です
量子プログラミングの世界では、この相関関係を簡単に作ることができます
代表的な例がCNOTゲートによる操作です
CNOTゲートは2つの量子を取り、1つ目の量子(コントロール)の状態が1のときに2つ目の量子(ターゲット)の状態を反転させます。
ひとつめの量子が
a|0> + b|1>
で、ふたつめの量子が
|0>
のとき、
(a|0> + b|1>)(|0>) = a|00> + b|10>
↓ CNOT
a|00> + b|11>
量子テレポーテーションの操作
量子テレポーテーションの操作は、プログラム的に見てしまえばごく簡単です
q0 = any state # 任意の量子状態として設定しておく
H(q1)
CNOT(q1, q2)
CNOT(q0, q1)
H(q0)
crz = measure_bit(q0) # 実際の観測を行いq0を01のどちらかへ確定させる
crx = measure_bit(q1) # 実際の観測を行いq1を01のどちらかへ確定させる
if crx == 1:
X(q2)
if crz == 1:
Z(q2)
この操作を完了した時点で q2 には q0 が再現されています
量子テレポーテーションの式
量子テレポーテーションは任意の量子状態を転送するものなので、q0は何でも構いません
仮に、
q0 = a|0> + b|1>
とします
他の量子ビットは初期値で|0>に設定されるものとします
全体は
a|000> + b|100>
で、まずq1にHゲートを適用。
Hゲートは|0>に対して適用すると
(1/√2)(|0> + |1>)
|1>に対して適用すると
(1/√2)(|0> - |1>)
という状態へ変化させる操作です
H(q1) について
適用前: q1 = |0>
適用後: H(q1) -> q1 = (1/√2)(|0> + |1>)
この操作の目的はq1とq2をもつれさせるための下準備です
CNOT(q1, q2)
-> q1q2 = (1/√2)(|00> + |11>)
ここで実際にもつれさせて、相関関係に持ち込んでいます
ここでは分かりやすさのためにq1q2を先に取りあげましたが
この段階で、全体の状態は
(a|0> + b|1>)(1/√2)(|00> + |11>)
= (1/√2)(a|000> + a|011> + b|100> + b|111>)
となっています。
次に、以下の操作を行います
CNOT(q0, q1)
-> (1/√2)(a|000> + a|011> + b|100> + b|111>) の0ビット目が1なら1ビット目を反転
= (1/√2)(a|000> + a|011> + b|110> + b|101>)
H(q0)
-> q0 = (1/√2)(|0> + |1>)
(1/√2)(a(1/√2)(|0> + |1>)|00> + a(1/√2)(|0> + |1>)|11> + b(1/√2)(|0> - |1>)|10> + b(1/√2)(|0> - |1>)|01>)
長い式になってしまいましたが、この観測前の最終結果が重要で、順を追って整理すると
(1/2)(a(|000> + |100> + |011> + |111>) + b(|010> - |110> + |001> - |101>))
= (1/2)((|00> + |10>)a|0> + (|01> + |11>)a|1> + (|01> - |11>)b|0> + (|00> - |10>)b|0>)
= (1/2)(|00>(a|0> + b|1>) + |01>(a|1> + b|0>) + |10>(a|0| - b|0>) + |11>(a|1> - b|0>))
係数を除外して見たとき、以下の4つの項が表われています
これらはそれぞれ
|00>(a|0> + b|1>) <- q0が0,q1が0のとき q3は a|0> + b|1> にしかなり得ない
|01>(a|1> + b|0>) <- q0が0,q1が1のとき q3は a|1> + b|0> にしかなり得ない
|10>(a|0> - b|1>) <- q0が1,q1が0のとき q3は a|0> - b|1> にしかなり得ない
|11>(a|1> - b|0>) <- q0が1,q1が1のとき q3は a|1> - b|0> にしかなり得ない
と解釈できます。なので実際にq0とq1を観測して
crz = ビット観測(q0)
crx = ビット観測(q1)
if crx == 1:
X(q2)
if crz == 1:
Z(q2)
とすることで
|00>(a|0> + b|1>) -> そのまま -> (a|0> + b|1>)
|01>(a|1> + b|0>) -> ビット反転 -> (a|0> + b|1>)
|10>(a|0> - b|1>) -> 符号反転 -> (a|0> + b|1>)
|11>(a|1> - b|0>) -> ビット反転&符号反転 -> (a|0> + b|1>)
となり、すべてが a|0> + b|1> に解決します
すなわち a|0> + b|1> がq0からq2へと転送された形になります
(Z操作は|1>側の符号を反転させる操作)
観測行為を行なっているので、オリジナルのq0の状態は普通のビットに縮退しており、残っていません
勘違いしないためのポイント
量子テレポーテーションは不思議現象ではない
前述のとおり、量子テレポーテーションは数式で完全に記述できる物理現象です
事前にもつれさせている量子を使えば、操作によって量子状態を再現できるということです
量子テレポーテーションは意味のない思考実験ではない
結局通信するなら意味ないのでは?と思うかもしれませんが
通信するのは2つの通常ビットで、再現されるのは量子状態(2ビットで通信できない精度)です
一方の操作で他方の振幅は変化しない
いずれかの量子への操作はもつれた量子全体の「相関関係」に影響を与えますが
他の量子単体の振幅、すなわち「観測結果」には影響を与えません
つまり、「情報を実際に通信して突き合わせない限り全体的な変化は観測できない」のです
これが量子を転送できるにも関わらず情報が光速を超えて伝達できない理由です
「相関関係を利用」するには「実際の情報の突き合わせ」が必要です
Discussion