seegongsik
我的单词本
CM · 噪声与信息

纠错编码

香农承诺在容量之下能把错误压到接近零,却没说怎么做。学习给数据加上按规则算出的冗余比特,便能检出噪声翻转的比特,进而指出哪一位出错并纠正。

一个翻转的比特,三种编码的应对

依次点击无保护、奇偶校验、汉明。面对同一个单比特错误,只有数据时根本察觉不到,一个校验位只能检出,汉明则指出是哪一位并纠正。

码长与最小距离
n = 4, k = 4 · d_min = 1
无保护

噪声翻转比特

如前所见,噪声在接收端偶尔把 0 翻成 1、把 1 翻成 0。若只把数据比特裸发,收到的 1011 究竟原本是 1011 还是翻了一位的 1001,无从分辨。所有 4 比特模式都同样像合法数据,所以连有没有出错都不知道。

冗余比特当哨兵

给数据加上按规则算出的校验位,情形就不同了。最简单的奇偶校验位是全部数据比特的 XOR,使 1 的个数始终为偶。噪声翻转任一位时 1 的个数变奇,校验失败,接收机便知出错。但单个校验位无法指出是哪一位错了。

观察p = d₁ ⊕ d₂ ⊕ d₃ ⊕ d₄
奇偶校验是数据比特的 XOR。
选择detect 1: dmin ?
检出单个错误需最小距离 2。

距离带来纠正

把码字看作点,好的编码让有效点彼此远离。两个码字不同的比特位数称为汉明距离。所有有效码字间的最小距离为 2 时可检出单比特错误,为 3 时甚至能纠正单比特错误——因为出错的字仍最接近其原码字。汉明(7,4) 用 3 个校验位,在 7 比特中指出并纠正任一单比特错误。代价是码率 R = k/n = 4/7,为每 4 比特信息付出 3 比特冗余。

填空correct 1: dmin?
纠正单个错误需最小距离 3。
自己来R = kn = ?
码率是数据比特除以总比特。

回到第一屏

无保护时翻转的比特看起来就是合法数据、毫无痕迹,呈红色;加上一个校验位,能发出"出了问题"的信号却不知是哪一位,呈橙色;当汉明的校验位汇集偏差、精确指出那一位并翻回,便呈金色。纠错编码要听懂的只有一件事:用冗余比特把有效的字彼此拉远,被噪声推开一步的字也会落回最近的原字。这正是兑现香农承诺、在容量之下守住可靠性的方法。

纠错编码给数据加上按规则算出的冗余校验位,以检出并纠正噪声翻转的比特。一个奇偶校验位(最小距离 2)检出单个错误,最小汉明距离达 3 以上的码(如汉明(7,4))则指出并纠正单个错误。有效码字隔得越远越强,代价是码率 R = k/n 小于 1。这是香农容量定理的构造性一面。

通信单元线收束

从为什么要调制出发,我们一路追随一条消息走到这里。把基带的微小起伏搭上载波、抬上频率轴(AM、FM),变成数字(采样、PCM),用比特摇动载波(ASK、FSK、PSK),遇见带宽的上限,度量噪声与 SNR,用概率驯服随机,看见香农的绝对极限,最终在极限之下用编码把错误纠回。通信,归根到底,是在充满噪声的世界里把消息不丢失地交到对方手中的技艺。