Pauli 可观测量
适用版本 · ArcQML 0.1.0
本页目录
6.1 PauliString
PauliString 表示若干 PauliOp 的张量积,只存储非 I 项,并按 qubit 下标排序。构造时检查 qubit 范围和重复量子比特。identity、single、x、y、z 提供快捷构造。两个 PauliString 在同一 qubit 上同时非 I 且 Pauli 不同的位置数量为偶数时对易。
multiply(rhs) 返回 (复相位, 结果 PauliString)。这是 Pauli 代数辅助功能;SparsePauliOp 的公开系数则被限制为有限实数,因此可观测量期望值是实数。
6.2 SparsePauliOp 与编译缓存
SparsePauliOp 是 PauliTerm 的集合,每个 term 为有限实数 coefficient 和 PauliString。Hamiltonian、PauliSum、PauliObservable 是它的类型别名。构造时要求 num_qubits 非零且所有项的量子比特数一致;scale 和 simplify 也拒绝非有限因子或非法 tolerance。
首次进行状态向量计算时,ArcQML 会为 SparsePauliOp 准备可复用的执行表示:对角项可以合并,非对角 Pauli 串会转换为适合 Runtime 执行的元数据。增加 term 会使已有缓存失效;clone 复制可观测量定义,但可重新生成的执行缓存不作为持久数据复制。因此,在训练循环中复用同一个 Hamiltonian,可以避免每轮重复准备相同的执行信息。
let mut h = SparsePauliOp::single(2, 0usize, Pauli::Z, 0.5)?;
h.add_pauli_string(-1.0, PauliString::x(2, 1usize)?)?;
// H = 0.5 Z(0) − 1.0 X(1)
6.3 期望值语义
对于当前纯态,单态模拟器的 expectation_observable 返回 F64 标量 Tensor;batch 版本返回 shape 为 [B] 的 F64 Tensor,每个元素对应一行初态。期望值定义为:
run 创建的可微路径会用于伴随反向,以避免再次构造同一可观测量作用结果。