振幅估计(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\) 的本征值为 \(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。模块属性:
属性 |
含义 |
|---|---|
|
|
|
|
|
|
读出 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;补齐后须同步覆盖矩阵。
相关链接¶
源码:
src/oracq/algorithms/common/estimation.pyAPI 参考:相位、振幅与重叠估计
验证矩阵:验证覆盖矩阵
数值验证¶
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-)。