Изменения

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

Z-функция

37 байт добавлено, 16:22, 14 апреля 2016
Описание алгоритма
<br>
Пусть в <tex>Z[i] = z > 0</tex>, рассмотрю <tex>j<z</tex>, <tex>Z[j]=k</tex> и <tex>Z[i+j]=k_1</tex>. Заметим, что <tex>s[0 ... z-1]</tex> совпадает с <tex>s[i...i+z-1]</tex> и тогда возможны три случая:
 # <tex>k<k_1</tex>. #: Тогда очевидно, что мы не можем увеличить значение <tex>Z[i+j]</tex> и надо рассматривать уже <tex>i=i+j</tex>. <!--(см картинку)--> # <tex>k<z-j</tex> и <tex>k>k_1</tex>. #:Тогда очевидно, что <tex>Z[i+j]</tex> можно увеличить до <tex>k</tex>. <!--(см картинку)--># <tex>k>z-j</tex> и <tex>k>k_1</tex>. #:Тогда понятно, что <tex>Z[i+j]=z-j</tex>. <!--(см картинку)-->
<br>
<br>
<br>
 
===Псевдокод===
'''int[]''' buildZFunctionFromPrefixFunction('''int'''[] P)
Анонимный участник

Навигация