解決方案
1947年,貝爾實驗室那位教同事如何使用電腦的理查·漢明(Richard Hamming),原本期待一台大型繼電器機器交出週末無人看管下跑出的結果。那台機器很早就失敗了,沒有任何結果可以交付。他提出了開啟這一切的疑問:如果機器能發現有錯誤,為什麼不能定位錯誤在哪裡並修正它?
他共事的機器使用的同位元檢查能偵測錯誤,卻無法修正,因此任何一個翻轉的位元都意味著工作中斷、必須重做。漢明加入了彼此重疊的同位元,使每個資料位元都被多個檢查涵蓋,於是翻轉的位元會產生獨特的樣式,指向它自己的位置。
這讓電腦能修正單一錯誤,甚至偵測兩個錯誤並修正其中一個,而不必停下來。這個方法於他1950年發表在《貝爾系統技術期刊》的論文中付梓,後來成為以他命名的編碼家族,用於電腦、電話交換,以及後來從太空探測器遙測到音訊光碟的各種領域。
達成了什麼
加入能定位錯誤的位元,而不只是標記出錯誤
為何有效
重疊的檢查讓每個位元的失敗樣式獨一無二,因此錯誤能被定位。
能自我修正的機器可避免中斷並重跑漫長的工作。
隨著資料區塊變大,冗餘的額外負擔會下降,因此修正的代價更低。
它把錯誤防護從偵測工具變成修正工具。
可應用的地方
偵測錯誤成本低廉,但真正消除浪費的是修正;把檢查位元結構化以精確指出元凶,就能免費換得修正。
後續發展
漢明碼成為編碼理論的開端,也是後來更強大編碼的範本,這些編碼如今保護著RAM、磁性與光學儲存以及資料線路。漢明於1980年獲頒IEEE電腦學會先鋒獎,IEEE並以他的名字命名其資訊科學獎章。
追溯依據
參考來源
- Richard Wesley Hamming — Computer Pioneers IEEE Computer Society · history.computer.org
- Algebraic Coding Theory / Error Detection and Correction University of Puget Sound · math.pugetsound.edu