Você está na página 1de 52

rvores Trie e Patricia

Disciplina de Algoritmos e Estrutura de


Dados III

Prof. Marcos Antonio Schreiner

/05/2015

1
Introduo

Seja uma busca de x em um conjunto de


chaves S = {s1, , sn}.

Nas estruturas estudadas organizvamos S de


modo a fazermos comparaes entre si e x at
encontrarmos x.

As chaves si e x so tratadas como um nico


elemento indivisvel na estrutura.

Qual o problema dessas estruturas?


Introduo
Problema:

As chaves podem exceder o espao definido para


elas.

Suponha que se deseje armazenar um texto


literrio para, em seguida, tentar localizar as
frases desse texto.

Neste caso, as chaves corresponderia s frases


do texto.

Neste cenrio, as rvores Trie ou Patricia e a Busca


Digital so apropriadas.
Busca Digital

Na busca digitar a chave tratada como um


elemento divisvel.

Cada chave constituda de um conjunto de


caracteres ou dgitos.

Na busca, a comparao efetuada,


individualmente, entre os dgitos que compem
as chaves (dgito a dgito).
CHAVES: Caractersticas

Cada chave formada por palavras sobre um


alfabeto de smbolos.

Curiosidade: Pesquise sobre Autmatos


Finitos.

Palavras com tamanho VARIVEL e ILIMITADO.


CHAVES: Caractersticas
Exemplos de alfabetos:

{0,1}, {A, B, C,...Z, a, b, c,..., z}, {0,1,2,3,4,5,...,9}

Exemplos de chaves:

010101010000000000101000000001010

ABABBBABABA, Maria

19034717
Introduo
TRIE vem de RETRIEVAL
RECUPERAO

um tipo de rvore de
busca.

Ideia geral: usar partes


das CHAVES como
caminho busca

Origem: anos 60 por


Edward Fredkin
rvore TRIE - Caractersticas
rvore N-ria.
Chaves em geral so caracteres.

Ao contrrio da rvore de busca binria nenhum


n armazena a chave.

Chave determinada pela posio na rvore.

O grau da rvore corresponde ao tamanho do


alfabeto
rvore TRIE - Caractersticas

Cada nvel percorrido corresponde a avanar um


elemento na chave.

O caminho da raiz para qualquer n um


prefixo de uma chave.
Descendentes do mesmo n tem o mesmo
prefixo.
Raiz representa a chave vazia.

Ns devem indicar quando completar uma


chave.
rvore TRIE - Exemplo
rvore TRIE Incluir Chaves
Vamos inserir os seguinte conjunto de dados
em uma rvore TRIE:
ana 56
amy 15

emma 30

rol 27

roger 52
rvore TRIE Incluir Chaves

ana 56
a

56
rvore TRIE Incluir Chaves

amy 15
a

n m

a y

56 15
rvore TRIE Incluir Chaves

emma 30
a e

n m
m

a y m

56 15
30
rvore TRIE Incluir Chaves

rol 27
a r
e

n m
m o

a y m l

27
56 15
30
rvore TRIE Incluir Chaves

roger 52
a r
e

n m
m o

l g
a y m

a e

r
27
56 15
30

52
rvore TRIE Buscar Chaves
Busca caractere a caractere se a chave pertence a
TRIE

1) Se o caractere no pertence a rvore a chave no


pertence a TRIE;

2) Se o caractere pertence a rvore, verifique o prximo.


Caso todos os caracteres pertenam em sequencia a
TRIE, a chave pertence a rvore.
rvore TRIE Buscar Chaves
A chave roger pertence a rvore

a r
e

n m
m o

l g
a y m

a e

r
27
56 15
30

52
rvore TRIE Buscar Chaves
A chave roberta no pertence a rvore

a r
e

n m
m o

l g
a y m

a e

r
27
56 15
30

52
Incluir Chaves Sequencia de Passos

1) Faz-se uma busca pela palavra a ser inserida. Se


ela j existir na TRIE nada feito.

2) Caso contrrio, recuperado o ltimo n n da


