Pratical Algorithm To Retrieve Information Coded In Alphanumeric

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Um programa em C Bibliotecas Variáveis globais
ESTRUTURA DE DADOS LES.
Algoritmo e Programação
Programação II Estruturas de Dados
Tipos de dados, Variáveis, Expressões e Operadores
Árvores Equilibradas Sumário Splay Vermelho-Preto AA e BB
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Estrutura de Dados e Algoritmos e Programação e Computadores II
Algoritmos BUSCA E INSERÇÃO
Algoritmos e Programação Estruturada Conceitos básicos
Árvores.
Pesquisa em Árvores Digitais
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
SEMINÁRIO DE ALGORITMOS
Classificação e Pesquisa de Dados
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
Métodos de Pesquisa: Seqüencial e Binária
Pesquisa em Memória Primária (cont.)
Análise Léxica Supondo o trecho de programa abaixo:
Construção de Compiladores
Listas com Ponteiros Listas encadeadas Listas circulares.
Etec Dr. Emilio Hernandez Aguilar
Lógica de Programação Módulo II
Unidades de Armazenamento
Árvore Binária & AVL Equipe: Felipe Pontes Gustavo Márcio
Inteligência Artificial
P.A.T.R.I.C.I.A. TREE Carla Martins Celso Feilstrecker
INF 1771 – Inteligência Artificial
Algoritmos de Ordenação
Introdução a Computação e Cálculo Numérico
Algoritmos Computacionais ( Programas )
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
INF 1010 Estruturas de Dados Avançadas
Linguagem de Programação II Parte V
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Árvores Binárias de Pesquisa
(Linguagem de Consulta Estruturada)
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Introdução e Busca Cega
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
1. Se este nó é raiz de uma árvore QuasiEquilibrada de ordem k, e
Territorialização, diagnóstico local e planejamento estratégico
ÁRVORES PATRÍCIA UNIVERSIDADE CATÓLICA DE PELOTAS
Algoritmo e Programação
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
MSc. Marcelo Torres – professortorres.com.br. Linguagem de Programação 01 - Introdução à Linguagem C MSc. Marcelo Torres – professortorres.com.br.
Conceito de Árvores – Árvores Binárias

Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Árvores Vermelho-Preto
Prof. Hilton Cardoso Marins Junior
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -

Faculdade Pernambucana - FAPE Setembro/2007
Linguagem C.
Estruturas Avançadas de Dados UNISINOS
AULA 21 Profa. Sandra de Amo BCC - UFU
ALGORITMIA. ALGORITMO Conjunto de instruções ou acções que ao serem executadas, permitirão realizar uma determinada tarefa.
Algoritmo de Huffman.
ORDENAÇÃO EM TEMPO LINEAR
Métodos de Pesquisa: Sequencial e Binária
Árvore PATRICIA Pratical Algorithm To Retrieve Information Coded In Alphanumeric Disciplina de Estrutura de Dados Aluna: Mônica Lorea Matzenauer.
Sistemas Inteligentes Busca Cega (Exaustiva)
Jean Carlo Mendes
INE5408 Estruturas de Dados Árvores B - Estrutura e peculiaridades -Algoritmos de inserção, pesquisa e deleção.
INE5408 Estruturas de Dados Gerência de Arquivos -Técnicas utilizando Listas -Técnicas utilizando Árvores.
Transcrição da apresentação:

Pratical Algorithm To Retrieve Information Coded In Alphanumeric Apresentação: Pratical Algorithm To Retrieve Information Coded In Alphanumeric (Algoritmo prático para recuperar informações codificadas em alfanumérico) Rogério Vargas rogerio@ucpel.tche.br

Conceito: P.A.T.R.I.C.I.A. é um algoritmo desenvolvido que gera uma árvore onde somente os nodos folhas possuem as chaves. A grande vantagem apontada por esta estrutura é que sua consulta torna-se muito rápida, pois a árvore P.A.T.R.I.C.I.A. evita comparações desnecessárias entre os elementos analisados.

Como Funciona: A árvore P.A.T.R.I.C.I.A. possui em seus nodos (exceto nos nodos folha) um registro com os seguintes campos: 1) Avançar; 2) Comparar_com;

