• Nenhum resultado encontrado

12.AED.Arvores Digitais-2012

N/A
N/A
Protected

Academic year: 2021

Share "12.AED.Arvores Digitais-2012"

Copied!
38
0
0

Texto

(1)

Mestrado em

Mestrado em

Ciência da Computação

Ciência da Computação

Algoritmos e Estrutura de Dados

Algoritmos e Estrutura de Dados

(2)

• Pesquisa digital é baseada na representação das chaves como uma sequência de caracteres ou de dígitos;

• Os métodos de pesquisa digital são particularmente vantajosos quando as chaves são grandes e de tamanho variável;

• Estruturas geralmente utilizadas para a pesquisa digital são as árvores digitais; •Exemplos: • Árvore Trie • Árvore Patricia 2

Pesquisa Digital

(3)

• Definida em 1960 por Edward Fredkin;

• O nome vêm de ReTrieval (Relacionado à Recuperação de Informações);

• Para distinção com tree pronuncia-se try;

• Cada nó contém informações sobre um ou mais símbolos do alfabeto utilizado;

• O Alfabeto pode abranger: {0,1} , {A,B,C,D...} ou {0,1,2,3,4...} e mais o caracter nulo (ou branco)

3

(4)

As Tries são boas para suportar tarefas de tratamento lexicográfico, tais como:

• manuseio de dicionários;

• pesquisas em textos de grande dimensão; • construção de índices de documentos;

• expressões regulares (padrões de pesquisa).

4

(5)

O caminho da raiz (root) da Trie para qualquer outro nó em representa um prefixo de uma string;

• Em Tries Compactas, todos os descendentes diretos do mesmo pai são agrupados;

• No último nodo, o último caractere da palavra sendo

procurada deverá ter associado a si (como seu apontador) a posição da palavra no texto.

5

(6)

6

(7)

7

(8)

8

Árvore

Trie

Portanto:

Cada nível da árvore que se desce, corresponde a avançar um elemento na chave;

Cada nó pode conter informação sobre um ou mais símbolos do alfabeto utilizado.

Assim: uma dada sequência de arestas pode formar qualquer palavra (chave) possível com base nesse alfabeto; não existe limite para o tamanho de uma sequência (e portanto para o tamanho de uma chave); as sequências têm comprimento variável.

(9)

• Em suma:

• Uma Trie é uma árvore M-ária cujos nós são vetores de M componentes com campos correspondentes aos dígitos ou caracteres que formam as chaves. • Cada nó no nível i representa o conjunto de todas

as chaves que começam com a mesma sequência de i dígitos ou caracteres.

• Este nó especifica uma ramificação com M

caminhos dependendo do (i + 1)-ésimo dígito ou caractere de uma chave.

9

(10)

• Considerando as chaves como sequência de bits (isto é, M = 2), o algoritmo de pesquisa digital é semelhante ao de pesquisa em árvore, exceto que, em vez de se caminhar na árvore de acordo com o resultado de comparação entre chaves, caminha-se de acordo com os bits de chave..

Dada as seguintes chaves de 6 bits tem-se a Trie abaixo:

B = 010010 C = 010011 H = 011000 J = 100001 M = 101000 10

Árvore

Trie

(11)

11

Árvore

Trie

Inserção das Chaves W e K na Trie Binária :

• Faz-se uma pesquisa na árvore com a chave a ser inserida. Se o nó externo em que a pesquisa terminar for vazio, cria-se um novo nó externo nesse ponto contendo a nova chave,

exemplo: a inserção da chave W = 110110.

• Se o nó externo contiver uma chave cria-se um ou mais nós internos cujos descendentes conterão a chave já existente e a nova chave. exemplo: inserção da chave K = 100010.

(12)

12

Árvore

Trie

Aplicações

• Busca: localizar um dado que corresponde a chave informada;

• Problema: em um sistema de cadastros de pessoas, onde quando temos nomes com grafias semelhantes (Manuel/Manoel, Elaine/Elayne, Luis/Luiz), podem

ocorrer erros na entrada desses dados, ou seja, de não ser que sejam testados os possíveis erros cometidos.

(13)

13

Árvore

Trie

Aplicações

• Solução do problema: existe um método de busca por aproximação de correspondência, onde podemos

localizar dados que são semelhantes a uma chave informada. Pela estrutura de representação de

caractere a caractere usada nas Tries, elas acabam tendo um desempenho muito bom nesse tipo de

(14)

14

Aplicações de

Trie

: Corretor

Ortográfico

Uma aplicação usual de Trie é o corretor ortográfico.

Nesse tipo de programa as palavras são comparadas com um dicionário armazenado em arquivo, e se não são

(15)

15

Uma aplicação usual de Trie é o corretor ortográfico.

Com o dicionário armazenado numa Trie, pode-se

percorrer essa estrutura letra por letra para encontrar, ou não a palavra testada. Com base na chave informada o algoritmo vai percorrer a árvore que contém o

dicionário, enquanto as letras da chave e alguma letra de cada nível da árvore coincidirem;

• Caso seja detectado um erro na chave o algoritmo

verifica a possibilidade de ocorrência de cada um tipos de erros para poder indicar as opções de correção.

Aplicações de

Trie

: Corretor

Ortográfico

(16)

16

1.Substituição - avança um caractere na chave e avança um nível na árvore;

2.Deleção - avança um nível na árvore;

3.Inserção - avança um caractere na chave;

4.Transposição - avança um nível na árvore e testa a

posição atual da chave, se coincidir, avança um caractere na chave e retrocede um nível na árvore para confirmar a inversão.

Aplicações de

Trie

: Corretor

Ortográfico

