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,这就是纠缠的典型特征。

验证 Bell 态时,除了看振幅,还应检查约化密度矩阵。对 |Φ⁺⟩ 单独追踪第一个比特,得到的约化密度矩阵为 I/2,说明单个比特处于最大混合态,这是纠缠的判据之一。

七、模拟器验证清单

把上述内容落到代码里,可以用下面这组用例快速自检:

用例输入态操作期望输出
X 翻转|0⟩X|1⟩
Z 相位(|0⟩+|1⟩)/√2Z(|0⟩−|1⟩)/√2
H 叠加|0⟩H(|0⟩+|1⟩)/√2
S 相位(|0⟩+|1⟩)/√2S(|0⟩+i|1⟩)/√2
Bell 制备|00⟩H⊗I 后 CNOT(|00⟩+|11⟩)/√2

判断结果是否正确,可以分三层:第一层看概率分布是否符合预期;第二层看复数振幅的实部、虚部是否与手算一致;第三层看整体相位是否只差一个全局因子。三层都通过,说明矩阵-向量乘法实现正确,Bell 态制备逻辑也正确。

单量子比特门矩阵算子与 Bell 态制备链路 单比特门矩阵 X = [[0,1],[1,0]] 比特翻转:α↔β Z = [[1,0],[0,-1]] 相位翻转:β→−β Y = [[0,−i],[i,0]] 翻转+虚相位 H = (1/√2)[[1,1],[1,−1]] 制造叠加:和/差分配 S = [[1,0],[0,i]] 相位门:β→iβ T = [[1,0],[0,e^{iπ/4}]] 相位门:β→e^{iπ/4}β 矩阵-向量乘法 输入:|ψ⟩ = [α, β]ᵀ 门:U = [[u00,u01],[u10,u11]] 输出:U|ψ⟩ new_α = u00·α + u01·β new_β = u10·α + u11·β 归一化检查: |new_α|² + |new_β|² ≈ 1 误差 < 1e-12 相位门验证:比较实部/虚部 概率不变,相位改变 Bell 态制备链路 初始态 |00⟩ [1, 0, 0, 0]ᵀ H ⊗ I 作用 (|00⟩+|10⟩)/√2 CNOT 作用 控制位=1 时翻转目标位 输出 |Φ⁺⟩ (|00⟩+|11⟩)/√2 测量:仅 00 或 11 各 50%,无 01/10

把这张图与前面的公式对照,可以看到:左侧是门的矩阵定义,中间是统一的乘法与检查流程,右侧是 H 门与 CNOT 门组合成 Bell 态的完整链路。只要矩阵-向量乘法正确,且门的作用顺序正确,Bell 态制备就能在模拟器中稳定复现。