Como Funciona: 1) Campo Avançar: Este campo faz parte de um registro inicial que integra todos os nodos, exceto os folhas. A proposta de solução declara-o como um inteiro ( integer / int ) que tem a função de informar o programa de qual caracter da chave analisada deve ser comparado com o campo “Comparar_com”, que veremos a seguir. “Avançar” é um campo acumulativo, ou seja, a medida que o caminhamento sobe nos níveis da árvore, ele soma o valor do campo anterior com o do nodo visitado, até que se chegue a um nodo folha.

Como Funciona: 2) Campo Comparar_com: Faz parte do mesmo registro de “Avançar”, sendo este declarado como um caracter (char). Ele indica ao programa o caracter com o qual deve ser comparado o caracter da chave. No caso de uma inserção, se o caracter da chave for menor ou igual (<=) ao do nodo comparado, este então é alocado à esquerda do nodo pai que será criado, senão, à direita. No caso de consulta, o caminhamento é feito através do mesmo processo da inserção. Compara os caracteres. Se for menor ou igual desloca-se para a esquerda, caso contrário desloca-se para a direita.

Funcionamento: Cada nodo de uma árvore  P.A.T.R.I.C.I.A.  contém o número de posições que será movido adiante e o caractere que será comparado. Um sinal de comparação ( <= ) indica que deve ir para a subárvore esquerda e um sinal ( > ) indica uma subárvore a direita.

Antirevolucionario Antirepublicano Antigo Angola Antes Funcionamento Passo-a-Passo: Palavras Antirevolucionario Antirepublicano Antigo Angola Antes

( AntirePublicano ) <= ( AntireVolucionario ) Funcionamento Passo-a-Passo: Palavras 1 – Comparação: ( AntirePublicano ) <= ( AntireVolucionario ) 7º caracter diferente Antirevolucionario Antirepublicano Antigo Angola Antes

( AntiGo ) <= ( AntiRepuplicano ) Funcionamento Passo-a-Passo: Palavras 2 – Comparação: ( AntiGo ) <= ( AntiRepuplicano ) 5º caracter diferente Antirevolucionario Antirepublicano Antigo Angola Antes

( AnGola ) <= ( AnTigo ) Funcionamento Passo-a-Passo: Palavras 3 – Comparação: ( AnGola ) <= ( AnTigo ) 3º caracter diferente Antirevolucionario Antirepublicano Antigo Angola Antes

4 e 5 – Comparação: Funcionamento Passo-a-Passo: ( AnGola ) <= ( AnTes ) 3º caracter diferente ( AntEs ) <= ( AntIgo ) 4º caracter diferente Palavras Antirevolucionario Antirepublicano Antigo Angola Antes

A) Vamos supor que o programa leu do teclado 2 palavras: Inserção: A) Vamos supor que o programa leu do teclado 2 palavras: palavra 1 = c a s c a t a; palavra 2 = c a s c a l h o; Este será um caso de inserção do primeiro nodo da nossa árvore!

Inserção: O programa percorre as chaves até que encontre um caracter diferente no mesmo índice da string. Neste caso temos a diferença no sexto caracter, onde i será igual a 6. Ela aloca um nodo pai que vai conter o registro com Avançar = 6; Comparar_com = l (letra l); e aponta para ‘cascalho’ à esquerda e ‘cascata’ à direita.

Inserção:

Inserção: B) Agora vamos inserir a palavra casco: Note que a diferença dela está no quinto caracter. Então comparamos ele com o as palavras que possuímos. ‘Casco’ é maior que ‘casca...’ .

Inserção: Repetimos então o processo anterior, onde teremos: (O algoritmo de inserção trabalha juntamente com o de consulta) Obs.: Não podemos esquecer de que o campo "Avançar” acumula o valor dos nodos anteriores. Veja que o nodo controlador de cascalho-cascata na verdade compara o sexto caracter, pois o valor 1 deste nodo é somado com 5 do nodo anterior !!!

O primeiro nodo manda comparar o caracter número 1 da chave com “c”. Consulta: O primeiro nodo manda comparar o caracter número 1 da chave com “c”. Como “d” é maior que “c”, deslocamos para a direita. Agora o segundo com “a”. Procurar por: domando O caracter “o” de domando é maior que “a”, então vamos para a direita. Agora o quarto com “a”. É igual. Vamos para a esquerda e encontramos a palavra.

