Árvores Equilibradas Sumário Splay Vermelho-Preto AA e BB Multidimensionais quaternárias k-d Pesquisa Lexicográfica tries multivia tries binárias PATRICIA Versão AED2 Falta completar as árvores vermelho-preto- ver notas sobre algoritmos top-down para VP
Trie Árvore multivia (origem do nome “info retrieval”) Em vez de comparar chaves completas aplicar a ideia de consulta de tabela à pesquisa de informaçõo numa árvore utilizar cada letra de uma chave para fazer escolhas múltiplas sucessivas típico: usar só as primeiras letras porque depois a árvore expande muito (26 vias em cada passo) podem omitir-se os caminhos que não vão dar a uma chave pode combinar-se com outro método (para o resto da chave) número de passos na pesquisa proporcional ao número de caracteres na chave chave de 5 letras localiza 26^5 = 11 881 376 posições trie : 5 iterações pesquisa binária: log n = 23.5 comparações de chaves
Trie lexicográfica ... a b c ... ab ac
Trie binária A 00001 S 10011 E 00101 R 10010 C 00011 H 01000 I 01001 N 01110 G 00111 X 11000 M 01101 P 10000 L 01100 A 1 E S 1 1 C H R X 1 1 1 1 G I N P 1 1 1 1 M 1 Árvores resultam equilibradas Pesquisa: 1 comparação de chave por nó Caso médio: log N comparações Pior caso: b comparações L b=5 1
Trie binária com chaves em nós externos G 00111 X 11000 M 01101 P 10000 L 01100 E A C R S Árvore não depende da ordem de inserção Pesquisa: 1 só comparação de chave Caso médio: log N comparações de bits Pior caso: b comparações de bits b=5
Eficiência na pesquisa em Trie Trie fornece equilíbrio quase automático da árvore em chaves aleatórias, as probabilidades para 0 e 1 nos bits são iguais nenhum caminho na árvore tem comprimento superior ao número de bits da chave Eficiência condicionada pela facilidade em realizar operações ao bit (extracção e comparação) Altura da trie limitada pelo número de bits nas chaves Chaves podem ser muito longas quando se faz pesquisa em documentos Solução 1: usar árvore multivia, considerando os bits em grupos melhorar pesquisa com factor 2m, mas espaço de links não usados aumenta pode usar-se híbrido: multivia no topo da árvore e método elementar no fundo Solução 2 (PATRICIA): encurtar caminhos que ramificam só para um lado de “Practical Algorithm To Retrieve Information Coded In Alphanumeric” D.R. Morrison
PATRICIA Para resolver caminhos que ramificam só para um lado em cada nó: índice do bit a testar para decidir caminho a partir do nó nós externos: substituídos por ligações para o nó interno onde se encontra a chave só há um tipo de nós apontadores “para cima” fáceis de identificar: são para nós com índice superior pesquisa e inserção descida na árvore não usa as chaves do nó, apenas o seu índice quando se atinge um nó externo o apontador “para cima” dá o nó para recuperar a chave Chave a pesquisar existe: se é a chave do nó referido pelo primeiro apontador “para cima”
PATRICIA S H X E N P C G I M R A L Chave R corresponde a padrão 10*10 4 A 00001 S 10011 E 00101 R 10010 C 00011 H 01000 I 01001 N 01110 G 00111 X 11000 M 01101 P 10000 L 01100 S 3 3 H X 2 2 1 E N P 1 1 1 C G I M R A L Chave R corresponde a padrão 10*10 1 comparação de chave completa por pesquisa
PATRICIA - Inserção externa 4 S 3 3 H X 2 2 1 1 E N P Z 1 1 1 C G I M R A L X = 11000 Z = 11010
PATRICIA - Inserção interna 4 S 3 3 H X 2 2 2 1 E N T Z 1 1 1 1 C G I M P A L R P = 10000 T = 10100