Algoritmo de Ukkonen
Em ciência da computação, o algoritmo de Ukkonen é um algoritmo online de tempo linear para construção de árvores de sufixos, proposto por Esko Ukkonen em 1995.[1]
O algoritmo inicia com uma árvore de sufixos implícita contendo o primeiro caracter da string. Então ele prossegue através da string adicionando caracteres sucessivos até que a árvore esteja completa. Esta ordem de adição dos caracteres dá ao algoritmo de Ukkonen a sua propriedade "online". Anteriormente, os algoritmos procediam de forma inversa, do último caractere ao primeiro, seja do maior ao menor sufixo[2] ou do menor ao maior sufixo.[3] A implementação ingênua para a geração de uma árvore de sufixos requer tempo O(n²) ou mesmo O(n3), aonde n é o tamanho da string. Ao explorar um número de técnicas algorítmicas, Ukkonen reduziu para um tempo O(n) (linear), para alfabetos de tamanho constante, e O(n log n) em geral.
Referências
- ↑ Ukkonen, E. (1 de setembro de 1995). «On-line construction of suffix trees». Algorithmica (em inglês). 14 (3): 249-260. ISSN 0178-4617. doi:10.1007/BF01206331
- ↑ McCreight, Edward M. (1 de abril de 1976). «A Space-Economical Suffix Tree Construction Algorithm». J. ACM. 23 (2): 262–272. ISSN 0004-5411. doi:10.1145/321941.321946
- ↑ Weiner, Peter (1 de outubro de 1973). «Linear pattern matching algorithms». IEEE Conference Record of 14th Annual Symposium on Switching and Automata Theory, 1973. SWAT '08: 1-11. doi:10.1109/SWAT.1973.13
Ligações externas
editar- Paper original de Ukkonen PDF | PDF com imagens
- Paper de McCreight em PDF
- Paper de Weiner em PDF
- Explicação detalhada em inglês
- Fast String Searching With Suffix TreesTutorial de Mark Nelson. Possui uma implementação escrita em C++.
- Implementação em Java
- Implementação em C#
- Implementação em C com explicação detalhada
- Slides de palestra por Guy Blelloch
- Homepage de Ukkonen
- Text-Indexing project(Construção de Ukkonen em tempo linear de árvores de sufixo)