2. 二次量子化与分子哈密顿量构建
在上一节中,我们已经明确了量子计算求解分子电子结构问题的总体目标:给定分子几何构型,求出电子基态能量与波函数。本节要解决的是从"化学语言"到"量子比特语言"的翻译问题。这条翻译链的核心工具是二次量子化,它把多电子波函数的复杂反对称约束,转化为产生湮灭算符在占据数空间中的代数运算。
一、分子轨道:从原子轨道到电子"住所"
分子轨道(MO)是二次量子化的舞台。以氢分子 H₂ 为例,两个 1s 原子轨道线性组合(LCAO)得到成键轨道 σg 与反键轨道 σu:
σ_g = (1/√(2+2S)) (φ_A + φ_B)
σ_u = (1/√(2-2S)) (φ_A - φ_B)
其中 S 为重叠积分。每个空间轨道可容纳自旋向上(α)和自旋向下(β)两个电子,因此 H₂ 的最小活性空间包含 4 个自旋轨道。在量子计算中,我们通常先做 Hartree-Fock 计算得到一组正交归一的自旋轨道基,再将其作为二次量子化的单粒子基组。基组越大,电子相关能描述越准确,但所需量子比特数也线性增长——这是后续资源估计的起点。
二、产生湮灭算符与费米子代数
二次量子化用占据数表示多体态。对自旋轨道 p,定义产生算符 ap† 与湮灭算符 ap,它们满足反对易关系:
{a_p, a_q†} = δ_pq
{a_p, a_q} = {a_p†, a_q†} = 0
反对易关系直接编码了电子的费米子统计。特别地,当算符作用顺序交换时会出现负号,这正是波函数反对称性的代数体现。例如 ap†aq† = −aq†ap†。在量子线路实现时,这个负号必须通过 Jordan-Wigner 或 Bravyi-Kitaev 等映射,转化为量子比特上的 Z 算符串(宇称串),否则会得到错误的能量。
三、费米子哈密顿量:从分子到算符
在 Born-Oppenheimer 近似下,原子核坐标固定,电子哈密顿量写成二次量子化形式:
H = Σ_pq h_pq a_p† a_q + ½ Σ_pqrs h_pqrs a_p† a_q† a_r a_s + E_nuc
其中 hpq 是单电子积分(动能加核吸引),hpqrs 是双电子积分(电子排斥),Enuc 是核间排斥常数。单电子项描述电子在平均场中的运动,双电子项描述电子间的瞬时相关。对于 H₂ 的 4 自旋轨道活性空间,双电子积分张量有 4⁴=256 个元素,但利用对称性可大幅压缩。这一步的工程实现通常借助 PySCF 或 OpenFermion 的 MolecularData 接口,输入几何坐标与基组,自动输出积分张量。
四、从分子几何到量子比特哈密顿量的完整工程流程
下面给出一个可复现的工程链路,以 H₂、键长 0.735 Å、STO-3G 基组为例:
- 输入几何:提供原子种类与笛卡尔坐标,例如 H 原子位于 (0,0,0) 与 (0,0,0.735)。
- Hartree-Fock 计算:得到分子轨道系数与轨道能,确定占据轨道数。H₂ 有 2 个电子,占据最低的 σg 空间轨道。
- 积分变换:将原子轨道积分变换到分子轨道基,得到 hpq 与 hpqrs。OpenFermion 的
run_pyscf可自动完成。 - 二次量子化哈密顿量:输出费米子算符形式的 H,通常包含常数项、单激发项与双激发项。
- 费米子-量子比特映射:采用 Jordan-Wigner 变换,将 ap 映射为量子比特上的升降算符与 Z 串。4 自旋轨道对应 4 个量子比特。
- 量子比特哈密顿量:得到 H = Σ ci Pi,其中 Pi 是 Pauli 串(如 XYYX、ZZII)。H₂ 在 STO-3G 下通常得到 15 个 Pauli 项。
- 变分求解:用 VQE 或 QPE 在量子处理器上估计基态能量,与经典 FCI 结果对比验证。
该流程的关键判断点在于:映射方式影响线路深度与测量次数;活性空间大小影响精度与资源;积分阈值决定是否丢弃小项。工程上常先做一次经典 FCI 或 CCSD 计算作为基准,再评估量子线路的误差是否在化学精度以内。
五、工程实现中的关键细节
在实际代码中,OpenFermion 的 MolecularData 与 run_pyscf 可以一键完成从几何到费米子哈密顿量的转换。以下是一个最小示例:
from openfermion import MolecularData
from openfermionpyscf import run_pyscf
geometry = [('H', (0., 0., 0.)), ('H', (0., 0., 0.735))]
basis = 'sto-3g'
multiplicity = 1
charge = 0
molecule = MolecularData(geometry, basis, multiplicity, charge)
molecule = run_pyscf(molecule, run_scf=True, run_fci=True)
print("HF energy:", molecule.hf_energy)
print("FCI energy:", molecule.fci_energy)
print("Number of qubits:", molecule.n_qubits)
运行后,molecule.get_molecular_hamiltonian() 返回费米子算符形式的 H,再经 jordan_wigner 或 bravyi_kitaev 变换得到量子比特哈密顿量。判断流程是否正确的直接依据是:用经典 FCI 能量与量子线路估计值对比,误差应随线路深度增加而收敛到化学精度以内。若误差不降,优先检查映射后的 Pauli 串系数是否与费米子积分一致,以及是否遗漏了核排斥常数项。
至此,我们已经完成了从分子几何到量子比特哈密顿量的完整工程链路。这条链路的每一步都有明确的输入输出与可验证的中间结果,是后续 VQE、QPE 等量子算法能够正确运行的基础。