【はみんぐきょり】

ハミング距離 とは?

💡 2つのデータの「どれだけ違うか」を指折り数える、シンプルだけど強力な距離
📌 このページのポイント
ハミング距離 — 異なるビットを数える ビット列A ビット列B 1 0 1 1 0 1 1 1 0 0 1 1 1 0 同じ 同じ 異なる 同じ 異なる 同じ 異なる ハミング距離 = 3(異なるビットが3つ)
2つのビット列の比較と異なるビットの数え方
ひよこ ひよこ

ハミング距離ってなに?距離なのにビットの話なの?

ペンギン先生 ペンギン先生

そう!2つの同じ長さのビット列を並べて、違っているビットの数を数えるだけだよ。たとえば「1010」と「1001」を比べると、3番目と4番目が違うからハミング距離は2。物理的な距離じゃなくて「データ同士の違いの大きさ」を測る距離なんだよ

ひよこ ひよこ

それが何の役に立つの?

ペンギン先生 ペンギン先生

一番有名なのは通信エラーの検出と訂正だよ。データを送るとき、ノイズでビットが反転することがあるよね。もし送信データ同士のハミング距離が十分に大きければ、1〜2ビット間違っても「本来どのデータだったか」を特定できるんだ

ひよこ ひよこ

QRコードとかもそういう仕組み?

ペンギン先生 ペンギン先生

まさにそう!QRコードは一部が汚れたり欠けたりしても読み取れるよね。あれは誤り訂正符号のおかげで、ハミング距離の考え方が基礎にあるんだよ。送信するデータに冗長なビットを付け加えて、ハミング距離を大きくしているんだ

ひよこ ひよこ

ビット列以外にも使える?

ペンギン先生 ペンギン先生

文字列の比較にも応用できるよ。たとえば「apple」と「apply」はハミング距離1。スペルチェッカーが「もしかしてこの単語?」と候補を出すときにも使われるんだ。DNA配列の変異解析でも塩基の違いをハミング距離で測ったりするんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ハミング距離」って出てきたら「2つのデータで違っているビットの数」と思えればだいたいOK!
📖 おまけ:英語の意味
「Hamming Distance」 = ハミングの距離
💬 1950年にリチャード・ハミングが誤り訂正符号の研究で提唱した概念だよ。ベル研究所で働いていたときに、コンピュータの計算エラーを自動修正する方法を考えたんだよ
← 用語集にもどる