3. 动态电路的表示模型

动态量子电路的本质特征是“电路结构随运行期经典信息而改变”。要编译和执行这类电路,第一步不是优化门序列,而是把“什么时候测、测完怎么分支、分支后哪些量子操作才合法”表达成机器可分析的形式。本节讨论三种互补的表示模型:时序图刻画时间轴上的事件顺序,控制流图刻画经典分支与循环的跳转结构,量子-经典混合依赖图刻画量子操作与经典计算之间的数据依赖。三者不是替代关系,而是同一动态电路在不同抽象层次上的投影。

一、时序图:把动态电路摊平到时间轴

时序图(Timing Diagram / Timeline Representation)以“时间片”为横轴,以量子比特和经典寄存器为纵轴,把每个操作标注在它实际发生的时刻上。与静态电路图不同,动态电路的时序图必须显式区分三类事件:量子门作用、测量发生、经典条件判定。测量事件是分界点——在它之前,后续门的位置是确定的;在它之后,后续门是否出现取决于测量结果。

形式化地,一个时序图可定义为五元组 T = (Q, C, E, τ, κ)。其中 Q 是量子比特集合,C 是经典寄存器集合,E 是事件集合,τ: E → ℝ⁺ 给出每个事件的逻辑时刻,κ: E → {gate, measure, classical, branch} 给出事件类型。对任意两个存在数据依赖的事件 e₁, e₂,必须满足 τ(e₁) < τ(e₂),这条约束称为时序一致性条件。它保证了时序图不会把“先测量后使用结果”错误地排成“先使用后测量”。

时序图的优点是直观,适合人工审查和调试;缺点是当分支嵌套较深时,时间轴会迅速膨胀,且难以直接回答“从当前状态出发,下一步可能跳到哪”。这正是控制流图要解决的问题。

二、控制流图:经典分支与循环的结构化表达

控制流图(Control Flow Graph, CFG)把动态电路中的经典控制逻辑抽象为有向图 G = (V, E, v₀, F)。节点 v ∈ V 表示一个基本块(basic block),即一段不含内部分支的连续操作序列;有向边 (u, v) ∈ E 表示从块 u 执行完后可能转移到块 v;v₀ 是入口块,F ⊆ V 是终止块集合。每个分支节点带有一个谓词 p: C → {0,1},它读取经典寄存器的当前值,决定走哪条出边。

以“测量后按结果施加修正门”为例:块 B₀ 执行 H(q0); measure(q0) → c0,随后进入分支节点 B₁,谓词为 c0 == 1。若为真,转移到块 B₂ 执行 X(q0);若为假,转移到块 B₃ 直接结束。CFG 的价值在于:编译器可以在图上做可达性分析、死代码消除和循环展开判断,而不必关心每个块内部具体是哪些量子门。

需要强调的是,CFG 只描述经典控制流,它不表达量子态如何演化。一个块内部可能包含多个量子门,但 CFG 把它们视为原子操作。因此 CFG 必须与依赖图配合使用。

三、量子-经典混合依赖图:数据依赖的精确刻画

混合依赖图(Hybrid Dependency Graph, HDG)是三者中信息最丰富的模型。它把量子操作、经典操作、测量和条件分支统一为节点,用有向边表示数据依赖或控制依赖。形式化定义为 D = (N, E_d, E_c, λ):N 是节点集合;E_d 是数据依赖边,表示一个节点的输出被另一个节点读取;E_c 是控制依赖边,表示一个节点的执行与否受另一个节点(通常是测量或经典比较)的结果支配;λ: N → Type 标注节点类型,取值包括 QGate、Measure、COp、Branch。

HDG 的关键约束是:若存在测量节点 m 到量子门节点 g 的控制依赖边,则 g 在 m 完成之前不得被调度。这条约束把“测量-反馈”延迟显式建模出来,是动态电路编译中判断能否并行、能否提前发射的重要依据。例如在表面码纠错中,多个测量结果需要先做经典异或运算,再决定是否施加 X 或 Z 修正,HDG 能清晰展示这条“测量→经典运算→条件门”的依赖链。

动态电路三种表示模型的对应关系 时序图 T q0 q1 c0 H M CNOT c0=1? X 时间轴 → 事件按 τ 排序 测量为分界点 控制流图 CFG B₀: H; M→c0 入口 v₀ B₁: c0==1? 分支谓词 p B₂: X(q0) 真分支 B₃: 结束 假分支 true false 基本块 = 无内部分支的连续操作 边 = 可能的控制转移 F = {B₃} 混合依赖图 HDG H(q0) M(q0)→c0 COp: c0 Branch X(q0) 数据依赖 E_d 控制依赖 E_c 节点类型 λ: QGate / Measure / COp / Branch 测量→条件门延迟显式建模

四、三种模型的协同使用

在实际编译流程中,三种模型通常按以下方式协同:前端解析动态电路源码后,先构建 HDG,因为 HDG 保留了最完整的依赖信息;随后从 HDG 中提取控制流,生成 CFG 用于分支分析和循环优化;最后在调度阶段,把 CFG 的每个基本块展开为时序图,用于确定门在时间轴上的具体位置和并行机会。反过来,时序图上的资源冲突(如两个门同时占用同一量子比特)会反馈到 HDG,触发依赖边的修正。

一个容易混淆的点是:CFG 的边是控制转移,HDG 的边是数据/控制依赖。前者回答“执行完这个块后可能去哪”,后者回答“这个操作必须等谁完成”。在动态电路中,一个测量节点可能同时是 CFG 中分支节点的前驱,也是 HDG 中条件门的数据源,但两条边的语义完全不同,编译优化时必须分别处理。

实践提示:当动态电路包含“测量结果经经典运算后再控制量子门”时,建议在 HDG 中把经典运算节点显式画出,不要把它折叠进测量节点。否则在计算关键路径时,会低估经典运算带来的延迟,导致调度结果过于乐观。

五、形式化定义的使用边界

上述三套形式化定义各有适用边界。时序图适合小规模、人工可读的场景,当分支深度超过 3 层时,时间轴会变得难以维护。CFG 适合控制逻辑复杂但量子操作相对规整的场景,例如带循环的变分算法;但它无法表达量子比特之间的纠缠依赖。HDG 表达能力最强,适合作为编译器的中间表示,但图规模较大,需要配合剪枝和分层策略使用。

选择哪种模型,取决于当前任务需要回答什么问题:需要看“什么时候发生”用时序图;需要看“可能跳到哪”用 CFG;需要看“谁依赖谁”用 HDG。三者共同构成了动态量子电路从源码到可执行调度的表示基础。