SWAP 检验(Swap Test)

English · 简体中文

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

概述

测量两个纯态的重叠模方 \(F=|\langle a|c\rangle|^2\):受控交换把两态的对称分量干涉到探针上,

\[ P(\text{probe}=0) = \frac{1+F}{2}. \]

该操作不执行测量;采样与统计由宿主完成。

接口与输入模型

swap_test(first, second)

API 入口:swap_test

返回 Operation,寄存器为 left、right、left_work、right_work、probe。模块属性:

属性

含义

algorithm

"swap_test"

readout_register

"probe"

实现要点

两个制备只正向调用;条件交换(swap 于 control(probe) 之下)由算法生成。left/right 各带独立的 work 寄存器,复净由 SP 契约保证——标注 clean_work=False 的脏制备在生成期被拒绝。读出按上式从 probe 零概率解码 \(F\)。

验证方案

类别 C3(判定准则见 docs/development/validation-plan.md §2:输出分布等于闭式期望)。三层证据与 docs/development/validation-coverage.md 的 estimation.py 行一致:

  • 结构:tests/core/test_algorithm_expansion.py:AlgorithmExpansionTests,其中 test_measurement_algorithms_require_clean_preparation 覆盖脏制备拒绝路径(clean_work=False 抛 ValidationError)。

  • 数值:AlgorithmExpansionTests.test_swap_test_overlap——basis_state(1, 0) 与 basis_state(1, 1) 两两组合:同一基态(\(F=1\))时 \(P(\text{probe}=0)=1\),正交基态(\(F=0\))时为 \(1/2\),places=10。

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

见证技术为精确态矢量模拟取 probe 边际分布后对拍闭式,无采样断言。

已知缺口与计划阶段

本算法无单独缺口;estimation.py 登记的唯一缺口属于 QAE 的置信区间声明(见振幅估计),模块整体处于阶段 V2。

相关链接

数值验证

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

  • 实例:gate_state_prep 制备的纯态对,覆盖 \(F=1\)(同态)、\(F\approx 0\)(正交)、\(F=0.36\)(部分重叠)与双比特态 \(F=0.125\);重叠 \(F=|\langle a|c\rangle|^2\) 由 numpy 对输入幅度向量独立计算。

  • 后端路径:reference、rir-pysparq、adapter-pysparq、originir-ext 四条;\(P(\text{probe}=0)\) 对照 \((1+F)/2\)。

案例

规模

路径

指标值

同态 \((0.6,0.8)\)

各 1 位

全部四条

\(F=1\),\(P(0)=1\),误差 \(2.2\times10^{-16}\)

正交 \((0.6,0.8)\) vs \((0.8,-0.6)\)

各 1 位

全部四条

\(F\approx 0\),\(P(0)=0.5\),误差 \(1.1\times10^{-16}\)

部分重叠 $

0\rangle\( vs \)(0.6,0.8)$

各 1 位

全部四条

双比特态

各 2 位

全部四条

\(F=0.125\),\(P(0)=0.5625\),误差 \(1.1\times10^{-16}\)

复现命令:

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

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