1. 课程导入与全景认知

量子算法常被描述为“对量子态施加一系列酉变换,再测量得到结果”。但真正把算法跑起来时,第一步往往不是设计酉门,而是把经典数据变成量子态。这一步就是本课程的核心:数据装载(data loading)与状态制备(state preparation)。前者强调把经典信息编码进量子寄存器,后者强调在给定误差与资源约束下,构造出目标量子态。二者共同决定了量子算法能否在真实硬件或模拟器上落地。

从量子计算栈看,数据装载位于“应用算法”与“底层编译/硬件执行”之间。上层是量子机器学习、量子化学、组合优化等应用;下层是量子编译、脉冲调度与物理量子比特。数据装载与状态制备既是算法输入接口,也是编译优化的关键对象:它决定了电路深度、两比特门数量、辅助比特开销,进而影响在含噪中等规模量子(NISQ)设备上的可行性。与量子编译的关系在于,编译会把状态制备电路进一步映射到硬件拓扑并做门合并、路由与调度;与量子模拟的关系在于,许多模拟任务本身就是制备特定哈密顿量基态或热态,状态制备直接决定模拟精度与成本。

本课程的主线可以概括为:目标态 → 编码方式 → 电路构造 → 资源与误差评估 → 在模拟器/硬件上验证。后续章节会围绕振幅编码、角度编码、基态制备、块编码、量子随机存取存储(QRAM)思想、变分制备与误差缓解逐步展开。

典型应用场景决定了数据装载的形态。量子机器学习中,经典特征向量常需编码为振幅或角度,例如把归一化特征 x = [0.6, 0.8] 编码为 0.6|0> + 0.8|1>;量子化学中,需要制备分子哈密顿量的近似基态,常用幺正耦合簇(UCC)或变分量子本征求解器(VQE)中的试探态制备;组合优化中,QAOA 需要制备均匀叠加态或特定约束子空间态。不同场景对精度、深度和辅助比特的要求差异很大,因此不存在“万能装载电路”。

为了建立全景认知,下面用一张关系图展示数据装载与状态制备在量子计算栈中的位置、输入输出以及它与编译、模拟、应用之间的关系。图中同时标出本课程后续会反复使用的关键对象:经典数据、编码映射、制备电路、资源评估与验证。

数据装载与状态制备:量子计算栈中的位置与关系 应用层 量子机器学习 量子化学 / 材料模拟 组合优化 / QAOA 数据装载与状态制备(本课程核心) 经典数据 向量 / 矩阵 / 哈密顿量 编码映射 振幅 / 角度 / 基 / 块编码 制备电路 门序列 / 辅助比特 / 测量 资源与误差 深度 / 保真度 / 开销 量子编译 映射到硬件拓扑 · 门合并 · 路由 · 调度 量子模拟 / 硬件执行 态矢量模拟 · 噪声模型 · 真实量子处理器 保真度/资源反馈 学习路径: 编码基础 → 振幅/角度制备 → 基态与块编码 → QRAM 思想 → 变分制备 → 误差缓解与验证

理解这张图后,可以进一步明确本课程的工具链概览。常见工具包括: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),需要检查角度精度、全局相位以及辅助比特是否被正确回收。

学习本课程时,建议每章都保留三个可复现要素:目标态或经典数据、制备电路或编码方式、验证指标(保真度、深度、门数)。这样在后续章节遇到 QRAM、块编码或变分制备时,可以快速比较不同方案的代价。

需要特别强调的是,数据装载与状态制备不是“预处理”那么简单。它直接决定算法复杂度中的关键项:振幅编码通常需要 O(2^n) 量级的经典预处理或 O(n) 深度电路;角度编码只需单比特旋转,但表达能力受限;块编码适合矩阵运算,却需要辅助比特和受控操作。选择哪种方式,取决于数据规模、目标精度、硬件连通性和可用辅助比特数。本课程后续会逐一展开这些权衡,并给出可运行的电路构造与验证方法。

最后给出本课程的学习路径建议:先掌握量子态与振幅的基本表示,再学习振幅编码与角度编码的电路构造;随后进入基态制备、块编码与 QRAM 思想;在具备一定电路构造能力后,学习变分状态制备与误差缓解;最终能够针对给定应用场景,选择合适的数据装载方案,并在模拟器或硬件上完成验证。工具链方面,建议以 Qiskit 为主、PennyLane 为辅,配合态矢量模拟与噪声模型,形成“构造—模拟—评估—改进”的闭环。