2bit量子ゲートとエンタングルメントについて
What(どの様なものなのか)
-
1bit量子ゲートは1つの量子ビットの状態を変化させるが、2つの量子ビットを操作する2bit量子ゲートも存在する
-
代表的な2bit量子ゲートとしては、例えばCNOTゲートがあり、これは一方の量子ビットを制御ビットとし、制御ビットの値(0または1)に応じて標的ビットの値を反転または維持させるという操作を行うものである
-
例えば、2つの量子ビットの状態
とq_0 (それぞれは0または1)をq_1 とすると、1ビット目を制御ビット、2ビット目を標的ビットとして、CNOTゲートは以下の様に書ける\ket{q_0q_1} CNOT\ket{00} \to \ket{00} \\ CNOT\ket{01} \to \ket{01} \\ CNOT\ket{10} \to \ket{11} \\ CNOT\ket{11} \to \ket{10}
Why(何が嬉しいのか)
-
CNOTゲートを使うと、2つの量子を量子もつれ(エンタングルメント)の状態にすることが出来る
-
量子もつれ(エンタングルメント)とは、量子もつれの関係にある2つの量子ビットが、一方の状態が決まる(=観測される)ともう一方の状態が決定されるという状態である
-
例えば2量子ビットのエンタングルメントの例であるベル状態の一つに以下があり、この例では1ビット目が決まると、2ビット目も決まる(1ビット目と同じになる)ことになる
\ket{\psi} = \frac{1}{\sqrt{2}} \left( \ket{00} + \ket{11} \right) -
量子コンピュータでは、この量子もつれや量子状態の重ね合わせを利用して、量子の性質を活かしたアルゴリズムを実行することが出来る
-
1ビット量子ゲートである位相ゲート(Tゲートでも可)とアダマールゲートに、CNOTゲートを加えると、この組み合わせであらゆる量子ゲートを構築可能であり、ユニバーサルゲートセットとなる
How(どのように使うのか)
- 以下にアダマールゲートとCNOTゲートを使ってエンタングルメントの状態(ベル状態)を作る方法を示す
- まず、2つの量子ビットが存在し、状態が
であるとする\ket{0}
\ket{\psi}=\ket{0}\otimes\ket{0}=\ket{00} - この状態で、最初の量子ビットにアダマールゲートを作用させる
よりH\ket{0}=\frac{1}{\sqrt{2}}(\ket{0}+\ket{1})
- まず、2つの量子ビットが存在し、状態が
-
この状態に、1番目の量子ビットを制御ビットとし、2番目の量子ビットをターゲットビットとしてCNOTゲートを適用すると、上記の波動関数の項において、
、\ket{00} \to \ket{00} となる(制御ビットが0の時はターゲットビットはそのまま、制御ビットが1の時はターゲットビットが反転する)ため、\ket{10} \to \ket{11}
CNOT(\frac{1}{\sqrt{2}}(\ket{00}+\ket{10})) = \frac{1}{\sqrt{2}}(\ket{00}+\ket{11}) 上記の通りエンタングルメント状態が生成される
-
尚、qiskitで上記の量子回路を記述すると以下の通り(描画用のコードも記載)
from qiskit import QuantumCircuit
import matplotlib.pyplot as plt
# 量子回路を作成(2量子ビット、2古典ビット)
qc = QuantumCircuit(2, 2)
# アダマールゲートを最初の量子ビットに適用
qc.h(0)
# CNOTゲートを適用(最初の量子ビットが制御、2番目の量子ビットがターゲット)
qc.cx(0, 1)
# 測定を行う
qc.measure([0, 1], [0, 1]) # 量子ビット0,1を古典ビット0,1に測定
# 回路を描画
qc.draw('mpl') # 'mpl'オプションでMatplotlibを使用して図を表示
# 図を表示
plt.show()
Appendix(エンタングルメントと積状態)
- 2つの量子ビット(量子ビット1と量子ビット2)の波動関数を以下とする
- このとき、2量子ビット系の波動関数はテンソル積を用いて以下の様に書ける
- テンソル積の書き方と係数の文字を書き換えると
-
これは、2つの量子ビットの関係を4つの状態(
)の基底を持つあらたな量子状態とみる事ができ、確率の観点から\ket{00},\ket{01},\ket{10},\ket{11} = 1 が成立する|\alpha|^2 + |\beta|^2 + |\gamma|^2 +|\delta|^2 -
上記の状態は、1つの波動関数として記載しているものの、2つの量子ビットは互いに独立した状態を取ることが出来る
-
一方エンタングルメントについては、例えば2つの量子ビットについては以下の4つのベル状態がある
-
これらの状態は2つの量子状態のテンソル積の形で書くことが出来ず、一方の量子ビットの値が決まるともう一方の量子ビットの状態が決定される特殊な状態である。(例えば、
や\ket{\Phi^+} では一方が0であれば他方も0になる)\ket{\Phi^-} -
を展開すると、以下の様になる\ket{\Phi^+}
- これは、2量子ビットの積状態の波動関数
において以下を満たす場合に相当するが、これらを満たす確率振幅の組み合わせは存在しないことがわかる(例えば、1つ目の式と2つ目の式を同時に満たすためには\ket{\Psi}=\alpha_1\alpha_2\ket{0}\otimes\ket{0} + \alpha_1\beta_2\ket{0}\otimes\ket{1} + \beta_1\alpha_2\ket{1}\otimes\ket{0} + \beta_1\beta_2\ket{1}\otimes\ket{1} である必要があるが、そうすると4つ目の式が成立しなくなるため)\beta_2 = 0
- つまり、エンタングルメント状態とは、2つの量子ビットの状態ベクトルのテンソル積で表現できない、特殊な状態であると言える
参考
Discussion