はじめに
Qiskit により Bell 状態を表現することができたので、今回はそれを用いて Bell 状態の密度行列を確認してみます。
エンタングルメントとは
エンタングルメント(量子もつれ)は、2つの量子ビット状態
\ket{\psi}_{A}, \ket{\psi}_{B}
からなる状態
\ket{\Psi}_{AB}
が、個別の量子状態のテンソル積では書き表せない状態を指します。
具体的に、量子ビット A と B が Bell 状態である場合を考えます。
Bell 状態
\ket{B_{00}} := \frac{1}{\sqrt{2}} \big( \ket{00} + \ket{11} \big) = \frac{1}{\sqrt{2}} \big( \ket{0}_{A} \ket{0}_{B} + \ket{1}_{A} \ket{1}_{B} \big)
について、A, B の量子ビットの状態をそれぞれ
\begin{align}
\ket {\psi_{A}} &= a_{0} \ket{0} + a_{1} \ket{1} \\
\ket {\psi_{B}} &= b_{0} \ket{0} + b_{1} \ket{1}
\end{align}
とします。
量子ビットの状態を表すテンソル積は
\ket {\psi_{A}} \otimes \ket {\psi_{B}} = a_{0}b_{0} \ket{00} + a_{0}b_{1} \ket{01} + a_{1}b_{0} \ket{10} a_{1}b_{1} \ket{11}
で表されます。ここで、$ \ket{B_{00}} $ の式と比べると、
\begin{align}
a_{0}b_{0} = \frac{1}{\sqrt{2}}, a_{0}b_{1} = 0, a_{1}b_{0} = 0, a_{1}b_{1} = \frac{1}{\sqrt{2}}
\end{align}
という、4つの関係式が得られます。
これらの式から、 $a_{0}b_{1} = 0$ より $ a_{0} = 0 $ または $ b_{1} = 0 $ 、 $ a_{1}b_{0} = 0 $ より $ a_{1} = 0 $ または $ b_{0} = 0 $となりますが、これは、 $ a_{0}b_{0} = \frac{1}{\sqrt{2}} $ , $ a_{1}b_{1} = \frac{1}{\sqrt{2}} $ と矛盾しています。
よって、この $ \ket{B_{00}} $ は任意の1量子ビット状態のテンソル積で表すことはできません。1
Qiskit による密度行列の確認
ここで、Bell 状態の回路を Qiskit で表現し、密度行列をとってみます。
密度行列は、理想的な量子ビットの状態(純粋状態)では、
\rho = \ket{\psi} \bra{\psi}
と表されます。
これは、Statevector とその共役転置の積となっており、Bell 状態では、
\ket{\psi} = \frac{1}{\sqrt{2}} \begin{bmatrix}
1 \\
0 \\
0 \\
1
\end{bmatrix}
のため、
\rho = \ket{\psi} \bra{\psi} = \frac{1}{2} \begin{bmatrix}
1 \\
0 \\
0 \\
1
\end{bmatrix} \begin{bmatrix}
1 & 0 & 0 & 1
\end{bmatrix} = \begin{bmatrix}
0.5 & 0 & 0 & 0.5 \\
0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 \\
0.5 & 0 & 0 & 0.5 \\
\end{bmatrix}
となります。
Qiskit を使ってこれを確かめてみます。
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector, DensityMatrix
# 量子回路を作成
qc = QuantumCircuit(2)
# Bell状態を生成する回路
qc.h(0)
qc.cx(0, 1)
# 密度行列を表示
sv = Statevector.from_instruction(qc)
density_matrix = DensityMatrix(sv)
print(density_matrix)
結果は以下のようになり、計算式と合致しました。
DensityMatrix([[0.5+0.j, 0. +0.j, 0. +0.j, 0.5+0.j],
[0. +0.j, 0. +0.j, 0. +0.j, 0. +0.j],
[0. +0.j, 0. +0.j, 0. +0.j, 0. +0.j],
[0.5+0.j, 0. +0.j, 0. +0.j, 0.5+0.j]],
dims=(2, 2))
-
『量子コンピューティング 基本アルゴリズムから量子機械学習まで』(嶋田義浩著, 2020) ↩