1947年、同僚にコンピュータの使い方を示していたベル研究所のリチャード・ハミングは、週末に無人で稼働していた大型リレー式計算機の結果を期待して出社した。しかしそれは早々に失敗しており、引き渡せるものは何もなかった。彼はそこから始まる問いを立てた。機械が誤りの存在を見つけられるのなら、なぜその位置を特定して修正できないのか。

彼が扱っていた機械は、誤りを検出できても訂正できないパリティ検査を用いていたため、1ビットでも反転すれば処理は停止し、やり直さなければならなかった。ハミングは重複するパリティビットを追加し、各データビットが複数の検査で覆われるようにした。これにより、反転したビットはその位置を指し示す特有のパターンを生み出す。

これによって計算機は、停止することなく単一の誤りを訂正し、さらには二つの誤りを検出して一つを訂正できるようになった。この手法は1950年の『Bell System Technical Journal』の論文で公表され、彼の名を冠する符号の一族となった。それは計算機、電話交換、そして後に宇宙探査機のテレメトリからオーディオディスクに至るまで、あらゆる分野で用いられている。

誤りを指摘するだけでなく、その位置を特定するビットを追加する

検査を重複させることで各ビットの故障パターンが一意になり、誤りの位置を特定できる。

自己訂正する機械は、長時間の処理を停止して再実行することを避けられる。

データブロックが大きくなるにつれて冗長性のオーバーヘッドは減少するため、修正のコストは下がる。

誤り保護を、検出の道具から訂正の道具へと変えた。

誤りの検出は安価だが、無駄をなくすのは訂正である。原因を突き止めるように検査ビットを構成すれば、修正はただで手に入る。

ハミング符号は符号理論の始まりとなり、現在RAM、磁気・光記憶装置、データ回線を保護する、より強力な後発の符号のモデルとなった。ハミングは1980年にIEEE Computer SocietyのPioneer Awardを受賞し、IEEEは情報科学に関するそのメダルを彼にちなんで命名した。

出典をたどる

出典

  1. Richard Wesley Hamming — Computer Pioneers IEEE Computer Society · history.computer.org
  2. Algebraic Coding Theory / Error Detection and Correction University of Puget Sound · math.pugetsound.edu