ハミング距離計算機

2つの文字列やデータのハミング距離を計算します。

計算結果

ハミング距離計算機について

ハミング距離計算機は、2つの同じ長さの文字列やデータシーケンスを比較し、それらが「どれだけ異なっているか」を数値化するためのツールです。 情報理論の分野でリチャード・ハミングによって導入されたこの概念は、現在ではデータ通信の誤り検出、暗号理論、遺伝子解析など、幅広い分野で利用されています。 このツールを使えば、バイナリデータ(0と1の列)だけでなく、DNA配列(ATGC)や通常の英単語などのハミング距離も瞬時に計算できます。

ハミング距離とは?

ハミング距離(Hamming Distance)とは、等しい長さを持つ2つの文字列において、「対応する位置にある文字が異なる箇所の数」と定義されます。 言い換えれば、一方の文字列をもう一方の文字列に変えるために必要な、「文字の置換(Substitution)」の最小回数です。

例えば、以下の2つの文字列を比較してみましょう:

  • 文字列A: 1011101
  • 文字列B: 1001001

左から順に見ていくと、3文字目(1と0)と5文字目(1と0)の2箇所が異なっています。したがって、ハミング距離は2となります。 同様に、"karolin" と "kathrin" の場合、3文字目(r/t)、4文字目(o/h)、5文字目(l/r)の3箇所が異なるため、距離は3です。

ハミング距離の重要性と応用分野

単純な「違いの数」に見えるハミング距離ですが、数学的・工学的には非常に深い意味を持ちます。

1. 通信と誤り訂正

データ通信において、送信データがノイズによって変化してしまった場合、それが元のデータとどれだけ離れているか(=何ビット反転したか)を知る指標になります。 ハミング距離が大きい符号体系を設計することで、より多くの誤りを検出し、訂正することが可能になります。 例えば、最小ハミング距離が3の符号系を使えば、1ビットの誤りを確実に訂正できます。

2. バイオインフォマティクス(DNA解析)

生物学の分野では、DNAやRNA、タンパク質のアミノ酸配列の類似性を評価するために使われます。 同じ長さの遺伝子配列間のハミング距離が小さいほど、進化的な距離が近く、種として近縁である可能性が高いと判断されます。 もちろん、挿入や欠失(インデル)がある場合は「編集距離(Levenshtein距離)」など、より複雑な指標が必要になりますが、点変異(1塩基置換)の分析にはハミング距離が基本となります。

3. パターン認識と機械学習

画像認識やデータ分類において、特徴ベクトルの類似度を測るために使用されます。 特にバイナリ特徴量(特徴の有無を0/1で表したベクトル)の場合、ユークリッド距離の代わりにハミング距離を使うことで、計算コストを抑えつつ効果的な類似度判定ができます。

他の距離指標との違い

レーベンシュタイン距離(編集距離)

ハミング距離とよく混同されるのがレーベンシュタイン距離です。 ハミング距離は「長さが同じ文字列」において「置換」のみを許容しますが、レーベンシュタイン距離は「挿入」や「削除」も考慮します。 そのため、長さが異なる文字列同士でも計算可能です。ハミング距離は、レーベンシュタイン距離の特殊なケース(長さが同じで置換のみの場合)と考えることもできます。

ユークリッド距離

数値データの距離を測るのによく使われるユークリッド距離(直線距離)とは異なり、ハミング距離は離散的な(飛び飛びの)値の差異を数える指標です。 連続的な空間ではなく、デジタルデータのような離散空間での距離測定に適しています。

ハミング距離の性質(距離の公理)

数学的には、ハミング距離 d(x, y) は以下の「距離の公理」を満たします:

  1. 非負性: 距離は常に0以上である(d(x, y) ≥ 0)。
  2. 同一性: 自分自身との距離は0である(d(x, y) = 0 ⇔ x = y)。
  3. 対称性: AからBへの距離と、BからAへの距離は等しい(d(x, y) = d(y, x))。
  4. 三角不等式: 寄り道をする方が距離は長くなるか等しい(d(x, z) ≤ d(x, y) + d(y, z))。

これらの性質を持つため、ハミング距離は数学的にも扱いやすく、多くのアルゴリズムに応用されています。

使い方のヒント

  • 両方の入力フィールドに同じ長さの文字列を入力してください。長さが異なると正しく計算できません。
  • 大文字と小文字は区別されます(例: "A" と "a" は異なるとみなされ、距離1となります)。
  • スペースも1文字としてカウントされます。
  • バイナリデータ(1010)だけでなく、16進数(A5F)や自然言語の単語比較にも使えます。