ハミング距離とは?
ハミング距離とは、同じ長さの2つの文字列を比べたときに、対応する記号が異なっている位置の数を指します。リチャード・ハミングにちなんで名付けられたこの概念は、情報理論・符号理論・コンピュータサイエンスの基礎となるものです。一方の文字列を他方へ変えるために必要な「置き換え」の最小回数を表し、誤り検出符号や誤り訂正符号の分野で幅広く使われています。
この計算ツールの使い方
比較したい2つの文字列を入力してください。1011101のような2進数の列でも、DNAの塩基配列でも、任意のテキストでも構いません。ツールが1文字ずつ照合し、異なる位置がいくつあるかを数えます。文字列の長さが異なる場合、長いほうの余分な文字はすべて「相違」としてカウントされます。
計算式の解説
2つの文字列aとbについて、ハミング距離は、各位置\(i\)において\(a_i \neq b_i\)のとき1、そうでないとき0となる指標を、すべての位置で合計したものです。
$$d(a, b) = \sum_{i=1}^{\min(|a|,|b|)} \left[\, \text{A}_i \neq \text{B}_i \,\right] + \Big|\; |\text{A}| - |\text{B}| \;\Big|$$
結果は必ず0以上の整数で、0(完全に一致)から文字列の長さ(すべての位置が異なる)までの範囲に収まります。
具体例で確認
1011101と1001001を比べてみましょう。並べて見ると次のようになります。
10111011001001
3番目の位置(1と0)と5番目の位置(1と0)で値が異なります。したがってハミング距離は2です。
よくある質問
文字列の長さは同じでなければなりませんか? 本来のハミング距離は同じ長さを前提とします。ただし、このツールは長さが異なる場合でも、余分な文字をそれぞれ不一致として数えることで、実用的な答えを返します。
2進数以外のテキストでも使えますか? はい。アルファベット、数字、記号など、あらゆる文字を比較できます。
レーベンシュタイン距離との違いは何ですか? ハミング距離は固定された位置での「置き換え」のみを数えますが、レーベンシュタイン距離は「挿入」や「削除」も許容します。