はじめに
Bell 状態の代表的な応用として、量子テレポーテーションがあります。IBM の Qiskit を用いて量子テレポーテーションを実装し、その動作をシミュレータ上で確認していきたいと思います。
転送したい量子状態
量子テレポーテーションでは、1ビットの量子状態そのものを送ります。
一般的な1ビットの量子状態は以下で表されます。
\ket{\psi} = \alpha \ket{0} + \beta \ket{1}
$ \alpha:\ket{0} $ の確率振幅
$ \beta:\ket{1} $ の確率振幅
量子状態として成立するためには、全体の確率が1になる必要があるため、
|\alpha|^2 + |\beta|^2 = 1
を満たします。
また、以下の量子状態は、0と1が重ね合わせになった状態です。
\frac{\ket{0} + \ket{1}}{2}
このような状態は Hadamard ゲートによって得ることができます。50%の確率で $ \ket{0} $、50%の確率で $ \ket{1} $ が得られます。
ここで重要なのは、測定してしまうと元の量子状態は失われるという点です。
もし Alice がこの量子状態を Bob へ送りたいとしても、一度測定してしまえば、0または1の古典的な情報しか得られず、重ね合わせの情報は失われてしまいます。
つまり、古典通信だけでは未知の量子状態を完全に伝えることはできません。
量子テレポーテーションは、この問題を Bell 状態(エンタングルメント)と2ビットの古典通信を組み合わせることで解決し、測定によって失われることなく量子状態そのものを転送するプロトコルです。
エンタングルした2つの量子ビット A と B に加えて、送信したい状態をもつ
\ket{\psi} = \alpha \ket{0} + \beta \ket{1}
を用意します。私たちは、メッセージの中身である $ \alpha $ と $ \beta $ の値を盗み見ることなく、かつこの量子ビットそのものを見ることもなく、別の場所に $ \ket{\psi} $ の状態を送信します。1
転送したい量子状態の準備
1ビット量子状態
\ket{\psi} = \alpha \ket{0} + \beta \ket{1}
Alice から Bob へ転送することを考えます。
本来、このプロトコルは任意の $ \alpha $、$ \beta $ に対して成立しますが、今回は動作を分かりやすくするため、
\frac{|0\rangle+|1\rangle}{\sqrt2}
を用います。
この状態は、$\ket{0}$ に Hadamard ゲートを適用することで生成できます。
from qiskit import QuantumCircuit
qc = QuantumCircuit(3, 2)
# q0に転送したい量子状態を準備
qc.h(0)
qc.barrier()
ここでは3つの量子ビットを用意しています。
- q0:Alice が Bob へ転送したい量子状態
- q1:Bell 状態を構成する Alice 側の量子ビット
- q2:Bell 状態を構成する Bob 側の量子ビット
Hadamard ゲートを適用すると、q0 は
\big[ \ket{0} \quad\longrightarrow\quad \frac{\ket{0}+\ket{1}}{\sqrt2} \big]
となります。
この時点では、q0はまだ Alice だけが持っており、Bob とは何の関係もありません。
Bell 状態の生成
続いて、Alice と Bob で Bell 状態を共有します。
Bell 状態は、
\frac{\ket{00}+\ket{11}}{\sqrt{2}}
で表されるエンタングル状態です。
Qiskit では、Hadamard ゲートと CNOT ゲートを組み合わせることで生成できます。
# q1とq2でBell状態を生成
qc.h(1)
qc.cx(1, 2)
qc.barrier()
この回路では、まずq1に Hadamard ゲートを適用して重ね合わせを作り、その後 CNOT ゲートによってq1とq2をエンタングルさせています。
状態の変化を数式で追うと、
初期状態は $ \ket{00} $ です。
ここに、Hadamard ゲート、CNOT ゲートを適用すると、
\big[ \ket{00} \quad\longrightarrow\quad \frac{\ket{00} + \ket{10}}{\sqrt{2}} \big]
\big[ \frac{\ket{00} + \ket{10}}{\sqrt{2}} \quad\longrightarrow\quad
\frac{\ket{00} + \ket{11}}{\sqrt2} \big]
となり、Bell 状態が完成します。
この時点で3つの量子ビット全体の状態は、
- q0:Alice が転送したい量子状態
- q1・q2:Alice と Bob で共有する Bell 状態
となっています。
つまり、
\big[ \ket{\psi} \otimes \ket{\Phi^+} \big]
という状態が準備されたことになります。
この Bell 状態が、量子テレポーテーションにおいて「量子通信路」の役割を果たします。
次は、Alice が q0 と q1 に対して Bell 測定を行い、その測定結果を Bob へ古典通信で送ることで、Bob の量子ビット q2 に元の量子状態がどのように再現されるのかを確認します。
-
『量子コンピューティング 基本アルゴリズムから量子機械学習まで』(嶋田義浩著, 2020) ↩