【はみんぐきょり】
ハミング距離 とは?
最終更新:
💡 同じ長さの列で、違う位置を数える距離
同じ長さの2つの列を比較し、対応する位置で値が異なる数を数えた距離。ビット列だけでなく文字列にも使える。誤り検出・訂正符号では、有効な符号語同士の最小距離が重要になる。
📌 このページのポイント
- 同じ長さの2つの列で、対応する位置の値が異なる数を表す
- 距離0なら列は同じ。値が大きいほど異なる位置が多い
- 誤り検出・訂正では、有効な符号語同士の最小ハミング距離を考える
- 文字の比較にも使えるが、挿入や削除を数える編集距離とは異なる
ハミング距離ってなに?距離なのにビットの話なの?
同じ長さのビット列を並べて、違っている位置の数を数えるんだ。たとえば1010と1001は、3番目と4番目が違うから距離は2。物理的な長さではなく、値の違いを数える距離だよ。
それが何の役に立つの?
QRコードとかもそういう仕組み?
ビット列以外にも使える?
同じ長さの文字列にも使えるよ。appleとapplyは最後の文字だけ違うので距離1。DNAの塩基の並びも、同じ長さで位置が対応していれば違う位置を数えられる。たとえばACGTとACGAなら距離1だね。
文字が1つ増えたり減ったりしたら?
そのままのハミング距離では扱えないよ。挿入や削除も数えるなら編集距離などを考える。ハミング距離は同じ位置同士を比較するので、どの単位を比べるかと、長さ・位置の対応をそろえることが大切なんだ。
まとめ:ざっくりこれだけ覚えればOK!
「ハミング距離」って出てきたら「同じ長さの2つの列で、値が違う位置の数」と思えばだいたいOK!
📖 おまけ:英語の意味
「Hamming Distance」 = ハミングの距離
💬 リチャード・ハミングの名前に由来するよ。1950年の論文『Error Detecting and Error Correcting Codes』で、異なる座標の数による距離と誤り検出・訂正の関係を論じている。