振幅估计(Amplitude Estimation)

English · 简体中文

类别 C3 · 模块 oracq.algorithms.common.estimation · 阶段 V2

概述

估计态制备 \(A\) 的好子空间概率:给定标记集合 \(M\subset\{0,1\}^n\),\(a=\sum_{i\in M}|\langle i|A|0\rangle|^2\)。实现依据 Brassard 等人的振幅放大/估计框架(arXiv:quant-ph/0005055,另见算法目录"实现依据"节):对 Grover 迭代算子

\[ Q = A\,(2|0\rangle\langle 0|-I)\,A^\dagger\, S_{\mathrm{good}} \]

做相位估计。\(Q\) 的本征值为 \(e^{\pm 2i\theta}\),\(\sin^2\theta = a\);读出相位栅格值 \(y\) 后按 \(\hat a=\sin^2(\pi y/2^p)\) 解码。查询复杂度 \(O(1/\varepsilon)\),相对经典 Monte Carlo 的 \(O(1/\varepsilon^2)\) 呈二次改进。

接口与输入模型

amplitude_estimation(preparation, marked, *, precision=3)
amplitude_from_phase(value, precision)

API 入口:amplitude_estimation、amplitude_from_phase

  • preparation:零输入、复净工作区的态制备(SP),且必须支持伴随与受控调用——生成期经 checked_state_preparation(adjoint=True, controlled=True) 检查契约。

  • marked:目标空间中好状态的整数编号集合。

  • precision:相位寄存器位数,范围 1..63。

返回 Operation,寄存器为 target、work、phase。模块属性:

属性

含义

algorithm

"amplitude_estimation"

readout_register

"phase"

decoder

"sin(pi*phase/2**precision)**2"

读出 phase 后调用 amplitude_from_phase(value, precision) 解码:返回 \(\sin^2(\pi\cdot\text{value}/2^p)\in[0,1]\),value 取 \(0..2^p-1\)。

实现要点

生成链为制备 → phase_estimation(grover_iterate(preparation, marked)):Grover 迭代由 search.py 的 grover_iterate 组装(标记来自 phase_marks 生成的相位 oracle,见 Grover 搜索),相位估计见量子相位估计。

镜像对称:本征相位 \(+2\theta\) 与 \(-2\theta\) 对应栅格点 \(y\) 与 \(2^p-y\),解码值相同——相位读出本身不区分两者。有限精度读出可能对应多个近似概率,采样与统计处理(含置信区间)由宿主负责,这是 docstring 的明确口径。

积分模块(integration.py 的 Heinrich 求和/积分)以本入口为读出核:比较器构造使好状态概率恰为 \(E[v]/2^w\),再做标准振幅估计。

验证方案

类别 C3(判定准则见 docs/development/validation-plan.md §2)。三层证据与 docs/development/validation-coverage.md 的 estimation.py 行一致:

  • 结构:tests/core/test_algorithm_expansion.py:AlgorithmExpansionTests 的构造与属性断言;制备的零输入/复净/伴随/受控契约违例在生成期抛错。

  • 数值:AlgorithmExpansionTests.test_amplitude_estimation_half_probability——uniform_state(1) 上标记 (1,)(\(a=1/2\) 恰在栅格上):相位分布全部质量落在 2 与 6 两点(\(p(2)+p(6)=1\),places=10),且 amplitude_from_phase(2, 3) 与 amplitude_from_phase(6, 3) 都精确等于 0.5。

  • 绑定:模块行登记为"—"。

见证技术为精确态矢量模拟取相位边际分布,逐点对拍闭式(无采样断言)。

已知缺口与计划阶段

与 docs/development/validation-coverage.md 一致:QAE 置信区间声明未见证——现有见证只验证了点估计(\(a=1/2\) 的栅格精确情形)。validation-plan §2 将"估计值落在理论置信区间"列为 QAE 类的标准见证技术,有限精度相位读出的误差分布与置信区间对拍尚未落地。estimation.py 模块因此处于阶段 V2;补齐后须同步覆盖矩阵。

相关链接

数值验证

tests/verification/verify_estimation.py 在真实后端上对本接口做分布级数值验证(QAE 部分共 7 个案例,全部通过)。实验设计:

  • 实例:uniform_state 均匀制备(\(a=1/2\) 恰在解码栅格上;\(a=3/8\) 不在栅格上)与 gate_state_prep 非均匀制备(\(a=0.3\)),精度 \(p=3..6\)。

  • 经典参考:相位分布对照 Grover 双峰闭式 \(P(y)=\tfrac12 D(y/2^p-\theta/\pi)+\tfrac12 D(y/2^p+\theta/\pi)\)(\(D\) 为 Dirichlet 核,\(\sin^2\theta=a\),独立推导);峰值解码误差对照 Brassard 界 \(|\hat a-a|\le 2\pi\sqrt{a(1-a)}/2^p+\pi^2/4^p\)。

  • 后端路径:reference、rir-pysparq、adapter-pysparq、originir-ext 四条;每条路径独立取 phase 边际后两两交叉对拍。

案例

规模

路径

指标值

\(a=1/2\)(栅格精确)

\(p=3,4,5\)

全部四条

双峰 \(y=2^{p-2}\) 与 \(2^p-2^{p-2}\) 各载 \(1/2\);decode_error \(=1.1\times10^{-16}\);max TVD \(\le 3.3\times10^{-15}\)

\(a=3/8\)(栅格外)

\(p=4,5,6\)

全部四条

decode_error \(=0.0663/0.0275/0.0201\),Brassard 界 \(0.2287/0.1047/0.0499\);max TVD \(\le 1.9\times10^{-14}\)

\(a=0.3\)(非均匀制备)

\(p=5\)

全部四条

decode_error \(=0.00866\),界 \(0.0996\);峰概率 \(0.4851\);max TVD \(=1.2\times10^{-15}\)

复现命令:

PYTHONPATH=src /home/agony/projects/qcfd-dev/quantum-cfd-software/.venv/bin/python tests/verification/verify_estimation.py

产物路径:out/verification/estimation.json(案例名前缀 qae-)。