量子算法实现验证计划(审阅稿)

English · 简体中文

本文档系统规划 oracq 的算法验证体系:先按"正确的判定方式"对全部算法分类,再为每一类规定标准见证技术,最后给出全算法验证矩阵与实施路线。审阅重点:第 2 节的分类是否完整、第 4 节的横切机制是否值得作为基础设施投入、第 5 节的阶段划分与优先级。

1. 验证总原则

  • 验证对象是 RIR 程序的语义。算法是生成器,见证必须作用在生成的程序上(经参考模拟器或真实后端执行),而不是作用在生成器的内部数据结构上。

  • 每个算法至少三层证据:结构合法(IR 校验、签名、契约属性)、小规模数值见证(参考模拟器对拍解析解或经典参考)、可绑定性(抽象声明经 bind 绑定后语义不变)。

  • input model 三层一致性是本仓库的特有不变量:同一算法的 abstract / gate / qram 绑定必须产生一致的可观察语义(允许 QRAM 字宽量化误差,需给出误差界)。

  • 确定性优先:概率性断言必须落在分布层面(闭式期望、支撑集、矩),禁止单一样本阈值断言;模拟必须使用固定种子或精确态矢量。

  • 现有层级保持:L0 静态检查(ruff、布局、文档 warning-as-error)→ L1 结构 → L2 数值见证(tests/core)→ L3 对拍目录(applications/catalog.py)→ L4 真实后端(tests/integration,uniqc/pysparq 真机对拍,不用 mock)→ L5 文档 doctest。

2. 算法分类(按"正确"的判定方式)

类别

判定准则

标准见证技术

主要风险

C1 精确离散语义

输出分布/作用酉与真值表或精确构造逐点相等

穷举小实例全输入对拍;酉性恒等式 W†W=I;零空间/秘密串精确恢复

基本无 flaky

C2 近似连续语义

作用算子 ≈ 目标连续函数,误差有显式上界

与经典参考(解析解/矩阵指数/高精度数值)在容差内比较;收敛性扫描:误差 vs 度数/κ/Δt 拟合理论率

容差选取掩盖系统误差;数值病态(如 QSP 高阶合成)

C3 概率分布语义

输出分布等于闭式期望(均值、方差、支撑集)

精确态矢量求分布,逐结果概率对拍闭式(Krawtchouk/二项等);QAE 类验证估计值落在理论置信区间

采样抖动 → 禁止样本断言,只用精确分布

C4 启发式/优化语义

严格优于随机基线,且小实例达到已知最优/理论分数

与随机猜测期望的分布级比较;小实例穷举最优解对拍;理论分数公式对拍

边界断言抖动(C3 类 DQI 已发生一次:恰好等于基线时 assertGreater 失败)

C5 数据访问层

查询语义逐点正确 + 三层绑定一致 + 复净

逐地址真值表对拍;abstract/gate/qram 三绑定一致性;LocalExit 强制复净检查;叠加态查询边缘分布检查

QRAM 量化误差需显式误差界

C6 组合骨架

组件契约满足 + 端到端小实例语义正确 + bind 不变

端到端模拟 + 绑定前后结果一致 + 结构属性(寄存器布局、Repeat 不展开)检查

组件各自正确但组合语义错位(寄存器映射错误)

3. 全算法验证矩阵

状态:✅ 已有充分见证;🟡 有见证但有缺口;❌ 缺见证。模块按分层列出。

infrastructure / 数据访问层(C5)

模块

内容

状态

缺口与计划

oracles.py

XorDatabase、StatePreparation、SparseAccess、BlockEncoding 三层

✅

补"三绑定一致性"参数化测试(同一声明逐绑定对拍),目前各绑定独立见证

data_loading.py

QROM / Select-Swap

✅

资源公式已对拍;建议把 qrom_cost 纳入目录报告属性

mathfunc/

经典函数→可逆线路

✅

补定点量化误差界的显式见证

prepare_select.py

PREPARE/SELECT、alias

✅

alias 的 clean_work=False 已诚实标注;补 alias 三绑定一致性

精确离散算法(C1)

模块

算法

状态

缺口与计划

oracle_algorithms.py

DJ/BV/Simon

✅

—

fourier.py

QFT、QFT 加法

✅

—

arithmetic.py

定点加减乘、布尔网络

✅

—

number_theory.py

模乘、order finding

✅

小规模见证已注明不可外推为完整 Shor

error_correction.py

重复码

✅

—

walks.py

coined cycle walk

✅

—

graph_walks.py

邻接 oracle、Szegedy、MNRS

✅

环的失败已证实为理论结果;补 Johnson 图后需新见证(element distinctness)

近似连续算法(C2)

模块

算法

状态

缺口与计划

transforms.py

qubitization walk、QSVT 序列、OAA

✅

序列约定已由 qsvt.py 钉死(逐点一致 1e-10)

qsvt.py

相位合成、求逆、过滤、HS 模拟、定点搜索

✅

