Изменения

Перейти к: навигация, поиск

Турбо-алгоритм Бойера-Мура

1065 байт добавлено, 17:23, 10 апреля 2016
Асимптотика
==Асимптотика==
{{Утверждение|statement= 
* Фаза препроцессинга требует <tex>O(m + \sigma)</tex> времени и памяти, где <tex>\sigma</tex> {{---}} размер алфавита.
* Фаза поиска требует <tex>O(n)</tex> времени.
* В худшем случае поиск требует <tex>O(2n)</tex> сравнений.
|proof=Разобьём поиск на стадии. Каждая стадия делится на
две операции: сканирование и сдвиг. На этапе <tex>k</tex> мы назовём <tex>suf_k</tex> длину суффикса шаблона
что совпадает с текстом. Она предшествует буква, которая не
совпадает с соответствующим символом в тексте (в случае когда <tex>suf_k</tex> не соответствует длине шаблона). Мы также
назовём <tex>shift_k</tex> длину сдвига сделанного на этапе <tex>k</tex>.
Рассмотрим три типа стадий в зависимости от характера сканирования и сдвига. Мы говорим, что сдвиг на стадии <tex>k</tex> короткий, если <tex>2shift_k < suf_k + 1</tex>. Тогда три типа сдвигов будут:}}
==См. также==
251
правка

Навигация