想象你经营着一家量子小餐馆。后厨里几位帮厨一字排开,每道菜都要依次经过切、焯、炒、盛四道工序——不过这些帮厨厨艺欠佳,每做完一道工序,手里的锅铲都会抖一下,撒出一点汤汁。撒出去的汤汁就是“噪声”,而一道菜从头到尾经过的工序数量,就是这条“后厨流水线”的深度。如果能把“切完再焯水”改成“切好直接下锅”,少一个工序就少一次手抖的机会,菜的味道自然更稳定。量子线路深度优化,做的就是这件事:在不改变菜品口味(计算结果)的前提下,尽量精简工序链,让量子程序少受“手抖”的折磨。从门融合、比特映射,到硬件拓扑适配、编译器自动化,一套完整的“排菜系统”正在把这些优化工作搬进现实。

岗位关联

掌握量子线路深度优化,是成为“量子-经典混合时代”编译器工程师与算法工程师的核心技能——它直接决定量子程序在真实硬件上的可执行规模与结果可信度。

目录
  1. 可视化演示
  2. 线路深度内涵
  3. 噪声累积效应
  4. 门融合优化
  5. 比特重排策略
  6. 深度宽度权衡
  7. 硬件拓扑适配
  8. 编译自动化
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示量子线路深度与噪声累积关系、门融合合并同类门降低深度、硬件拓扑感知SWAP插入优化三大步进模式交互动画。

本节配有交互动效(进入视口后自动加载,约 3KB)。

线路深度与噪声累积 深度为依赖路径最长门层数非门总数 并行门可降低深度但噪声随深度累积 F ≈ (1-p)^D 线路深度D直接决定执行保真度衰减

线路深度内涵

小餐馆越来越忙,你发现上菜速度取决于那条最长的小吃流水线——从备料到出餐,中间串起来的那串工序。只要链条上有一个帮厨动作慢半拍,整道菜都得等他。量子线路里也有这条“最长的链”,它有一个专门的名字:线路深度。

正式定义是在量子编译领域给出的:把量子线路看成一列门操作的集合,统计每个量子比特上串行经历的门操作层数,取所有比特中的最大值,就是线路深度。如果两个门作用在完全不同的比特上,它们可以同时执行、不计入彼此的深度;只有必须排队的前后依赖,才会让深度增加。

理解深度是全部优化的起点,因为它是噪声累积的“罪魁祸首”。回到后厨:帮手手抖的概率是固定的,工序链越长,整道菜被抖坏的风险就越大。所以深度优化的总目标很朴素——在不改变数学结果的前提下,把“最长工序链”压到最短。

