Pesquisa Digital. Árvorie. Árvorie. Árvorie. Árvorie. Árvorie: : Estrutura



Documentos relacionados
Árvores Trie e Patricia. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com

Algoritmos e Estrutura de Dados III. Árvores

Busca. Pesquisa sequencial

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

EAD Árvore árvore binária

Pesquisa digital. Algoritmos e Estruturas de Dados II

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

PROGRAMAÇÃO II 4. ÁRVORE

Árvores Binárias de Busca

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

TOTVS BA Guia de Customização Linha Logix

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

HASHING. Katia Guimarães. 1

Estruturas de Dados I

Linguagem C: Árvores Binarias

Árvore B UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Algoritmos de Busca em Tabelas

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Métodos de Pesquisa em Memória Primária

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

1. NÍVEL CONVENCIONAL DE MÁQUINA

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

Estruturas de Dados Pilhas, Filas e Deques

Aluísio Eustáquio da Silva

Sistemas Operacionais

Árvores Binárias de Busca

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Criando Quiz com BrOffice.impress

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

2ª Lista de Exercícios

MICROSOFT OFFICE EXCEL 2007

Sistemas Operacionais

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

ÍNDICE... 2 INTRODUÇÃO... 4

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Árvores Binárias Balanceadas

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani

Pesquisa Sequencial e Binária

1. FUNÇÕES NO EXCEL 2007

Quadro de consulta (solicitação do mestre)

DAS5102 Fundamentos da Estrutura da Informação

Apostilas OBJETIVA Escrevente Técnico Judiciário TJ Tribunal de Justiça do Estado de São Paulo - Concurso Público Índice

Programação de Robótica: Modo Circuitos Programados - Avançado -

Pesquisa em Memória Primária. Prof. Jonas Potros

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Tabelas Hash. Jeane Melo

Especificação do 3º Trabalho

INF 1007 Programação II

ANALÓGICA X DIGITAL. Vamos começar essa aula estabelecendo os dois tipos de eletrônica: Eletrônica Analógica. Eletrônica Digital

Pesquisa em Memória Primária. Prof. Jonas Potros

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

EXEMPLO DE COMO FAZER UMA MALA DIRETA

Computadores XXI: Busca e execução Final

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Prof. Daniela Barreiro Claro

Sistema de Arquivos FAT

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

1. Introdução Definição Conceitos relacionados... 2

Árvore Binária de Busca

Microsoft Excel 2007

Arquitetura de Rede de Computadores

Treinamento em BrOffice.org Calc

&XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO

COMO DESTACAR RESULTADOS COM A FERRAMENTA FORTAMAÇÃO CONDICIONAL DO EXCEL

AULA 13 - Gerência de Memória

ESTRUTURA DE DADOS PILHA

Persistência de Dados

APOSTILA DE EXCEL 2007

2. ENTRADA DE DADOS 2.1. TEXTOS

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

PROGRAMAÇÃO II 3. PILHA DINÂMICA

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Árvores B + Prof Márcio Bueno. ed2tarde@marciobueno.com / ed2noite@marciobueno.com. Material da Prof a Ana Eliza Lopes Moura

EAD Árvore - representação usando listas ligadas

FÓRMULAS DO EXCEL QUE SALVARAM MEU EMPREGO

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Configurações de Templates no SolidWorks 2011

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados BrOffice Base

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

COMO OTIMIZAR A SUA PLANILHA ATRAVÉS DA GRAVAÇÃO DE UMA MACRO EM EXCEL

ULA Sinais de Controle enviados pela UC

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

O AMBIENTE DE TRABALHO DO WINDOWS

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

Transcrição:

lgoritmos e Estruturas de Dados II Pesquisa Digital pesquisa digital está aseada na representação das chaves como uma seqüência de caracteres de um alfaeto 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 Árvorie Árvorie (trie) é uma estrutura de índice útil quando as chaves são de tamanho variável Uma árvorie é uma árvore de usca em m- vias, m 2, na qual a ramificação em qualquer nível é determinada por apenas uma parte do valor de chave e não pela chave inteira osé ugusto aranauskas Departamento de Física e Matemática FFLRP-UP augusto@ffclrp.usp.r http://dfm.ffclrp.usp.r/~augusto 2 Árvorie Árvorie O termo trie surgiu nos anos 0 e tem origem na palavra retrieval, uma vez que essa estrutura é usada asicamente na recuperação de dados Na estrutura de dados trie as chaves são representadas caractere por caractere Tries são usadas para fazer uma rápida usca em um texto grande ada chave é formada por uma cominação específica de símolos do alfaeto s cominações são de comprimento variável e ilimitado; portanto, as chaves podem ser palavras, seqüências inárias, códigos numéricos, etc Em uma árvorie, as chaves são armazenadas e manipuladas de uma forma especial, pois são parcialmente compartilhadas entre os elementos o invés de se comparar chaves inteiras entre si, as comparações são feitas componente a componente dicionalmente, as chaves são decompostas e as partes comuns entre elas são fundidas 4 Árvorie Árvorie: : Estrutura s árvories são oas 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) onsidere a árvore seguinte que contém dois tipos de nós: nó de desvio e nó de informação D E F G I K L M N O P R T U W V X Y Z ranco R U O E I E choque

