Изменения

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

Алгоритм Кнута-Морриса-Пратта

112 байт добавлено, 19:25, 4 сентября 2022
м
rollbackEdits.php mass rollback
'''for''' i = 0 .. tl - 1
'''if''' p[pl + i + 1] == pl
answer[count++] = i- pl
'''return''' answer
==Оценка по памяти==
Предложенная реализация имеет оценку по памяти <tex>O(P+T)</tex>. Оценки <tex>O(P)</tex> можно добиться за счет отказа от запоминания значений префикс-функции для позиций в <tex>S</tex>, меньших <tex>|P| + 1</tex> (то есть до начала цепочки <tex>T</tex>). Это возможно, так как значение префикс-функции не может превысить длину образца, благодаря разделительному символу <tex>\#</tex>.
==Замечание==
Вместо [[Префикс-функция|префикс-функции]] в алгоритме Кнута-Морриса-Пратта можно использовать [[Z-функция|Z-функцию]]. Оценки времени работы и памяти при этом не изменятся.
==См. также==
*[[Алгоритм Бойера-Мура|Алгоритм Бойера-Мура]]
*[[Алгоритм Колусси|Алгоритм Колусси]]
*[[Префикс-функция|Префикс-функция]]
*[[Z-функция|Z-функция]]
==Источники информации==
1632
правки

Навигация