Skip to content

算法Algorithm

综合译码

施工中 · 内容逐步修订

Syndrome decoding

利用校验矩阵消去码字成分,以综合定位错误陪集并选择首领;区分合法输出、正确恢复与一般译码困难性。

形式陈述 ​

定义:综合只取决于错误 ​

设 C⊆Fqn 是一个 [n,k] 线性码,H∈Fq(n−k)×n 是满行秩校验矩阵,满足

C={c∈Fqn:HcT=0}.

本页把码字、接收词和错误写成行向量。若发送 c∈C,信道加入错误 e,则接收词为 r=c+e,其综合是

s=HrT=H(c+e)T=HcT+HeT=HeT.

合法码字被校验矩阵消掉了。同一种错误加到不同码字上,会产生相同综合,这使得译码表可以按照错误模式组织,而不必为每个原码字分别准备一套规则。[1]

但综合不是错误的唯一指纹。两个错误 e1,e2 满足

He1T=He2T⟺H(e1−e2)T=0⟺e1−e2∈C.

因此,同一综合对应陪集 e+C 中的所有错误。满行秩保证有 qn−k 种综合,每种对应 qk 个向量;它们正好组成全部 qn 个向量。商向量空间 Fqn/C 把这一分类写成代数结构,而理解和执行下面的译码并不需要先掌握商空间理论。

直觉

让校验方程消掉合法信息 ​

收到一段含噪声的数据时,直接猜原码字可能很困难。线性码提供了一种先问“小问题”的方法:这段数据违反了哪些校验方程?把所有校验结果收集起来,就是综合(syndrome,也称伴随式)。

综合的作用不是完整记录错误,而是消去合法码字留下的成分,只保留错误对校验方程造成的影响。综合译码据此寻找一个与校验结果一致的错误模式,再把它从接收词中减去。

从综合到纠正词 ​

基础综合译码为每个综合 s 选择一个最小重量的错误代表,称为陪集首领:

e^(s)∈argmine: HeT=swt(e),c^=r−e^(s).

一种有限的表构造方式是按重量从 0 到 n 枚举全部错误向量,同重量按预定字典序排列;计算每个向量的综合,只在该综合尚无代表时存入它。满行秩使每种综合都出现,最终每个表项都是按上述规则选定的最小重量首领。译码时计算 s=HrT,取表项并返回 r−e^(s)。这给出可执行的穷举与查表过程,尚未给出多项式资源保证。

若有多个最小者,可以约定固定的选择规则。因为 He^T=HrT,输出必然满足 Hc^T=0,所以它确实是一个码字。输出为合法码字与输出为原来的码字是两种不同保证。

当 k≥1 时,设码的最小距离为 dmin,实际错误满足 wt(e)≤t,且 2t<dmin。若存在另一个重量不大于 t 的错误 e′ 具有相同综合,那么非零码字 e−e′ 的重量至多为 2t,与最小距离矛盾。因此在

t≤⌊dmin−12⌋

的范围内,最小重量首领唯一且就是实际错误。这个保证来自Hamming 距离,不是来自查表本身。若 k=0,码本只有零向量,每个综合恰对应一个错误向量,译码始终返回零向量,无须用不同码字对定义最小距离。

对于各比特独立、翻转概率相同且 0<p<1/2 的二元对称信道,一个重量为 w 的具体错误向量发生的概率为 pw(1−p)n−w,随 w 增加而减小。因此最小重量选择与最大似然译码一致。各位置可靠度不同或采用软判决时,应改用相应的似然代价;单纯“少改几位”不再自动等于最可能。[1]

综合译码的校正链
例子与边界

一次完整的 Hamming 码译码 ​

考虑二元 [7,4,3] Hamming 码,其校验矩阵为

H=(101010101100110001111).

七列恰好是七种不同的非零三比特向量。若仅第 j 位翻转,e 只有第 j 个坐标为 1,于是 HeT 就是 H 的第 j 列:综合直接指出出错位置。

码字 c=1110000 满足前三列之和为零,故校验通过。若第 5 位翻转,则

c=1110000⟶r=1110100,HrT=(1,0,1)T.

综合 (1,0,1)T 等于第 5 列,译码器翻转接收词的第 5 位,恢复 1110000。这一过程只用一个三比特校验结果,就定位了七个可能位置之一。[1]

现在让第 1、2 位同时翻转。两列异或得到第 3 列,译码器会误以为第 3 位出了错,再翻转这一位。最终三个位置都被改变,输出仍是合法码字,却不是原码字。这恰好越过了该码只能保证纠正一位错误的范围。

综合为零也不等于没有错误。任意非零码字形状的错误 e∈C 都满足 HeT=0,会把原码字变成另一个码字而不触发校验。

推论与应用

校验容易,寻找首领未必容易 ​

直接做矩阵乘法,计算综合需要 O(n(n−k)) 次有限域运算;稀疏或结构化矩阵可以更快。真正昂贵的部分可能是从 s 找到最合适的 e。完整查表有 qn−k 个入口,构造每个入口的最小重量首领也可能需要大量搜索。

这就是“综合很短”不等于“译码很容易”的原因。对一般二元矩阵,判定是否存在 wt(e)≤t 且 HeT=s 的错误,是经典 NP 完全问题;这并不否定 Hamming 码等特定结构拥有高效译码算法。[2]

基础综合译码每次选一个码字。列表译码则允许返回给定半径内的多个候选,改变的是输出目标与算法任务,而不是简单把一次首领猜测重复执行。理解这些区别,有助于分开校验信息、错误模型和译码算法各自承担的作用。

特殊求值结构可以避免枚举秩错误陪集 ​

若码本是Gabidulin码,且错误预算按底域秩给定,插值译码器可先解 N(gi)=Λ(yi) 的扩域线性系统,再按 N=Λ∘f+R 求形式商和余式,最后重编码并检查残差秩。半径满足 2t≤n−k 时,它完整判定有没有距离至多 t 的码字。

与本页一样,合法候选与真实发送者必须分开。无错输入也可能有多份辅助 Λ,但所有插值解给同一条消息;若真实错误超预算,接收词仍可能落入另一合法纠错球。这个结构化算法没有解决任意线性码的一般译码问题。

参考资料

[1] MIT 6.02,Linear Block Codes: Encoding and Syndrome Decoding,校验矩阵、综合与单错误定位。

[2] Elwyn R. Berlekamp、Robert J. McEliece、Henk C. A. van Tilborg,〈On the Inherent Intractability of Certain Coding Problems〉,IEEE Transactions on Information Theory 24(3),1978,384–386,doi:10.1109/TIT.1978.1055873。

关系图谱18 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系