# 三位重复码(Repetition Codes) English · **简体中文** > 类别 C1 · 模块 [`oracq.algorithms.qec.error_correction`](../../api/algorithms/qec/error_correction.rst) · 阶段 V1 ## 概述 把一位逻辑态 $\alpha|0\rangle + \beta|1\rangle$ 编码为三个物理位的重复码 $\alpha|000\rangle + \beta|111\rangle$,并从任意单个指定类型的错误中相干恢复。`error="bit"` 纠正单个 X 错误;`error="phase"` 是同一编码的 H 共轭版本,纠正单个 Z 错误。编码与恢复都是纯酉电路,不含测量与重置,因此逻辑幅度(包括相对相位)在"编码—错误—恢复"循环前后逐点保持。 ## 接口与输入模型 ```python repetition_encode(*, error="bit") repetition_recover(*, error="bit") ``` API 入口:{obj}`repetition_encode `、{obj}`repetition_recover ` - `error`:`"bit"` 或 `"phase"`,编码器与恢复器必须取同一值;其他取值在生成期抛出 {obj}`ValidationError `。 - 输入模型为 CP:没有 oracle 输入,错误类型与码结构都以经典参数给出。 - 两个入口的寄存器相同:`target: Bits(1)`(逻辑位)与 `syndrome: Bits(2)`;编码要求 `syndrome` 输入为零。三个物理位按 `target`、`syndrome[0]`、`syndrome[1]` 排列。 模块属性: | 属性 | 含义 | |---|---| | `algorithm` | `"repetition_encode"` / `"repetition_recover"` | | `error_kind` | `"bit"` 或 `"phase"` | | `syndrome_policy` | 仅恢复器:`"retained; host reset required before reuse"` | ## 实现要点 编码器做两条 CNOT(`target` → `syndrome[0]`、`target` → `syndrome[1]`)得到三位重复;`"phase"` 变体随后对三个物理位整体做 H,把码字转到相位翻转基。恢复器先把 `target` 异或进两个 syndrome 位得到校验子:错误落在 `target` 位时两位同时为 1,受控 X(以 `syndrome == 3` 为控制条件)把 `target` 翻回逻辑值;错误落在某个 syndrome 位时校验子不全 1,`target` 本就未受影响。`"phase"` 变体在恢复前先整体 H 回到位翻转基,复用同一套逻辑。 设计约束:恢复后 syndrome 确定地保留错误位置(无错误时为 0),但**不被复净**——复用寄存器前宿主必须复位,这正是 `syndrome_policy` 属性的口径。适用边界:只保证纠正至多一个与 `error` 一致的错误;两个及以上同类型错误或混合错误超出三位码的能力。 ## 验证方案 类别 C1(精确离散语义,判定准则见 `../../development/validation-plan.md` §2):编码—错误—恢复的复合作用须与恒等算子在任意逻辑幅度上逐点相等。证据: - 结构:`tests/core/test_algorithm_expansion.py:AlgorithmExpansionTests` 的构造与属性断言;`test_bad_inputs_fail_at_generation` 覆盖 {obj}`repetition_encode(error="unknown") ` 的生成期违例。 - 数值:`AlgorithmExpansionTests.test_repetition_codes_preserve_arbitrary_logical_amplitudes`——对两种 `error` × 三个物理位置,用 Ry(0.73)/Rz(0.29) 制备任意逻辑态,插入单错误并恢复后,`target` 幅度精确复原为 $e^{-0.145j}\cos 0.365$ 与 $e^{0.145j}\sin 0.365$(places = 10),且 syndrome 收敛到单一确定值。 - 绑定:本算法无独立绑定见证(无开放声明入口)。 ## 已知缺口与计划阶段 无已知缺口(验证矩阵缺口列为 —),阶段 V1。 ## 相关链接 - 源码:`src/oracq/algorithms/qec/error_correction.py` - API 参考:[重复码与错误恢复](../../api/algorithms/qec/error_correction.rst) - 验证矩阵:[验证覆盖矩阵](../../development/validation-coverage.md) ## 数值验证 论文级数值实验见 `tests/verification/verify_misc_algorithms.py`(misc_algorithms 组),全部在真实后端上执行。 **实验设计**:任意逻辑态 $\mathrm{Ry}(0.73)\mathrm{Rz}(0.29)\lvert 0\rangle$(numpy 独立给出精确幅度),对两种 `error` 类型 × 4 个注入位置(无错误 / target / syndrome[0] / syndrome[1])执行"编码—注入—恢复":检查 target 幅度逐点复原与 syndrome 的确定性取值(位置映射 0/3/1/2);另对无错误的编码—恢复复合作用经 `originir-ext + UniQC Circuit.to_matrix` 提取 syndrome = 0 输入块与泄漏。后端路径:`reference`、`rir-pysparq`、`adapter-pysparq`、`originir-ext`(3 量子位全振幅对拍)。 **关键指标**: | 案例 | 规模 | 路径 | 幅度复原误差 | syndrome | 幺正块误差 / 泄漏 | |---|---|---|---|---|---| | repetition-bit-flip-injection | 3 比特 × 4 位置 | 四路径 | 0 | 全部确定且等于错误位置 ✓ | — | | repetition-phase-flip-injection | 3 比特 × 4 位置 | 四路径 | ≤ 4.6e-16 | 全部确定且等于错误位置 ✓ | — | | repetition-bit-encode-recover-unitary | 3 比特 | to_matrix | — | — | 0 / 0 | | repetition-phase-encode-recover-unitary | 3 比特 | to_matrix | — | — | 4.4e-16 / 2.4e-17 | **复现**: ```bash 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 个案例全过,本页对应 `repetition-*` 四个案例)。