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