Email: denis@ufpa.br Agenda Unidade 2: Busca digital 1. Árvore digital 2. Árvore digital binária 3. Árvore patricia Árvore Digital n No problema de busca, é suposto que existe um conjunto de chaves S={s1, …, sn} e um valor x correspondente a uma chave que se deseja localizar em S. n Nos métodos vistos até agora, tentavam estruturar S de alguma forma conveniente e, através de comparações de x com si de S, tentar localizar x em S. n Nesses métodos, cada chave si, bem como a chave desejada x, é tratada como um único elemento indivisível Árvore Digital n Porém, nem sempre as chaves serão do mesmo tamanho e podem exceder o espaço definido para elas. n Suponha que se deseje armazenar um texto literário para, em seguida, tentar localizar frases nesse texto. n Neste caso, o conjunto S de chaves corresponderia às frases armazenadas e cada si à uma frase passível de ser buscada. n Neste cenário, a busca digital é a mais apropriada. Árvore Digital n A diferença entre a busca digital e a busca estudada até agora é que a chave não é tratada como um elemento indivisível. n Isto é, assume-se que cada chave é consAtuída de um conjunto de caracteres ou dígitos definidos em um alfabeto apropriado. n Em vez de se comparar a chave procurada com as chaves do conjunto armazenado, a comparação é efetuada, individualmente, entre os dígitos que compõem as chaves, dígito a dígito. n O método de pesquisa digital é análogo à pesquisa manual em dicionários: com a primeira letra da palavra são determinadas todas as páginas que contêm as palavras iniciadas por aquela letra e assim por diante Árvore Digital n Trie: originado de “informaOon reTRIEval” devido a aplicação em recuperação de informação; n É um Opo de árvore de busca. n Idéia geral: usar partes das CHAVES como caminho busca n Origem: anos 60 por Edward Fredkin n Na comparação de chaves: ¨ NÃO compara chave procurada com chaves do conjunto armazenado; ¨ SIM, compara dígitos da chave individualmente. Número de passos igual tamanho da chave; Árvore Digital n Cada chave formada por palavras sobre um alfabeto n Palavras com tamanho variável e ilimitado n Em geral associam-se chaves a elementos ou registros Árvore Digital n Cada chave é formada a par<r de alfabeto de símbolos ¨ Exemplos de alfabetos: {0,1}, {A, B, C, D, E,...Z}, {0,1,2,3,4,5,...,9} ¨ Exemplos de chaves: ABABBBABABA 19034717 Maria 010101010000000000101000000001010 ¨ Chaves parcialmente parOlhadas entre os elementos Árvores Digitais ou Trie n Conjunto chaves: S = {s1, s2, . . . , sn}; n si é sequência dígitos dj; n Alfabeto de S: d1 < d2 < . . . < dm; n p primeiros dígitos de chave: prefixo; n Árvore digital é árvore m-ária T não vazia onde: ¨ Nó v é j-ésimo filho de seu pai ⇒ v corresponde dígito dj ; ¨ Sequência de dígitos da raiz até um nó corresponde a prefixo de alguma chave de S. Árvores Digitais ou Trie nAlfabeto: {e, r, s} ∴ e < r < s nS={ ¨ erre, erres, es, esse, esses, se, ser, serre,re, res, rese,reses, serres, seres} Árvores Digitais ou Trie n O grau corresponde ao tamanho do alfabeto n A trie pode ser vista como um autômato finito n Cada nível percorrido corresponde a avançar um elemento na chave Operações em TRIES Busca n Cada no v ¨ é apontado por pt ¨ Possui m filhos ordenados , apontado por pt.pont[1],..., pt.pont[m] ¨ Se algum i-esimo filho esta ausente, então pt.pont[i] = null ¨ Se for terminal, pt.terminal = true Operações em TRIES Busca n A chave x a ser procurada ¨ Possui k dígitos, denotados por d[1],..d[k] n pt indica o nó corrente n l é o tamanho do maior prefixo de x n a = 0 chave foi encontrada no nó w, caso contrário a = 1 Operações em TRIES INSERÇÃO n Faz-se uma busca pela palavra a ser inserida. n Se ela já exis<r na TRIE nada é feito. n Caso contrário, é recuperado o nó até onde acontece a maior substring da palavra a ser inserida. n O restante dos seus caracteres são adicionados na TRIE a par<r daquele nó Operações em TRIES n Inserção : bbaabb Operações em TRIES n Inserção : bbaabb Operações em TRIES Árvores Digitais ou Trie n As árvores digitais são boas para suportar tarefas de tratamento lexicográfico, tais como: ¨ manuseamento de dicionários ¨ pesquisas em textos de grande dimensão ¨ construção de índices de documentos ¨ expressões regulares (padrões de pesquisa Operações em TRIES n REMOÇÃO n Busca-se o nó que representa o final da palavra a ser removida. n São removidos os nós que possuem apenas um filho pelo caminho ascendente. n A remoção é concluída quando se encontra um nó com mais de um filho Operações em TRIES n Remoção : bbaaa Operações em TRIES n Remoção : bbaaa Exercício n Estes são pares que queremos colocar na árvore TRIE ¨ amy 56 ¨ ann 15 ¨ emma 30 ¨ rob 27 ¨ roger 52 Exercício ¨ amy 56 Exercício ¨ ann 15 Exercício ¨ emma 30 Exercício ¨ rob 27 Exercício ¨ roger 52 Exercício n Quais chaves/palavras estão representadas nesta trie? Tipos de TRIES • Existem muitas variantes e <pos de TRIES: • R-WAY • Suffix Tree • Patrícia Tree • TST • Entre outras... Árvores Digitais ou Trie n Implementação mais simples: R-WAY n Considere a árvore seguinte que contém dois <pos de nós: nó de desvio e nó de informação n Há desperdício de espaço. Árvores Digitais ou Trie n Considere a árvore seguinte que contém dois <pos de nós: nó de desvio e nó de informação Árvores Digitais ou Trie n Considere a árvore seguinte que contém dois <pos de nós: nó de desvio e nó de informação Árvores Digitais ou Trie n Cada nó de desvio tem m=27 campos de ligação (26 letras do alfabeto mais um branco que é usado para determinar uma chave) n No nível 1, todas as chaves são parAcionadas em 27 classes disjuntas, de acordo com o primeiro caractere delas n No i-ésimo nível, o desvio para o nó correspondente é determinado pelo i-ésimo caractere da chave n Quando uma subárvore tem apenas uma chave, ela é subsAtuída por um nó de informação ¨ Neste nó inclui-se a chave juntamente com outras informações importantes, como o endereço de registro com esta chave etc n Na representação gráfica, os nós de desvio são representados por retângulos, enquanto que para os de informação usa-se elipses Árvores Digitais ou Trie n Inserção X = “azul” Árvores Digitais ou Trie n Inserção X = “violeta” n Nesse caso, basta criar apenas um novo nó de desvio Árvores Digitais ou Trie n Inserção X = “verde” Árvores Digitais ou Trie n Inserção X = “verde” n Novamente, deve-se criar nós de desvios adicionais para isso Árvores Digitais ou Trie n Diferente de métodos clássicos de busca pois: ¨ independe do número total de chaves (e de tamanho arquivo); ¨ depende do tamanho chave procurada e do alfabeto; n Apesar das vantagens mencionadas , uma aplicação direta é por vezes inviável. ¨ QuanOdade de memória uOlizada Exercício n Estes são pares que queremos colocar na árvore TRIE R-WAY ¨ amy 56 ¨ ann 15 ¨ emma 30 ¨ rob 27 ¨ roger 52 ÁRVORE DIGITAL BINÁRIA Árvore Digital Binária n Árvore digital binária é simplesmente o caso binário da árvore digital, ou seja, uma árvore m-ária com m=2. ¨ Neste caso, representa-se o alfabeto por {0,1}
n A seleção do filho esquerdo de um nó é interpretada
como o dígito 0 e o direito como 1. n A maior uOlização de árvores digitais dá-se, possivelmente, nesse caso binário. ¨ Chaves ou códigos binários são os mais empregados na computação. Árvore Digital Binária n Ao analisar as chaves, verificamos que algumas são prefixos de outras na coleção. n Por exemplo:
n Isso corresponde a dizer que o caminho da raiz até o nó de
chave 00 é parte do caminho da raiz até o nó de chave 00010 n Frequentemente, para melhor manipular a estrutura, deseja- se que tal situação não aconteça. n Assim, uma árvore binária de prefixo é uma árvore digital binária tal que nenhum código seja prefixo do outro. Árvore Binária de Prefixo S1 = 0 S2 = 1000 S3 = 10010 S4 = 11100 S5 = 11101 Árvore Binária de Prefixo n Uma propriedade interessante da árvore binária de prefixo é que há uma correspondência entre o conjunto de chaves e o das folhas das árvores. ¨ Isto é, cada chave é unicamente representa por uma folha e a codificação binária dessa chave corresponde ao caminho da raiz até essa folha. ÁRVORE PATRÍCIA Árvore Patrícia n Patrícia é abreviatura de ¨ PracAcal Algorithm To Retrieve InformaAon Coded In Alphanumeric (Algoritmo PráAco para Recuperar Informação Codificada em Alfanumérico) n Criada por Morrison 1968 para recuperação de informação em arquivos de texto Árvore Patrícia n O algoritmo para construção da árvore Patrícia é baseado no método de pesquisa digital, mas sem apresentar o inconveniente das tries. n É construída a parOr da árvore binária de prefixo. n O problema de caminhos de uma só direção é eliminado por meio de uma solução simples e elegante: ¨ cada nó interno da árvore contém o índice do caractere a ser testado para decidir qual subárvore seguir Árvore Patrícia n Exemplo de Representação : Árvore Patrícia n Campo Avançar ¨ Registro AcumulaOvo que Integra todos os Nodos Exceto os Folhas ¨ IdenOfica qual a Posição do Caracter da Chave Informada que deve ser analisado n Campo Comparar Com ¨ Apresenta o Caracter que deve ser Comparado ao Caracter da Chave Informada Árvore Patrícia n Exemplo de Inserção 1: Árvore Patrícia n Exemplo de Inserção 2: Árvore Patrícia n Inserção X = B Árvore Patrícia n Inserção X = J Árvore Patrícia n Inserção X = H Árvore Patrícia n Inserção X = H Árvore Patrícia n Inserção X = Q Árvore Patrícia n Inserção X = Q Árvore Patrícia n Inserção X = C Árvore Patrícia n Inserção X = C Árvore Patrícia n Inserção X = K Árvore Patrícia n Inserção X = K Árvore Patrícia n Inserção X = W Árvore Patrícia n Inserção X = W Árvore Patrícia n Inserção X = W Aplicações das TRIES n Dicionários (telefone celular) n Corretores Ortográficos n Programas para compreender Linguagem Natural n Auto-preenchimento: ¨ browsers, ¨ e-mail, ¨ linguagens de programação Exercício n Insira as seguintes chaves em uma Árvore Patrícia: ¨ A 000100 ¨ B 010100 ¨ C 000010 ¨ D 100100 ¨ E 001001 ¨ F 001100 ¨ G 101000 ¨ H 101010