Префикс-функция
Префикс-функция строки — функция .
Содержание
Алгоритм
Наивный алгоритм вычисляет префикс функцию непосредственно по определению, сравнивая префиксы и суффиксы строк.
Пример
Рассмотрим строку abcabcd, для которой значение префикс-функции равно .
| Шаг | Строка | Значение функции |
|---|---|---|
| a | 0 | |
| ab | 0 | |
| abc | 0 | |
| abca | 1 | |
| abcab | 2 | |
| abcabc | 3 | |
| abcabcd | 0 |
Псевдокод
Prefix_function ()
pi = 0
for i = 1 to n
for j = 1 to i - 1
if s[1..j] == s[i - j + 1..i]
pi[i] = j
return pi
Время работы
Всего итераций цикла, на каждой из который происходит сравнение строк за , что дает в итоге .
Литература
Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. — 2-е изд. — М.: Издательский дом «Вильямс», 2007. — С. 1296.