4. 量子门分解与基础门集选择
在量子算法电路优化中,我们最终要交付的不是抽象的酉矩阵,而是能够被目标硬件或模拟器执行的门序列。不同后端支持的“基础门集”并不相同:超导平台通常提供 CNOT 加若干单量子比特旋转门,离子阱平台可能提供 Mølmer–Sørensen 门或全连接的两比特门,而某些容错架构只允许 Clifford+T 门。因此,门分解是把算法层面的多量子比特门翻译成基础门集的过程,而基础门集选择直接决定了分解后的电路深度与门数。
本节的核心结论可以先用一句话概括:同一个逻辑门,在不同基础门集下的实现代价差异可能达到数倍,优化必须建立在“目标门集已知”的前提上。下面先讲分解的基本方法,再比较门集影响,最后给出可操作的实践流程。
多量子比特门如何分解为 CNOT 与单量子比特门
任意两量子比特酉门都可以分解为 CNOT 门与单量子比特门的组合,这是量子电路综合的经典结论。以最常用的受控-Z(CZ)和受控-NOT(CNOT)为例,它们本身就是基础门;而像 SWAP、受控旋转、Toffoli 这类门则需要显式展开。
SWAP 门的标准分解是三个 CNOT 首尾相接:CNOT(q0,q1) → CNOT(q1,q0) → CNOT(q0,q1)。受控旋转门 CRz(θ) 的常见分解为:在控制位前后各加一个 Rz(θ/2),目标位加 Rz(-θ/2),中间夹两个 CNOT。Toffoli(CCNOT)在仅含 CNOT 与单比特门的基础集下,标准分解需要 6 个 CNOT 加若干 T、H 门;若基础集包含 T 门,则 T 深度约为 5 层。这些数字不是装饰,而是后续门数统计的基准。
分解时有一个容易被忽略的细节:全局相位与相对相位。单量子比特门分解中常出现 e^{iφ} 因子,它在单独看某个门时可以忽略,但在受控操作中会变成可观测的相对相位,必须保留。实践中建议在分解后做一次酉矩阵等价性校验,而不是只靠肉眼检查门序列。
基础门集对深度和门数的影响
假设我们要实现一个受控旋转 CRz(π/4),目标硬件分别提供两种基础门集:门集 A 为 {CNOT, Rz, Ry, H},门集 B 为 {CNOT, T, H, S}。在门集 A 下,CRz(π/4) 可直接用 2 个 CNOT 加 3 个 Rz 实现,深度约 4 层;在门集 B 下,π/4 旋转需要分解为 T 门的组合,通常需要约 3 个 T 门加若干 H、S,CNOT 数量不变但单比特门数明显增加,深度可能上升到 6~8 层。这说明门数增加不一定来自 CNOT,单比特门的合成代价同样关键。
再看一个更贴近算法的例子:量子傅里叶变换中的受控相位门。若基础门集支持任意角度的 Rz,每个受控相位门只需 2 个 CNOT;若只支持 Clifford+T,则每个任意角度旋转需要合成到精度 ε,T 门数量随 1/ε 对数增长。因此在容错场景下,门数优化的重点从 CNOT 转向 T 门计数,这是选择门集时必须明确的评价指标。
分解工具与实践流程
实际工程中不建议手写全部分解。常用工具包括 Qiskit 的 transpile、Cirq 的 decompose、tket 的合成与路由,以及专门做 Clifford+T 合成的工具链。以 Qiskit 为例,可以先指定基础门集,再让编译器完成分解与优化:
from qiskit import QuantumCircuit, transpile
from qiskit.transpiler import Target
qc = QuantumCircuit(2)
qc.crz(3.14159/4, 0, 1)
# 指定目标基础门集:CNOT + 单比特旋转
basis = ['cx', 'rz', 'ry', 'h']
out = transpile(qc, basis_gates=basis, optimization_level=2)
print(out.count_ops())
print('depth =', out.depth())
运行后观察 count_ops 的输出,可以分别得到 cx、rz、ry、h 的数量;depth 给出电路层数。把 basis 换成 ['cx','t','h','s'] 再跑一次,对比两次结果,就能直观看到门集选择带来的差异。注意这里的数值属于示例性演示,实际结果取决于 Qiskit 版本与优化级别。
实践时建议按以下顺序推进:先固定逻辑电路与目标门集,再跑一次不做优化的分解作为基线,然后逐级提高 optimization_level,记录门数与深度的变化;若深度下降但门数上升,需要判断目标硬件更怕深度还是更怕门数。对含路由的电路,还要把 SWAP 插入带来的额外 CNOT 计入总账,否则比较会失真。
从图中可以读出关键判断:两种门集下 CNOT 数量可能相同,但单比特门的合成方式不同,导致深度出现明显差距。因此“门数优化”不能只盯着 CNOT,必须结合目标门集统计全部基础门,并把深度作为并列指标。