Bölüm 5 · Simülasyon

Dizgi Benzerliği: Levenshtein Uzaklığı

← Bölüm 5

Hazır.

Dinamik Programlama Tablosu

Uzaklık —
Benzerlik —
İlerleme %0

Adım Açıklaması

Dizgi Benzerliği: Levenshtein Uzaklığı

Dinamik programlama matrisi adım adım doldurulur; ekleme, silme ve değiştirme maliyetlerinin düzenleme uzaklığını nasıl belirlediği görülür.

Kullanım

  • İki dizgi girin (her biri en çok 12 karakter) ve Matrisi Kur düğmesine basın.
  • Adım İlerle bir hücreyi hesaplar, Otomatik Oynat tablonun kalanını doldurur, Sıfırla matrisi yeniden kurar.
  • Sarı hücre hesaplanan hücredir; üç mavi hücre onun türetildiği değerlerdir.

Yineleme bağıntısı

D[i][j], A'nın ilk i karakteri ile B'nin ilk j karakteri arasındaki düzenleme uzaklığıdır. İlk satır ve ilk sütun boş dizgiden (ε) ya da boş dizgiye olan düzenleme uzaklığıdır: D[i][0] = i, D[0][j] = j.

D[i][j] = min(D[i−1][j] + 1, D[i][j−1] + 1, D[i−1][j−1] + maliyet); burada A[i−1] = B[j−1] ise maliyet = 0, değilse 1'dir.

  • Silme (yukarıdan): A[i−1] silinir.
  • Ekleme (soldan): B[j−1] eklenir.
  • Değiştirme / eşleşme (çaprazdan): karakter değiştirilir ya da korunur.

Sağ alt hücre Levenshtein uzaklığıdır. Normalleştirilmiş benzerlik = (1 − uzaklık / max(|A|, |B|)) × %100.

Karmaşıklık

O(|A|·|B|) zaman. Tablonun tamamı O(|A|·|B|) bellek ister; yalnız uzaklık gerekiyorsa iki satır tutmak bunu O(min(|A|, |B|))'ye indirir.