Bell态和GHZ态#

Bell态#

量子Bell态,是量子力学中一个非常重要的概念,通常用来展示量子纠缠的特性。Bell态广泛应用于量子通信、量子计算和量子密钥分发等领域。

Bell态的定义#

在两个量子比特的系统中,存在四个最大纠缠态,通常称为Bell态。这些状态可以由任意一对量子比特构成,具体表达式如下:

  1. \(\ket{\phi_{+}}\)

\[ \ket{\phi_{+}}= \frac{1}{\sqrt{2}} (\ket{00} + \ket{11}) \]

这个状态表示两个量子比特处于同时是0和同时是1的叠加状态。

  1. \(\ket{\phi_{-}}\)

\[ \ket{\phi_{-}}= \frac{1}{\sqrt{2}} (\ket{00} - \ket{11}) \]

\(\ket{\phi_{+}}\) 类似,不同之处在于两个量子态之间带有相对的负相位。

  1. \(\ket{\psi_{+}}\)

\[ \ket{\psi_{+}} = \frac{1}{\sqrt{2}} (\ket{01} + \ket{10}) \]

这个状态表示第一个量子比特为0且第二个为1,以及第一个为1且第二个为0的叠加状态。

  1. \(\ket{\psi_{-}}\)

\[ \ket{\psi_{-}} = \frac{1}{\sqrt{2}} (\ket{01} - \ket{10}) \]

类似 \(\ket{\psi_{+}}\),但是两个量子态之间有负相位差。

Bell态的制备#

Bell态可以通过1个H门和1个CNOT门制备得到,线路如下:

import deepquantum as dq
import matplotlib.pyplot as plt

cir = dq.QubitCircuit(2)
cir.h(0)
cir.cx(0, 1)
cir.barrier()

cir()
res = cir.measure(with_prob=True)  # 打印测量结果
print(res)

# 将数据分解为X和Y轴的值
labels = list(res.keys())
values = [value[1] for value in res.values()]

# 创建条形图
plt.figure(figsize=(8, 5))  # 设置图形大小
plt.bar(labels, values)  # 绘制条形图
{'11': (517, tensor(0.5000)), '00': (507, tensor(0.5000))}
<BarContainer object of 2 artists>
../../../_images/80e681d5533b17ea24caffeaaaa6b7d6be1e4ba5bbcf5d0c159ed73fce794c64.png

画出对应的量子线路图

cir.draw()
../../../_images/d3a0d44f96f83854566428a2aaf5d84854c7901747b1fab009e3c23c0f5e245a.png

GHZ态#

GHZ态(Greenberger-Horne-Zeilinger态)是一种多体量子纠缠态,它在量子信息理论、量子计算和量子通信中具有重要的理论和应用价值。GHZ态是由Daniel Greenberger、Michael Horne和Anton Zeilinger在1989年提出的,用于展示多粒子系统中量子力学的非局域性。

GHZ态的定义#

对于一个包含N个量子比特(qubits)的系统,GHZ态可以定义为如下的纠缠态:

\[ |\text{GHZ}\rangle = \frac{1}{\sqrt{2}} (|0\rangle^{\otimes N} + |1\rangle^{\otimes N}) \]

这里的\(|0\rangle^{\otimes N}\)表示所有N个量子比特都处于\(|0\rangle\)态,而\(|1\rangle^{\otimes N}\)表示所有N个量子比特都处于\(|1\rangle\)态。例如:

  • 对于三个量子比特的GHZ态,表达式是:

    \[ |\text{GHZ}\rangle_{3} = \frac{1}{\sqrt{2}} (|000\rangle + |111\rangle) \]
  • 对于四个量子比特的GHZ态,表达式是:

    \[ |\text{GHZ}\rangle_{4} = \frac{1}{\sqrt{2}} (|0000\rangle + |1111\rangle) \]

GHZ态的制备#

GHZ态可以通过1个H门和多个CNOT门制备得到,3-qubit GHZ态线路如下:

cir = dq.QubitCircuit(3)
cir.h(0)
cir.cx(0, 1)
cir.cx(1, 2)
cir.barrier()

cir()
res = cir.measure(with_prob=True)  # 打印测量结果
print(res)

# 将数据分解为X和Y轴的值
labels = list(res.keys())
values = [value[1] for value in res.values()]

# 创建条形图
plt.figure(figsize=(8, 5))  # 设置图形大小
plt.bar(labels, values)  # 绘制条形图
{'111': (491, tensor(0.5000)), '000': (533, tensor(0.5000))}
<BarContainer object of 2 artists>
../../../_images/1c2ba64e76d07c94245e61bea2e1011f0c4ada810962e57a1bfaa39da153c0f9.png

画出对应的量子线路图

cir.draw()
../../../_images/328ecc9eb331025e550f13b2e0fef67cd67532d8d21926304f6282d83cd33cba.png

更一般的情况,N-qubit GHZ态线路如下:

def ghz_n(n):
    cir = dq.QubitCircuit(n)
    cir.h(0)
    for i in range(n - 1):
        cir.cx(i, i + 1)

    return cir

设置 N=10,我们可以观察生成的 N-qubit GHZ 态:

N = 10
cir = ghz_n(N)
cir.barrier()
cir()
res = cir.measure(with_prob=True)  # 打印测量结果
print(res)

# 将数据分解为X和Y轴的值
labels = list(res.keys())
values = [value[1] for value in res.values()]

# 创建条形图
plt.figure(figsize=(8, 5))  # 设置图形大小
plt.bar(labels, values)  # 绘制条形图
{'0000000000': (512, tensor(0.5000)), '1111111111': (512, tensor(0.5000))}
<BarContainer object of 2 artists>
../../../_images/bf15c720e8efa66cd87cf6eb4d9adaf43df66c554391510a8cc131554190c3ea.png

画出对应的量子线路图

cir.draw()
../../../_images/b4366059f04bbe1950d9f2be52e927a12e7596ec7014c9335c74ba90687f180e.png