# 量子计数(Quantum Counting) English · **简体中文** > 类别 C3 · 模块 [`oracq.algorithms.common.estimation`](../../api/algorithms/common/estimation.rst) · 阶段 V2 ## 概述 估计大小为 $N=2^n$ 的搜索空间中被标记元素的个数 $t$。量子计数不是独立电路,而是振幅估计的直接应用(同一 Brassard 框架,[arXiv:quant-ph/0005055](https://arxiv.org/abs/quant-ph/0005055)):均匀叠加上好状态概率恰为 $a=t/N$,做标准振幅估计后乘回 $N$: $$ \hat t = N\cdot\hat a. $$ 本仓库将其登记为展示目录条目(`applications/gallery.py` 的 `quantum_counting`),复用 {obj}`amplitude_estimation ` 入口。 ## 接口与输入模型 没有单独的入口函数;配方是: ```python operation = amplitude_estimation(uniform_state(n), marked, precision=p) ``` - {obj}`uniform_state(n) `:均匀态制备(SP),使 $a=t/N$。 - `marked`:被标记基态的整数编号集合,$t=|M|$。 - `precision`:相位寄存器位数,范围 1..63。 返回对象的寄存器与属性同[振幅估计](qae.md)(`target`/`work`/`phase`,`decoder` 为 `"sin(pi*phase/2**precision)**2"`):读出 `phase` 后经 {obj}`amplitude_from_phase ` 解码、再乘 $2^n$ 得 $\hat t$。展示实例取 $n=2$、`marked=(3,)`、`precision=4`($t=1$,$a=1/4$)。 ## 实现要点 电路生成与 QAE 完全相同,差别全在经典侧解码(乘 $N$)。$\hat t$ 不必是整数,四舍五入到合法范围由宿主决定;估计精度由 QAE 栅格密度(`precision`)决定,$t/N$ 恰落栅格时点估计精确。 ## 验证方案 类别 C3(判定准则见 `docs/development/validation-plan.md` §2)。量子计数在 `docs/development/validation-coverage.md` 中随 `estimation.py` 行登记(算法列含"量子计数"),无单独见证条目: - 结构:`tests/core/test_algorithm_expansion.py:AlgorithmExpansionTests`。 - 数值:电路见证即 QAE 的 `AlgorithmExpansionTests.test_amplitude_estimation_half_probability`(见[振幅估计](qae.md));展示实例由 `applications/gallery.py` 的 `quantum_counting` 条目演示读出("将振幅估计乘以 4,得到标记个数的估计")。 - 绑定:模块行登记为"—"。 ## 已知缺口与计划阶段 随 QAE 一致:置信区间声明未见证(只验证了点估计),点估计乘 $N$ 的误差传播同样未对拍;`estimation.py` 模块阶段 V2。 ## 相关链接 - 源码:`src/oracq/algorithms/common/estimation.py`(电路)、`src/oracq/applications/gallery.py`(展示条目) - API 参考:[相位、振幅与重叠估计](../../api/algorithms/common/estimation.rst) - 同组页面:[振幅估计](qae.md)、[Grover 搜索](grover.md)、[量子相位估计](qpe.md) - 验证矩阵:[验证覆盖矩阵](../../development/validation-coverage.md) ## 数值验证 实验设计:$n=3$($N=8$)、marked $=\{1,5,7\}$($t=3$,$a=3/8$)、precision $=4$(栅格 $M=16$)。按上文配方生成 `amplitude_estimation(uniform_state(3), marked, precision=4)`,在四条后端路径(reference、rir-pysparq、adapter-pysparq、originir-ext)上读出 phase 寄存器的完整分布,对照独立 Dirichlet 核参考(本征相位 $\pm\theta/\pi$、$\theta=\arcsin\sqrt{3/8}$ 上的 QPE 栅格卷积),并按 $\hat t=N\sin^2(\pi y/M)$ 解码计数。 | 案例 | 规模 | 路径 | 指标 | 数值 | |---|---|---|---|---| | quantum-counting-n3-t3 | N=8, t=3, M=16 | 4 路径 | 相位分布 TVD | 5.7e-15 | | 〃 | 〃 | 〃 | 峰值估计 $\hat t$(误差) | 2.4693(0.531,≤1 栅格步) | | 〃 | 〃 | 〃 | 中心栅格质量(QAE 下界 $8/\pi^2$) | 0.8529(≥ 0.8106) | 真值 $\theta M/\pi\approx3.357$ 落在栅格点 3 与 4 之间,分布双峰($y=3,13$ 各约 0.325)与理论位置一致;点估计精度由栅格密度决定,与"$\hat t$ 不必为整数"的口径吻合。 复现命令: ```bash PYTHONPATH=src /home/agony/projects/qcfd-dev/quantum-cfd-software/.venv/bin/python tests/verification/verify_search_walks.py ``` 产物:`out/verification/search_walks.json`(案例 `quantum-counting-n3-t3`)。