Trie Nuno Campos N.º 51431 Nuno Campos - N.º 51431
Introdução às Tries 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) 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 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 Colecção de todas as palavras a procurar Guardadas numa trie compacta 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 Ordenada por relevância Nuno Campos - N.º 51431
Representação de Tries / A E I L O R - 1 6 2 4 3 (1) (2) 5 (3) 7 8 9 (4) (5) Representação em Árvore (Non-compact trie) 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) 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 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 Nuno Campos - N.º 51431
Análise de Trie Compacta A representação compacta, para um array de strings: 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 m i n z e 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 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 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 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 Remover AR 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 Remover AR 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 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%20suffix%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