3.3 量子线路:把门排成时间线


3.3 量子线路:把门排成时间线

本节摘要:量子线路是量子计算的"汇编语言":横线是量子比特,从左到右是时间,门是线上的操作符号。本节讲清线路图的阅读约定,引入宽度、深度、门数三个成本指标,解释"同一层门可并行"的结构来源,并演示一个多比特线路如何翻译成矩阵乘积。第四章所有算法都以线路图呈现,这一节负责发阅读执照。

阅读约定:五分钟能数清的规则

线路图的全部语法只有几条,用贝尔态制备线路当例子:

q0: ──H──■──M─── │ │ q1: ─────X──M───

横线每条代表一个量子比特,最左边是初始态(通常全是 |0⟩);时间从左往右流动;单比特门是一个方块(如 H);CNOT 是"控制点 + 目标圈叉"的竖线连接(■ 指向 ⊕);测量符号放在线路末端,竖着的指针把结果接到经典寄存器线上。读图时先扫每条线上的门序列,再看竖线连接关系——两条信息合起来就是完整程序。

有一个易错点值得单独钉住:图上的先后就是物理上的先后,但矩阵书写顺序相反。线路 H 然后 CNOT,写成矩阵是 CNOT·H(右边的先作用)。初学时最省心的办法是挨个作用:先把 H 作用到态矢量上,再把结果喂给 CNOT,别急着合并大矩阵。

三本账:宽度、深度、门数

评价一个线路的成本,工程师看三个数:

指标 含义 为什么重要
宽度 使用的量子比特数 硬件配额,稀缺资源
深度 任一比特上门操作的最大层数 决定跑完前的退相干风险
门数 总操作次数 每个门都带误差,门数乘单门错误率 ≈ 成功概率上限

深度这个指标值得多解释一句。假设单门错误率是 0.1%(当前较好水平),一个 1000 门的线路,理想成功概率约 (0.999)^1000 ≈ 37%——还没算测量误差与串扰。这就是第四章反复强调"NISQ 设备只能跑浅线路"的量化含义。算法设计与硬件预算永远在同一张桌旁:Grover 迭代几轮就收手,VQE 优先短回路,都是被深度账本逼出来的设计。

图:深度与并行的关系

图:深度与并行的关系

并行性从哪来:不相邻就能同层

上图第 1 层的三个 H 门同时执行——它们作用在不同的比特上,互不干扰,物理上就是同时打出三路脉冲。调度器把互不冲突的门塞进同一层,深度因此可以远小于门数。这是量子线路唯一的"并行",和"叠加并行"是两回事:本节的并行是操作调度层面的,2.2 节讲的并行是状态空间层面的。新闻里两种"并行"经常混用,现在你能分清了。

与之对应,线路优化的一大主题是减少深度:合并相邻的门(X·X = I,直接抵消)、交换门顺序缩短关键路径、用更少的门实现同一单元功能。一个经典例子:SWAP 两个比特的状态,用 3 个 CNOT 搭出来,而不是想当然的更多——这类"标准积木"构成了编译器的模板库。

SWAP(a,b) 的标准实现(3 个 CNOT): CNOT(a→b) → CNOT(b→a) → CNOT(a→b) 验证(拿 |10⟩ 试):10 → 11 → 01 → 01 ✓ 两步后已是 01,第三步 01→01 拿 |01⟩ 试:01 → 01 → 11 → 10 ✓

从线路到矩阵:一张图的代数等价

任何无测量的线路都等价于一个大幺正矩阵 = 各层矩阵按序相乘。宽度 n 的线路对应 2^n × 2^n 矩阵——所以手算只对小线路可行,真实模拟依赖张量积结构。用代码建一遍本章的两个核心线路:

from qiskit import QuantumCircuit from qiskit.quantum_info import Statevector # 线路一:贝尔态制备(宽度 2,深度 2) bell = QuantumCircuit(2) bell.h(0) bell.cx(0, 1) print(Statevector(bell)) # (|00⟩ + |11⟩)/√2 的四个振幅:0.707, 0, 0, 0.707 # 线路二:三比特 GHZ 态(贝尔态的多比特推广) ghz = QuantumCircuit(3) ghz.h(0) ghz.cx(0, 1) ghz.cx(1, 2) print(Statevector(ghz)) # (|000⟩ + |111⟩)/√2:纠缠链

GHZ 态 (|000⟩+|111⟩)/√2 值得一算:三个比特要么全 0 要么全 1,个体全无确定态,整体却完全确定——3.1 节"拆不开"的多比特版。它也是验证多比特纠缠保真度的标准试金石。

测量放哪:线路的最后一块拼图

测量在图上永远尽量靠右,原因在 2.3 节讲过:坍缩不可逆,测完的线路段等于白设计。例外是"中途测量"技术——把不再需要的比特测掉、丢弃结果,反而能简化后续分析(隐形传态正是中途测量 + 末端修正的结构)。NISQ 时代还有一个实用细节:一次提交的线路跑成千上万发(shots),统计分布才可用,单发结果只是噪声里的一次抽样。

本节要点回顾

  • 线路三要素:横线(比特)、左到右(时间)、门符号(操作),外加末端测量。
  • 三本账:宽度吃硬件、深度吃相干时间、门数吃错误预算——深度通常是第一优化目标。
  • 并行的两种含义:同层门调度并行(本节)与状态空间叠加并行(2.2 节),别混。
  • 线路 = 矩阵乘积:会读图就会翻译代数,反之亦然。

读图执照到手。最后一节谈方法论:把这些门拼成算法时,设计者脑子里在想什么——干涉设计的通用模板。

延伸辨析:线路的三种"深读"法

**读法一:读数据流。**盯着每个比特的横线,问"这条线上的态最后变成了什么"。适合验证小线路,比如沿贝尔态线路逐线追踪,三十秒出结果。

**读法二:读关联结构。**不看单线,看竖线(双比特门)把哪些比特"缝"在了一起。被缝过的比特组构成纠缠簇,簇与簇之间无关联——大线路的哈希视图。优化器砍深度时先找"缝得最晚的簇",因为决定深度的是最晚合流的那条路径。

**读法三:读成本。**每个竖线记一次"贵"(双比特门错误率高),每个测量记一次"终点"。数完之后问:哪些门可以合并、哪些路径可以错峰。5.1 节的连通性参数决定错峰代价——同一张线路图,在不同拓扑的芯片上编译结果不同,这就是"读图要带着硬件读"的含义。

问题:线路图和代码哪个更本质

都不本质,线路才是本质——它是一个幺正算符的展开图示,代码与图都是它的投影。同一电路在 Qiskit 与 Cirq 里写法不同,画出来的图一致;反过来,同一代码改个编译参数画出的图也不同。所以团队沟通时用图(或等价的幺正描述),把代码当实现细节。这个习惯在排查"我的结果为什么和别人不一样"时能省掉一半扯皮——十有八九是编译与转译的差别,不是物理的差别。

练习:把隐传态线路画出来

用本节约定画出 3.2 节隐形传态的完整线路(三横线、两处贝尔测量、两个修正门),标注每条线的初态与末态。画完对照该节的 SVG 图自查。能独立画出这张图,等于同时掌握了线路读法、纠缠应用与测量的时机——一张图顶三章复习。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U