[Hamming code - Wikipedia](https://en.wikipedia.org/wiki/Hamming_code)
> [[Computer Science|コンピュータサイエンス]]や電気通信において、ハミングコードは線形[[誤り訂正符号]]の一種である。ハミングコードは、1ビットおよび2ビットの誤りを検出することができ、また、未修正の誤りを検出せずに1ビットの誤りを訂正することができる。これに対し、単純なパリティ符号は誤りを訂正できず、奇数ビットの誤りしか検出できない。ハミングコードは完全符号であり、すなわち、そのブロック長と最小距離の3つの符号で可能な限り高いレートを達成する[1] リチャード・W・ハミングは、パンチカードリーダーによってもたらされる誤りを自動的に訂正する方法として1950年にハミングコードを発明した。最初の論文では、ハミングは彼の一般的なアイデアを詳しく説明したが、特に4ビットのデータに3つのパリティビットを追加するハミング(7,4)符号に焦点を当てた[2]。
関連:[[ハミング距離]]
数学的には、ハミングコードは2値線形符号の一種である。
各整数$r \geq 2$ に対して、
ブロック長:$n = 2^r - 1$
メッセージ長:$k = 2^r - r - 1$
の符号語が存在する。
- ハミングコードのレートは$R = k / n = 1 - r / (2^r - 1)$となる。
- これは最小距離が3(すなわち、あるコードワードから他のコードワードに行くために必要なビット変化の最小数が3)、ブロック長が$2^r - 1$のコードに対して可能な最高のレートとなる。