收敛性扫描缺失:误差 vs 度数/κ 的批量曲线未自动化;合成度数病态边界(≳16)已有负例覆盖:tests/core/test_qsvt.py:PhaseSynthesisTests.test_input_validation 与 TransformWitnessTests.test_transform_input_validation(含奇偶性违例、

hamiltonian.py

Trotter、Taylor、hamsim

✅

Trotter 阶数误差率未做扫描

sparse.py / block_encoding.py

稀疏 BE、BE 代数

✅

—

qlss.py

CKS、Costa

🟡

有范式见证;缺与 HHL 论文参考值的端到端对拍案例(可入目录)

ode.py / lchs.py / cbmd.py / schrodingerization.py / carleman.py

ODE/PDE 求解器

🟡

各自有见证;缺统一的"解析可解 ODE 族"收敛性基准(同一问题过全部求解器)

sde.py

Fokker–Planck

✅

OU 矩对拍;补 SDE 求解器与 LCHS 的端到端目录案例

density.py

纯化、Gibbs

✅

收敛扫描已补:tests/core/test_density.py:GibbsTests.test_error_convergence_decreases(error ∈ {0.4,0.2,0.1} 单调不增+每档≤error,实测 5.6e-4/8.7e-5/8.7e-5)与 test_error_bound_uniform_in_beta(β ∈ {0.2,0.5,1.0} 网格每点 ≤0.1)

lowrank.py

DF/THC → BE

✅

α 上界紧性已补:tests/core/test_lowrank.py:DoubleFactorizationTests.test_alpha_matches_closed_form_eigenvalues(2×2 闭式独立对拍 places=10)、test_df_alpha_tighter_than_pauli(DF α=1.4 ≤ Pauli α=1.5);ThcTests.test_thc_alpha_matches_hand_computed_bound(THC α=1.996 独立手算)

概率分布算法(C3)

模块

算法

状态

缺口与计划

estimation.py

QPE、QAE、量子计数、Hadamard/SWAP test

✅

QAE 置信区间声明未见证(只验证了点估计)

search.py

Grover、振幅放大

✅

—

integration.py

Heinrich 求和/积分

✅

闭式均值对拍 + heinrich_rate 参数校验已有见证(tests/core/test_integration.py:SumPreparationTests / QuantumSumTests / RateTests)

gradient.py

Jordan 梯度

✅

线性精确 + 扰动收敛已有见证(tests/core/test_gradient.py:GradientTests.test_perturbed_linear_concentrates_with_grid_bits 含失败概率衰减率 q_{m+1} ≤ 0.34·q_m)

qpca.py

QPCA、密度矩阵指数化

✅

特征值读出峰对拍 + Δt 一阶误差率已有见证(tests/core/test_qpca.py:DensityMatrixExponentiationTests / QpcaTests)

启发式/优化算法(C4)

模块

算法

状态

缺口与计划

variational.py

QAOA-MaxCut、VQE、ansatz

✅

单边见证;补"达到小实例最优割"的强见证

dqi.py

DQI

✅

分布逐点对拍闭式(Krawtchouk);identity 译码器基线断言已修为允许边界等值

应用层

模块

内容

状态

缺口与计划

qfvm.py / qham/

QFVM、QHAM

✅

目录对拍已有

catalog.py / gallery.py

33 案例对拍目录

✅

新算法(qsvt 求逆、graph_walks 搜索、data_loading、integration、qpca)未登记

4. 横切验证机制(基础设施投入项)

  1. 不变量测试库(新建议,tests/core/witness.py 或类似):

    • assert_unitary(program):参考模拟器上 W†W=I(抽样基态)。

    • assert_uncomputation(program, work_regs):工作位复原(复用 LocalExit 机制)。

    • assert_bind_invariant(abstract_program, bindings):同一开放声明的各绑定产生一致语义(误差界参数化)。

    • assert_block_equals(be, matrix, alpha):BE 的 (0,0) 块对拍。 收益:新算法见证从"各写一套"变为声明式组合,且回归口径统一。

  2. 确定性策略(规则化):所有概率断言必须是对精确模拟分布的闭式对拍;理论值恰好落在断言边界时用 ≥/≤ 加数值容差,不允许严格不等(DQI 边界案例已按此修复)。

  3. 收敛性扫描框架:对 C2 类算法提供参数扫描工具(误差 vs 度数/κ/Δt),断言拟合斜率 ≥ 理论率的下界;结果存 JSON 供 validation.json 汇总。

  4. 资源估算对拍:凡提供成本函数(qrom_cost、QSP 度数公式、Trotter 步数)的模块,生成程序的结构属性必须与成本公式一致(双向检查)。

  5. 目录登记规范:新算法完成后必须登记 catalog 案例(gate/qram 两版输入),并接入 tests/integration 的真实后端对拍(不用 mock)。

5. 实施路线

阶段

内容

前置

V1

不变量测试库(4 个断言原语)+ 在途模块(density/gradient/lowrank/integration/qpca)的见证按矩阵要求补齐(已完成,0.x 迭代)

无

V2

收敛性扫描框架 + qsvt/hamsim/ODE 求解器的收敛基准接入 validation.json

V1

V3

catalog 登记新算法(qsvt 求逆、MNRS 搜索、Select-Swap、Heinrich 积分、QPCA)+ tests/integration 真实后端对拍扩展

V1

V4

三绑定一致性参数化测试铺开(oracles/prepare_select/graph_walks/data_loading)

V1

6. 与现有验收的关系

validation.md / validation.json 继续作为版本验收记录;本计划落地后,V1–V4 的产物按版本写入其中。算法覆盖工作板(algorithm-coverage.md)记录"实现了什么",本文档记录"如何证明正确",两者行级对应。