2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

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))
  1. 『量子コンピューティング 基本アルゴリズムから量子機械学習まで』(嶋田義浩著, 2020)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?