Приклад, коли алгоритм Кнут-Морріс-Пратта швидший, ніж Бойер-Мур?


10

На цій сторінці про алгоритм Кнут-Моріс-Пратта порівняно з Бойєром-Муром описаний можливий випадок, коли алгоритм Бойєра-Мура страждає від невеликої пропускної відстані, а KMP може працювати краще.
Я шукаю хороший приклад (текст, візерунок), який може наочно продемонструвати цю справу.


Відповіді:


3

Є стаття, яка вдало експериментувала над цими алгоритмами відповідності рядків для різних шаблонів: " Порівняння алгоритмів відповідності рядків: допомога в захисті інформаційного вмісту "

Також існує вивчення таких алгоритмів відповідності рядків для японської мови: Порівняння та вдосконалення алгоритмів збігання рядків для японських текстів

Я сподіваюся, що це корисно, щоб зрозуміти ефективність алгоритмів!


3

Ну ці схеми змусять KMP працювати швидше:

T = aaaaaaaaaaa P = aaaa KMP спробує 10 порівняти кроки, коли Бойєр-Мур зробить 28

Ще один приклад:

T = aaaaaaaaaaa P = abab KMP спробує 8 порівняти етапи, де BM буде намагатися 12.


У першому прикладі обидва алгоритми знайдуть відповідність відразу, при першій зміні - як би вони зробили більше ніж 4 порівняння?
BartoszKP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.