Алгоритм Бойера-Мура
Версия от 19:49, 5 мая 2014; Kabanov (обсуждение | вклад)
Алгоритм Бойера-Мура, разработанный двумя учеными – Бойером (Robert S. Boyer) и Муром (J. Strother Moore), считается наиболее быстрым среди алгоритмов общего назначения, предназначенных для поиска подстроки в строке. Важной особенностью алгоритма является то, что он выполняет сравнения справа налево в отличии от многих других алгоритмов.
Алгоритм сканирует символы шаблона справа налево, начиная с самого правого, один за другим. В случае несовпадения какого-либо символа (или полного совпадения всего шаблона) он использует две предварительно вычисляемых функций, чтобы сдвинуть позицию для начала сравнения вправо.
Содержание
Асимптотики
Фаза предварительных вычислений требует
времени и памяти В худшем случае поиск требует сравнений. В лучшем случае требует сравнений.В 1991 году Р.Коул доказал следующую теорему:
Теорема (Richard Cole): |
В худшем случае требуется сравнений в случае шаблона с периодом равным длине самого шаблона. |
Доказательство: |
Доказательство [1] |