2. 哈密顿量工程
变分量子本征求解器(VQE)的第一步,是把化学问题翻译成量子计算机能读懂的“语言”。这个翻译过程就是哈密顿量工程:给定一个分子,写出它的电子哈密顿量,再把它映射成量子比特上的泡利字符串之和。最终形式通常写成
H = Σk ck Pk,Pk ∈ {I, X, Y, Z}⊗n
其中 ck 是实数系数,Pk 是作用在 n 个量子比特上的泡利字符串。VQE 的每一次能量测量,本质上都是在估计这些 ck 与对应泡利期望值的加权和。因此,哈密顿量工程的质量直接决定了后续线路深度、测量次数和最终精度。
二次量子化:用产生湮灭算符写分子
在 Born–Oppenheimer 近似下,固定原子核位置,分子电子哈密顿量在二次量子化形式下写作
H = Σ_{pq} h_{pq} a†_p a_q
+ 1/2 Σ_{pqrs} h_{pqrs} a†_p a†_q a_r a_s + E_nuc
这里 a†p、ap 是自旋轨道 p 上的产生、湮灭算符,遵循费米子反对易关系 {ap, a†q} = δpq。单电子积分 hpq 描述电子在核势场中的动能与势能,双电子积分 hpqrs 描述电子间库仑排斥,Enuc 是核–核排斥常数。以氢分子 H₂ 在 STO-3G 基组下为例,4 个自旋轨道(2 个成键、2 个反键,各含自旋向上/向下)对应 4 个量子比特,单、双电子积分可由 PySCF 或 OpenFermion 的 MolecularData 直接算出。
二次量子化形式虽然紧凑,但算符作用在费米子福克空间上,量子计算机操作的是量子比特,二者之间需要一层映射。映射的核心任务是:把 a†p、ap 表示成泡利算符的乘积,同时正确编码费米子的反对易符号。
Jordan–Wigner 与 Bravyi–Kitaev 映射
Jordan–Wigner(JW)映射是最直观的方案。它把第 p 个自旋轨道的占据数编码到第 p 个量子比特的 |1⟩ 态,并用一条 Z 字符串记录前面所有轨道的占据情况,以产生正确的反对易相位:
a_p = (X_p + iY_p)/2 ⊗ Z_0 ⊗ Z_1 ⊗ … ⊗ Z_{p-1}
a†_p = (X_p − iY_p)/2 ⊗ Z_0 ⊗ Z_1 ⊗ … ⊗ Z_{p-1}
JW 的优点是局域性好、物理意义清晰,缺点是 Z 字符串长度随轨道序号线性增长,导致高序号轨道的算符权重(泡利字符串中非恒等因子的个数)较大,测量与线路实现代价偏高。
Bravyi–Kitaev(BK)映射通过一种“二分树”编码,把占据信息分散存储,使 ap 的泡利权重从 O(p) 降到 O(log p)。代价是占据数不再直接对应单个量子比特,需要额外的基变换才能读出粒子数。对于小分子(如 H₂、LiH 的活性空间),JW 与 BK 的字符串数量相近,JW 更易调试;对于轨道数较多的体系,BK 能显著压缩线路深度。工程上通常先用 JW 验证正确性,再视资源情况切换到 BK。
泡利字符串生成与系数计算
映射完成后,哈密顿量变成一组泡利字符串的线性组合。以 JW 映射下的 H₂ 为例,4 个自旋轨道对应 4 个量子比特,最终得到的泡利字符串通常包含:
- 恒等项 IIII:对应核排斥能与部分单电子积分贡献,系数为常数;
- 单 Z 项(如 ZIII、IZII 等):来自单电子积分 hpq 的对角部分,描述轨道能量;
- 双 Z 项(如 ZZII、ZIZI 等):来自双电子积分的库仑与交换贡献;
- XXYY、YYXX 等权重 4 项:来自双电子积分的非对角部分,是产生电子关联的关键项。
系数计算可以手工推导,也可以借助 OpenFermion 的 jordan_wigner() 或 bravyi_kitaev() 函数自动完成。以 OpenFermion 为例:
from openfermion import MolecularData, jordan_wigner
from openfermionpyscf import run_pyscf
geom = [('H', (0,0,0)), ('H', (0,0,0.74))]
mol = MolecularData(geom, 'sto-3g', 1, 0)
mol = run_pyscf(mol)
H_fermi = mol.get_molecular_hamiltonian()
H_qubit = jordan_wigner(H_fermi)
print(H_qubit)
输出是一串形如 (-0.8125+0j) [] + (0.1714+0j) [Z0 Z1] + … 的项。每一项的方括号内是泡利字符串,前面的复数即系数。工程上需要做三件事:
- 合并同类项:不同积分路径可能产生相同泡利字符串,必须累加系数,否则会重复测量;
- 裁剪小系数项:系数绝对值低于阈值(如 1e-8)的项可安全丢弃,减少测量基数量;
- 按测量基分组:对易的泡利字符串可以共享同一组测量线路,例如所有只含 I 和 Z 的项可在计算基下同时测量。
从字符串到可执行测量
得到泡利字符串列表后,VQE 的测量环节需要为每个字符串设计测量基。规则是:若字符串中某量子比特上是 X,则测量前对该比特施加 H 门;若是 Y,则施加 S†H 门;若是 Z 或 I,则保持计算基。这样,原本的泡利期望值就转化为计算基下的测量统计。
例如,字符串 XXYY 作用在 4 个量子比特上,测量线路为:q0 加 H,q1 加 H,q2 加 S†H,q3 加 S†H,然后统一测量。若两个字符串对易,可以合并到同一组测量中,减少总测量次数。对于 H₂ 的 15 个字符串,经过分组后通常只需 3~5 组测量基即可覆盖全部项。
哈密顿量工程的最终交付物是一份“泡利字符串清单”:每条记录包含字符串本身、系数、测量基分组编号。这份清单直接输入 VQE 的测量模块,决定了每次迭代需要执行多少组测量、每组测量需要多少 shots。对于 H₂,典型清单如下表所示(示例数据,来自 STO-3G 基组下的 JW 映射):
| 泡利字符串 | 系数(示例) | 权重 | 测量基分组 |
|---|---|---|---|
| IIII | -0.8125 | 0 | — |
| ZIII | 0.1714 | 1 | G1 |
| IZII | -0.1714 | 1 | G1 |
| IIZI | 0.1714 | 1 | G1 |
| IIIZ | -0.1714 | 1 | G1 |
| ZZII | 0.1205 | 2 | G1 |
| ZIZI | 0.1205 | 2 | G1 |
| XXYY | 0.0452 | 4 | G2 |
| YYXX | 0.0452 | 4 | G2 |
表中 G1 组只含 I 和 Z,可在计算基下直接测量;G2 组含 X、Y,需要施加相应的单比特门。实际工程中,系数值会随核间距变化,因此每次改变分子几何后都需要重新计算积分并更新清单。掌握这套从分子到泡利字符串的完整链路,是后续实现 VQE 线路和优化器的前提。