JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
Back to the library
編碼理論 1960

《某些有限域上的多項式碼》

歐文·S·里德 與 古斯塔夫·所羅門

多發幾個多項式的取樣點,即便部分出錯,整條訊息也能存活下來。

Choose your version
In depth · the introduction

刮傷一張 CD、撕掉二維碼的一角、丟失四十億公里外探測器傳來的一段資料——訊息卻依舊完好送達。這近乎魔法的本事,就是里德—所羅門碼。

把這個想法拆開看

訣竅在於:把你的訊息當作一條曲線來發送,而不是當作一張清單。把你的資料看成一條光滑數學曲線的「配方」,然後發送的不是配方,而是從那條曲線上讀出的一串點——比畫出這條曲線所必需的還要多。

現在假設其中一些點在途中被弄花了。因為曲線很平緩,而你又多發了點,接收方便能看出:大多數點仍落在同一條曲線上,只有少數幾個偏到一旁。能擬合這多數點的光滑曲線只有一條——於是那些偏離者被揪出、被掰回原位,原訊息得以重建。你多發的富餘點越多,能扛住的損壞就越多。

兩位工程師,走在機器前面

1960 年,在麻省理工學院林肯實驗室工作的歐文·里德與古斯塔夫·所羅門,發表了一篇四頁的論文,描述了這套方案。它優雅,且可被證明是最優的——但有個難處:當時還沒人知道,如何在一條長訊息裡又快又準地找出並改正錯誤。有幾年,它是一個等待方法的漂亮想法。後來解碼器來了——先是彼得森,再是 1967 年的柏利坎普與梅西——閘門就此打開。等到 1980 年代 CD 問世、航海家號掠過群星,里德—所羅門早已在默默幹活,且從未停下。

它為何重要

夏農在 1948 年證明了:在有噪聲的通道上,你可以近乎完美地通訊——但他的證明沒說怎麼做。里德—所羅門,是最早一批強到、又便宜到足以在大規模上兌現這一承諾的碼,並且尤其擅長對付成簇而來的損壞:一道刮痕、一粒塵埃、一段衰落的無線電訊號。正因如此,你刮傷的光碟照樣能播,遮掉一半的二維碼照樣能掃。沒有它,我們所熟知的數位儲存與通訊,會脆弱得多。

兩點定一線

還記得嗎:兩點確定一條直線,三點確定一條拋物線。若有人給你五個本該落在一條直線上的點,其中一個明顯歪了,你不必被告知是哪一個——相互吻合的那四個點定出了直線,而那個離群的點便格外扎眼,可被改正。里德—所羅門正是把這件事放大:發送一條曲線的許多個點,少數幾個出錯的點永遠無法偽裝,因為它們不可能一齊落回同一條又低又平滑的曲線上。

一條光滑曲線(即訊息)上標著作為取樣點的藍色圓點。一個滑桿設定訊息有多短(從而有多少富餘的點);另一個滑桿把圓點敲離曲線,顯示為紅色。只要敲掉的不多,原曲線就是唯一能擬合其餘點的曲線,並以綠色重繪;敲掉太多,復原就失敗。

之前與之後

克勞德·夏農(1948)證明了在噪聲中可靠通訊是可能的;理查德·漢明(1950)造出第一個能糾正單個位元錯誤的實用碼。里德—所羅門更進一步,糾正整個符號與成簇的突發錯誤,成為史上應用最廣的糾錯碼。解碼演算法(柏利坎普—梅西,1967)與後來的列表解碼結果,又把它推得更遠。在本館裡,它正處在夏農那個承諾,與如今倚賴資料保持完好的儲存和網路之間。

The original document
Original source text
Irving S. Reed & Gustave Solomon · “Polynomial Codes over Certain Finite Fields” · Journal of the Society for Industrial and Applied Mathematics 8(2): 300–304 · June 1960
The construction
(Paraphrase.) Take a message as a block of k symbols drawn from a finite field — a finite arithmetic in which add, subtract, multiply and divide all stay inside the set. Read those k symbols as the coefficients of a polynomial of degree less than k. The codeword is not the coefficients themselves but the VALUES of that polynomial, evaluated at n distinct points of the field. With n larger than k, the message is sent as more numbers than it contains — a curve described by far more samples than are needed to draw it.
The theorem
(Paraphrase.) Any k of the n values suffice to reconstruct the degree-(k−1) polynomial and hence the message, just as two points fix a straight line. So up to n−k lost symbols (erasures) can be filled back in. And because two different low-degree codewords must disagree in at least n−k+1 of their n places, up to t = ⌊(n−k)/2⌋ symbols may be silently WRONG and still be located and corrected. That minimum distance, d = n−k+1, is the largest any code can achieve for the same n and k — the Singleton bound — so Reed–Solomon codes are “maximum distance separable.”
What it left open
(Paraphrase.) The 1960 paper established the code and its distance, but not a practical way to find and fix the errors in a long block; brute force was hopeless for the sizes that matter. Efficient decoding came soon after — Peterson (1960), then the Berlekamp–Massey algorithm (1967) and Forney's error evaluator (1965) — and only then did the code become usable at scale.
[ … ]
Lincoln Laboratory · 1960