本节摘要:VQE 与 QAOA 代表量子算法的另一路线:不追求一次读出精确答案,而是让量子设备反复制备带参数的试探态、测量能量或期望值,把"该转多少角度"的决定权交给经典优化器。线路浅、对噪声宽容、当下几十比特设备就能跑——代价是精度受限且不再有复杂度保证。本节讲清两者的共同骨架、各自分工,以及它们与 Grover 的结构亲缘。
前三个算法有个共同的奢侈前提:线路要深、门要准。DJ 只几十个门还好;Grover 要嵌套多受控门;Shor 的模乘电路动辄上万门,还必须叠上纠错。而 2019 年以来的设备(所谓 NISQ,含噪声中等规模量子)单门错误率万分之几、相干时间百微秒量级,深度超过几百层的线路基本是在给噪声打工。
变分算法的应对思路:把算法拆成量子制备、经典决策两层。量子侧只跑浅线路,负责制造经典模拟不动的态并测出期望值;经典侧拿着测量结果调参数。两个世界各自干擅长的事,深线路的活儿交给循环去逼近,而不是一次性硬算。
VQE(变分量子特征值求解器)解决的问题是量子化学的刚需:给定分子哈密顿量 H,估计基态能量 E₀——能量越低结构越稳,算准它等于算准分子的性格。经典方法(如变分法配合行列式展开)在强关联体系上指数爆炸,而模拟量子系统的行为正是量子设备的天赋(还记得第一章费曼的初衷吗)。
依据是变分原理:对任何试探态 |ψ(θ)⟩,能量期望 E(θ) = ⟨ψ(θ)|H|ψ(θ)⟩ 永远不低于真基态能量。于是只需要一枚"下界探测器":
循环: ① 量子:制备试探态 |ψ(θ)⟩(参数化线路 ansatz,深度固定且浅) ② 量子:测量各泡利项的期望值(H 拆成可测项的加权和) ③ 经典:拼出 E(θ),交给优化器(梯度下降类)更新 θ ④ 直到 E 收敛 → 输出基态能量的上界估计
试探态设计的学问在②里被低估了:H 要拆成许多泡利串(如 Z₀Z₁、X₀Y₁Z₂)分别测量,项数随分子尺度增长——这项"测量开销"是 VQE 实际跑起来最重的成本之一,也是当前研究的主战场。
QAOA(量子近似优化算法)瞄准的是组合优化:给定目标 C(比如 MaxCut 图切割),求使 C 最优的输入串。它的线路结构直接脱胎于 Grover 的几何:
p 层重复,每层两个操作、两组参数 (γk, βk): exp(−i γk C) —— 按问题哈密顿量"演化",给好答案与坏答案不同的相位 exp(−i βk B) —— 混合操作(每比特的 X 旋转),防止过早坍缩 末端测量,统计里高概率出现近似最优解 层数 p=1 时与 Grover 的"相位翻转+扩散"几乎同构; Grover 把角度定为几何最优,QAOA 把角度交给经典优化器去调。
这就是 4.2 节预告的亲缘:同一套干涉几何,Grover 精确解角度,QAOA 经典搜索角度。p 增大表达能力变强,线路也变深——工程上通常在小 p(个位数)里找甜点。QAOA 不保证全局最优,它卖的是"在某些图结构上以高概率拿到好近似解",这正是物流、排班、金融组合类问题的实用定义。
| 维度 | VQE | QAOA |
|---|---|---|
| 目标问题 | 量子化学/材料基态能量 | 组合优化近似解 |
| 核心量 | 能量期望 E(θ) | 目标函数期望 ⟨C⟩ |
| 试探态来源 | 化学启发 ansatz(如 UCC 类) | 问题演化 + 混合层交替 |
| 参数角色 | 拟合态的形状 | 控制相位与混合的节奏 |
| 主要开销 | 测量项数(哈密顿拆分) | 层数 p 与图度数 |
| 主要风险 | 贫血高原(优化面平坦) | 表达力不足或线路超深 |
用 H₂ 分子的两比特缩并模型走一遍全流程(参数与哈密顿取标准教材值):
import numpy as np from scipy.optimize import minimize from qiskit import QuantumCircuit from qiskit.quantum_info import Statevector # H2 缩并哈密顿(单位:哈特里),拆成泡利串加权和 coeff = [(-1.0523, "II"), (0.3979, "IZ"), (-0.3979, "ZI"), (-0.0113, "ZZ"), (0.1809, "XX")] def energy(theta): qc = QuantumCircuit(2) qc.ry(theta[0], 0) # ansatz:一层参数化旋转(真实 VQE 更深) qc.cx(0, 1) qc.ry(theta[1], 1) state = Statevector(qc).data E = 0.0 for c, label in coeff: # 泡利串期望值(演示中用态矢量直接算;真机改为逐项测量统计) op = pauli_matrix(label) E += c * np.real(state.conj() @ (op @ state)) return E result = minimize(energy, x0=[0.0, 0.0], method="COBYLA") print(result.fun) # ≈ -1.857:与 H₂ 基态能量的文献缩并值一致
这段代码在真机上改写的地方只有一处:泡利串期望值不再用态矢量点乘,而是对同一批参数反复制备、按泡利基旋转后统计计数。量子负责"态与计数",经典负责"拼能量、调参数"——骨架与公式完全一致。
对变分算法要同时记住两句话。正面:它是当下唯一在真实硬件上有产出(分子能量基准、小规模优化对比实验)的算法家族,也是连接量子硬件与化学、金融行业的现实桥梁。反面:没有任何变分算法被证明在具体任务上超越最强经典算法;经典模拟器(张量网络)在中小规模上经常赢,"贫血高原"等优化病理也没有通用药方。把它理解为"量子硬件的试飞科目"比"颠覆计算"更接近事实——真正改变复杂度版图的仍是 Grover 与 Shor 那条线,等纠错到位。
算法章到此收官。接下来把镜头从数学转向物理:这些线路终归要在超导电路、离子阱里跑起来,硬件给了什么约束、又如何用纠错与软件生态兜底——第 5 章。