# 从论文访问模型到实现比较
English · **简体中文**
本教程面向实现新量子算法的研究者:先保存含开放 oracle 的算法,再选择实现,
最后对照独立数学参考并比较成本。核心不需要量子后端。
## 保存开放程序并分析调用
```{doctest}
>>> from oracq import bind_with_report, dumps, loads, estimate_resources
>>> from oracq.applications.oracle_study import oracle_study
>>> opened, implementations = oracle_study(width=2, repetitions=3)
>>> restored = loads(dumps(opened))
>>> cost = estimate_resources(restored, require_closed=False)
>>> cost.complete, cost.qubits
(False, None)
>>> sorted((call.adjoint, count) for call, count in cost.oracle_calls.items())
[(False, 3), (True, 3)]
```
{obj}`oracle_study ` 一次给出开放程序和全部候选实现;{obj}`dumps ` 与 {obj}`loads ` 的往返说明开放描述可以照常保存,{obj}`estimate_resources ` 在未闭合时也返回成本台账。访问模型是 `data ^= (address + 1) mod 2**width`。同一个角字数据库用于构造
对角块编码,每次调用都会计算角字、旋转、反算。重复三次只保存 Repeat 和
模块调用;上面的台账说明每种实现要提供三次正向和三次伴随调用。
## 选择实现并保留绑定报告
```{doctest}
>>> implementation, memory = implementations["qram_table"]
>>> linked = bind_with_report(restored, {"AngleWord": implementation})
>>> linked.report.ok
True
>>> closed = linked.require()
>>> estimate_resources(closed).qram_queries
Counter({'angle_words': 6})
```
{obj}`bind_with_report ` 返回程序与 {obj}`BindingReport ` 的组合,`require()` 只在报告无问题时交出闭合程序。将选择改为 `gate_table` 或 `arithmetic` 即可比较另外两种实现。
门表枚举同一整数函数,QRAM 表在运行时提供,可逆算术直接计算并清除私有
工作字。三者公开签名一致;私有辅助位和资源消耗可以不同。改变 width 需要
重新生成程序;这不属于保持接口的实现绑定。
## 验证与资源比较
```bash
python examples/research_workflow.py
PYTHONPATH=src /path/to/backend/python examples/research_workflow.py \
--native --widths 2 3 -o out/research-workflow-native
```
独立参考使用三角公式:每个地址的角字为 k,重复 r 次后的成功与失败幅度
分别为 `cos(r*pi*k/2**width)/sqrt(2**width)` 和对应的 sin。
这是本例旋转扩张的性质,不能推广为任意块编码直接取幂的规则。
报告包含完整输出分支的幅度误差、成功概率、程序与数据指纹、绑定报告以及
开放和闭合成本。原生验证同时调用 PySparQ 两条路径与 OriginIR 后端。
本例验证均匀输入的全部地址分支;不把单一输入态的通过推广为任意酉算子的
等价证明。可逆整数算术的接口与复净另由核心回归检查。
更完整的科学计算链复用 `tools/build_qlss_comparison.py`:原始流场 QRAM、
编译后的 Roe 公式、稀疏访问和两种 QLSS 生成器。该脚本提供开放/闭合成本、
数据与程序指纹;数值验证继续使用 `tests/verification/verify_qham_qfvm.py`
和 `verify_mathfunc.py`,分别报告实现误差与方法误差。
## 相关页面
- 手册:[资源估计](../manual/resource-estimation.md)(成本台账口径)、[契约](../manual/contracts.md)
- 规范:[开放 IR](../reference/open-ir.md)(开放声明与分批绑定)
- 算法页:[XOR 数据库视图](../manual/algorithms/xor-database.md)(门表/QRAM 两种实现的视图基础)
- API 参考:[Oracle 实现比较](../api/applications/oracle_study.rst)、[资源估计](../api/infrastructure/estimate.rst)、[绑定与能力分析](../api/infrastructure/linking.rst)
- 继续教程:[科学计算工作流](scientific-workflows.md)(QHAM/Carleman/LCHS/CBMD 的完整链路)