【はみんぐきょり】

ハミング距離 とは?

最終更新:
💡 同じ長さの列で、違う位置を数える距離

同じ長さの2つの列を比較し、対応する位置で値が異なる数を数えた距離。ビット列だけでなく文字列にも使える。誤り検出・訂正符号では、有効な符号語同士の最小距離が重要になる。

📌 このページのポイント
同じ位置で異なるビットを数える 列A 列B 1 1 = 1 0 0 = 2 1 0 ≠ 3 1 1 = 4 0 1 ≠ 5 1 1 = 6 1 0 ≠ 7 3・5・7番目が違う ハミング距離 = 3 同じ長さで、対応する位置を比較
1011011と1001110は3・5・7番目の値が異なるため、ハミング距離は3。同じ値の位置は青、異なる値の位置は赤と≠で示しています。
ひよこ ひよこ
ハミング距離ってなに?距離なのにビットの話なの?
ペンギン先生 ペンギン先生
同じ長さのビット列を並べて、違っている位置の数を数えるんだ。たとえば1010と1001は、3番目と4番目が違うから距離は2。物理的な長さではなく、値の違いを数える距離だよ。
ひよこ ひよこ
それが何の役に立つの?
ペンギン先生 ペンギン先生
通信で使う有効な符号語同士を離しておくと、ビットの誤りを検出・訂正しやすくなるよ。すべての符号語の組で最小距離が3以上なら、1ビットの誤りの後も元の符号語が最も近いので、1ビット訂正ができる。距離が大きい2つのデータを用意するだけで、任意の誤りを直せるわけではないんだ。
ひよこ ひよこ
QRコードとかもそういう仕組み?
ペンギン先生 ペンギン先生
QRコードも冗長な情報を加えて誤りを訂正するよ。ただし、使っているのはハミング符号ではなくReed–Solomon符号で、8ビットをまとめたコードワードを単位に扱う。ビットの距離を数える例と、QRの具体的な訂正方式は区別しよう。
ひよこ ひよこ
ビット列以外にも使える?
ペンギン先生 ペンギン先生
同じ長さの文字列にも使えるよ。appleとapplyは最後の文字だけ違うので距離1。DNAの塩基の並びも、同じ長さで位置が対応していれば違う位置を数えられる。たとえばACGTとACGAなら距離1だね。
ひよこ ひよこ
文字が1つ増えたり減ったりしたら?
ペンギン先生 ペンギン先生
そのままのハミング距離では扱えないよ。挿入や削除も数えるなら編集距離などを考える。ハミング距離は同じ位置同士を比較するので、どの単位を比べるかと、長さ・位置の対応をそろえることが大切なんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ハミング距離」って出てきたら「同じ長さの2つの列で、値が違う位置の数」と思えばだいたいOK!
📖 おまけ:英語の意味
「Hamming Distance」 = ハミングの距離
💬 リチャード・ハミングの名前に由来するよ。1950年の論文『Error Detecting and Error Correcting Codes』で、異なる座標の数による距離と誤り検出・訂正の関係を論じている。

参考資料

← 用語集にもどる