振幅放大(Amplitude Amplification)¶
English · 简体中文
类别 C3 · 模块
oracq.algorithms.common.search· 阶段 V1
概述¶
对任意态 oracle 的成功子空间做相干放大:设 StateOracle 的制备 \(A\) 以概率 \(a\) 产出成功态(成功条件 signal==0),迭代算子
每次把成功幅度旋转约 \(2\theta\)(\(\sin^2\theta=a\))。实现依据 Brassard 等人的振幅放大框架(arXiv:quant-ph/0005055,见算法目录"实现依据"节)。它是 Grover 搜索的推广:初态不必均匀,标记信息由 signal 寄存器而非相位 oracle 承担。
接口与输入模型¶
amplify_success(state, *, iterations=1)
API 入口:amplify_success
state:支持伴随调用的StateOracle(target/signal接口的态 oracle;signal 指示成功子空间,属 FO 幅度型访问)。非StateOracle输入在生成期抛ValidationError。iterations:非负放大次数(默认 1)。次数需要结合输入成功概率选择;过多迭代可能降低成功概率(docstring 口径),本入口不自动选次。
返回 StateOracle:公开接口与输入相同,成功条件仍为 signal==0。模块属性:
属性 |
含义 |
|---|---|
|
|
|
|
实现要点¶
先正向调用一次 \(A\) 制备初态;随后每次迭代为 reflect_zero(signal)(对 signal==0 的好子空间相位翻转,充当 \(S_{\mathrm{good}}\))→ \(A^\dagger\) → 关于 target+signal 全零态的正反射 → \(A\)。与 grover_iterate 的算子形状一致,差别只在标记来源:这里 \(S_{\mathrm{good}}\) 由 signal 寄存器本身承担,因此适用于任意来源的成功指示(如 QRAM 查询结果的判定位、算法工作区的检验位)。迭代以 repeat(iterations) 保存,不在生成或文本序列化阶段展开。
验证方案¶
类别 C3(判定准则见 docs/development/validation-plan.md §2:输出分布等于闭式期望)。三层证据与 docs/development/validation-coverage.md 的 search.py 行一致:
结构:
tests/core/test_algorithm_expansion.py:AlgorithmExpansionTests的构造与属性断言(require_instance校验 StateOracle、迭代次数非负)。数值:
AlgorithmExpansionTests.test_amplification_of_known_quarter_probability——构造 signal 上ry(2π/3)的态 oracle,成功概率 \(P(\text{signal}=0)=\cos^2(\pi/3)=1/4\);默认一次迭代后 \(P(\text{signal}=0)=1\)(\(\theta=\pi/6\),一次迭代转到 \(\sin^2(3\theta)=1\)),places=10。绑定:模块行登记为"—"。
见证技术为精确态矢量模拟取 signal 边际分布后对拍闭式,无采样断言。
已知缺口与计划阶段¶
无已知缺口(search.py 行缺口列为"—"),阶段 V1。
相关链接¶
数值验证¶
实验设计:构造成功子空间为 signal==0 的态 oracle(target 两位均匀叠加,信号位 \(R_y(3\pi/4)\),初始成功概率 \(a=\cos^2(3\pi/8)=\sin^2(\pi/8)\approx0.1464\),故 \(\theta_a=\pi/8\)),对 amplify_success 在 \(k=0\ldots3\) 上测零信号概率,对照 \(\sin^2((2k+1)\theta_a)\),四条后端路径(reference、rir-pysparq、adapter-pysparq、originir-ext)。序列覆盖放大(\(k=1,2\) 达 \(0.8536\))与过冲回落(\(k=3\) 回 \(0.1464\))。
案例 |
规模 |
路径 |
指标 |
数值 |
|---|---|---|---|---|
amplify-success-curve |
target 2 + signal 1,k=0..3 |
4 路径 |
成功概率最大误差 |
1.9e-15 |
各迭代数理论值:0.146447、0.853553、0.853553、0.146447,逐点复现。
复现命令:
PYTHONPATH=src /home/agony/projects/qcfd-dev/quantum-cfd-software/.venv/bin/python tests/verification/verify_search_walks.py
产物:out/verification/search_walks.json(案例 amplify-success-curve)。