maior substring da palavra a ser inserida.

3) O restante dos caracteres da chave so


adicionados na TRIE a partir do n n.
rvore TRIE Remover Chave
1) Busca-se a chave a ser removida.

2) A partir da folha (buttom-up), so removidos todos


os ns que tem apenas um filho.
rvore TRIE Remover Chave
Remoo da chave bbaaa

a b

b
a b a

a b

b a b
a a
b
a a
b a b
b b
b
rvore TRIE Remover Chave
Remoo da chave bbaaa

b
a
b
a a
b
b

b a b
a
a b
a
b b
b b
b
Aplicaes para rvore TRIE
Soluo do problema de busca de chaves
semelhantes.

Pela estrutura de representao de caractere a


caractere usada nas TRIES.

fcil perceber que as TRIES tem um estrutura


adequada para soluo destes problemas.
Aplicaes para rvore TRIE
Um exemplo de uso de TRIE corretor ortogrfico.

Nesse tipo de programa as palavras so


comparadas com as palavras de um dicionrio
armazenado numa TRIE.

Se no so encontradas indica-se as opes para


correo.

As palavras semelhantes so apresentadas ao


usurio (do caractere com erro at as folhas)
Aplicaes para rvore TRIE
Um exemplo de uso de TRIE corretor ortogrfico.

Nesse tipo de programa as palavras so


comparadas com as palavras de um dicionrio
armazenado numa TRIE.

Se no so encontradas indica-se as opes para


correo.

As palavras semelhantes so apresentadas ao


usurio (do caractere com erro at as folhas)
rvore TRIE Exerccios
1) Quais chaves/palavras esto representadas nesta
TRIE?
v
f

a i
o u e
*
m u
r
i i i * *
* e o
* r *
a m

* o s

s *
*
rvore TRIE Exerccios
2) Crie uma rvore TRIE com a seguinte frase:
O rato roeu a roupa do rei de Roma e a rainha de

raiva roeu o resto. O rei ento ficou furioso e brigou


com a rainha.

3) Remova as seguintes chaves da rvore do


exerccio 2:
rei, rainha, roeu, rato, ento, furioso.
rvore TRIE Implementao
A implementao mais simples: R-WAY

Cada n contm todos os valores do alfabeto mais 1
smbolo especial para determinar se uma chave.

H desperdcio de espao.
rvore TRIE Implementao

TST- Ternary Search Tree (rvore


de busca composta por trs
partes)

Cada n aloca trs ponteiros

Centro: caractere seguinte.

Filho da esquerda: caractere


alternativo menor.

Filho da direita: caractere


alternativo maior.

Resolve o problema de
desperdcio de espao.
rvore TRIE Implementao - TST
Para a rvore ficar balanceada as chaves devem
estar ordenadas.
rvore Digital Binria

rvore digital binria uma rvore digital m-ria


com m=2.

O alfabeto composto por {0,1}

A aresta esquerda representa o dgito 0 e a direita


o digito 1.
rvore Digital Binria - Exemplo

Chaves: 0 1
00
0 1
0000 0

00010 *
0 0 1
00011
010110 0 1
1
0
010111
0 1
10 1

101
0 1
1010
rvore Digital Binria de Prefixo

Podemos verificar que algumas chaves so prefixos de


outras:
Por exemplo:

Ou seja, o caminho da raiz at o n de chave 00 parte do


caminho da raiz at o n de chave 00010

Para melhor manipular a estrutura, tal situao no


desejvel

Uma rvore digital binria de prefixo uma rvore


digital binria tal que nenhum cdigo seja prefixo do outro.
rvore Digital Binria de Prefixo

S1 = 0
0 1
S2 = 1000
S1
S3 = 10010 0 1

S4 = 11100 1
0
S5 = 11101
0
0 1

S2 0 1
Na rvore digital binria de 0
S4 S5
prefixo cada chave S3

representada por uma folha


rvore PATRICIA
P ratical
A lgorithm
T o
R etrieve
I nformation
C oded
I n
A lphanumeric

