Реализация алгоритма Бойера Мура? - PullRequest
2 голосов
/ 24 марта 2011

Есть ли рабочий пример алгоритма поиска строки Бойера-Мура в C?Я просмотрел несколько сайтов, но они кажутся довольно глючными, включая википедию.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 24 марта 2011

Лучший сайт для алгоритмов поиска подстрок:

http://igm.univ -mlv.fr / ~ lecroq / string /

1 голос
/ 24 марта 2011

На сайте Боба Стаута Snippets есть пара реализаций Бойера-Мура-Хорспула (включая воскресный вариант).Реализация Рэя Гарднера в BMHSRCH.C безошибочно, насколько я знаю 1 , и определенно самая быстрая из тех, что я когда-либо видел или слышал.Однако это не так легко понять - он использует довольно сложный код, чтобы сделать внутренний цикл максимально простым.Я могу быть предвзятым, но я думаю, что моя версия 2 в PBMSRCH.C немного легче понять (хотя определенно немного медленнее).

1 В его пределах - он был изначально написан для MS-DOS и мог использовать переписывание для сред, которые предоставляют больше памяти.
2 Это так или иначе было помечено как "Pratt-Boyer-Мур ", но на самом деле это воскресный вариант Бойера-Мура-Хорспула (хотя я не знал об этом в то время и не публиковал его, я думаю, что я действительно изобрел его примерно за год до воскресенья).

...