Você está na página 1de 25

Pesquisa Digital rvores Trie e Patricia

Carlos Andrs Ferrero

Atualizao dos slides de: Huei Diana Lee Fabiana F. F. Peres

Algoritmos e Estruturas de Dados

2010

Introduo

baseada na representao das chaves como uma seqncia de caracteres ou de dgitos. Os mtodos de pesquisa digital so particularmente vantajosos quando as chaves so grandes e de tamanho varivel.

Introduo (cont.)

Um aspecto interessante quanto aos mtodos de pesquisa digital a possibilidade de localizar todas as ocorrncias de uma determinada cadeia em um texto, com tempo de resposta logartmico em relao ao tamanho do texto.

Introduo (cont.)

So exemplos de estruturas de rvores utilizadas para pesquisa digital:


Trie (reTRIEval) Patricia (Practical Algorithm To Retrieve Information Coded In Alphanumeric)

Trie

uma rvore M-ria cujos ns so vetores de M componentes com campos correspondentes aos dgitos ou caracteres que formam as chaves. Cada n no nvel i representa o conjunto de todas as chaves que comeam com a mesma seqncia de i dgitos ou caracteres. Este n especifica uma ramificao com M caminhos dependendo do (i + 1)-simo dgito ou caractere de uma chave.

Trie (cont.)

Cada caminho da raiz a uma folha, corresponde a uma chave. Desta forma, os nodos internos da Trie correspondem a prefixos das chaves. Considerando as chaves como seqncia de bits (M = 2)

O algoritmo de pesquisa digital semelhante ao de pesquisa em rvore Em vez de caminhar na rvore de acordo com o resultado de comparao entre chaves, caminha-se de acordo com os bits de chave.

Exemplo

Dada as chaves de 6 bits:


B = 010010 C = 010011 H = 011000 J = 100001 Q = 101000

Insero de novas chaves na Trie

Faz-se uma pesquisa na rvore com a chave a ser inserida.


1.

2.

Se o n externo em que a pesquisa terminar for vazio, cria-se um novo n externo nesse ponto contendo a nova chave. Se o n externo contiver uma chave cria-se um ou mais ns internos cujos descendentes contero a chave j existente e a nova chave.

Insero da Chave K e W na Trie


Chave W = 110110 Chave K = 100010

Consideraes

O formato das tries, diferentemente das rvores binrias comuns, no depende da ordem em que as chaves so inseridas e sim da estrutura das chaves atravs da distribuio de seus bits. Desvantagem: Formao de caminhos de uma s direo para chaves com um grande nmero de bits em comum. Exemplo: Se duas chaves diferirem somente no ltimo bit, elas formaro um caminho cujo comprimento igual ao tamanho delas, no importando quantas chaves existem na rvore (caminho gerado pelas chaves B e C).

Patricia Dados histricos

Criado por Morrison D. R. 1968 (Sandia National Laboratories, New Mexico, USA) para aplicar na recuperao de informao em arquivos de grande porte. Knuth D. E. 1973 (Standford University, California, USA) =>novo tratamento do algoritmo.

Reapresentou-o de forma mais clara como um caso particular de pesquisa digital, essencialmente, um caso de rvore trie binria.

Sedgewick R. 1988 (Princeton University, New Jersey, USA) apresentou novos algoritmos de pesquisa e de insero baseados nos algoritmos propostos por Knuth. Gonnet, G.H (Institute for Computational Sciences, Zurich) e Baeza-Yates R. (Yahoo Research, Dept. of Computer Science, Universidad de Chile) 1991 propuseram tambm outros algoritmos.

Patricia

O algoritmo para construo da rvore Patricia baseado no mtodo de pesquisa digital, mas sem apresentar o inconveniente citado para o caso das Tries. O problema de caminhos de uma s direo eliminado por meio de uma soluo simples e elegante:

cada n interno da rvore contm o ndice do bit a ser testado para decidir qual ramo tomar.

Exemplo

Dada as chaves de 6 bits:


B = 010010 C = 010011 H = 011000 J = 100001 Q = 101000


0

0 1

Insero da Chave K

Para inserir a chave K (100010) na rvore acima, a pesquisa inicia pela raiz e termina quando se chega ao n externo contendo J. Os ndices dos bits nas chaves esto ordenados da esquerda para a direita.

Bit de ndice 1 -> subrvore direita Bit de ndice 3 -> subrvore esquerda que neste caso um n externo.

Insero da Chave K (cont.)

Chaves J e K mantm o padro de bits 1x0xxx, assim como qualquer outra chave que seguir este caminho de pesquisa. Novo n interno repe o n J, e este com n K sero os ns externos descendentes. O ndice do novo n interno dado pelo 1. bit diferente das 2 chaves em questo (bit de ndice 5). Para determinar qual ser o descendente esquerdo e o direito, verifique o valor do bit 5 de ambas as chaves.

rvore aps a insero da chave K

0
0 1 1 0

1 0 1 1

Insero da chave W

A insero da chave W(110110) ilustra um outro aspecto. Os bits das chaves K e W so comparados a partir do primeiro para determinar em qual ndice eles diferem, sendo, neste caso, os de ndice 2

Insero da chave W (cont.)

O ponto de insero agora ser no caminho de pesquisa entre os ns internos de ndice 1 e 3. Cria-se a um novo n interno de ndice 2, cujo descendente direito um n externo contendo W e cujo descendente esquerdo a subrvore de raiz de ndice 3.

rvore aps a insero da chave W

Estrutura de Dados

Algoritmo de Insero
Cada chave k inserida de acordo com os passos abaixo, partindo da raiz:

1. Se a sub-rvore corrente for vazia ento criado um n externo contendo a chave k (isto ocorre somente na insero da primeira chave) e o algoritmo termina.

Algoritmo de Insero (cont.)


2. Se a subrvore corrente for simplesmente um n externo os bits da chave k so comparados, a partir do bit de ndice imediatamente aps o ltimo ndice da seqncia de ndices consecutivos do caminho de pesquisa, com os bits correspondentes da chave k deste n externo at encontrar um ndice i cujos bits difiram (a comparao dos bits a partir do ltimo ndice consecutivo melhora consideravelmente o desempenho do algoritmo). Se todos forem iguais, a chave j se encontra na rvore e o algoritmo termina; seno, vai-se para o Passo 4.

Algoritmo de Insero (cont.)


3. Se a raiz da subrvore corrente for um n interno vai-se para a subrvore indicada pelo bit da chave k de ndice dado pelo n corrente, de forma recursiva. 4. Depois so criados um n interno e um n externo o primeiro contendo o ndice i e o segundo, a chave k. A seguir, o n interno ligado ao externo pelo apontador de subrvore esquerda ou direita, dependendo se o bit de ndice i da chave k seja 0 ou 1, respectivamente. 5. O caminho de insero percorrido novamente de baixo para cima, subindo com o par de ns criados no Passo 4 at chegar a um n interno cujo ndice seja menor que o ndice i determinado no Passo 2. Este o ponto de insero e o par de ns inserido.

Exemplos de Aplicaes

Casamento padres (ex. seqncias de DNA) Compresso de dados Algoritmos de parsing

Referncias

Ziviani, N. Projeto de Algoritmos, Ed. Thomson, 2005 Xue , Q. The Hybrid Digital Tree and its Application to Genimic Sequence Databases, Phd Thesis, Michigan State University, 2005 Szpankowski, W. and Tang, J. On Generalized Digital Search Trees with Applications to a Generalized Lempel-Ziv Algorithm, Proceedings of the 33rd Allerton Conference, pp. 891-900, 1995

Você também pode gostar