量子比特与量子门基础

量子计算零基础入门:量子比特的叠加与纠缠、单量子比特门(X/Y/Z/H)、多量子比特门(CNOT/Toffoli)、布洛赫球可视化、量子电路测量与干涉现象。

导语:比特的"量子化"升级

经典计算机的信息单位是比特(bit)——0 或 1,非此即彼。量子计算机的信息单位是量子比特(qubit),它可以同时处于 0 和 1 的叠加态。

这不是比喻,而是量子力学的数学描述。一个量子比特的状态不是确定的值,而是一个概率幅——同时包含 0 和 1 的可能性,直到被测量时才"坍缩"为确定值。

一句话总结:量子比特的核心魔力是"叠加"——一次存储多个可能性的能力,让量子计算机在特定问题上实现指数级并行计算。


1. 量子比特的状态表示

1.1 狄拉克符号(Bra-Ket)

量子力学使用简洁的狄拉克符号:

  • |0⟩ — 量子比特的 “0” 态(列向量 [1, 0]ᵀ)
  • |1⟩ — 量子比特的 “1” 态(列向量 [0, 1]ᵀ)
  • |ψ⟩ — 任意量子态的通用表示

1.2 叠加态

量子比特的任意状态可以表示为 |0⟩ 和 |1⟩ 的线性组合:

|ψ⟩ = α|0⟩ + β|1⟩

其中 α, β 是复数,且 |α|² + |β|² = 1

|α|² = 测量得到 0 的概率
|β|² = 测量得到 1 的概率

例如:

|ψ⟩ = (1/√2)|0⟩ + (1/√2)|1⟩

测量结果:50% 概率得到 0,50% 概率得到 1
这个态称为 |+⟩ 态

1.3 布洛赫球(Bloch Sphere)

为了可视化单量子比特的状态,物理学家发明了布洛赫球:

                    |0⟩
                     ↑
                    /|\
                   / | \
                  /  |  \
                 /   |   \
                /    |    \
         ──────/─────┼─────────── 赤道(等概率叠加平面)
              /      |      \
             /       |       \
            /        |        \
           └─────────┴─────────┘
                    ↓
                   |1⟩

布洛赫球上的每个点对应一个唯一的量子态:
- 北极 = |0⟩
- 南极 = |1⟩
- 赤道 = 等概率叠加态(|+⟩, |-⟩, |i+⟩, |i-⟩)

一句话总结:布洛赫球是理解单量子比特状态的几何直觉工具——球面上的每个点对应一个合法量子态,旋转对应量子门操作。


2. 单量子比特门

量子门是对量子态进行线性变换的酉矩阵(Unitary Matrix),保持向量长度不变。

2.1 泡利门(Pauli Gates)

import numpy as np

# X 门(量子非门 / bit-flip)
# X|0⟩ = |1⟩, X|1⟩ = |0⟩
X = np.array([[0, 1],
              [1, 0]])

# Y 门(bit-flip + phase-flip)
Y = np.array([[0, -1j],
              [1j, 0]])

# Z 门(phase-flip)
# Z|0⟩ = |0⟩, Z|1⟩ = -|1⟩
Z = np.array([[1, 0],
              [0, -1]])

2.2 阿达玛门(Hadamard Gate)

阿达玛门是创建叠加态的最重要工具:

# H 门将 |0⟩ 转换为等概率叠加态 |+⟩
# H|0⟩ = (|0⟩ + |1⟩) / √2 = |+⟩
# H|1⟩ = (|0⟩ - |1⟩) / √2 = |-⟩

H = np.array([[1,  1],
              [1, -1]]) / np.sqrt(2)

# 验证
psi_0 = np.array([1, 0])  # |0⟩
psi_plus = H @ psi_0      # H 作用于 |0⟩
# psi_plus = [1/√2, 1/√2] → 50% 0, 50% 1

2.3 相位门(Phase Gates)

# S 门(相位 π/2)
# S|0⟩ = |0⟩, S|1⟩ = i|1⟩
S = np.array([[1, 0],
              [0, 1j]])

# T 门(相位 π/4)
T = np.array([[1, 0],
              [0, np.exp(1j * np.pi / 4)]])

# 通用单量子比特门:RZ(θ)
def RZ(theta):
    return np.array([[np.exp(-1j * theta/2), 0],
                     [0, np.exp(1j * theta/2)]])

2.4 单量子比特门操作速查

门       矩阵                       几何意义                  作用
────────────────────────────────────────────────────────────────────────
I       [1 0]                      恒等                     不变
        [0 1]

X       [0 1]                      绕 X 轴旋转 π              翻转比特
        [1 0]

Y       [0 -i]                     绕 Y 轴旋转 π              翻转比特+相位
        [i  0]

Z       [1  0]                     绕 Z 轴旋转 π              翻转相位
        [0 -1]

H       [1  1]/√2                  绕 X+Z 轴旋转 π            创建叠加
        [1 -1]

S       [1 0]                      绕 Z 轴旋转 π/2            π/2 相位
        [0 i]

T       [1 0]                      绕 Z 轴旋转 π/4            π/4 相位
        [0 e^(iπ/4)]

一句话总结:单量子比特门是在布洛赫球上旋转量子态的"旋钮"——X/Y/Z 绕三个坐标轴旋转,H 门把基态转换为叠加态。


3. 多量子比特与纠缠

3.1 两量子比特状态空间

两个量子比特的系统不是简单相加,而是张量积:

|ψ⟩ = α|00⟩ + β|01⟩ + γ|10⟩ + δ|11⟩

其中 |α|² + |β|² + |γ|² + |δ|² = 1

N 个量子比特需要 2^N 个复数描述状态
→ 30 个量子比特需要 2^30 ≈ 10亿 个复数
→ 这是经典计算机无法直接模拟的

