Seja o autômato de correspondência de cadeia para o padrão , ou seja
- para todos os e
com o comprimento do prefixo mais longo de que é um sufixo de , ou seja
.
Agora, deixe a função de prefixo do algoritmo Knuth-Morris-Pratt , que é
.
Como se vê, pode-se usar para calcular rapidamente; a observação central é:
Suponha noções acima e . Para com ou , isso significa que
Mas como posso provar isso?
Para referência, é assim que você calcula :
m ← length[P ]
π[0] ← 0
k ← 0
for q ← 1 to m − 1 do
while k > 0 and P [k + 1] =6 P [q] do
k ← π[k]
if P [k + 1] = P [q] then
k ← k + 1
end if
π[q] ← k
end while
end for
return π