Префикс-функция — различия между версиями
Vasin (обсуждение | вклад) |
Vasin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | Префикс-функция строки <tex>s</tex> {{---}} функция <tex>\pi(i) = max \{ j | j | + | Префикс-функция строки <tex>s</tex> {{---}} функция <tex>\pi(i) = max \{ j | j < i,</tex> <tex>s[1..j] = s[i - j + 1..i] \}</tex>. |
==Алгоритм== | ==Алгоритм== |
Версия 23:00, 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
Время работы
Всего
итерация цикла, на каждой из который происходит сравнение строк за , что дает в итоге .