Przykład, w którym algorytm Knuth-Morris-Pratt jest szybszy niż Boyer-Moore?


10

Ta strona o algorytmie Knuth-Moriss-Pratt w porównaniu do Boyera-Moore'a opisuje możliwy przypadek, w którym algorytm Boyera-Moore'a cierpi z powodu małej odległości pominięcia, podczas gdy KMP może działać lepiej.
Szukam dobrego przykładu (tekst, wzór), który może jasno zademonstrować ten przypadek.


Odpowiedzi:


3

Istnieje artykuł, który przeprowadził dobry eksperyment nad tymi algorytmami dopasowywania ciągów dla różnych wzorców: „ Porównanie algorytmów dopasowywania ciągów: pomoc w zabezpieczeniu zawartości informacyjnej

Istnieje również analiza tych algorytmów dopasowania łańcucha dla języka japońskiego: Porównanie i ulepszenie algorytmów dopasowania łańcucha dla tekstów japońskich

Mam nadzieję, że są one przydatne, aby dowiedzieć się o wydajności algorytmów!


3

Te wzorce przyspieszą działanie KMP:

T = aaaaaaaaaa P = aaaa KMP spróbuje 10 porównać kroki, w których Boyer-Moore podejmie 28

Inny przykład:

T = aaaaaaaaaa P = abab KMP spróbuje wykonać 8 kroków porównania, w których BM spróbuje 12.


W pierwszym przykładzie oba algorytmy znajdą dopasowanie natychmiast, na pierwszej zmianie - w jaki sposób dokonałyby więcej niż 4 porównań?
BartoszKP
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.