単量子ビットのイメージはこちらに示しましたが、本記事ではこちらを教科書にして2量子ビットの量子もつれ(Bell状態)について考えていこうと思います。
複数の量子ビットを扱う場合、量子ビット間で相関関係が発生するため、(量子ビットそれぞれで扱うのではなく)まとまった形($\lvert\hspace{4px}q_{high}\hspace{4px}q_{low}\hspace{4px}\rangle$)で扱う必要があります。つまり、(単ビットでは$\lvert0\rangle$と$\lvert1\rangle$がそうであったように)$\lvert00\rangle$,$\lvert01\rangle$,$\lvert10\rangle$,$\lvert01\rangle$,$\lvert11\rangle$をそれぞれ相互に直交している波として扱います。そして、その操作は、(単ビットの場合2×2の行列で表現されたように)4×4の行列で表現されます。
目指す量子回路は次のとおりです。
初期状態の設定
初期で上位ビットを混合状態にしてもよかったのですが、量子回路に沿って$\lvert00\rangle$を作ります。
#量子bit×2の生成
#量子bit1
phi_high = math.pi*0 # ブロッホ球での|0>からの角度
shift_high= math.pi*0 # 位相差
#量子bit2
phi_low = math.pi*0 # ブロッホ球での|0>からの角度
shift_low = math.pi*0 # 位相差
上位ビットへのアダマール操作
H
\otimes
I =
\frac{1}{\sqrt{2}}
\begin{pmatrix}
1
\otimes
I
&
1
\otimes
I
\\
1
\otimes
I
&
-1
\otimes
I
\end{pmatrix}
=
\frac{1}{\sqrt{2}}
\begin{pmatrix}
1 & 0 & 1 & 0 \\
0 & 1 & 0 & 1 \\
1 & 0 & -1 & 0 \\
0 & 1 & 0 & -1
\end{pmatrix}
#to high bit
q_00,q_10 = h_gate(q_00,q_10)
q_01,q_11 = h_gate(q_01,q_11)
cx(cnot)操作
\begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & 1 & 0
\end{pmatrix}
#cx(highをコントロールビット、lowを標的ビットとした場合)
q_10,q_11 = x_gate(q_10,q_11)
無事、$\lvert00\rangle$と$\lvert11\rangle$の混合状態ができました。