Algoritmo prtico para recuperar informaes


alfanumricas
rvore PATRICIA
Definida em 1968 por Donald R. Morrison

Tambm conhecida como TRIE Compactada Binria.

constituda a partir de uma rvore binria de


prefixo.

Caminhos que possuem ns com apenas 1 filho


so agrupados em uma nica aresta
rvore PATRICIA

Os ns contm o caractere y que deve ser comparado


e a quantidade de posies x que se deve avanar
na chave para efetuar a comparao.

Se menor ou igual a y avana a esquerda (0), se


maior que y avana a direita (1).

As chaves vlidas encontram-se nas folhas da rvore.


rvore PATRICIA
Exemplo de Representao:

Avance x dgitos Compare com y


x, y
0 1

0 1 0 1

0 1 0 1

0 1
rvore PATRICIA Inserir Chave
Palavra 1: Consultrio

Consultrio
rvore PATRICIA Inserir Chave
Palavra 1: Consultrio
Palavra 2: Consultar

Encontrada Diferena
Consultrio,Consulta no 8 Caractere

8,a X=8
Y = a (a < o)
Consultar Consultrio
rvore PATRICIA Inserir Chave
Palavra 3: Consulado

Verificada diferena no 7
Consulado,Consultar caractere

Alocao do novo No para a


7,a
nova Palavra

1,a Acumulador Atualizado


Consulado

Consultar Consultrio
rvore PATRICIA Inserir Chave
Palavra 4: Consultado
Consultado,Consulado
t > a no 7 caractere
Consultado,a
Consultado,Consultar a = a no 8 caractere (direita)
d < r no 9 caractere

7,a Alocao do novo No para


distinguir consultado de consultar
1,a
Consulado

1,d
Consultrio

Consultado Consultar
rvore PATRICIA Buscar Chave
Sequencia de passos:

Comparar o caractere na posio x com o caractere y.


1) Se menor ou igual: Segue ramo a esquerda;
2) Se maior: Segue ramo a direita

Repete isso at chegar numa folha


rvore PATRICIA Buscar Chave
Buscar as palavras:
Cascata, domnio, carro

x, y
0 1

0 1 0 1

0 1 0 1

0 1
rvore PATRICIA Remover Chave

Sequencia de Passos:

1) Buscar e apagar a chave da rvore;

2) O pai da chave deve ser apagado;

3) Soma-se o valor do Campo Avanar do N Pai a


Todos os ns Filhos.
rvore PATRICIA Remover Chave

Remover Consulado

7,a

1,a
Consulado

1,d
Consultrio

Consultado Consultar
rvore PATRICIA Remover Chave

Remover Consulado

8,a

1,d
Consultrio

Consultado Consultar
rvore PATRICIA Remover Chave

Remover Consular

8,a

1,d
Consultrio

Consultado Consultar
rvore PATRICIA Remover Chave

Remover Consular

8,a

Consultado Consultrio
Exerccios

4) Represente a rvore de exerccio 2 na formato R-


Way e no formato TST.

5) Crie uma rvore PATRICIA com a seguinte frase:

O rato roeu a roupa do rei de Roma e a rainha de


raiva roeu o resto. O rei ento ficou furioso e brigou
com a rainha.

6) Remova as seguintes chaves da rvore do


exerccio 5:

rei, rainha, roeu, rato, ento, furioso.


Referncias
SZWARCFITER, J. L., MARKENZON, L. Estruturas de
Dados e seus Algoritmos. 3a ed. Rio de Janeiro: LTC,
2010.
TENENBAUM, A. M., LANGSAM, Y., AUGENSTEIN, M.
J. Estruturas de Dados Usando C. So Paulo:
Makron, 1995.
LEISERSON, C. E., RIVEST, R. L., CORMEN, T. H.,
STEIN, C. Algoritmos Teoria e prtica. Rio de
Janeiro: Campus, 2002.
http://www.inf.ufrgs.br/~cagmachado/INF01124/t3.htm
5

Você também pode gostar