Префикс-функция — различия между версиями
Vasin (обсуждение | вклад) (→Псевдокод) |
Vasin (обсуждение | вклад) |
||
| Строка 30: | Строка 30: | ||
<tex> pi[i] \leftarrow j</tex> | <tex> pi[i] \leftarrow j</tex> | ||
'''return''' <tex>pi</tex> | '''return''' <tex>pi</tex> | ||
| + | ==Время работы== | ||
| + | Всего <tex>O(n^2)</tex> итерация цикла, на каждой из который происходит сравнение строк за <tex>O(n)</tex>, что дает в итоге <tex>O(n^3)</tex>. | ||
Версия 22:56, 24 марта 2012
Префикс-функция строки — функция .
Содержание
Алгоритм
Наивный алгоритм вычисляет префикс функцию непосредственно по определению, сравнивая префиксы и суффиксы строк.
Пример
Рассмотрим строку abcabcd, для которой префикс-функции равно .
| Шаг | Строка | Значение функции |
|---|---|---|
| a | 0 | |
| ab | 0 | |
| abc | 0 | |
| abca | 1 | |
| abcab | 2 | |
| abcabc | 3 | |
| abcabcd | 0 |
Псевдокод
Prefix_function () for to for to if return
Время работы
Всего итерация цикла, на каждой из который происходит сравнение строк за , что дает в итоге .