EMZETT.
Giriş yap

Levenshtein mesafesi

Kısaca: Levenshtein mesafesi, bir sözcüğü başka bir sözcüğe dönüştürmek için gereken en az tek karakterli ekleme, silme ve değiştirme sayısını sayar.

Biraz daha ayrıntılı: “kitten” → “sitting” mesafesi 3’tür (k→s, e→i, g ekle). Yazım denetimi, “Bunu mu demek istediniz …?” ve bulanık aramanın temelindedir.

Ayrıntılı

  • Yöntem: A’nın ilk i karakteri ile B’nin ilk j karakteri arasındaki mesafe için d[i][j] tablosuyla dinamik programlama.
  • Özyineleme: d[i][j] = min(d[i-1][j]+1, d[i][j-1]+1, d[i-1][j-1] + (a[i]≠b[j])).
  • Maliyet: O(m·n) zaman; yalnızca iki satır tutulursa O(min(m, n)) bellek.
  • Varyantlar: Damerau-Levenshtein bitişik karakterlerin yer değiştirmesini de sayar. Hamming mesafesi yalnızca eşit uzunluklu sözcükler için geçerlidir.
  • Pratikte: Büyük sözlüklerde her sözcüğü tek tek karşılaştırmak yerine BK ağaçları veya n-gramlar gibi indeksler kullanılır.

Ayrıca bak: Metin arama algoritmaları