Bölüm 5 · Simülasyon

Dizgi Eşleştirme Algoritmaları

← Bölüm 5

Başlamak için Hazırla düğmesine basın.

Eşleşmeler

Henüz sonuç yok.

Ön işleme

Seçilen algoritmanın tablosu burada görünür.

    Dizgi Eşleştirme Algoritmaları

    Kaba kuvvet, KMP, Boyer-Moore ve Rabin-Karp aynı metin ve örüntü üzerinde adım adım karşılaştırılır.

    Kullanım

    • Bir metin T (en çok 24 karakter) ve bir örüntü P (en çok 12 karakter) girin, ardından bir algoritma seçin.
    • Hazırla tüm adımları üretir; Sonraki Adım bir adım ilerler, Otomatik Oynat kalan adımları oynatır, Sıfırla çalıştırmayı temizler.
    • Örüntü satırı geçerli hizalamanın (kaydırmanın) altına çizilir. Yeşil: karşılaştırılan karakterler eşleşiyor; kırmızı: uyuşmazlık; mavi: bir geçiş bulundu.
    • Ön işleme paneli algoritmanın kullandığı tabloyu gösterir: KMP için LPS, Boyer-Moore için son geçiş tablosu, Rabin-Karp için hash değerleri.

    Kaba kuvvet

    0'dan n − m'ye kadar her kaydırmayı dener ve karakterleri bir uyuşmazlığa kadar soldan sağa karşılaştırır.

    Knuth-Morris-Pratt (KMP)

    LPS tablosu (aynı zamanda sonek olan en uzun öz önek) uyuşmazlıktan sonra örüntünün ne kadar geri düşebileceğini söyler; böylece metin indisi hiç geri gitmez.

    Boyer-Moore (kötü karakter kuralı)

    Sağdan sola karşılaştırır. Uyuşmazlıkta örüntü, uyuşmayan metin karakterinin örüntüdeki son geçişi onunla hizalanacak biçimde (en az bir konum) kaydırılır.

    Rabin-Karp

    Her metin penceresinin kayan hash değeri örüntünün hash değeriyle karşılaştırılır (taban 256, mod 101). Yalnız hash değeri eşit olan pencereler karakter karakter doğrulanır; böylece sahte eşleşmeler elenir.

    Karmaşıklık

    AlgoritmaÖn işlemeEşleştirme (en kötü)
    Kaba kuvvet—O(n·m)
    KMPO(m)O(n)
    Boyer-Moore (kötü karakter)O(m + σ)O(n·m); uygulamada çoğu zaman doğrusalın altında
    Rabin-KarpO(m)Beklenen O(n + m), en kötü O(n·m)