Slides (Tries)

Propaganda
Trie
Nuno Campos
N.º 51431
1
Nuno Campos - N.º 51431
Introdução às Tries





2
Trie (de retrieval) – estrutura de dados em árvore
Chaves representadas por strings
Suporta operações eficientes de PROCURA,
INSERÇÃO e REMOÇÃO
Representa um alfabeto finito
Todos os descendentes de um nó têm um prefixo
comum
Nuno Campos - N.º 51431
Vantagens das Tries
(em relação à BST)
3

Procura de chaves mais rápida

Necessitam de menos espaço

Procura de prefixo mais longo eficiente
Nuno Campos - N.º 51431
Aplicações das Tries






4
Verificadores de Ortografia
Compressão de dados
Biologia computacional
Tabelas de reencaminhamento para
endereços IP
Guardar e aplicar queries a documentos
XML
Aplicações Modernas: Motores de procura
Nuno Campos - N.º 51431
Tries e Motores de procura

Índice de motores de pesquisa
–
–

Cada folha de uma trie
–
–


Está associada com a palavra
Lista de páginas (URLs) contendo essa palavra (lista de
ocorrências)
A trie é mantida em memória
Lista de ocorrências é mantida em memória externa
–
5
Colecção de todas as palavras a procurar
Guardadas numa trie compacta
Ordenada por relevância
Nuno Campos - N.º 51431
Representação de Tries
6
Representação em Árvore
(Non-compact trie)
nó
/
A
E
I
L
O
R
0
-
1
-
-
-
-
6
1
-
-
-
-
2
-
4
2
-
-
-
3
-
-
-
3
(1)
-
-
-
-
-
-
4
(2)
-
-
-
-
5
-
5
(3)
-
-
-
-
-
-
6
-
-
-
7
-
-
-
7
-
-
-
-
-
8
9
8
(4)
-
-
-
-
-
-
9
(5)
-
-
-
-
-
-
Representação em Matriz
Nuno Campos - N.º 51431
Análise de Trie Não Compacta


Usa espaço O(n)
Suporta procuras, inserções e remoções em
tempo O(dm)
–
–
–
7
n é o tamanho total das strings no conjunto total
de todas as strings
m é o tamanho do parâmetro string da operação
d é o tamanho do alfabeto
Nuno Campos - N.º 51431
Tries compactas


8
Uma trie compacta pode ter nós de grau 2
Uma trie compacta é obtida a partir de uma trie não compacta por compressão de nós
redundantes
Nuno Campos - N.º 51431
Representação compacta
9
Nuno Campos - N.º 51431
Análise de Trie Compacta

A representação compacta, para um array de
strings:
–
–
–
10
Guarda, nos nós, valores de índices em vez de
substrings
Usa O(s) de espaço, onde s é o número d strings
no array
É utilizado como uma estrutura de índices auxiliar
Nuno Campos - N.º 51431
Suffix Trie
A suffix trie de uma string X é a trie compacta de todos os sufixos de X
11
m
i
n
i
m
i
z
e
0
1
2
3
4
5
6
7
Nuno Campos - N.º 51431
Análise de Suffix Trie


String X de tamanho n
Alfabeto de tamanho d
–
–
–
–
12
Espaço O(n)
Queries de procura de padrões aleatórios em X:
tempo O(dm)
m é tamanho do padrão
Pode ser construída em tempo O(n)
Nuno Campos - N.º 51431
Adicionar uma palavra (1)

Trie Não Compacta
–
–

13
Procurar letras na trie
Se não encontrar, criar nós que faltam
Adicionar a palavra RICO
Nuno Campos - N.º 51431
Adicionar uma palavra (2)

Trie Compacta
–
–

14
Procurar letras na trie
Criar nó com as letras que faltam
Adicionar a palavra RICO
Nuno Campos - N.º 51431
Remover uma palavra (1)

Trie Não Compacta
–
–

15
Procurar palavra seguindo a trie
Remover a partir do fim, até atingir um nó que tenha mais de um filho
Remover AR
Nuno Campos - N.º 51431
Remover uma palavra (2)

Trie Compacta
–
–
–

16
Procurar palavra seguindo a trie
Remover o nó final
Caso o nó pai do nó final apenas tenha mais um filho, então juntamos o nó pai e o novo nó filho
Remover AR
Nuno Campos - N.º 51431
Referências















17
Ramesh et al [1989]
Goodrich, Tamassia [2004]
Glander, Karl W. and Durre, Karl P. [1994]
http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Tree/Trie/
http://www.cs.mcgill.ca/~cs251/OldCourses/1997/topic7/
http://www.cse.lehigh.edu/~lopresti/Courses/2003-04/CSE397-497/lecture_8.ppt
http://linux.thai.net/~thep/datrie/datrie.html
http://tarar.zabvision.edu.pk/data/DS/Sufix%20Trees/Topic%20%237%20Tries%20and%20
suffix%20trees.htm
http://www.eecs.harvard.edu/~ellard/Q-97/HTML/root/node22.html
http://www.eecs.harvard.edu/~ellard/Q-97/HTML/root/node24.html
http://www.cs.princeton.edu/courses/archive/spring04/cos226/lectures/trie.4up.pdf
http://ww3.algorithmdesign.net/handouts/Tries.pdf
http://www.cs.umd.edu/class/spring2005/cmsc132/lecs/lec22.ppt
http://algo.inria.fr/seminars/sem00-01/bourdon.pdf
http://en.wikipedia.org/wiki/Main_Page
Nuno Campos - N.º 51431
Download