Deleção: A implementação do algoritmo de deleção é relativamente simples se compararmos com o de inserção. Ele trabalha juntamente com o de consulta para localizar o nodo a ser deletado. Não esquecendo que nossa árvore possui duas estruturas de nodos (os folhas que armazenam as chaves e os não-folha que controlam a estrutura para uma caminhamento correto), o algoritmo de consulta vai localizar (quando possuir) sempre o nodo folha. Basta que façamos com que o nodo controlador que apontava para o controlador do nosso folha localizado agora passe apontar diretamente para o controlador seguinte.

Deleção: Obs.: Para deletar a chave "missão", precisamos ajustar o ponteiro, e assim teremos : Obs.: Note que além de reajustarmos os ponteiros, o nodo controlador que passa a ser apontado pelo anterior ao deletado, teve o seu campo ‘Avançar’ modificado pelo acumulo do seu valor anterior com o do nodo deletado.

Considerações Finais: Tem como vantagem e característica principal, armazenar um número de posições para qual é movido para a frente antes de fazer a próxima comparação, assim elimina comparações desnecessárias e melhora o desempenho. Tem a desvantagem de produzir apenas duas subárvores. Se mais do que duas chaves são distintas na mesma posição do caracter,é necessário adicionar nodos extras ao índice para separá-lo. Se (n) chaves são distintas na mesma posição, então serão necessários (n-1 )nodos para separá-los. Se muitos casos destes acontecerem, é preferível utilizar estruturas TRIE à árvores PATRÍCIA.

Programa de Inserção: patricia insert( key, t ) typekey key; patricia t; { patricia p; patricia InsBetween(); int i; if (t==NULL) return( NewDataNode(key) ); for( p=t; !IsData(p); ) p = bit( p->level, key ) ? p->right : p->left ; /* find first different bit */ for (i=1; i<=D && bit(i,key)==bit(i,p->k); i++); if (i>D) { Error /* Key already in table */; return(t); } else return( InsBetween( key, t, i ) ); } patricia InsBetween( key, t, i ) typekey key; patricia t; int i; { patricia p; if ( IsData(t) || i < t->level ) { /* create a new internal node */ p = NewDataNode( key ); return( bit(i,key) ? NewIntNode(i,t,p) : NewIntNode(i,p,t) ); } if (bit(t->level,key)==1) t->right = InsBetween( key, t->right, i ); else t->left = InsBetween( key, t->left, i ); return( t ); };

Programa de Consulta: search( key, t ) typekey key; patricia t; { if ( t==NULL ) notfound( key ); else while ( !IsData(t) ) t = bit(t->level,key) ? t->right : t->left; if ( key == t->k ) found( t ); else notfound( key ); } };

Praticar no site: http://www.cis.ksu.edu/~rhowell/viewer/viewer.html

Referências Bibliográficas: GOETZE, Ari Ricardo. Universidade do Vale do Rio dos Sinos. DisponíveL em http://www.inf.unisinos.br/~ari/estrut/estrut.htm. Acesso em 29 Março 2006. MATOS, Luciana Ribeiro. Novos Índices para Texto: Árvores PAT e Vetores PAT. Disponível em http://ge.cos.ufrj.br/twiki/pub/BRI/PlanoDeAulas2005Bri/Luciana.ppt Acesso em 30 Março 2006. ALVARES, Marco A. Árvore Patricia. Disponível em http://www.ec.ucdb.br/~marco/courses03b/ds2/slides/002-arvores-patriciaX6.pdf. Acesso em 28 Março 2006. LONGHI Magalí T. Árvores de Pesquisa. Disponível em http://www.inf.lasalle.tche.br/~magali/ED2.htm. Acesso em 27 Março 2006. HORA, André Cavalcante, CRUZ Cicero Alan Leite, SILVA Tiago Eduardo. Tries e Árvore Patricia. Disponível em http://dalton.dsc.ufcg.edu.br/edados/index.php/Tries_e_%C3%81rvores_Patricia. Acesso em 03 Abril 2006. NIST, National Institute of Standards and Technology, "Patricia Tree", disponivel em http://www.nist.gov/dads/HTML/patriciatree.html. Acesso em 12 Abril 2006.

Finalização: ? Dúvidas Sugestões Críticas Obrigado!!!!!

Mestrado em Ciência da Computação Créditos: Mestrado em Ciência da Computação Trabalho da disciplina de Estruturas de Dados Professor Dr. Paulo Roberto Gomes Luzzardi   Mestrando: Rogério Vargas