Изменения

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

Префикс-функция

10 байт убрано, 18:19, 15 апреля 2012
Псевдокод
*Для поиска <tex>j</tex> нам стоит использовать равенство <tex>j = \pi(j)</tex>, когда <tex>s[j+1] = s[i+1]</tex> ложно, взяв за исходное <tex> j = \pi(i)</tex>, это позволит выбирать <tex>j</tex> по убыванию вплоть до нуля, так как очевидно, что <tex>\pi(x) \geq \pi(\pi(x))</tex> для любых <tex>x</tex>.
===Псевдокод===
'''Prefix_function''' (<tex>s</tex>) <tex>\pi</tex> = 0 '''for''' i = 2 '''to''' n j = <tex>\pi</tex>[i - 1] '''while''' j > 0 && s[i] != s[j + 1] j = <tex>\pi</tex>[j] '''if''' s[i] == s[j + 1] j++ <tex>\pi</tex>[i] = j '''return''' <tex>\pi</tex>
===Время работы===
304
правки

Навигация