Knuth-Morris-Pratt Algoritmasının Boyer-Moore'dan daha hızlı olduğu bir örnek?


10

Boyer-Moore ile karşılaştırıldığında Knuth-Moriss-Pratt Algoritması hakkındaki bu sayfa , KMP daha iyi performans gösterebilirken Boyer-Moore algoritmasının küçük atlama mesafesinden muzdarip olduğu olası bir durumu açıklamaktadır.
Bu durumu açıkça gösterebilecek iyi bir örnek (metin, desen) arıyorum.


Yanıtlar:


3

Farklı modeller için bu dize eşleme algoritmaları üzerinde iyi bir deneme yapan bir makale vardır: " Dize eşleme algoritmalarının karşılaştırılması: bilgi içeriği güvenliğine yardım "

Ayrıca Japonca için bu dize eşleme algoritmalarının bir çalışması vardır: Japonca Metinler İçin Dize Eşleştirme Algoritmalarının Karşılaştırılması ve Geliştirilmesi

Umarım bunlar algoritmaların etkinliği hakkında bir fikir edinmek için faydalıdır!


3

Bu desenler KMP'nin daha hızlı çalışmasını sağlayacaktır:

T = aaaaaaaaaa P = aaaa KMP, Boyer-Moore 28'i alacak 10 karşılaştırma adımını deneyecek

Başka bir örnek:

T = aaaaaaaaaa P = abab KMP, BM'nin 12 deneyeceği 8 karşılaştırma adımını deneyecek.


İlk örnekte, her iki algoritma da ilk vardiyada hemen bir eşleşme bulacak - nasıl 4'ten fazla karşılaştırma yapacaklar?
BartoszKP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.