Depth(C)=max⁡q∈Q∑g∈Cmg,q\displaystyle \text{Depth}(C)=\max_{q\in Q}\sum_{g\in C} m_{g,q}
这个公式在数“最长的那条工序链”:每个门 g 在比特 q 上执行就记 1,把所有门累加后取最大。
  1. 集合设定记线路为 C,量子比特集合为 Q,公式对 Q 中每个比特分别统计:
    C={g1,g2,…,gn},Q={q1,q2,…,qm}\displaystyle C=\{g_1,g_2,\dots,g_n\},\quad Q=\{q_1,q_2,\dots,q_m\}
  2. 指示量m_{g,q} 表示门 g 是否作用在比特 q 上——是则取 1,否则取 0:
    mg,q={1门 g 作用在比特 q0否则\displaystyle m_{g,q}=\begin{cases}1& \text{门 }g\text{ 作用在比特 }q\\0& \text{否则}\end{cases}
  3. 求最大值先对每个比特求和,再从所有求和中挑最大的,这个最大值就是线路深度:
    max⁡q∈Q(∑g∈Cmg,q)=Depth(C)\displaystyle \max_{q\in Q}\left(\sum_{g\in C} m_{g,q}\right)=\text{Depth}(C)

噪声累积效应

那次你仔细盯着帮厨们工作,发现问题不在动作本身,而在于次数太多。每切一刀,砧板上的料就少一点;每颠一次勺,锅里就泼出一点汁。量子比特上执行的每一个门,都不是完美的——有的是因为环境扰动让量子态发生偏移(相干噪声),有的是因为量子比特自身“记忆衰减”(退相干与能量弛豫),这些统称为噪声。

一个门出错的概率也许只有百分之一,但几十个门串起来,出错风险不是加法而是“连乘”。就像每道工序成功率为 99%,十道工序下来,全流程不撒汤的概率大约是 0.99 的十次方,约 90%。三道工序可能感觉不到差异,三十道工序就明显力不从心了。

这个“连乘”视角带来了错误预算的概念:整条线路允许的总错误率是固定的,那么每一层门能分到的“撒汤额度”就随深度增加而变薄。深度太长,还没跑到正确答案,汤已经洒完了。所以优化深度的本质,就是把宝贵的错误预算留给真正无法省略的“硬工序”。

F(C)=∏g∈C(1−ϵg)≈1−∑g∈Cϵg\displaystyle F(C)=\prod_{g\in C}(1-\epsilon_g)\approx 1-\sum_{g\in C}\epsilon_g
线路总保真度约等于各门成功率的连乘积;当每个门错误率都很小时,可近似为“1 减去所有错误率之和”。
  1. 单门保真度每个门 g 的错误率为 ε_g,那么它成功执行的概率是 1-ε_g:
    Fg=1−ϵg,0<ϵg≪1\displaystyle F_g=1-\epsilon_g,\quad 0<\epsilon_g\ll 1
  2. 连乘原则整条线路要成功,必须每一道门都成功,所以整体保真度等于所有单门成功率的乘积:
    F(C)=F1×F2×⋯×Fn=∏g∈C(1−ϵg)\displaystyle F(C)=F_1\times F_2\times \cdots\times F_n=\prod_{g\in C}(1-\epsilon_g)
  3. 一阶近似因为每个 ε_g 都很小,展开连乘后忽略高阶小量,可近似为 1 减去错误率总和:
    ∏g∈C(1−ϵg)≈1−∑g∈Cϵg\displaystyle \prod_{g\in C}(1-\epsilon_g)\approx 1-\sum_{g\in C}\epsilon_g

门融合优化

既然每道工序都会撒汤,最简单的省钱办法就是:把切菜和腌菜两步并成一步。量子线路中有一类操作天然支持这种“合并”——同一量子比特上紧挨着的两个旋转门,可以合成一个旋转角度更大的门。这就是门融合优化。

为什么可以合并?因为旋转门的数学本质是绕某个轴转动量子态,连续两次同轴旋转,等价于一次总角度旋转。就像把先顺时针转 30 度、再顺时针转 50 度,合并为一次顺时针转 80 度。角度没有变,但少了一个“转身”的动作。

门融合不是没有代价。把两个门合并成一个“大角度门”,在部分硬件上执行时间可能稍长,但总体仍然比执行两次操作省一层深度。更妙的是,这种融合不必局限于 R_z——含参旋转门、相位门在有编译器的辅助下都能找出可合并的“相邻工序”。回到后厨:能并一步的工序绝不分两步,这是流线优化的第一原则。

Rz(θ1)Rz(θ2)=Rz(θ1+θ2)\displaystyle R_z(\theta_1)R_z(\theta_2)=R_z(\theta_1+\theta_2)
同一比特上相邻的两个绕 z 轴旋转门,等价于一个旋转角度为两者之和的门。
  1. 旋转门定义R_z(θ) 表示把量子态绕布洛赫球 z 轴旋转 θ 角度的操作,矩阵形式为:
    Rz(θ)=(e−iθ/200eiθ/2)\displaystyle R_z(\theta)=\begin{pmatrix}e^{-i\theta/2}&0\\0&e^{i\theta/2}\end{pmatrix}
  2. 矩阵相乘连续执行两个旋转门,等价于两个矩阵相乘,对角矩阵相乘时对应元素直接相乘:
    Rz(θ1)Rz(θ2)=(e−iθ1/2e−iθ2/200eiθ1/2eiθ2/2)\displaystyle R_z(\theta_1)R_z(\theta_2)=\begin{pmatrix}e^{-i\theta_1/2}e^{-i\theta_2/2}&0\\0&e^{i\theta_1/2}e^{i\theta_2/2}\end{pmatrix}
  3. 合并结果指数部分合并为总角度,得到单一旋转门:
    e−iθ1/2e−iθ2/2=e−i(θ1+θ2)/2⇒Rz(θ1+θ2)\displaystyle e^{-i\theta_1/2}e^{-i\theta_2/2}=e^{-i(\theta_1+\theta_2)/2}\Rightarrow R_z(\theta_1+\theta_2)

比特重排策略

量子程序里,每道“菜”都有一个指定的灶台。但物理设备的灶台连接是固定的——门操作只能在相邻灶台之间进行。如果算法里说“比特 A 要跟偏远灶台的比特 B 相互作用”,就得先把其中一个帮厨手里的料搬到邻灶,这个“搬料”动作就是 SWAP 门。

SWAP 门把两个量子比特的量子态互换。它本身不是免费的:在常见硬件上,一个 SWAP 需要拆成三个 CNOT 门,而每个 CNOT 门又占两层深度。搬一次料,深度就悄悄涨一截。所以初始映射——程序里的逻辑比特该放到哪些物理比特上——直接决定了后续要搬多少次料。

聪明的排菜系统会做“SWAP 最小化”:在程序执行前就规划好每个逻辑比特落在哪个物理灶台上,让使用最频繁的比特对尽量相邻。这就好比大厨提前把常一起用的调料摆在同一格,而不是等炒菜时再满厨房跑着拿。好映射的功夫在动工之前。

Depth(C′)=Depth(C)+2k\displaystyle \text{Depth}(C')=\text{Depth}(C)+2k
经过 k 次比特搬运后,线路深度比原来多出约 2k 层(每次 SWAP 折算约 2 层门)。
  1. SWAP 分解一个 SWAP 门可以用三个 CNOT 门实现,在深度上约占两次串行操作:
    SWAP(a,b)=CNOT(a,b) CNOT(b,a) CNOT(a,b)\displaystyle \text{SWAP}(a,b)=\text{CNOT}(a,b)\,\text{CNOT}(b,a)\,\text{CNOT}(a,b)
  2. 搬运计数设线路中需要插入 k 个 SWAP 门,每个按平均 2 层深度计算:
    ΔDepth=2×k\displaystyle \Delta\text{Depth}=2\times k
  3. 总深度更新优化后的深度等于原深度加上搬运代价:
    Depth(C′)=Depth(C)+ΔDepth=Depth(C)+2k\displaystyle \text{Depth}(C')=\text{Depth}(C)+\Delta\text{Depth}=\text{Depth}(C)+2k

深度宽度权衡

为了减少工序链长度,你一度想了一个极端方案:所有灶台同时开火,每道工序都并行做。但后厨场地有限,灶台之间还得留出帮厨转身的空间——多开一个灶,就要多雇一个帮厨,多占一段操作台。宽度指的就是线路中可并行执行的量子比特数量,或者为压缩深度而引入的辅助量子比特数。

深度和宽度之间存在一个不可回避的下界:所有必须执行的操作数量是固定的,无论怎么安排,总工作量不变。深度越浅,意味着同一时刻要并行完成的操作越多,需要的比特资源(宽度)就越大。这就是深度-宽度权衡。

实践中的平衡准则是:在硬件比特数充裕时,大胆增加宽度来压缩深度;比特数紧张时,接受较深线路也不要引入过多的 SWAP 搬运。这就像小餐馆旺季,宁可让几道工序排队,也不要因为灶台太多挤到帮厨们无法转身。深度与宽度的平衡,本质是对“场地成本”与“翻台效率”的取舍。

LB=(Depth−1)×W\displaystyle \text{LB}=(\text{Depth}-1)\times W
线路的工作负载下界:深度减一后乘以宽度,必须不小于线路中所有门操作对的总占用单元数。
  1. 总工作量设线路中所有门作用到的“比特-层单元”总数为 N:
    N=∑g∈C∣qubits(g)∣\displaystyle N=\sum_{g\in C}|\text{qubits}(g)|
  2. 面积下界无论深度和宽度如何分配,两者的乘积(即线路“面积”)至少需要容纳全部单元:
    (Depth−1)×W≥N−(首层空闲)≈N\displaystyle (\text{Depth}-1)\times W\ge N-\text{(首层空闲)}\approx N
  3. 权衡表达式因此深度每减小 1,宽度就需相应增加约 N/Depth:
    W≈NDepth−1⇒Depth-1=NW⇒LB=(Depth−1)W\displaystyle W\approx \frac{N}{\text{Depth}-1}\Rightarrow \text{Depth-}1=\frac{N}{W}\Rightarrow \text{LB}=(\text{Depth}-1)W

硬件拓扑适配

量子硬件不是抽象的“万能后厨”,每个真实机器都有固定的灶台布局图——这个图叫耦合图。IBM 的机器常把量子比特排成一条线或一个环,Google 的处理器用矩形网格,有些新设备则直接做成双向连接的稠密图。指令只能在图上连了线的比特之间执行,这就是耦合图约束。

约束带来的麻烦是:算法说 A 和 B 要交互,但图上 A 和 B 隔了三个灶台。直接交互不可能,只能让中间的比特帮忙传话——每传一跳,就要插一组 SWAP 门。拓扑距离越长,通信开销越大,噪声累积越严重。

针对特定拓扑优化时,编译器还会做门方向调整——把只能在固定方向执行的 CNOT 门通过插入单比特门翻个方向,避免额外的 SWAP。这就像后厨里规定“只能从左往右传菜”,聪明的传菜员会在配菜时就把摆盘方向调好,省得途中多转一次手。拓扑感知的编译,是把后厨的真实动线刻进骨子里的优化。

SWAPcount(u,v)=⌈dist(u,v)2⌉\displaystyle \text{SWAPcount}(u,v)=\left\lceil\frac{\text{dist}(u,v)}{2}\right\rceil
在耦合图上,把数据从比特 u 搬到比特 v,约需要“距离的一半”次 SWAP——因为一次 SWAP 可以让量子态在图上移动两步。
  1. 耦合距离dist(u,v) 是耦合图上 u 到 v 的最短路径边数:
    dist(u,v)=min⁡{边数(u→v)}\displaystyle \text{dist}(u,v)=\min\{\text{边数}(u\to v)\}
  2. 单跳能力一次 SWAP 门把相邻两个比特的状态互换,等价于让量子态在图上“走一步”,但要交换两份数据,经分析一次交换可使目标状态前进两步:
    每次 SWAP 推进≈2 条边\displaystyle \text{每次 SWAP 推进}\approx 2\,\text{条边}
  3. 取整公式所需 SWAP 次数即距离的一半向上取整:
    ⌈dist(u,v)2⌉\displaystyle \left\lceil\frac{\text{dist}(u,v)}{2}\right\rceil

编译自动化

前面所有优化——门融合、映射、SWAP 最小化、方向调整——如果都靠人手算,一个 50 比特的线路能让人算到崩溃。好在量子编译器把这些手艺都自动化了。编译器管线把量子程序从高级语言逐步翻译到硬件指令,过程中每一步都在做优化决策。

一个成熟的量子编译器通常包含这些阶段:先把逻辑线路做门融合与旋转角归并,再根据硬件耦合图做初始映射,插入 SWAP 路由,最后做门方向调整和时序调度。每个阶段的决策都影响最终线路的深度、宽度和保真度,因此现代编译器把整体优化建模为一个带有约束条件的目标函数。

量子编译器发展的最高目标是全栈协同:算法层、线路层、硬件层共享同一个模型,让上层算法知道底层拓扑的限制,底层硬件也向编译器反馈真实的噪声标定数据。这就像大型连锁餐饮总部的中央排菜系统——它知道每家分店的灶台布局、每位帮厨的手抖概率,再统一安排菜品顺序。深度优化最终不是单点技巧,而是一整套自动化工程能力。

min⁡M,π  (α⋅D(M,π)+β⋅W(M,π))\displaystyle \min_{M,\pi}\;\left(\alpha\cdot D(M,\pi)+\beta\cdot W(M,\pi)\right)
编译优化目标:寻找最优的比特映射 M 和门调度 π,使深度 D 与宽度 W 的加权和最小。
  1. 决策变量M 是逻辑比特到物理比特的映射表,π 是门操作的执行顺序(调度):
    M:{逻辑比特}→{物理比特},π:门序列排序\displaystyle M:\{\text{逻辑比特}\}\to\{\text{物理比特}\},\quad \pi:\text{门序列排序}
  2. 代价函数给定映射和调度后,线路会有对应的深度 D(M,π) 与宽度 W(M,π):
    D=D(M,π),W=W(M,π)\displaystyle D=D(M,\pi),\quad W=W(M,\pi)
  3. 加权求和α 和 β 是两个非负权重,表示优化器对深度和宽度的偏好:
    α⋅D+β⋅W=总代价 C\displaystyle \alpha\cdot D+\beta\cdot W=\text{总代价 C}
  4. 求最小值在所有可行的映射与调度方案中,找出使 C 最小的那一组:
    min⁡M,π  C(M,π)\displaystyle \min_{M,\pi}\;C(M,\pi)

AI 应用场景

场景一:量子云平台的线路编译服务

阶段:量子-经典混合工作流中的前端编译与后端适配

解决的问题:用户提交量子算法时,往往不了解目标硬件的耦合图和噪声标定数据。传统方式下,用户手写线路直接上真机,深度大、噪声高,实验结果几乎不可用。编译器自动完成门融合、比特映射、SWAP 路由与拓扑适配,将线路深度压缩 30%-60%,让普通用户也能在真机上跑出可靠结果。

具体案例:科研工作者在 IBM Quantum 云平台提交一个 20 比特的变分量子特征求解器(VQE)线路。平台编译器先做门融合将 120 层压到 70 层,再根据耦合图把高交互比特映射到相邻位置,最后把不可执行方向的 CNOT 门翻转适配。最终线路执行保真度从 21% 提升到 68%,研究成果顺利发表。

场景二:量子化学模拟中的变分线路瘦身

阶段:混合算法-硬件协同优化

解决的问题:量子化学模拟里,精确度要求高,线路动辄数百层,远超当前硬件噪声容忍度。通过深度优化,把化学激发算符拆解出的旋转门序列合并,在保持模拟精度的前提下把线路压到可执行范围。

具体案例:一个氮气分子基态模拟任务,原始 UCCSD 线路深度为 480 层,保真度几乎为 0。编译器对线路进行旋转门归并和比特重排,将深度压至 160 层,同时利用辅助比特并行化部分测量,最终在真实超导硬件上以约 0.4 的保真度成功复现了势能曲线的关键拐点。

场景三:容错量子计算中的逻辑门调度

阶段:纠错码编译与逻辑门调度

解决的问题:表面码纠错计算中,逻辑门需要拆解为大量物理门组成的电路,深度优化直接影响逻辑门错误率低于阈值的可行性。编译器通过门融合与拓扑感知调度,把逻辑 CNOT 门的物理门数量压到最少。

具体案例:在表面码距离 d=7 的容错计算模拟中,通过 T 门优化与门融合,把逻辑 T 门的物理深度从 210 层降到 95 层,使模拟所需经典资源减少 55%,让容错研究团队能在有限超算资源下完成更大规模的量子纠错验证。

Python 演示

python63 行
"""量子线路门融合优化演示:用纯 Python 实现旋转门合并与深度计算"""import math  class QuantumGate:    """单个量子门:type 为 'rz'/'cx',qubits 是作用的比特列表"""    def __init__(self, gate_type, qubits, theta=0.0):        self.type = gate_type        self.qubits = qubits        self.theta = theta     def __repr__(self):        if self.type == 'cx':            return "CX(q%d,q%d)" % (self.qubits[0], self.qubits[1])        return "%s(%.2f) on q%d" % (self.type.upper(), self.theta, self.qubits[0])  class QuantumCircuit:    def __init__(self, n_qubits):        self.n_qubits = n_qubits        self.gates = []     def add_gate(self, gate_type, qubits, theta=0.0):        self.gates.append(QuantumGate(gate_type, qubits, theta))     def depth(self):        """线路深度:最忙比特上串行执行的层数"""        last_time = [0] * self.n_qubits        for g in self.gates:            start = max(last_time[q] for q in g.qubits)            for q in g.qubits:                last_time[q] = start + 1        return max(last_time)     def fuse_rz(self):        """门融合:同一比特上相邻的 rz 门合并旋转角"""        fused = []        for g in self.gates:            if (fused and g.type == 'rz' and fused[-1].type == 'rz'                    and fused[-1].qubits == g.qubits):                fused[-1].theta = (fused[-1].theta + g.theta) % (2 * math.pi)            else:                fused.append(g)        self.gates = fused  def main():    qc = QuantumCircuit(2)    qc.add_gate('rz', [0], 0.3)    qc.add_gate('rz', [0], 0.5)    qc.add_gate('cx', [0, 1])    qc.add_gate('rz', [1], 0.8)    qc.add_gate('rz', [1], 0.2)    qc.add_gate('rz', [0], 0.4)    print("优化前线路:", qc.gates)    print("优化前深度:", qc.depth())    qc.fuse_rz()    print("优化后线路:", qc.gates)    print("优化后深度:", qc.depth())  if __name__ == '__main__':    main()
目的:构建一条含 6 个门的双比特量子线路,用门融合把相邻 Rz 门的旋转角合并,展示深度从 4 降到 3 的优化过程。
  1. self.gates.append(QuantumGate(gate_type, qubits, theta))向线路末尾追加一个门,模拟“后厨工序排队”。
  2. last_time = [0] * self.n_qubits初始化每个比特的最晚可用时刻,用来数“工序链长度”。
  3. start = max(last_time[q] for q in g.qubits)当前门必须等所有涉及比特就绪后才能开工。
  4. last_time[q] = start + 1门执行后更新这些比特的“最近忙碌时刻”。
  5. fused[-1].theta = (fused[-1].theta + g.theta) % (2 * math.pi)把同类相邻门的旋转角相加并对 2π 取模,实现“合并工序”。
  6. qc.add_gate('cx', [0, 1])添加一个双比特 CNOT 门,它不能被融合,是必须保留的“硬工序”。
  7. qc.fuse_rz()一次扫描即完成全部可融合合并,展示编译器自动化的核心思路。

常见误区

误区初学者看到公式“深度越小噪声越低”,就认定优化目标只有一个——拼命压缩深度,甚至不惜引入大量辅助比特。他们觉得深度 3、宽度 20 的线路一定比深度 5、宽度 2 的线路好。

正解深度与宽度是跷跷板的两端。压缩深度往往要占用更多比特资源、增加更多 SWAP 搬运,而 SWAP 本身会引入额外噪声。就像小餐馆为了少排两次队,把八个灶台全塞进五平米的厨房,结果帮厨们互相撞胳膊,出菜反而更慢。优化要看“整体代价”——深度、宽度、SWAP 数量、单门错误率的综合加权,而不是单一指标。

为何常见:教材和论文常以深度为直接优化目标,容易让人忽略其他约束条件。

误区有人以为只要是相邻执行的两个门,编译器就能合二为一。于是他们期望任意两个单比特门都能融合,甚至把 CNOT 门也想当然地合并。

正解门融合有严格的代数前提——必须是同一比特上、可交换的同类旋转操作(如 Rz 与 Rz)。CNOT、Hadamard 等非旋转门不能直接合并;不同比特上的门还需考虑是否存在对易关系。这就像不是所有工序都能“并一步”——切菜和腌菜能合并,但切菜和炒菜必须分开,因为后者依赖前者的产出。

为何常见:可视化 demo 只展示了 Rz 融合的简单情形,初学者容易把它推广到所有门上。

误区学习比特重排时,有人觉得既然 SWAP 能把数据搬过去,那就先随便映射,反正编译器会加 SWAP 修正。他们没意识到每次 SWAP 都要付出深度和噪声代价。

正解SWAP 是“搬料”动作,搬得越多,汤汁撒得越多。好的初始映射能大幅减少 SWAP 次数;糟糕的映射可能让线路深度翻倍。编译器做 SWAP 最小化是从全局出发的优化决策,不是事后补救。这就像大厨不先把调料放到手边就开火,炒菜时才到处找盐,锅里的菜早糊了。

为何常见:初学映射时只关注“能不能连通”,忽略了“怎么连更省”。

误区不少人认为量子线路优化全靠“上真机调参”,每次改一版线路跑一次硬件,用实验结果的保真度来反推哪里需要优化。

正解深度优化主要靠编译器的静态分析:门融合、映射规划、拓扑适配都可在经典计算机上完成,不需要真机参与。真机实验只用于最终的噪声标定验证。就像中央排菜系统先在电脑上模拟好全部流程,真正开火前就能确定哪道菜不撒汤,而不是炒糊一盘再试一盘。

为何常见:噪声对量子计算的影响确实很大,让初学者误以为所有决策都必须依赖实验反馈。

面试题

Q1. 量子线路深度正式定义是什么?

单选题 · easy

  • A.线路中量子门的总个数
  • B.最忙比特上的串行门层数← 正确答案
  • C.所有比特上的门数之和
  • D.线路中辅助比特总数

答案:B。深度统计的是最长工序链——每个比特上串行执行的层数取最大。门总数只是规模,不是深度。就像后厨上菜时间由最长的工序链决定,而不是所有菜品的工序总数。

Q2. 线路深度增大时,噪声对结果的影响如何变化?

单选题 · easy

  • A.噪声线性下降
  • B.噪声呈指数增长← 正确答案
  • C.噪声完全不变
  • D.噪声只影响辅助比特

答案:B。噪声累积是连乘关系:整体保真度约等于各门成功率的乘积,门数增加时保真度指数下降,等效于噪声指数增长。每多一道工序就多一次“手抖”机会,成功率是乘法而不是加法。

Q3. 门融合优化适用的典型场景是?

单选题 · easy

  • A.同一比特上的相邻 Rz 旋转门← 正确答案
  • B.任意两个不同比特的 CNOT 门
  • C.所有不同类型的门任意合并
  • D.跨越整个线路的非相邻门

答案:A。门融合要求同一比特上相邻的同类旋转门,才能把角度相加。CNOT 双比特门不能融合,不同比特的门没有直接可加的旋转角,非相邻门之间隔着依赖更无法合并。

Q4. 一个 SWAP 门在典型超导硬件上等价于几个 CNOT 门?

单选题 · mid

  • A.一个 CNOT
  • B.两个 CNOT
  • C.三个 CNOT← 正确答案
  • D.四个 CNOT

答案:C。SWAP 的分解需要三个 CNOT:先正向后反向再正向。这也是为什么 SWAP 搬运在深度和噪声上都代价高昂——搬一次料相当于连续执行三次双比特门。

Q5. 关于深度与宽度的关系,以下哪种说法正确?

单选题 · mid

  • A.深度增大必然伴随宽度增大
  • B.深度减小必然免费获得更宽并行
  • C.深度与宽度存在乘积下界约束← 正确答案
  • D.深度与宽度完全相互独立

答案:C。总操作量固定时,(深度−1)×宽度 存在下界,减小深度就需增加宽度。二者是跷跷板,没有免费午餐。就像后厨面积固定时,灶台多了,排队就短,但场地和人力成本必然上升。

Q6. 初始映射阶段中,映射的目标是什么?

单选题 · mid

  • A.让所有逻辑比特使用同一物理比特
  • B.让高频交互比特在耦合图上尽量相邻← 正确答案
  • C.让所有 CNOT 门全部消失
  • D.使每个物理比特都只有单一操作

答案:B。好映射让交互频繁的比特对在耦合图上距离近,从而减少 SWAP 搬运。同一物理比特无法承载多个逻辑比特,CNOT 也不能被映射消除,映射优化的是“位置”而非“门本身”。

Q7. 耦合图上的拓扑距离为 4 的两个比特,按公式计算最少需要多少个 SWAP 门?

单选题 · hard

  • A.1 个
  • B.2 个← 正确答案
  • C.3 个
  • D.4 个

答案:B。SWAP 次数为距离的一半向上取整:⌈4/2⌉=2。每次 SWAP 把量子态推进两个拓扑步,距离 4 时搬两次即可。这就像每次传菜能跨两个灶台,中间隔四个灶台只需传两趟。

Q8. 以下哪些属于量子编译自动化的常见阶段?

多选题 · mid

  • A.门融合与旋转角归并← 正确答案
  • B.比特初始映射与 SWAP 路由← 正确答案
  • C.门方向调整与时序调度← 正确答案
  • D.经典数据加密与网络传输

答案:ABC。编译管线核心包含门融合、映射、路由、方向调整和调度。经典加密与网络传输是经典计算范畴的问题,与量子线路编译无直接关系。

Q9. 下列哪些因素会导致真实硬件上的量子门出现噪声?

多选题 · hard

  • A.环境的电磁扰动引起相干噪声← 正确答案
  • B.量子比特的 T1 能量弛豫与 T2 退相干← 正确答案
  • C.控制脉冲的振幅漂移← 正确答案
  • D.经典计算机的硬盘读写速度

答案:ABC。相干噪声来自环境耦合,T1/T2 弛豫是比特自身的记忆衰减,控制脉冲漂移也制造错误。硬盘速度是经典 IO 问题,不影响量子门噪声。

Q10. 优化目标公式 min(α·Depth + β·Width) 中,α 远大于 β 时编译器倾向于怎么做?

单选题 · extreme

  • A.尽可能增加宽度以压深度← 正确答案
  • B.完全忽略深度只保宽度
  • C.随意跳过映射直接调度
  • D.只优化单比特门的参数

答案:A。α 大意味着深度权重高,编译器宁可多用辅助比特(增大宽度)也要把线路压短,因为深度带来的噪声代价更昂贵。这相当于后厨宁愿多雇帮厨占用场地,也要确保翻台速度。