Constrói o autômato de sufixos de uma string
-
len[u]
é o tamanho da maior string na classe de equivalência deu
. -
lnk[u]
é o nodo que representa o maior sufixo deu
que não pertence a classe de equivalência deu
. -
to[u]
é um array que representa as possivéis transições de um nodou
. -
cnt[u]
é um array que conta para cada classe de equivalência quantas ocorrências essas substrings tem. -
where[i]
diz em qual nodo do autômato a substring$s[0..i]$ está.
Por definição, len[lca(u, v)]
diz o tamanho da maior substring que é sufixo de u
e v
ao mesmo tempo, ou seja, é o longest common suffix.
Algumas aplicações estão no código, é importante notar que essas aplicações funcionam de maneira offline, ou seja, uma vez settada a string no autômato, não se deve fazer inserts adicionais de caracteres.
Para outras possíveis aplicações, consulte a Suffix Tree.