# 量子译码:线性码、Simplex 的 Walsh 相关与 Quantum Viterbi 经典纠错码 (error-correcting code) 解决的问题是:发送方把 $k$ 个 information bits 编成 $n>k$ 个 bits 发送,信道会翻转其中一些 bit,接收方拿到被污染的 received word 后,仍希望恢复原始消息。自 Shannon 1948 年建立信道编码定理、Hamming 1950 年给出第一个显式构造以来,**编码**(如何设计好码)与**译码**(如何高效地从噪声中恢复)一直是两个独立的问题:好码可以构造出来,但"对任意线性码做 maximum-likelihood decoding"这一通用任务已被证明是 NP-hard 的(Berlekamp、McEliece 与 van Tilborg,1978)。因此经典译码算法的全部艺术在于**利用具体码族的结构**:Reed--Muller 码用多数逻辑,Reed--Solomon 码用多项式插值,卷积码用 trellis 上的动态规划(Viterbi 算法,1967)。 那么量子计算能帮上什么忙?首先要泼一盆冷水:量子计算**不会**把这个一般的 NP-hard 问题自动变成 polynomial time——没有任何已知结果表明一般线性码译码属于 BQP。Zoo 收录的量子译码加速全部依赖额外的代数或组合结构: - **Simplex/Hadamard code** 的 codewords 恰好是 $\mathbb F_2^m$ 上的 Fourier characters,译码等价于求 Walsh 变换的最大分量——这正是 [Bernstein--Vazirani 算法](../ch04-classic-algorithms/bernstein-vazirani-algorithm-tutorial.md)的相位查询结构,对应 Barg--Zhou 的量子 simplex 译码算法(Zoo 239); - **Convolutional code** 的合法 codewords 形成稀疏 trellis 上的路径,Viterbi 的动态规划可以被相干化,对应 Grice--Meyer 的 quantum Viterbi algorithm(Zoo 238); - 对**一般线性码**,量子搜索(Grover)与量子行走只能把穷举译码的指数开平方或改进指数常数,这在密码分析中有实际意义(见本站[量子密码分析](quantum-cryptanalysis.md)),但不是多项式加速。 本章逐一展开这三条路线。读者应已熟悉本站 ch01–ch08 的内容,特别是相位反冲 (phase kickback)、Hadamard 变换与 [Grover 算法](../ch03-algo-basics/grover.md)、[振幅放大](../ch03-algo-basics/amplitude-amplification.md)。我们会反复回到一个主题:**量子优势到底来自哪一步,又有哪些隐藏成本(输入电路、metric 精度、经典读出)必须如实计入。** :::{admonition} 本课知识点 :class: tip 1. **[线性码、syndrome 与 ML 译码](#linear-code-syndrome-ml)**——能写出 $[n,k,d]$ 线性码的生成矩阵与校验矩阵刻画,推导 syndrome $s=Hy^T=He^T$ 只依赖错误向量,并证明 BSC 下 ML 译码等价于最小重量译码。 2. **[Simplex/Hadamard 码与字符正交性](#simplex-character-orthogonality)**——能写出 Hadamard 码作为线性函数真值表的构造,并用配对论证证明最小距离为 $2^{m-1}$ 与字符正交性 $\frac1N\sum_x(-1)^{v\cdot x}=\delta_{v,0}$。 3. **[Walsh 系数与最近码字译码](#walsh-nearest-codeword)**——能推导 Walsh 系数公式 $\widehat y(a)=1-\frac{2\,d_H(y,c_a)}{N}$,并解释最大 Walsh 系数译码与最近码字译码为何是同一问题的两种写法。 4. **[相位反冲与 Walsh--Hadamard 译码](#phase-kickback-walsh-decoding)**——能用相位反冲把接收字制备成相位态 $|\psi_y\rangle$,并证明 $H^{\otimes m}|\psi_y\rangle$ 的第 $a$ 个振幅恰为 Walsh 系数 $\widehat y(a)$。 5. **[译码成功概率与输入电路成本](#decoding-success-probability)**——能计算有噪声时的单次成功概率 $(1-2\delta)^2$ 并设计重复多数表决方案,同时说明 $O(N)$ 输入电路成本为何必须计入端到端复杂度。 6. **[卷积码、trellis 与 Viterbi 递推](#viterbi-trellis-recursion)**——能把卷积码译码写成 trellis 上可加度量的最优路径问题,写出 Viterbi 递推并手算小例子的填表过程。 7. **[量子 Viterbi 与一般码量子搜索](#quantum-viterbi-grover-search)**——能解释振幅放大把重复次数从 $O(1/p_*)$ 降到 $O(1/\sqrt{p_*})$ 的适用条件,并用 Stirling 近似推导 Grover 只把 $\binom nw$ 穷举的指数减半。 8. **[与量子纠错译码的区别](#classical-vs-quantum-decoding)**——能从输入输出类型、噪声对象与 no-cloning 约束出发,辨析本章"量子算法译经典码"与量子纠错码译码的差异。 ::: ## 1. 线性码与译码目标 ### 1.1 基本定义 一个二元 $[n,k,d]$ linear code 是 $\mathbb F_2^n$ 的一个 $k$ 维线性子空间。用 generator matrix $G\in\mathbb F_2^{k\times n}$($k$ 个基码字的行向量拼成)写出来就是 $$ C=\{uG:u\in\mathbb F_2^k\}\subseteq\mathbb F_2^n. $$ 三个参数的含义:$n$ 是码长(每个 codeword 的 bit 数),$k$ 是维数(能编码 $k$ 个 information bits),$d$ 是最小 Hamming distance,即任意两个不同 codewords 之间不同坐标个数的最小值。线性性带来一个常用简化:两个 codewords 之差仍是 codeword($c_1\oplus c_2\in C$),所以最小距离等于**最小非零重量** $$ d=\min_{c\in C,\,c\neq 0}\operatorname{wt}(c),\qquad \operatorname{wt}(c):=\#\{i:c_i=1\}. $$ 与子空间对偶的是 parity-check matrix $H\in\mathbb F_2^{(n-k)\times n}$,它的行张成 $C$ 的正交补,因此满足 $$ GH^T=0,\qquad C=\{c\in\mathbb F_2^n:Hc^T=0\}. $$ 第二行的读法是:$H$ 给出了 $n-k$ 个线性校验方程,一个向量是合法 codeword 当且仅当它通过全部校验。这个"判 membership 很容易"的性质是后面 syndrome 译码的基础。 ### 1.2 信道模型与 syndrome 发送 $c=uG$。我们采用最简单的噪声模型 **binary symmetric channel (BSC)**:每个 bit 独立地以概率 $p<1/2$ 被翻转。等价地,信道加上一个 error vector $e\in\mathbb F_2^n$($e_i=1$ 表示第 $i$ 位出错),接收方拿到 $$ y=c\oplus e. $$ 译码器的输入只有 $y$。第一步是计算 **syndrome**(校验子) $$ s:=Hy^T=H(c\oplus e)^T=Hc^T\oplus He^T=He^T. $$ 逐步看这个等式:第一步代入 $y=c\oplus e$;第二步用矩阵对 $\oplus$ 的分配律(在 $\mathbb F_2$ 上加法就是逐位异或);第三步用 $Hc^T=0$,因为 $c\in C$。结论是:**syndrome 只依赖 error,不依赖发送的是哪个 codeword**。未知量从"$2^k$ 个候选 codewords"约化为"满足 $He^T=s$ 的候选 errors",这是线性码译码的标准化简。 (linear-code-syndrome-ml)= ### 1.3 为什么 ML 译码就是最小重量译码 BSC 下,给定发送 $c$ 收到 $y$ 的条件概率完全由错误个数 $\operatorname{wt}(y\oplus c)$ 决定: $$ \Pr(y\mid c)=p^{\operatorname{wt}(y\oplus c)}(1-p)^{\,n-\operatorname{wt}(y\oplus c)} =(1-p)^n\left(\frac{p}{1-p}\right)^{\operatorname{wt}(y\oplus c)}. $$ 第一个等号是独立性(哪几位错、哪几位对,各自贡献因子 $p$ 或 $1-p$);第二个等号只是提出公因子。由于 $p<1/2$,比值 $\frac{p}{1-p}<1$,所以 $\Pr(y\mid c)$ 是 Hamming 距离 $d_H(y,c)=\operatorname{wt}(y\oplus c)$ 的**严格递减函数**。因此 maximum-likelihood decoding(找使 $\Pr(y\mid c)$ 最大的 $c$)等价于 nearest-codeword decoding(找离 $y$ 最近的 $c$)。 结合 syndrome 语言:候选 error 必须满足约束 $H\widehat e^{\,T}=s$,ML 译码就是在所有解中找重量最小的: $$ \widehat e=\arg\min_{e:\,He^T=s}\operatorname{wt}(e),\qquad \widehat c=y\oplus\widehat e. $$ **唯一性半径。** 若真实错误满足 $\operatorname{wt}(e)\le t:=\lfloor(d-1)/2\rfloor$,则最近 codeword 唯一。证明是标准的三角不等式:若另有一个 $c'\in C$ 也满足 $d_H(y,c')\le t$,则 $$ d_H(c,c')\le d_H(c,y)+d_H(y,c')\le 2t\le d-1 提示:比较比值 $\frac p{1-p}$ 与 $1$ 的大小;唯一性用三角不等式 $d_H(c,c')\le d_H(c,y)+d_H(y,c')\le 2t$。 **练习 2【Simplex/Hadamard 码与字符正交性】**(→ [2.2 节](#simplex-character-orthogonality)) 1. 对 $m=3$ 写出全部 $8$ 个 Hadamard codewords(即所有 $a\in\mathbb F_2^3$ 的真值表),并验证每个非零 message 的 codeword weight 都是 $4=2^{m-1}$。(提示:用 Lemma 1 的配对论证,不必逐个硬算。) 2. 对 $m=2$、$v=(0,1)$ 列出 $(-1)^{v\cdot x}$ 在全部 $4$ 个 $x$ 上的取值并验证其和为 $0$;再用配对论证说明对任意非零 $v\in\mathbb F_2^m$ 与任意 $m$,$\sum_x(-1)^{v\cdot x}=0$ 恒成立。 > 提示:取 $v$ 的某个非零分量 $v_j=1$,把每个 $x$ 与翻转第 $j$ 位后的 $x^{(j)}$ 配成一对。 **练习 3【Walsh 系数与最近码字译码】**(→ [2.3 节](#walsh-nearest-codeword)) 1. 设 $N=8$,接收字 $y$ 与某个 codeword $c_a$ 的 Hamming 距离为 $3$。用定义 $\widehat y(a)=\frac1N\sum_x(-1)^{y_x\oplus c_a(x)}$ 直接计算 $\widehat y(a)$,并与公式 $1-\frac{2\,d_H}{N}$ 核对。 2. 证明恒等式 $\widehat y(a)=1-\frac{2\,d_H(y,c_a)}{N}$ 对任意 $y$ 与 $c_a$ 成立,并据此说明"取最大 Walsh 系数的 $a$"与"最近码字译码"给出同一个译码结果。 > 提示:把求和按"坐标相同"与"坐标不同"分成两组,各贡献 $+1$ 与 $-1$。 **练习 4【相位反冲与 Walsh--Hadamard 译码】**(→ [3.2 节](#phase-kickback-walsh-decoding)) 1. 写出 oracle $O_y|x,z\rangle=|x,z\oplus y_x\rangle$ 作用在 $|x\rangle|-\rangle$ 上的结果,并对 $y_x=0$ 与 $y_x=1$ 两种情形分别验证相位反冲因子的符号。 2. 证明 character orthogonality 的推广形式:对任意 $a,b\in\mathbb F_2^m$,$\frac1N\sum_x(-1)^{(a\oplus b)\cdot x}=\delta_{a,b}$,并用它严格推出 3.3 节无噪声时 $H^{\otimes m}|\psi_y\rangle=|a_*\rangle$。 > 提示:令 $v=a\oplus b$,分 $v=0$ 与 $v\neq0$ 讨论;无噪声时各振幅为 $\widehat y(a)=\delta_{a,a_*}$。 **练习 5【译码成功概率与输入电路成本】**(→ [3.3 节](#decoding-success-probability)) 1. 若 error fraction $\delta=0.1$,计算正确 simplex message 的单次测量 amplitude 与 probability;其余概率总量是多少?若重复 $5$ 次独立测量并逐位多数表决,定性说明为什么失败概率被压低。 2. 解释:为什么按 index 读取一个任意 $N$-bit received word 来实现 $O_y$ 需要 $O(N)$ 的输入电路,而量子核心只用到 $m=\log_2 N$ 个 qubits?据此说明"查询复杂度 $O(1)$"与"对任意经典数据的 logarithmic-time 译码"为何是两个不同的结论。 3. 推广 3.4 节的小例子:设 $y$ 是 $c_{a_*}$ 在坐标集合 $S$($|S|=t$)上出错的结果,证明输出振幅满足 $\widehat y(a)=\delta_{a,a_*}-\frac{2}{N}\sum_{x\in S}(-1)^{(a\oplus a_*)\cdot x}$,并用 $t=2$、$m=3$ 自行取一组 $S$ 验证概率归一化 $\sum_a|\widehat y(a)|^2=1$。 > 提示:把 $(-1)^{y_x}$ 写成 $(-1)^{c_{a_*}(x)}$ 乘上错误集合 $S$ 上的翻转因子,再按 $S$ 内、外拆分求和。 **练习 6【卷积码、trellis 与 Viterbi 递推】**(→ [6.1 节](#viterbi-trellis-recursion)) 1. 写出 branch metric $\gamma_t$、路径度量 $M(\pi)$ 与 Viterbi 递推 $D_t(q)=\min_{q'\to q}[D_{t-1}(q')+\gamma_t(q',q)]$ 中各量的含义,并解释为什么填表复杂度是 $O(LQF)$、而路径总数是 $\sim QF^L$。 2. 在 6.2 节的 $Q=2$ trellis 上,把 $\gamma_3(1\to1)$ 从 $1$ 改为 $4$,重新手算整张 Viterbi 表 $D_t(q)$ 并给出新的最优路径与总度量。(答案:最优变为 $0\to0\to0\to0$ 或经状态 $1$ 的某条路径,总度量 $4$——请验证是哪一条。) **练习 7【量子 Viterbi 与一般码量子搜索】**(→ [7.2 节](#quantum-viterbi-grover-search)) 1. 设最优路径在初态中的总权重为 $p_*$。分别写出 generic repetition 与理想 amplitude amplification 达到常数成功概率所需的重复次数,并说出 Grice--Meyer 增益成立的参数区间($Q$、$L$、$F$ 各满足什么条件)。 2. 列出至少两条侵蚀 quantum Viterbi 加速的注意事项(如阈值未知、metric 精度、近简并路径、经典基线),并解释为什么公平的比较对象是 $O(LQF)$ 的经典动态规划而不是路径枚举。 3. 用 Stirling approximation $\ln n!=n\ln n-n+O(\log n)$ 推导 $\log_2\binom{n}{\alpha n}=nH_2(\alpha)+O(\log n)$,从而说明 weight-$w=\alpha n$ 的 Grover syndrome search 查询数约为 $2^{\,nH_2(\alpha)/2}$。对 $\alpha=0.1$ 数值估计 $H_2(\alpha)$ 与 Grover 后的指数。 > 提示:把 $\binom{n}{\alpha n}=\frac{n!}{(\alpha n)!\,((1-\alpha)n)!}$ 的三个阶乘逐个代入 Stirling 近似。 **练习 8【与量子纠错译码的区别】**(→ [第 9 节](#classical-vs-quantum-decoding)) 1. 从"输入与输出的类型""噪声作用的对象""译码器可以测量什么"三个维度中任取两个,写出本章的量子译码问题与量子纠错码译码问题的区别。 2. 解释量子纠错译码为什么"不能先把 data qubits 测量再复制一份慢慢算"(联系 no-cloning 定理),并说明 stabilizer syndrome 测量为何不泄露 logical state 的信息。 > 提示:stabilizer 算符与 logical 算符对易,测量 syndrome 不会坍缩 logical 叠加。 ## 参考文献与 Zoo 覆盖 - Zoo 编号 238:Jon R. Grice 与 David A. Meyer, [A quantum algorithm for Viterbi decoding of classical convolutional codes](https://arxiv.org/abs/1405.7479)。 - Zoo 编号 239:Alexander Barg 与 Shiyu Zhou, [A quantum decoding algorithm of the simplex code](https://www.terpconnect.umd.edu/~abarg/reprints/rm1dq.pdf)。 - 延伸阅读:[Bernstein--Vazirani](../ch04-classic-algorithms/bernstein-vazirani-algorithm-tutorial.md)、[Amplitude amplification](../ch03-algo-basics/amplitude-amplification.md)和[量子 subset sum](../ch09-algebra-number-theory/quantum-subset-sum.md)。