English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

guest
1 / ?
back to lessons

Bell 實驗室,1947 年

Richard Hamming 於 1946 年加入貝爾電話實驗室。那裡的中繼計算機只在工作日運作,技術人員可在出錯後重新啟動。週末時,機器一旦出現故障就會停止運行,直到週一才能重啟任務。

Hamming 非常憤怒。他想:「如果機器能檢測到錯誤,為什麼不能定位它並修正它呢?」這種挫折感,加上他對二進制算術和奇偶檢查的深入了解,奠定了基礎。

首次洞察:矩形碼

Hamming 的第一個想法:將消息位排列成 m×n 矩形,為每一行和每一列添加奇偶檢查。單一錯誤會導致恰好一個失敗的行檢查和一個失敗的列檢查。它們的交點指出錯誤的位置。

冗餘比例:(m+1)(n+1) / mn。微積分告訴你,對於固定的消息大小,正方形最小化這個比例。但隨著 m 和 n 增大,雙重錯誤變得更可能,這是一個沒有通用答案的工程判斷。

奇偶檢查矩陣與症狀表

最小化矩形冗餘

4×4 矩形攜帶 16 個消息位,加上 4 個行檢查和 4 個列檢查,加上 1 個角奇偶位 = 9 個檢查位,用於 16 個消息位。

冗餘比例:(m+1)(n+1) / mn = 25/16 ≈ 1.56。

對於 10×10 矩形:100 個消息位,121 個總位,冗餘 ≈ 1.21。

為什麼最小化矩形冗餘比例導致正方形幾何?使用公式 (m+1)(n+1)/mn 和微積分或簡單論證,表明在固定消息計數 m·n = k 時,m = n 最小化冗餘。

症狀作為二進制數

在矩形碼洞察出現幾週後,Hamming 騎車前往紐約,經過新澤西農場,心中反覆審視他的成就。三角碼浮現在他腦海中,冗餘更好。然後是立方體。然後是四維、五維...

每增加一個維度都會改善冗餘。n 維度中邊長為 2 的超立方體僅使用 n+1 個奇偶檢查來處理 2^n 個頂點。但這是最優的嗎?

計數論證

n+1 個奇偶位產生一個症狀:一個 (n+1) 位二進制數。該症狀需要識別 2^n + 1 個不同的結果:2^n 個錯誤位置中的每一個,加上特殊的「無錯誤」結果。

2^(n+1) = 2·2^n,幾乎足夠。差一個因子 2。Hamming 放置了這個問題。

關鍵洞察

後來,Hamming 帶著新想法回到這個問題:使用症狀本身作為二進制數,為錯誤位置編址。位置 1 = 二進制 001,位置 2 = 二進制 010,位置 3 = 二進制 011,等等。保留全零表示「無錯誤」。

這將症狀從奇偶檢查的輸出轉變為一個地址。奇偶檢查設計得以至於當任何單一位翻轉時產生恰好正確的地址。

設計 (7,4) 碼

對於 7 位碼(3 個奇偶位,4 個消息位),位置 1 到 7 的二進制表示是:001、010、011、100、101、110、111。

奇偶檢查 1 涵蓋位 0 = 1 的位置:位置 1、3、5、7。

奇偶檢查 2 涵蓋位 1 = 1 的位置:位置 2、3、6、7。

奇偶檢查 3 涵蓋位 2 = 1 的位置:位置 4、5、6、7。

奇偶位佔據 2 的冪次位置:1、2、4。消息位佔據其餘位置:3、5、6、7。

如果位 6 翻轉,奇偶檢查 2 和 3 失敗(二進制 110 = 6)。症狀讀取 110 = 6。翻轉位置 6。完成。

接收到的 (7,4) Hamming 碼字是:位置 1-7 = 0 0 1 1 0 1 1。應用三個奇偶檢查(涵蓋位置 {1,3,5,7}、{2,3,6,7}、{4,5,6,7})。計算症狀。哪個位置有錯誤?寫出更正後的碼字,然後提取四個消息位。

單錯誤修正、雙錯誤檢測

(7,4) Hamming 碼修正單個錯誤。但如果有兩位翻轉呢?沒有額外保護,解碼器應用症狀規則並「修正」碼字為錯誤的消息,造成無聲的誤修正。

