导语:比特的"量子化"升级
经典计算机的信息单位是比特(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. 总结
量子比特与量子门的核心认知:
- 量子态是向量:|ψ⟩ = α|0⟩ + β|1⟩,概率幅 α 和 β 包含全部信息
- 量子门是酉变换:旋转量子态,保持概率守恒
- 纠缠不可分解:两个量子比特可以共享一个"整体"状态,单独看都是随机的,一起看却完美关联
- 计算资源来自干涉:量子并行提供搜索空间,但真正的威力来自精心设计的干涉模式
- 测量破坏叠加:一旦测量,量子态坍缩为经典状态,所有并行信息丢失
延伸阅读:
- 量子算法:Shor 与 Grover — 量子计算的杀手级应用
- Qiskit 与 Python 量子编程实战 — 在真实量子计算机上编程
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。