Всем доброго времени суток. Я постоянно пользуюсь КМП, но мне недавно стало интересно умеет ли Z-функция то, что не умеет КМП.
UPD: Всем огромное спасибо за уделённое время. Обобщив всё ниже сказанное я пришёл к выводу что они могут одно и тоже, но иногда приходится попотеть.
Yes but Z — fuction better than KMP.
Why?
Конечно, умеет. Так же как и префикс функция умеет, то что не умеет Z.
Пример?
Например, не особо извращаясь, найти LCP всех суффиксов с самой строкой:)
То есть, кхм, посчитать её?)
Внезапно, да.
Ну а без этого "не особо извращаясь"?)
Почему споришь с adamant он же тут СТРОКА-МАСТЕР :)
Они эквивалентны. Одну можно получить из другой
Суф.массив <-> Суф.дерево <-> Суф.автомат, только мы же на контестах не извращаемся.
Ну вторую связь я не раз использовал, кстати. Проще Укконена, ИМХО
Кстати, а можно прямо суфавтомат из суфмаса получить?)
Если учесть, что префикс функция однозначно восстанавливается по Z и наоборот, то вряд ли.