ハミング距離(Hamming distance)

ハミング距離(Hamming distance)とは?

ハミング距離は、同じ長さを持つ二つの文字列間の違いを測るための指標です。具体的には、二つの文字列を比較したときに異なる位置の数を数えます。二つの文字列がどれだけ異なるかを示す指標として使われます。

例1:

  • 文字列1: "apple"

  • 文字列2: "apply"

これらの文字列を比較すると、最後の文字が異なります。
したがって、ハミング距離は 1 です。

例2:

  • 文字列1: "12345"

  • 文字列2: "12354"

最後の二文字が異なっています。したがって、ハミング距離は 2 です。

def hamming_distance(str1, str2):
    if len(str1) != len(str2):
        raise ValueError("Strings must be of equal length")

    return sum(c1 != c2 for c1, c2 in zip(str1, str2))

examples = [
    ("apple", "apply"),
    ("12345", "12354")
]

# 各例に対してハミング距離を計算し、結果を表示します
for str1, str2 in examples:
    distance = hamming_distance(str1, str2)
    print(f"Hamming distance :  '{str1}' vs '{str2}' = {distance}")

Hamming distance : 'apple' vs 'apply' = 1
Hamming distance : '12345' vs '12354' = 2