3.2 量子纠缠

纠缠是量子力学中最反直觉的现象——两个粒子之间存在超越空间的关联:

# 贝尔态(Bell State)——最大纠缠态
# |Φ+⟩ = (|00⟩ + |11⟩) / √2

# 制备方法:第一个量子比特过 H 门,然后控制非门
# |0⟩⊗|0⟩ ──H──●─── (|00⟩ + |11⟩) / √2
#              │
# |0⟩ ─────────⊕───

# 测量结果:
# 如果测得第一个量子比特是 0,第二个也一定是 0
# 如果测得第一个量子比特是 1,第二个也一定是 1
# 但每个单独测量都是 50% 概率——只有对比结果时才体现关联

纠缠态不能分解为单个量子比特状态的乘积:

(|00⟩ + |11⟩) / √2 ≠ |ψ₁⟩ ⊗ |ψ₂⟩  对任何 |ψ₁⟩, |ψ₂⟩

这种不可分解性就是纠缠的数学本质

3.3 CNOT 门(受控非门)

CNOT 是双量子比特门,是创造和操控纠缠的核心工具:

# CNOT 门矩阵(4×4)
# 控制位 |0⟩ 时目标位不变
# 控制位 |1⟩ 时目标位翻转(X 操作)

CNOT = np.array([[1, 0, 0, 0],
                 [0, 1, 0, 0],
                 [0, 0, 0, 1],
                 [0, 0, 1, 0]])

# 作用验证
# CNOT|00⟩ = |00⟩
# CNOT|01⟩ = |01⟩
# CNOT|10⟩ = |11⟩  ← 控制位为 1,目标位翻转
# CNOT|11⟩ = |10⟩  ← 控制位为 1,目标位翻转

3.4 多量子比特门速查

门                     作用                            用途
────────────────────────────────────────────────────────────────
CNOT (CX)              控制位为1时翻转目标位            纠缠制备、错误纠正
CZ                     控制位和目标位都为1时翻转相位     条件相位操作
SWAP                   交换两个量子比特的状态           线路重排
Toffoli (CCNOT)        两个控制位都为1时翻转目标位      可逆计算、经典逻辑
Fredkin (CSWAP)        控制位为1时交换两个目标位        可逆条件交换
────────────────────────────────────────────────────────────────

一句话总结:多量子比特系统的核心机制是纠缠——两个粒子共享一个不可分割的量子态,测量一个立即决定另一个的状态,这种关联是量子计算和量子通信的物理基础。


4. 量子电路与测量

4.1 量子电路示例

量子电路可视化:

|0⟩ ──H──●──M───  输出
         │
|0⟩ ─────⊕──M───  输出

步骤解析:
1. 初始状态:|00⟩
2. 第一个量子比特过 H 门:(|0⟩ + |1⟩)/√2 ⊗ |0⟩ = (|00⟩ + |10⟩)/√2
3. CNOT 门:(|00⟩ + |11⟩)/√2 → 贝尔态
4. 测量两个量子比特

4.2 Python 模拟

import numpy as np

# 定义计算基
ket0 = np.array([1, 0])
ket1 = np.array([0, 1])

# 张量积 ⊗
def tensor(a, b):
    return np.kron(a, b)

# 初始态 |00⟩
state = tensor(ket0, ket0)

# H 门作用在第一个量子比特上
H = np.array([[1, 1], [1, -1]]) / np.sqrt(2)
H_on_first = np.kron(H, np.eye(2))
state = H_on_first @ state

# CNOT 门
CNOT = np.array([[1,0,0,0],
                 [0,1,0,0],
                 [0,0,0,1],
                 [0,0,1,0]])
state = CNOT @ state

print("最终态:", state)
# [0.707, 0, 0, 0.707] → (|00⟩ + |11⟩)/√2

# 测量概率
prob_00 = abs(state[0])**2  # 0.5
prob_11 = abs(state[3])**2  # 0.5
print(f"P(00)={prob_00:.3f}, P(11)={prob_11:.3f}")

4.3 量子干涉

干涉是量子计算的核心计算资源:

            ┌───┐
|0⟩ ──H───┤ ? ├───M
            └───┘

如果 ? = H(双阿达玛):
  H(H|0⟩) = H(|+⟩) = |0⟩
  因为 H² = I,两条"路径"(|0⟩和|1⟩)的振幅相长干涉回到 |0⟩

如果 ? = XH:
  XH|0⟩ = X|+⟩ = |1⟩
  两条路径的振幅相消干涉,结果翻转

这就是 Deutsch 算法的核心思想——利用干涉来"抵消错误答案"

一句话总结:量子电路是量子算法的"程序"——量子门按照特定顺序作用于量子比特,利用叠加实现并行探索,利用干涉放大正确答案、抑制错误答案,最后通过测量获得结果。


5. 总结

量子比特与量子门的核心认知:

  1. 量子态是向量:|ψ⟩ = α|0⟩ + β|1⟩,概率幅 α 和 β 包含全部信息
  2. 量子门是酉变换:旋转量子态,保持概率守恒
  3. 纠缠不可分解:两个量子比特可以共享一个"整体"状态,单独看都是随机的,一起看却完美关联
  4. 计算资源来自干涉:量子并行提供搜索空间,但真正的威力来自精心设计的干涉模式
  5. 测量破坏叠加:一旦测量,量子态坍缩为经典状态,所有并行信息丢失

延伸阅读:

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「quantum」更多文章

  1. 开放量子系统与退相干建模:密度矩阵、Kraus 与 Lindblad 方程
  2. 量子基准测试与性能指标:保真度、量子体积与 CLOPS
  3. 量子编译器与电路转译:从逻辑线路到硬件脉冲