Árvorie: : Estrutura Árvorie: : Estrutura onsidere a árvore seguinte que contém dois tipos de nós: nó de desvio e nó de informação D E F G I K L M N O P R T U W V X Y Z onsidere a árvore seguinte que contém dois tipos de nós: nó de desvio e nó de informação D E F G I K L M N O P R T U W V X Y Z ranco R U O E I ranco R U O E I E E choque choque 7 8 Árvorie: : Estrutura Árvorie: : Estrutura ada nó de desvio tem m=27 campos de ligação (2 letras do alfaeto mais um ranco que é usado para determinar uma chave) D E F G I K L M N O P R T U W V X Y Z ranco R U O E I E O alfaeto pode ser qualquer conjunto, por exemplo considerando as chaves como seqüências de its (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 its da chave choque 9 0 Árvorie: : Estrutura Árvorie = 0000 = 000 = 0000 D = 0000 E = 0000 D E Retornando ao exemplo em que m=27... D E F G I K L M N O P R T U W V X Y Z R U O E I ranco E choque 2

Árvorie lgoritmo de usca No nível, todas as chaves são particionadas em 27 classes disjuntas, de acordo com o primeiro caractere delas No i-ésimo nível, o desvio para o nó correspondente é determinado pelo i-ésimo caractere da chave uando uma suárvore tem apenas uma chave, ela é sustituí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 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 Para pesquisar em uma árvorie pela chave X, é necessário desdorar X em caracteres (ou dígitos, dependendo do alfaeto utilizado) que a compõem e seguir a seqüência de desvios determinada por esses caracteres O algoritmo Trieearch assume que p=0, não é um nó de desvio e que p.key é o valor da chave representada dentro de p, se ele é um nó de informação O algoritmo pesquisa pela chave X em árvorie de raiz T, admitindo-se, inicialmente, que o desvio no i-ésimo nível é determinado pelo i-ésimo caractere da chave link(t,i) retorna o ponteiro para a suárvore contendo todas as chaves iniciadas com o i-ésimo caractere, onde T é a raiz de árvorie 4 lgoritmo de usca nálise do lgoritmo Trieearch function Trieearch(T,X) X X + ; // concatene um ranco no fim de X 2 i ; p T; q 0; // q é o pai de p while p é um nó de desvio do 4 i-ésimo caractere de X; q p; p link(p,); i i + ; 7 endwhile 8 if p = 0 or p.key X then 9 return (q,i-,false); // X não está na árvorie 0 endif return (p,i,true); end Trieearch O algoritmo de pesquisa para as árvores é muito progressivo e pode-se constatar prontamente que o tempo de pesquisa é no pior caso O(h), onde h é o número de níveis na árvore (incluindo amos os tipos de nós de desvio e de informação) No caso de um índice, todos os nós vão residir em disco e por isso, para efetuar a usca precisarão ser feitos no máximo h acessos Tendo um conjunto de valores de chave, para ser representado num índice, o número de níveis na árvore dependerá oviamente, da estratégia ou da técnica de amostragem de chave, para determinar a ramificação em cada nível Isso pode ser definido por uma função de amostragem sample(x,i), que classifica X corretamente para ser desviado até o i-ésimo nível Funções de mostragem Funções de mostragem No algoritmo de usca, linha 4, esta função era (a) sample(x,i) = i-ésimo caractere de X = x i Outras escolhas para essa função são (X = x x 2...x n ) () sample(x,i) = x n-i+ (c) sample(x,i) = x i/2 se i for par x n-(i-)/2 se i for ímpar Para cada destas funções, pode-se encontrar os conjuntos de valores de chave para os quais a função será mais adequada, isto é, para os quais resultará numa árvorie com o número mínimo de níveis ssumindo X = x x 2...x 0 (a) sample(x,i) = x i () sample(x,i) = x n-i+ (c) sample(x,i) = x i/2 se i for par x n-(i-)/2 se i for ímpar i (a) () (c) x x 0 x 0 2 x 2 x 9 x x x 8 x 9 4 x 4 x 7 x 2 x x x 8 x x x 7 x 7 x 4 x 7 8 x 8 x x 4 9 x 9 x 2 x 0 x 0 x x 7 8

lgoritmo de usca Funções de mostragem function Trieearch(T,X) X X + ; // concatene um ranco no fim de X 2 i ; p T; q 0; // q é o pai de p while p é um nó de desvio do 4 sample(x,i); q p; p link(p,); i i + ; 7 endwhile 8 if p = 0 or p.key X then 9 return (q,i-,false); // X não está na árvorie 0 endif return (p,i,true); end Trieearch (a) sample(x,i) = x i D E F G I K L M N O P R T U W V X Y Z R U O E I ranco E choque 9 20 Funções de mostragem Funções de mostragem () sample(x,i) = x n-i+ (c) sample(x,i) = x i/2 se i for par; x n-(i-)/2 se i for ímpar D E F G I K L M N O P R T U W V X Y Z D E F G I K L M N O P R T U W V X Y Z R T choque T P R V choque P V E ranco R T ranco 2 22 Funções de mostragem árvore usando a função de amostragem (a) tem níveis Usando as funções () e (c), para as mesmas chaves, as árvores correspondentes têm apenas 4 níveis Funções de mostragem quantidade máxima de níveis de uma árvore pode ser mantida aixa, adotando uma estratégia diferente para os nós de informação Esses nós podem ser projetados para manter mais do que uma chave e o número máximo permitido de níveis for h, então todos os valores de chave que continuam sinônimos até o nível (h-) entram no mesmo nó de informação e a função de amostragem for escolhida corretamente, haverá apenas alguns sinônimos em cada nó de informação, que portanto, será suficientemente pequeno para ser processado na memória principal Nos próximos slides assumiremos que a função de amostragem usada é (a) e que não há restrições quanto à quantidade de níveis na árvore 2 24

Árvorie Limitada em ltura Exemplo de árvorie com máximo de níveis permitidos D E F G I K L M N O P R T U W V X Y Z P R V choque ranco P V Inserção inserção na árvorie é progressiva: inicialmente, é feita uma usca pela chave a ser inserida e ela já existir na árvorie nada é feito aso contrário, é recuperado o nó até onde acontece a maior parte da chave a ser inserida, sendo o restante dos seus caracteres adicionados na árvorie a partir daquele nó, por meio de nós de desvios adicionados No algoritmo de inserção, assume-se que a árvorie vazia é criada com um único nó de desvio, sem nenhuma chave inserida e que um ranco foi adicionado ao final da chave pelo algoritmo de usca 2 2 Inserção X = Inserção X = omo link(t, )=0, X ainda não está em T e pode ser ali inserido D E F G I K L M N O P R T U W V X Y Z D E F G I K L M N O P R T U W V X Y Z ranco R U O ranco R U O E E choque choque 27 28 Inserção X = Inserção X = omo link(t, V ) 0 e p.key X, onde p=link(t, V ), X pode ser inserido em T, mas deve-se uscar um caractere que diferencie X de p.key D E F G I K L M N O P R T U W V X Y Z Nesse caso, asta criar apenas um novo nó de desvio D E F G I K L M N O P R T U W V X Y Z ranco R U O p ranco R U O E I E E choque choque 29 0

Inserção X = Inserção X = Novamente, deve-se uscar um caractere que diferencie X de p.key, criando-se nós de desvios adicionais para isso D E F G I K L M N O P R T U W V X Y Z D E F G I K L M N O P R T U W V X Y Z ranco R U O E I ranco R U O E I E p E R D M choque choque 2 lgoritmo de Inserção Remoção X = procedure TrieInsert(T,X) (q,i,achou) Trieearch(T,X); 2 if achou then return; endif // X está em T sample(x,i); p link(q,); 4 if p = 0 then crie nó de informação F; F.key X; link(q,) F; return; 7 endif 8 while sample(x,i) = sample(p.key,i) do 9 crie nó de desvio R; link(q,) R; 0 q R; i i + ; sample(x,i); endwhile 2 crie nó informação F; F.key X; link(q,) F; sample(p.key,i); link(q,) p; end TrieInsert D E F G I K L M N O P R T U W V X Y Z R U q O E I ranco E R D M choque 4 Remoção X = Remoção X = Neste caso, asta posicionar link(q, U )=0 o posicionar link(q, M )=0... D E F G I K L M N O P R T U W V X Y Z D E F G I K L M N O P R T U W V X Y Z ranco R U q O E I ranco R U O E I E R D M E R D M q choque choque

Remoção X = Remoção X = o posicionar link(q, M )=0, o nó q fica com uma única chave (um único nó de informação) D E F G I K L M N O P R T U W V X Y Z Isto significa que o nó q pode ser eliminado e p movido um nível para cima D E F G I K L M N O P R T U W V X Y Z ranco R U O E I ranco R U O E I E R D M q E R D M q p choque choque 7 8 Remoção X = Remoção X = Novamente, q tem uma única chave e pode ser eliminado movendo p um nível para cima D E F G I K L M N O P R T U W V X Y Z omo q agora tem mais do que uma chave, o processo termina D E F G I K L M N O P R T U W V X Y Z ranco R U O E I ranco R U O q E I E R q p E p choque choque 9 40 Remoção Para facilitar as remoções, é útil acrescentar um campo count (contador) em cada nó de desvio Esse contador armazena quantidade de nós de informação na suárvore da qual ele é a raiz escrita formal do algoritmo de remoção em árvories é deixada como exercício Árvores Patricia Patricia é areviatura de Practical lgorithm To Retrieve Information oded In lphanumeric lgoritmo Prático para Recuperar Informação odificada em lfanumérico O algoritmo para construção da árvore Patricia é aseado no método de pesquisa digital, mas sem apresentar o inconveniente das árvories O prolema 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 suárvore seguir 4 42

Inserção X = Inserção X = = 0000 = 0000 = 0000 = 0000 = 0000 = 0000 4 44 Inserção X = Inserção X = = 0000 = 0000 = 0000 e seguem o padrão 0xxxxx. = 0000 = 0000 = 0000 e seguem o padrão 0xxxxx. O o. it diferencia de 4 4 Inserção X = Inserção X = = 0000 = 0000 = 0000 e seguem o padrão xxxxx. = 0000 = 0000 = 0000 e seguem o padrão xxxxx. O o. it diferencia de 47 48

Inserção X = Inserção X = = 0000 = 0000 = 0000 e seguem o padrão 0x0xxx. = 0000 = 0000 = 0000 e seguem o padrão 0x0xxx. O o. it diferencia de 49 0 Inserção X = K Inserção X = K K = 0000 = 0000 = 0000 e K seguem o padrão x0xxx. = 0000 = 0000 = 0000 e K seguem o padrão x0xxx. O o. it diferencia de K 2 Inserção X = W Inserção X = W Nesse caso, o ponto de inserção será entre esses nós K K = 0000 = 0000 = 0000 W = 00 K e W seguem o padrão x0xx. O 2o. it diferencia K de W = 0000 = 0000 = 0000 W = 00 K e W seguem o padrão x0xx. O 2o. it diferencia K de W 4

Inserção X = W lgoritmo de Inserção = 0000 = 0000 = 0000 W = 00 2 K W. e a suárvore atual for vazia, é criado um nó de informação com a chave X (isto ocorre somente na inserção da primeira chave) e o algoritmo termina 2. e a suárvore atual for simplesmente um nó de informação, os its da chave X são comparados, a partir do it de índice imediatamente após o último índice da seqüência de índices consecutivos do caminho de pesquisa, com os its correspondentes da chave X deste nó de informação, até encontrar um índice i cujos its sejam diferentes comparação dos its a partir do último índice consecutivo melhora o desempenho do algoritmo: se todos forem iguais, a chave já se encontra na árvore e o algoritmo termina; senão, vai para o passo 4. e a raiz da suárvore atual for um nó de desvio, deve-se prosseguir para a suárvore indicada pelo it da chave X de índice dado pelo nó atual, de forma recursiva 4. riar um nó de desvio e um nó de informação: o primeiro contendo o índice i e o segundo a chave X. seguir, o nó de desvio é ligado ao de informação pelo ponteiro de suárvore esquerda ou direita, dependendo se o it de índice i da chave X seja 0 ou, respectivamente. O caminho de inserção é percorrido novamente de aixo para cima, suindo com o par de nós criados no passo 4 até chegar a um nó de desvio cujo índice seja menor que o índice i determinado no passo 2: este é o ponto de inserção e o par de nós é inserido Resumo pesquisa digital está aseada na representação das chaves como uma seqüê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 7