1. 课程导入与全景认知
量子算法常被描述为“对量子态施加一系列酉变换,再测量得到结果”。但真正把算法跑起来时,第一步往往不是设计酉门,而是把经典数据变成量子态。这一步就是本课程的核心:数据装载(data loading)与状态制备(state preparation)。前者强调把经典信息编码进量子寄存器,后者强调在给定误差与资源约束下,构造出目标量子态。二者共同决定了量子算法能否在真实硬件或模拟器上落地。
从量子计算栈看,数据装载位于“应用算法”与“底层编译/硬件执行”之间。上层是量子机器学习、量子化学、组合优化等应用;下层是量子编译、脉冲调度与物理量子比特。数据装载与状态制备既是算法输入接口,也是编译优化的关键对象:它决定了电路深度、两比特门数量、辅助比特开销,进而影响在含噪中等规模量子(NISQ)设备上的可行性。与量子编译的关系在于,编译会把状态制备电路进一步映射到硬件拓扑并做门合并、路由与调度;与量子模拟的关系在于,许多模拟任务本身就是制备特定哈密顿量基态或热态,状态制备直接决定模拟精度与成本。
典型应用场景决定了数据装载的形态。量子机器学习中,经典特征向量常需编码为振幅或角度,例如把归一化特征 x = [0.6, 0.8] 编码为 0.6|0> + 0.8|1>;量子化学中,需要制备分子哈密顿量的近似基态,常用幺正耦合簇(UCC)或变分量子本征求解器(VQE)中的试探态制备;组合优化中,QAOA 需要制备均匀叠加态或特定约束子空间态。不同场景对精度、深度和辅助比特的要求差异很大,因此不存在“万能装载电路”。
为了建立全景认知,下面用一张关系图展示数据装载与状态制备在量子计算栈中的位置、输入输出以及它与编译、模拟、应用之间的关系。图中同时标出本课程后续会反复使用的关键对象:经典数据、编码映射、制备电路、资源评估与验证。
理解这张图后,可以进一步明确本课程的工具链概览。常见工具包括:Qiskit(QuantumCircuit.initialize、StatePreparation)、PennyLane(qml.MottonenStatePreparation、qml.BasisStatePreparation)、Cirq(状态制备与量子比特路由)、以及 QuTiP 用于小规模态矢量验证。实际教学中,我们通常先用态矢量模拟器验证目标态与制备态的保真度,再统计电路深度与两比特门数量,最后在含噪模型下观察保真度衰减。
以一个最小示例说明“实际怎么做”。假设目标二量子比特态为 |ψ> = 0.5|00> + 0.5|01> + 0.5|10> + 0.5|11>,即均匀叠加态。在 Qiskit 中可以写:
from qiskit import QuantumCircuit
import numpy as np
qc = QuantumCircuit(2)
qc.h(0)
qc.h(1) # 制备均匀叠加态
print(qc.draw())
若目标态为 |ψ> = 0.6|00> + 0.8|11>,则不能仅靠 H 门完成,需要先计算振幅对应的角度。设 θ = 2·arccos(0.6) ≈ 1.855 rad,可用 ry(θ, 0) 配合受控门构造。此时应观察:态矢量模拟器输出的振幅是否与目标一致;保真度 F = |<ψ_target|ψ_prepared>|² 是否接近 1;电路深度是否随比特数增长过快。若保真度低于阈值(例如 0.99),需要检查角度精度、全局相位以及辅助比特是否被正确回收。
需要特别强调的是,数据装载与状态制备不是“预处理”那么简单。它直接决定算法复杂度中的关键项:振幅编码通常需要 O(2^n) 量级的经典预处理或 O(n) 深度电路;角度编码只需单比特旋转,但表达能力受限;块编码适合矩阵运算,却需要辅助比特和受控操作。选择哪种方式,取决于数据规模、目标精度、硬件连通性和可用辅助比特数。本课程后续会逐一展开这些权衡,并给出可运行的电路构造与验证方法。
最后给出本课程的学习路径建议:先掌握量子态与振幅的基本表示,再学习振幅编码与角度编码的电路构造;随后进入基态制备、块编码与 QRAM 思想;在具备一定电路构造能力后,学习变分状态制备与误差缓解;最终能够针对给定应用场景,选择合适的数据装载方案,并在模拟器或硬件上完成验证。工具链方面,建议以 Qiskit 为主、PennyLane 为辅,配合态矢量模拟与噪声模型,形成“构造—模拟—评估—改进”的闭环。