(17)

17

Com as seguintes palavras: ABA, ANDA,

MACA, MESA, MORTE, MOSCA.

Digamos que a chave a ser testada seja

ADA, onde ocorreu erro na tentativa de

escrever ABA;

Será realizada a seguinte sequência de testes:

• A=A - ok • D=B - erro • D=N - erro

próximo passo: avança na chave e na árvore (substituição) * A=A -ok

Aplicações de

Trie

: Corretor

Ortográfico

(18)

18

Detectado erro de substituição, onde a letra B foi substituída por D.

Nesse ponto o algoritmo pode parar e apresentar as opções de correção, ou continuar verificando ocorrência dos

outros tipos de erros a partir do ponto em que foi encontrada divergência entre o dicionário e a chave.

Vamos então analisar o teste de erro de deleção para a mesma chave.

A = A –ok; D = B –erro; D = N -erro próximo passo é avançar somente na árvore (deleção):

D = A –erro; D = D –ok; A = A –ok.

Detectado erro de deleção, onde a letra N foi suprimida da chave.

Aplicações de

Trie

: Corretor

Ortográfico

(19)

19

Armazena palavras mais usadas em uma Trie;

A medida que vai digitando exibe as opções possíveis de palavras já usadas;

Utilização: Browsers; Programas de e-mail: Gmail e o Yahoo! mail e algumas IDE´s para linguagens de

programação diversas.

Aplicações de

Trie

: Corretor

Ortográfico

(20)

20

Série de endereços que já foram usados

(browser/e-mail) ou os comandos

disponíveis (linguagem de programação) são armazenados em Tries e, a medida que é digitada uma sequência de caracteres, o algoritmo vai comparando a existência de correspondências na estrutura.

A cada caractere digitado, são apresentadas as opções de preenchimento, e no momento em que só existir um caminho possível a ser seguido na Trie, ocorre o preenchimento automático.

Aplicações de

Trie

: Corretor

Ortográfico

(21)

21

Aplicações de

Trie

: Corretor

Ortográfico

(22)

22

Aplicações de

Trie

: Corretor

Ortográfico

(23)

23

Aplicações de

Trie

: Corretor

Ortográfico

(24)

24

Aplicações de

Trie

: Corretor

Ortográfico

(25)

25

Operações sobre árvores

Trie

Inserção

Faz-se uma busca pela palavra a ser inserida;

Se a palavra já existe, nenhum nó é inserido (algumas aplicações requerem que seja indicado no nó folha a posição de cada ocorrência da

palavra no texto);

Caso contrário, recupera-se o nó até a maior substring da palavra a ser inserida; a partir deste nó, insere-se o

(26)

26

Operações sobre árvores

Trie

Inserção

(27)

27

Operações sobre árvores

Trie

Remoção

Busca-se o nó que indica o final da palavra a ser removida;

Existindo este nó, removem-se os nós no sentido ascendente que possuem apenas um filho;

A remoção termina ao se encontrar um nó com mais de um filho;

(28)

28

Operações sobre árvores

Trie

Remoção

(29)

29

Árvores PATRICIA

Uma desvantagem das árvores Trie é o excessivo número de nós para armazenar substrings comuns a várias palavras que têm algum nó comum;

Para evitar este desperdício de espaço, em 1968 Donald R. Morrison propôs a árvore Trie compactada binária, mais tarde batizada de PATRICIA (Pratical Algorithm To Retrieve

(30)

30

Árvores PATRICIA

Características:

• Caminhos que possuem nós com apenas 1 filho são agrupados em uma única aresta;

• Diferente das Tries, uma árvore PATRICIA não

armazena informações nos nodos internos, apenas contadores e ponteiros para cada sub-árvore

(31)

31

Árvores PATRICIA

(32)

32

Árvores PATRICIA

• Exemplo de representação  Campo Avançar

- Registro Acumulativo que Integra todos os Nos exceto os folhas.

- Identifica a posição do caractere da Chave informada que deve ser analisado.  Campo Comparar Com

- Apresenta o Caractere que deve ser comparado ao caractere da Chave Informada.

- Como nas Árvores Binárias de Busca, após a análise, se a Chave é menor ou Igual ao nó, ela é alocada/consultada à Esquerda, senão à Direita.

(33)

33

(34)

34

(35)

35

(36)

36

(37)

Exercício

(38)

Exercício

Construa um TAD para a árvore patrícia com as operações de busca, inserção e remoção.

Referências

Documentos relacionados

O capítulo 4, Tópico discursivo, é dedicado à organização tópica, ou temática, do texto. Trata-se de um dos fatores mais importantes para a construção da sua coerência

Visando mitigar riscos e oferecer a pronta- resposta adequada em caso de incidentes ou acidentes na Reserva do Paiva, foram implantadas pela AGRP, com a coordenação da Consultoria

Após a implantação consistente da metodologia inicial do TPM que consiste em eliminar a condição básica dos equipamentos, a empresa conseguiu construir de forma

Acidente de Trabalho é o que ocorre pelo exercício do trabalho a serviço da empresa, provocando lesão corporal ou perturbação funcional que cause a morte, a perda ou

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

Na aplicação das políticas contábeis da Companhia e das controladas, a Administração deve fazer julgamentos e elaborar estimativas a respeito dos valores contábeis

Tabela de medidas: todas as medidas especificadas na tabela de medida em anexo se referem à peça pronta, já tendo recebido a 1ª lavagem caso haja diferença na peça

As dificuldades que a gente tem com os idosos é por exemplo, aquelas pessoas que tentamos dar o comer mas elas não comem, não o querem… deitam fora, cospem, hummm… e para mim