Hamming Mesafesi Nedir?
Eşit uzunluktaki iki dizi arasındaki Hamming mesafesi, karşılıklı sembollerin birbirinden farklı olduğu konumların sayısıdır. Adını Richard Hamming'den alan bu kavram; bilgi kuramı, kodlama kuramı ve bilgisayar biliminin temel taşlarından biridir. Bir diziyi diğerine dönüştürmek için gereken en az yer değiştirme sayısını ölçer ve hata sezen ile hata düzelten kodlarda yaygın olarak kullanılır.
Bu Aracı Nasıl Kullanırsınız?
İki dizinizi girin; bunlar ikili (binary) diziler (örneğin 1011101), DNA bazları ya da herhangi bir metin olabilir. Hesaplama aracı dizileri karakter karakter karşılaştırır ve kaç konumun farklı olduğunu sayar. Diziler farklı uzunluktaysa, daha uzun olandaki her fazladan karakter bir fark olarak değerlendirilir.
Formül Açıklaması
a ve b adlı iki dizi için Hamming mesafesi, tüm i konumları boyunca; ai ≠ bi olduğunda 1, aksi hâlde 0 değerini alan bir göstergenin toplamıdır:
$$d(a, b) = \sum_{i=1}^{\min(|a|,|b|)} \left[\, \text{A}_i \neq \text{B}_i \,\right] + \Big|\; |\text{A}| - |\text{B}| \;\Big|$$
Sonuç her zaman 0 (diziler birebir aynı) ile dizi uzunluğu (her konum farklı) arasında değişen, negatif olmayan bir tam sayıdır.
Çözümlü Örnek
1011101 ve 1001001 dizilerini karşılaştıralım. Alt alta dizdiğimizde:
10111011001001
3. konumda (1 ile 0) ve 5. konumda (1 ile 0) farklılık görülür. Bu da \(2\) değerinde bir Hamming mesafesi verir.
Sıkça Sorulan Sorular
Dizilerin aynı uzunlukta olması zorunlu mu? Klasik Hamming mesafesi eşit uzunluk gerektirir. Yine de bu araç, eşit olmayan dizilerde her fazladan karakteri bir uyuşmazlık sayarak işe yarar bir sonuç verir.
İkili olmayan metinlerde de çalışır mı? Evet. Harfler, rakamlar ya da semboller dâhil her türlü karakter karşılaştırılabilir.
Levenshtein mesafesinden farkı nedir? Hamming yalnızca sabit konumlardaki yer değiştirmeleri sayarken, Levenshtein ekleme ve silme işlemlerine de izin verir.