Você está na página 1de 66

UNIVERSIDADE FEDERAL DO PARÁ

INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS


FACULDADE DE COMPUTAÇÃO

Estrutura de Dados II

Prof. Denis Rosário


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

Você também pode gostar