SECDED:再加一個奇偶位

添加一個覆蓋整個碼字的單個奇偶位 p₀(所有 7 位)。現在症狀有 4 個條目:原始的 3 個檢查加上 p₀。

`` 舊症狀 新 p₀ 含義 000 0 正確 000 1 只有 p₀ 中的錯誤 xxx 1 單個錯誤,舊症狀命名它 xxx 0 雙錯誤,標記它 ``

四種情況是窮盡的。雙錯誤翻轉兩位:舊症狀不會讀取 000(兩位共同破壞了它的兩個檢查),但 p₀ 翻轉兩次並返回到 0。模式 xxx + 0 是不可否認的。

為什麼 SECDED 有效

SECDED 規則利用奇偶的模運算結構。使用偶奇偶,任何單一翻轉都會改變 p₀。任何雙翻轉都會使 p₀ 保持不變。所以 p₀ 計數錯誤模 2。

考慮一個 SECDED 保護的碼字。傳輸後你觀察到:舊症狀 = 101,新奇偶位 p₀ = 0。發生了什麼?然後解釋:為什麼組合(症狀 ≠ 000)AND(p₀ = 0)唯一信號雙錯誤,而不是單個錯誤或無錯誤?

幾何圖景

Hamming 從另一個方向到達同一位置:分析幾何。將每個 n 位字符串表示為 n 維超立方體的頂點。單位翻轉沿一個軸移動一個邊長。兩次翻轉:兩條邊。度量是 Hamming 距離。

定義圍繞碼字 c 的 Hamming 球,半徑 t:所有在 c 的 t 位翻轉內的點。對於單錯誤修正,t = 1。

單錯誤修正條件:圍繞每對不同碼字的半徑 1 的球不得重疊。如果它們重疊,接收到的字可能屬於任一碼字,解碼器失敗。

這直接轉換為最小距離:如果碼字至少相隔 3(d_min ≥ 3),兩個半徑 1 的球就不重疊。

(7,4) 碼達到 d_min = 3。Hamming 界限:2^7 / (1 + 7) = 16 = 2^4。恰好 16 個碼字。一個完美碼:16 個半徑 1 的球用沒有間隙或重疊的方式拼磁 {0,1}^7。

陪集結構與症狀解碼

Hamming 界限說 M ≤ 2^n / Vol(n, t),其中 Vol(n, 1) = 1 + n。對於 n = 7、t = 1:(7,4) 碼達到 M = 16,完全滿足界限。「完全滿足界限」在幾何上意味著什麼?它對使用 Hamming 碼內嵌的設備的維護和現場修理有什麼含義?

工程判斷

Hamming 是明確的:錯誤更正碼涉及工程判斷,而不是純粹數學。

消息長度:較長的消息允許更有效的編碼(n 個消息位的 log n 個奇偶位)。但更長的消息也會累積更多噪聲,增加雙錯誤通過作為虛假單個修正通過的風險。

修正水平 vs 檢測:以一個錯誤修正交換兩個額外的錯誤檢測。最優分割取決於通道的噪聲特徵。

現場維護價值:隨著設備變得更複雜,現場技術人員無法從第一原則診斷每個故障。自我診斷系統大大降低了維護所需的技能。Hamming 稱這為最重要的好處之一,通常比原始可靠性增益更重要。

風格:幸運眷顧有備而來的心智

Hamming 用直接挑戰關閉了第 12 章。他描述發現需要三至六個月的工作,大多是在執行他在 Bell 實驗室的主要職責的奇數時刻進行。

他識別了使其可能的三件事:

1. 準備:在問題出現之前,對奇偶檢查、二進制算術和群論的深入熟悉。

2. 審視成功:習慣性地重播過去的解決方案以內化它們的風格。三角碼在他穿過通勤車乘時心理回顧矩形碼時浮現。

3. 不滿足於『看起來不錯』:他曾經因接受明顯的最優性而燒傷過手指。他推動直到他能證明碼是最佳的。

Hamming 說幸運眷顧有備而來的心智。描述你自己的技術領域中的一個問題,其中在相鄰領域有準備給了你他人缺乏的優勢。相鄰技能是什麼,它如何轉移?