《某些有限域上的多项式码》
多发几个多项式的取样点,即便部分出错,整条消息也能存活下来。
划伤一张 CD、撕掉二维码的一角、丢失四十亿千米外探测器传来的一段数据——消息却依旧完好送达。这近乎魔法的本事,就是里德—所罗门码。
把这个想法拆开看
诀窍在于:把你的消息当作一条曲线来发送,而不是当作一张清单。把你的数据看成一条光滑数学曲线的「配方」,然后发送的不是配方,而是从那条曲线上读出的一串点——比画出这条曲线所必需的还要多。
现在假设其中一些点在途中被弄花了。因为曲线很平缓,而你又多发了点,接收方便能看出:大多数点仍落在同一条曲线上,只有少数几个偏到一旁。能拟合这多数点的光滑曲线只有一条——于是那些偏离者被揪出、被掰回原位,原消息得以重建。你多发的富余点越多,能扛住的损坏就越多。
两位工程师,走在机器前面
1960 年,在麻省理工学院林肯实验室工作的欧文·里德与古斯塔夫·所罗门,发表了一篇四页的论文,描述了这套方案。它优雅,且可被证明是最优的——但有个难处:当时还没人知道,如何在一条长消息里又快又准地找出并改正错误。有几年,它是一个等待方法的漂亮想法。后来解码器来了——先是彼得森,再是 1967 年的伯利坎普与梅西——闸门就此打开。等到 1980 年代 CD 问世、旅行者号掠过群星,里德—所罗门早已在默默干活,且从未停下。
它为何重要
香农在 1948 年证明了:在有噪声的信道上,你可以近乎完美地通信——但他的证明没说怎么做。里德—所罗门,是最早一批强到、又便宜到足以在大规模上兑现这一承诺的码,并且尤其擅长对付成簇而来的损坏:一道划痕、一粒尘埃、一段衰落的无线电信号。正因如此,你划伤的光盘照样能播,遮掉一半的二维码照样能扫。没有它,我们所熟知的数字存储与通信,会脆弱得多。
两点定一线
还记得吗:两点确定一条直线,三点确定一条抛物线。若有人给你五个本该落在一条直线上的点,其中一个明显歪了,你不必被告知是哪一个——相互吻合的那四个点定出了直线,而那个离群的点便格外扎眼,可被改正。里德—所罗门正是把这件事放大:发送一条曲线的许多个点,少数几个出错的点永远无法伪装,因为它们不可能一齐落回同一条又低又平滑的曲线上。
之前与之后
克劳德·香农(1948)证明了在噪声中可靠通信是可能的;理查德·汉明(1950)造出第一个能纠正单个比特错误的实用码。里德—所罗门更进一步,纠正整个符号与成簇的突发错误,成为史上应用最广的纠错码。解码算法(伯利坎普—梅西,1967)与后来的列表解码结果,又把它推得更远。在本馆里,它正处在香农那个承诺,与如今倚赖数据保持完好的存储和网络之间。