Префикс-функция — различия между версиями
Vasin (обсуждение | вклад) |
Vasin (обсуждение | вклад) (→Псевдокод) |
||
| Строка 24: | Строка 24: | ||
==Псевдокод== | ==Псевдокод== | ||
'''Prefix_function''' (<tex>s</tex>) | '''Prefix_function''' (<tex>s</tex>) | ||
| + | <tex> pi \leftarrow 0</tex> | ||
'''for''' <tex>i \leftarrow 1</tex> '''to''' <tex>n</tex> | '''for''' <tex>i \leftarrow 1</tex> '''to''' <tex>n</tex> | ||
'''for''' <tex>j \leftarrow 1</tex> '''to''' <tex>i - 1</tex> | '''for''' <tex>j \leftarrow 1</tex> '''to''' <tex>i - 1</tex> | ||
Версия 22:54, 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