2. 量子门与指令的基础表示

量子程序从人写下的门级描述,到最终在超导或离子阱硬件上执行,中间要穿过好几层表示。理解这些表示之间的对应关系,是掌握“门集分解与硬件指令映射”的前提。本节把这条链路上的四类表示讲清楚:酉矩阵(数学语义)、量子门符号(电路图语言)、OpenQASM / QIR(中间表示)、硬件原生指令(物理脉冲或校准门)。

一、酉矩阵:门的数学语义

一个作用在 n 个量子比特上的量子门,其数学本质是一个 2ⁿ×2ⁿ 的酉矩阵 U,满足 U†U = I。酉性保证门操作可逆且保内积,即概率幅总长度不变。单比特门是 2×2 矩阵,最常用的几个如下(约定基矢 |0⟩=(1,0)ᵀ,|1⟩=(0,1)ᵀ):

X = [[0,1],[1,0]]          H = (1/√2)[[1,1],[1,-1]]
Z = [[1,0],[0,-1]]         S = [[1,0],[0,i]]
T = [[1,0],[0,e^{iπ/4}]]   Rx(θ) = [[cos(θ/2), -i sin(θ/2)],
                                     [-i sin(θ/2), cos(θ/2)]]

多比特门的关键是受控结构。CNOT 在计算基下是 4×4 矩阵,可写成 |0⟩⟨0|⊗I + |1⟩⟨1|⊗X,即控制位为 0 时目标位不变,为 1 时目标位翻转。矩阵表示的价值在于:门分解的正确性可以用矩阵乘法验证。例如要确认 H·T·H 是否等价于某个旋转,只需把三个矩阵相乘,与目标矩阵逐元素比较(允许全局相位差 e^{iφ})。这是后续判断“分解是否等价”的最终依据。

二、量子门符号:电路图语言

电路图是门级表示的图形化形式,每个符号对应一个矩阵。常见约定:单比特门画成带字母的方框(H、X、S、T、Rx 等);CNOT 用实心圆(控制)+ ⊕(目标)加竖线连接;CZ 用两个实心圆加竖线;Toffoli 用两个控制圆加 ⊕;测量用带指针的仪表框;SWAP 用两个 × 加连线。电路图从左到右表示时间顺序,同一列的门表示可并行执行。符号表示便于人阅读和快速检查线路结构,但它本身不含参数精度、时序约束和物理实现信息。

三、中间表示:OpenQASM 与 QIR

中间表示(IR)是连接“门级描述”和“硬件指令”的桥梁,核心作用是与具体硬件解耦,让上层优化和下层映射可以独立进行。

OpenQASM 是文本化的量子汇编语言,语法接近 C。一个典型片段:

OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0], q[1];
measure q -> c;

它声明量子寄存器 q 和经典寄存器 c,逐条给出门和测量。OpenQASM 2.0 的门集由 qelib1.inc 定义,包含 u1、u2、u3、cx 等;OpenQASM 3.0 增加了定时、脉冲和经典控制流。它的优点是直观、可读、工具链支持广(Qiskit、Cirq、tket 等都能导出)。

QIR(Quantum Intermediate Representation)基于 LLVM IR,把量子操作表示为对量子类型值的函数调用,例如 __quantum__qis__h__body(%Qubit*)、__quantum__qis__cnot__body(%Qubit*, %Qubit*)。QIR 的价值在于复用 LLVM 的优化、链接和代码生成基础设施,并支持经典-量子混合控制流。相比 OpenQASM 的“线路列表”风格,QIR 更接近编译器后端可处理的通用 IR。

两者的分工可以这样理解:OpenQASM 偏“人读、工具交换”,QIR 偏“编译器优化、跨后端生成”。实际流程中常见 OpenQASM → QIR → 硬件指令的逐级下降。

四、硬件原生指令格式

硬件不认识 H 或 CNOT,它只认识自己物理上能执行的操作。超导量子处理器通常提供两类原生指令:

  • 单比特门:通过微波脉冲实现,参数包括脉冲包络(如 DRAG)、幅度、频率、相位、持续时间。例如一个 X 门可能对应 20 ns 的高斯脉冲,Rx(π/2) 对应幅度减半的同类脉冲。
  • 两比特门:通过交叉共振(CR)或可调耦合器实现,参数包括脉冲形状、耦合强度、相位。典型 CNOT 时长约 200–500 ns,CZ 类似。

硬件原生指令的格式因平台而异。以 OpenPulse 为例,它用 play(frame, waveform)、shift_phase(frame, phase)、acquire(frame, duration) 等语句描述脉冲级操作,并绑定到具体的通道(drive、control、measure)。离子阱平台则常用激光脉冲的拉比频率和持续时间作为原生参数。关键点是:原生指令集通常很小(如 {Rx(±π/2), Rz(θ), CZ}),所有其他门都必须分解到这个集合上。

五、四层表示的对应关系

下面这张图把四层表示串起来,并标出每层的核心对象和转换动作。注意箭头方向是“从抽象到具体”的下降过程,而验证方向则相反——用矩阵乘法回验分解正确性。

量子门四层表示与下降/验证路径 ① 酉矩阵(数学语义) U†U = I,2ⁿ×2ⁿ 复矩阵;单比特 2×2,CNOT 为 4×4 受控结构 核心对象:X, H, Z, S, T, Rx(θ), CNOT, CZ, Toffoli ② 量子门符号(电路图语言) 方框=单比特门,实心圆+⊕=CNOT,双圆+竖线=CZ,仪表框=测量 核心对象:门符号、控制线、测量符号、SWAP 的 × 标记 ③ 中间表示(OpenQASM / QIR) OpenQASM:qreg/creg + h q[0]; cx q[0],q[1]; measure q->c; QIR:__quantum__qis__h__body(%Qubit*),基于 LLVM IR ④ 硬件原生指令(脉冲/校准门) 超导:DRAG 脉冲、CR 门、OpenPulse play/shift_phase/acquire 离子阱:激光脉冲拉比频率与持续时间;原生集如 {Rx(±π/2), Rz(θ), CZ} 符号化 编译/序列化 映射/调度 矩阵乘法回验分解正确性 下降方向 抽象 → 具体 验证方向 具体 → 抽象

理解这张图的关键在于:下降过程每一步都可能引入误差或约束。例如把 H 分解为 Rx(π/2)·Rz(π/2)·Rx(π/2) 时,矩阵乘积与 H 只差一个全局相位,这在物理上不可观测,可以接受;但把 CNOT 映射到 CR 脉冲时,耦合强度误差会直接降低门保真度。因此实际工具链会在每一层做验证:矩阵层比对等价性,IR 层做门集合法性检查,硬件层做校准数据核对。

实践提示:当你拿到一段 OpenQASM 代码,想确认它能否在目标硬件上运行时,按以下顺序检查:① 代码中出现的门是否都在目标硬件的原生门集或其可分解闭包内;② 两比特门涉及的两个比特之间是否存在物理耦合;③ 测量语句是否绑定了正确的经典寄存器。这三步能过滤掉大部分“语法正确但无法执行”的情况。