3. 单量子比特门作为矩阵算子
在状态向量模拟器中,单量子比特门最自然的实现方式就是把它当作一个 2×2 复矩阵,作用到长度为 2 的状态向量上。若记量子态为列向量 |ψ⟩ = [α, β]ᵀ,门为矩阵 U,则门作用后的新状态就是 U|ψ⟩。这一节我们先把三个最常用的门写成矩阵,再推导它们对状态向量的具体作用,最后用 H 门与 CNOT 门的组合验证 Bell 态制备。
一、约定与基本形式
本课程统一采用计算基 |0⟩ = [1, 0]ᵀ、|1⟩ = [0, 1]ᵀ,矩阵按行主序书写,作用顺序为“先写的门先作用”,即 U₂U₁|ψ⟩ 表示先作用 U₁ 再作用 U₂。复数相位约定为 e^{iθ} = cosθ + i·sinθ。
单量子比特门的一般形式是 2×2 酉矩阵。所谓酉,即 U†U = I,它保证作用后状态向量的模长仍为 1,也就是概率守恒。模拟器里做矩阵-向量乘法时,只需按普通复数乘法累加即可:
new_α = U[0][0]*α + U[0][1]*β
new_β = U[1][0]*α + U[1][1]*β
二、泡利矩阵:翻转与相位
泡利矩阵是三个最基本的单比特门,它们分别对应比特翻转、相位翻转和两者的组合。
X 门(比特翻转)矩阵为 [[0,1],[1,0]]。作用到 |0⟩ 得 |1⟩,作用到 |1⟩ 得 |0⟩。对一般态 α|0⟩+β|1⟩,结果为 β|0⟩+α|1⟩,即交换两个振幅。
Z 门(相位翻转)矩阵为 [[1,0],[0,-1]]。它保持 |0⟩ 不变,把 |1⟩ 变为 −|1⟩。对一般态,结果为 α|0⟩−β|1⟩,只改变 β 的符号。
Y 门矩阵为 [[0,−i],[i,0]]。它同时引入虚数单位和符号变化,作用到 |0⟩ 得 i|1⟩,作用到 |1⟩ 得 −i|0⟩。Y 门在模拟器中常用于构造带复相位的测试态。
这三个矩阵都满足 U² = I,因此连续作用两次会回到原状态,这一点可以作为模拟器自检的简单用例。
三、Hadamard 门:制造叠加
Hadamard 门(H 门)矩阵为 (1/√2)[[1,1],[1,−1]]。它把计算基变成叠加基:
H|0⟩ = (|0⟩ + |1⟩)/√2
H|1⟩ = (|0⟩ − |1⟩)/√2
对一般态 α|0⟩+β|1⟩,H 门作用后为:
new_α = (α + β)/√2
new_β = (α − β)/√2
可以看到,H 门把振幅的“和”与“差”重新分配到两个基上。当 α = 1、β = 0 时,两个新振幅都是 1/√2,测量得到 0 和 1 的概率各为 50%。这正是 Bell 态制备的第一步。
四、相位门:只改相位不改概率
相位门包括 S 门、T 门和一般相位门 P(θ)。它们的共同特点是矩阵对角,只改变 |1⟩ 分量的相位,不改变测量概率。
S 门矩阵为 [[1,0],[0,i]],作用后 β 变为 iβ。T 门矩阵为 [[1,0],[0,e^{iπ/4}]],作用后 β 乘以 e^{iπ/4}。一般相位门 P(θ) = [[1,0],[0,e^{iθ}]],作用后 β 乘以 e^{iθ}。
在模拟器中验证相位门时,不能只看概率,因为概率不变。应当直接比较复数振幅的实部和虚部,或者计算相位差。例如对态 (|0⟩+|1⟩)/√2 作用 S 门,得到 (|0⟩+i|1⟩)/√2,两个分量的模仍是 1/√2,但 β 的相位从 0 变成了 π/2。
五、矩阵-向量乘法的实现要点
实现时建议把复数封装成结构体或对象,包含实部和虚部,并提供加法、乘法、取模等基本运算。矩阵-向量乘法按前面给出的两行公式直接展开即可。需要注意三点:
- 乘法顺序:多门串联时,先作用的门写在右边,后作用的门写在左边。
- 归一化检查:每次乘法后计算 |new_α|² + |new_β|²,应约等于 1,误差在 1e-12 量级可接受。
- 相位一致性:比较两个态是否等价时,允许整体相位差,即 |ψ⟩ 与 e^{iφ}|ψ⟩ 视为同一物理态。
六、Bell 态制备:H 门与 CNOT 门的组合
Bell 态是最简单的两比特纠缠态。以 |Φ⁺⟩ = (|00⟩+|11⟩)/√2 为例,制备过程为:先对第一个量子比特作用 H 门,再以第一个比特为控制、第二个比特为目标作用 CNOT 门。
初始态为 |00⟩,即四维向量 [1,0,0,0]ᵀ,基顺序为 |00⟩、|01⟩、|10⟩、|11⟩。第一步对第一个比特作用 H 门,第二个比特保持不变,整体矩阵为 H⊗I。作用后得到:
(|00⟩ + |10⟩)/√2 = [1/√2, 0, 1/√2, 0]ᵀ
第二步作用 CNOT 门。CNOT 矩阵在计算基下为:控制位为 0 时目标位不变,控制位为 1 时目标位翻转。对应四维矩阵为:
CNOT = [[1,0,0,0],
[0,1,0,0],
[0,0,0,1],
[0,0,1,0]]
作用到 [1/√2, 0, 1/√2, 0]ᵀ 上,得到 [1/√2, 0, 0, 1/√2]ᵀ,即 (|00⟩+|11⟩)/√2,正是 |Φ⁺⟩。此时测量两个比特,结果只能是 00 或 11,各占 50%,不会出现 01 或 10,这就是纠缠的典型特征。
七、模拟器验证清单
把上述内容落到代码里,可以用下面这组用例快速自检:
| 用例 | 输入态 | 操作 | 期望输出 |
|---|---|---|---|
| X 翻转 | |0⟩ | X | |1⟩ |
| Z 相位 | (|0⟩+|1⟩)/√2 | Z | (|0⟩−|1⟩)/√2 |
| H 叠加 | |0⟩ | H | (|0⟩+|1⟩)/√2 |
| S 相位 | (|0⟩+|1⟩)/√2 | S | (|0⟩+i|1⟩)/√2 |
| Bell 制备 | |00⟩ | H⊗I 后 CNOT | (|00⟩+|11⟩)/√2 |
判断结果是否正确,可以分三层:第一层看概率分布是否符合预期;第二层看复数振幅的实部、虚部是否与手算一致;第三层看整体相位是否只差一个全局因子。三层都通过,说明矩阵-向量乘法实现正确,Bell 态制备逻辑也正确。
把这张图与前面的公式对照,可以看到:左侧是门的矩阵定义,中间是统一的乘法与检查流程,右侧是 H 门与 CNOT 门组合成 Bell 态的完整链路。只要矩阵-向量乘法正确,且门的作用顺序正确,Bell 态制备就能在模拟器中稳定复现。