Quarta-feira, 15 de Setembro de 2010

Trie

Finalmente voltei a ter tempo para voltar a escrever algo no blog.
Hoje trago uma estrutura de dados que considero muito útil que é a Trie.
É utilizada para armazenar strings e tem a vantagem de procurá-las muito mas mesmo muito rapidamente!

Adiciona uma string em O(M) em que M é o tamanho de string e o melhor é que procura em O(M) também! Com um típico array de strings teriamos uma tempo de pesquisa O(N) em que N é a quantidade de strings, ainda teríamos mais a comparação da string que queremos procurar com a que estamos a "atravessar" no momento, mas decidi desprezar esse factor.

O código está em C++ mas é facilmente "traduzido" para C (linguagem que costumo usar nestes meus posts aka artigos).

Deixo também mais alguma informação sobre a mesma estrutura de dados:
* Wikipédia
* TopCoder

Trie - Código

Este código lê as strings (1 string por cada linha) de um ficheiro chamado wordlist.in, não esquecer isto!

Resumindo:
* Tempo de inserção: O(M * N), N = Quantidade de strings (tempo total)
* Tempo de pesquisa: O(M)

Boas programações.

0 comentários:

Enviar um comentário