解码量子干涉(Decoded Quantum Interferometry)¶
English · 简体中文
类别 C4 · 模块
oracq.algorithms.optimization.dqi· 阶段 V1
概述¶
DQI 求解 GF(2) max-XORSAT:给定约束组 \(Bx=v\)(\(B\) 为 \(m\times n\) 的 0/1 矩阵的稀疏行表示),寻找满足约束数最多的赋值。实现依据 Jordan et al. 2024(arXiv:2408.08292,图 4 的单权重版本)的线路骨架:在 \(m\) 比特 error 寄存器制备权重 \(l\) 的 Dicke 态,施加右端项相位 \((-1)^{v\cdot y}\),把 \(B^T y\) 可逆计算进 \(n\) 比特 syndrome 寄存器,再用可逆经典译码器把 error 寄存器卸载回 \(\lvert 0\rangle\),最后对 syndrome 做 Hadamard 变换并测量。后选 error 为零的分支后,测得赋值 \(x\) 的概率正比于 \(K_l(u(x))^2\)——\(u(x)\) 是未满足约束数、\(K_l\) 是 Krawtchouk 多项式,采样因此偏向满足更多约束的赋值。
接口与输入模型¶
dqi(instance, decoder, *, weight)
XorSatInstance(rows, rhs, num_variables)
abstract_decoder(name, syndrome_width, error_width)
table_decoder(syndrome_width, error_width, table, *, name=None)
bruteforce_decoder(instance, *, max_weight=None, name=None)
dicke_state(m, weight)
API 入口:dqi、XorSatInstance、abstract_decoder、table_decoder
instance:XorSatInstance,约束的稀疏行表示(每行是参与该约束的变量下标,行内不重复;rhs取 0 或 1)。num_variables即 syndrome 位宽 \(n\),约束数num_constraints即 error 位宽 \(m\)。约束实例是经典数据直接参数化,input model 为 CP(编码约束)。decoder:DecoderOracle,语义为|syndrome, error> → |syndrome, error XOR D(syndrome)>,是 FO 类开放输入(可逆经典函数,reversible_function范式)。abstract_decoder声明槽位后经bind分批绑定;table_decoder用显式查询表做 gate 见证(未列出的综合征映射到零错误);bruteforce_decoder枚举全部 \(2^m\) 个错误模式给出不超过max_weight的最轻错误,只接受 \(m \le 16\)。weight:Dicke 态权重 \(l\),范围 0..m;译码半径需覆盖该权重,译码器位宽必须与实例的 n/m 一致。
返回 Operation,寄存器为 error(m) 与 syndrome(n)。模块属性:
属性 |
含义 |
|---|---|
|
|
|
m / n |
|
l |
|
|
|
|
dicke_state(m, weight) 单独导出,制备 \(\lvert D_l^m\rangle\)(显式幅度构造,\(m \le 16\));XorSatInstance.satisfied_count(assignment) 提供经典侧对拍用的满足数统计。
实现要点¶
生成链:Dicke 制备(gate_state_prep 显式幅度,以 syndrome 的零宽视图作 work)→ 右端项相位(对 rhs[i] = 1 的 error 位施加 Z)→ 综合征计算(对每条约束的每个变量下标施加 xor(error_i → syndrome_j),合计即 \(B^T y\))→ 译码器调用 → syndrome 上的 Hadamard。译码成功的分支 error 回到 \(\lvert 0\rangle\);后选(丢弃 error 非零的分支)由调用方按 postselection 属性完成。
设计决策:译码器是输入模型的一部分而非算法内部细节——无法译码的综合征可以映射到任意错误模式(对应分支在后选中被淘汰),高效经典译码(如 belief propagation 的可逆实现)经 abstract_decoder 加 bind 接入,与仓库的开放声明三层范式一致。适用边界:当前只支持 GF(2),GF(q) 情形需要 q 元离散 Fourier 变换与广义 Dicke 态、寄存器按 \(\log_2 q\) 分子组织,留作扩展;显式幅度 Dicke 与穷举译码只服务 \(m \le 16\) 的小实例见证,大实例应换成专用 Dicke 线路(如 Bartschi–Eidenbenz 的 O(l·m) 构造,经 state_prep_isometry 开放声明接入)与高效译码器。
验证方案¶
类别 C4(判定准则见 ../../development/validation-plan.md §2:严格优于随机基线,且小实例达到已知最优/理论分数)。三层证据位于 tests/core/test_dqi.py:DqiTests:
结构:
test_invalid_inputs_fail_at_generation覆盖 12 类生成期违例(越界/重复下标、rhs 非 0/1、空约束、Dicke 权重越界、译码表越界、位宽不匹配、decoder 类型错误、负权重等)。数值:
test_planted_instance_beats_random_guessing——7 约束 3 变量的植入实例(由赋值 x* = 0b101 植入右端项),权重 1 时 syndrome 分布与 Krawtchouk 闭式 \(K_l(u(x))^2\) 逐点对拍(places = 10),期望满足数 6.5 严格优于随机基线 3.5;test_identity_instance_with_weight_two——B 取单位阵的 m = n = 5 实例权重 2,分布对拍后期望满足数回到随机基线 m/2(断言用assertGreaterEqual加 1e-9 容差);test_dicke_state_weight_and_uniformity——\(\lvert D_2^5\rangle\) 恰有 C(5,2) = 10 个等幅非零分量(1/√10,places = 12)且 work 复净。绑定:
test_abstract_decoder_binds_to_witness——抽象译码器是程序唯一的未解析槽,经bind绑定穷举实现后无未解析声明,syndrome 分布与 gate 见证逐点一致(places = 10)。
共享的 check_distribution 还钉死译码成功时 error 寄存器确定性复净(P(error = 0) = 1,places = 12)。
已知缺口与计划阶段¶
与 validation-coverage.md 一致:无未决缺口,阶段 V1。曾出现的 identity 边界问题——译码器不提供优势时期望恰等于随机基线,严格不等断言在边界失败——已按 validation-plan §4 的确定性策略修复为 ≥/≤ 加数值容差(test_identity_instance_with_weight_two 即该修复的见证)。
相关链接¶
源码:
src/oracq/algorithms/optimization/dqi.pyAPI 参考:DQI 解码量子干涉优化
验证矩阵:验证覆盖矩阵
数值验证¶
论文级数值实验见 tests/verification/verify_misc_algorithms.py(misc_algorithms 组),全部在真实后端上执行。
实验设计:(a) 植入实例(7 约束 3 变量、右端项由 \(x^* = \mathtt{0b101}\) 植入、Dicke 权重 1、穷举译码器),syndrome 分布对照论文的 Krawtchouk 闭式 \(K_l(u(x))^2\)(math.comb 独立计算),优化质量对照经典蛮力枚举的全部 8 个赋值;(b) 抽象译码器经 bind 绑定穷举见证后与直接见证逐振幅对拍;(c) Dicke 态 \(\lvert D_2^5\rangle\) 的幅度均匀性。后端路径:reference、rir-pysparq、adapter-pysparq、originir-ext(实例 10 量子位,四路径分布对拍)。
关键指标:
案例 |
规模 |
路径 |
指标 |
数值 |
|---|---|---|---|---|
dqi-planted-krawtchouk |
m = 7、n = 3,10 量子位 |
四路径 |
分布 TVD / 逐点误差 |
4.0e-16 / 6.7e-16 |
同上 |
— |
— |
P(error = 0)(译码复净) |
1.0000 |
同上 |
— |
— |
期望满足数(随机基线 3.5) |
6.5000 |
同上 |
— |
— |
概率峰值赋值 = 蛮力最优(满足 7/7) |
\(x^*\) = 5 ✓ |
dqi-abstract-decoder-bind |
同上 |
rir-pysparq |
bind 与直接见证最大振幅偏差 |
0 |
dicke-state-uniformity |
m = 5、l = 2 |
reference + originir-ext |
支撑 / 幅度误差 |
10 基态 / 5.6e-17 |
复现:
PYTHONPATH=src /home/agony/projects/qcfd-dev/quantum-cfd-software/.venv/bin/python tests/verification/verify_misc_algorithms.py
产物:out/verification/misc_algorithms.json(24 个案例全过,本页对应 dqi-* 与 dicke-state-* 三个案例)。