Skip to content

Latest commit

 

History

History

Aho-Corasick

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Muito parecido com uma Trie, porém muito mais poderoso. O autômato de Aho-Corasick é um autômato finito determinístico que pode ser construído a partir de um conjunto de padrões. Nesse autômato, para qualquer nodo $u$ do autômato e qualquer caractere $c$ do alfabeto, é possível transicionar de $u$ usando o caractere $c$.

A transição é feita por uma aresta direta de $u$ pra $v$, se a aresta de $u$ pra $v$ estiver marcada com o caractere $c$. Se não, a transição de $u$ com o caractere $c$ é a transição de $link(u)$ com o caractere $c$.

Definição: $link(u)$ é um nodo $v$, tal que o prefixo do autômato ate $v$ é sufixo de $u$, e esse prefixo é o maior possível. Ou seja, $link(u)$ é o maior prefixo do autômato que é sufixo de $u$. Com apenas um padrão inserido, o autômato de Aho-Corasick é a Prefix Function (KMP).

No código, cur é o próximo nodo a ser criado. A root é o nodo $1$.