Relacja między algorytmem KMP a algorytmem Z

KMP iZ algorytmy są dobrze znanymi algorytmami wyszukiwania łańcuchów,

KMP algorytm zajmuje się znajdowaniem wzorców poprzez funkcję awarii KMP, która jest zdefiniowana jako (pat będący wzorem wyszukiwania)

lps [i] = najdłuższy właściwy przedrostek pat [0..i], który jest również przyrostkiem pat [0..i].

npstring "abcab" to byłby[0, 0, 0, 1, 2]

natomiastZ algorytm używa funkcji z, która jest zdefiniowana jako:

Biorąc pod uwagę łańcuch S o długości n, algorytm Z tworzy tablicę Z, gdzie Z [i] jest długością najdłuższego podciągu zaczynającego się od pat [i], który jest również przedrostkiem pat.

Teraz pytanie brzmi: czy możemy osiągnąćZ funkcja za pomocąKMP algorytm? To, czego szukam, to pewne modyfikacje wlps tablica, która prowadzi do tych samych wyników coZ[i] szyk.

questionAnswers(3)

yourAnswerToTheQuestion