1 Definição de Dicionário Dicionário é um sistema de informações: Equivalente a um conjunto de elementos não repetidos Equivalente a um conjunto de elementos.

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Prof. Humberto Pinheiro, Ph.D.
ADT – Arvore Binária de Pesquisa
While While Condição // comandos End While. Exemplos While Var contador As Integer contador = 0 While (contador < 10) contador += 1 console.ConsoleWrite(contador)
Classificação. 2 Métodos de Classificação Os métodos de classificação podem ser dos tipos: Classificação interna – quando toda a coleção de itens a classificar.
Listas Encadeadas Circulares Listas Duplamente Encadeadas
DIAGRAMA DE ATIVIDADES
Listas Encadeadas Circulares Listas Duplamente Encadeadas
Espalhamento.
1 Sabendo-se que os pratos das balanças estão em equilíbrio, você seria capaz de dizer: Quantos quadrados corresponde um círculo ? Dica Mais dicas Elaboração:
AED – Algoritmos e Estruturas de Dados
Auditoria de Segurança da Informação
GRAFOS. Motivação Muitas aplicações em computação necessitam considerar conjunto de conexões entre pares de objetos: –Existe um caminho para ir de um.
PROGRESSÃO ARITMÉTICA P.A.
FORTRAN 90 Denise Yumi Takamura.
Estruturas de Dados para projeto de SGBD. Estruturas de dados analisadas Estruturas de nível Esparso Denso Combinadas Arvore B+ Tabela de hash.
Prof. Dr. Helder Anibal Hermini
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
Banco de Dados I Profa. Jiani Cardoso 2/2005
Capítulo VII – Tipos Enumerativos e Estruturas 7.1 – Tipos enumerativos 7.2 – A necessidade de estruturas 7.3 – Manipulação dos campos de uma estrutura.
Capítulo VI – Variáveis Indexadas
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo XI Encadeamento de Estruturas por Ponteiros.
Capítulo IX – Ponteiros 9.1 – Introdução 9.2 – Relação entre ponteiros e variáveis indexadas 9.3 – Alocação dinâmica de memória 9.4 – Variáveis indexadas,
Exemplo: ordenação de uma lista pelo Selection-Sort:
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
Função Gráficos. Domínio e imagem no gráfico.
TE 043 CIRCUITOS DE RÁDIO-FREQÜÊNCIA
Interpolação Introdução Conceito de Interpolação
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Listas Lineares.
Listas Encadeadas.
Recursividade Estrutura de Dados.
Marco Antonio Montebello Júnior
Introdução à Probabilidade
The Data Warehouse Toolkit
Frações Professor: Graciano Pianezzer Beletti.
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
Fraction Action FRACÇÕES.
Listas Encadeadas.
Provas de Concursos Anteriores
© GfK 2012 | Title of presentation | DD. Month
Como aplicar leis da lógica
1 Celulose.
Arquitetura de Sistemas Operacionais – Machado/Maia 10/1 Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 10 Gerência.
Cinemática Plana de um Corpo Rígido Cap. 16
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap Exercícios.
Árvores binárias de pesquisa com balanceamento
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
GAPH Integração de Hardware do Usuário ao CoreConnect Leandro Heleno Möller e Leonel Pablo Tedesco Prototipação Rápida e Computação.
Salas de Matemática.
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2011 Ministro Paulo Bernardo Silva Brasília, novembro de 2010.
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2010 Ministro Paulo Bernardo Silva Brasília, 31 de agosto de 2009.
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Indicadores de Performance – Contrato AES-SUL
EXERCÍCIOS PARA GUARDA-REDES
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Grupo A – Azul Claro, Marrom, Laranja
MATRICIAL CONSULTORIA LTDA. PREFEITURA MUNICIPAL DE GARIBALDI 23/10/ : ATENÇÃO Os locais descritos nas planilhas anexas não correspondem ao total.
Preleções Científicas Universidade Estadual do Ceará Pró-Reitoria de Extensão Integrais Múltiplas e Integrais de Volume Ministrante: Prof. K. David Sabóia.
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Regiões de Saúde Resolução Normativa – RN nº 259, de 17 de junho de 2011, e suas alterações.
Rio Verde - Goiás - Brasil
Cinemática Plana de um Corpo Rígido Cap. 16
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Modelos Atômicos.
GINÁSTICA LABORAL UM NOVO CAMINHO.
Transcrição da apresentação:

1 Definição de Dicionário Dicionário é um sistema de informações: Equivalente a um conjunto de elementos não repetidos Equivalente a um conjunto de elementos não repetidos Cujas operações são: Cujas operações são: Inserir, Deletar e Membro (verificar se um elemento pertence, ou é membro do conjunto) Além das operações de fazer consultas e de esvaziar Além das operações de fazer consultas e de esvaziar

2 Tabela Hashing 1 – Idéia básica Hashing: técnica importante, eficiente e muito usada para a implementação de dicionários. Hashing: técnica importante, eficiente e muito usada para a implementação de dicionários. Hashing = ato de retalhar, recortar ou picar Divisão dos elementos do dicionário em subconjuntos mais gerenciáveis denominados classes (buckets) Divisão dos elementos do dicionário em subconjuntos mais gerenciáveis denominados classes (buckets) A idéia é direcionar procuras, inserções e deleções para apenas uma dessas classes A idéia é direcionar procuras, inserções e deleções para apenas uma dessas classes

3 Um dicionário Dic dividido em C classes: Um dicionário Dic dividido em C classes: Como dizer qual a classe de um elemento? Como dizer qual a classe de um elemento? Função classificadora h: para um elemento x, do mesmo tipo dos elementos do dicionário, h(x) é um inteiro do conjunto {0, 1, 2,..., C-1} Função classificadora h: para um elemento x, do mesmo tipo dos elementos do dicionário, h(x) é um inteiro do conjunto {0, 1, 2,..., C-1} Classe 0Classe 1Classe 2Classe C-1

4 Para um elemento x, sua classe é h(x) em [0.. C-1] Para um elemento x, sua classe é h(x) em [0.. C-1] Dado um elemento x, ele seria procurado, inserido ou deletado apenas da classe h(x), ignorando-se o conteúdo das outras classes Dado um elemento x, ele seria procurado, inserido ou deletado apenas da classe h(x), ignorando-se o conteúdo das outras classes Essa função deve ser tal que consiga equilibrar o número de elementos das classes. Essa função deve ser tal que consiga equilibrar o número de elementos das classes. Classe 0Classe 1Classe 2Classe C-1

5 Exemplo: seja a montagem de um dicionário de nomes de, no máximo, 10 caracteres. Seja x um nome e x[i] o i ésimo caractere de x Seja x um nome e x[i] o i ésimo caractere de x Seja onde Seja onde n é o nº de caracteres de x e C=11. Seja a seguir uma tabela de nomes a serem introduzidos no dicionário, ao lado da sua somatória e de sua função h Seja a seguir uma tabela de nomes a serem introduzidos no dicionário, ao lado da sua somatória e de sua função h

6 Conteúdo das classes do dicionário: Classe 0 sergio rogerio itamar ciro Classe 1 antonio Classe 2Classe 3 orlando juliana Classe 4 jose berenice Classe 5 maria raimundo Classe 6 francisco paulo carlos severino gisele Classe 7 moises joao Classe 8 tania Classe 9 alessandra fernando Classe 10 sonia

7 Há duas estruturas muito conhecidas para as classes de uma tabela hashing: Há duas estruturas muito conhecidas para as classes de uma tabela hashing: Hashing aberto: as classes são guardadas em listas lineares encadeadas Hashing aberto: as classes são guardadas em listas lineares encadeadas Hashing fechado: as classes são guardadas em blocos de elementos adjacentes num vetor de elementos Hashing fechado: as classes são guardadas em blocos de elementos adjacentes num vetor de elementos

8 2 – Hashing aberto Estrutura básica:

9 Exemplo: hashing aberto para a tabela abaixo:

10 Declarações e operações: Declarações e operações: const int C = 11; /* escolhida convenientemente */ typedef char cadeia [11]; typedef struct celula celula; struct celula {cadeia elemento; celula *prox;}; typedef celula *dicionario [11]; int h (cadeia x) { int i, soma; for (soma = 0, i = 0; x[i] != \0; i++) soma += x[i]; return soma % C; }

11 void Esvaziar (dicionario Dic) { int i; celula *p; for (i = 0; i <= C-1; i++) while (Dic[i] != NULL) { p = Dic[i]; Dic[i] = Dic[i]->prox; free (p); }} logic Membro (cadeia x, dicionario Dic) { celula *pont; pont = Dic[h(x)]; while (pont != NULL) if (pont->elemento == x) return TRUE; else pont = pont->prox; return FALSE; }

12 void Inserir (cadeia x; dicionario Dic) { int class; celula *p; if (!Membro (x, Dic)) { class = h(x); p = Dic[class]; p = Dic[class]; Dic[class] = malloc (sizeof (celula)); Dic[class] = malloc (sizeof (celula)); Dic[class]->elemento = x; Dic[class]->elemento = x; Dic[class] prox = p; Dic[class] prox = p;}}

13 void Deletar (cadeia x, dicionario Dic) { celula *p, *q; int class; logic achou; class = h(x); if (Dic[class] != NULL) { if (Dic[class]->elemento == x) { if (Dic[class]->elemento == x) { q = Dic [class]; Dic [class] = Dic[class]->prox; free (q); Dic [class] = Dic[class]->prox; free (q);} else { p = Dic[class]; achou = FALSE; p = Dic[class]; achou = FALSE; while (p->prox != NULL && !achou) while (p->prox != NULL && !achou) if (p->prox->elemento == x) { if (p->prox->elemento == x) { Achou = Verdade; q = p->prox; Achou = Verdade; q = p->prox; p->prox = p->prox->prox; p->prox = p->prox->prox; free (q); } else p = p->prox; }}}

14 3 – Hashing fechado É uma técnica apropriada para dicionários em que a operação de deletar não é frequente É uma técnica apropriada para dicionários em que a operação de deletar não é frequente Os elementos do dicionário são armazenados em um vetor Os elementos do dicionário são armazenados em um vetor

15 Cada posição do vetor guarda um elemento e mais dois flags Cada posição do vetor guarda um elemento e mais dois flags Um para dizer se a posição está vazia Um para dizer se a posição está vazia Outro para dizer se o elemento ali colocado foi deletado Outro para dizer se o elemento ali colocado foi deletado elementovaziodeletado

16 As classes são guardadas em blocos de posições adjacentes no vetor (Na figura abaixo, são reservadas 3 posições por classe) As classes são guardadas em blocos de posições adjacentes no vetor (Na figura abaixo, são reservadas 3 posições por classe) Para cada elemento inserido, o flag vazio torna-se falso; o flag del inicialmente é falso em todas as posições Para cada elemento inserido, o flag vazio torna-se falso; o flag del inicialmente é falso em todas as posições elementovazdel Cl 0 0N 1N 2N Cl 1 3N 4N 5N Cl 2 6N 7N 8N Cl 3 9N 10N 11N elementovazdel Cl 4 12N 13N 14N Cl 5 15N 16N 17N Cl 6 18N 19N 20N Cl 7 21N 22N 23N elementovazdel Cl 8 24N 25N 26N Cl 9 27N 28N 29N Cl 10 30N 31N 32N

17 Os elementos vão sendo inseridos até que não caiba elemento em alguma classe; exemplo: tabela vista Os elementos vão sendo inseridos até que não caiba elemento em alguma classe; exemplo: tabela vista elementovazdel Cl 0 0sergioNN 1N 2N Cl 1 3N 4N 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13N 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21N 22N 23N elementovazdel Cl 8 24taniaNN 25N 26N Cl 9 27N 28N 29N Cl 10 30soniaNN 31N 32N

18 O próximo elemento da classe 6 é inserido na próxima posição vazia O próximo elemento da classe 6 é inserido na próxima posição vazia elementovazdel Cl 0 0sergioNN 1N 2N Cl 1 3N 4N 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13N 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21severinoNN 22N 23N elementovazdel Cl 8 24taniaNN 25N 26N Cl 9 27N 28N 29N Cl 10 30soniaNN 31N 32N

19 Continua a inserção até chegar um elemento da classe 7 Continua a inserção até chegar um elemento da classe 7 elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3N 4N 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13N 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21severinoNN 22N 23N elementovazdel Cl 8 24taniaNN 25N 26N Cl 9 27alessandraNN 28N 29N Cl 10 30soniaNN 31N 32N

20 Insere-se o elemento na primeira posição vazia a partir da classe 7 Insere-se o elemento na primeira posição vazia a partir da classe 7 elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3N 4N 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13N 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21severinoNN 22moisesNN 23N elementovazdel Cl 8 24taniaNN 25N 26N Cl 9 27alessandraNN 28N 29N Cl 10 30soniaNN 31N 32N

21 Classe 0 cheia, insere na próxima posição vazia Classe 0 cheia, insere na próxima posição vazia elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3ciroNN 4N 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13N 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21severinoNN 22moisesNN 23N elementovazdel Cl 8 24taniaNN 25N 26N Cl 9 27alessandraNN 28N 29N Cl 10 30soniaNN 31N 32N

22 Continua até o próximo problema Continua até o próximo problema elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3ciroNN 4N 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13N 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21severinoNN 22moisesNN 23joaoNN elementovazdel Cl 8 24taniaNN 25N 26N Cl 9 27alessandraNN 28N 29N Cl 10 30soniaNN 31N 32N

23 Só há posição vazia para elemento da classe 6 na classe 8 Só há posição vazia para elemento da classe 6 na classe 8 elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3ciroNN 4N 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13N 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21severinoNN 22moisesNN 23joaoNN elementovazdel Cl 8 24taniaNN 25giseleNN 26N Cl 9 27alessandraNN 28N 29N Cl 10 30soniaNN 31N 32N

24 E assim até o final E assim até o final elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3ciroNN 4antonioNN 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13bereniceNN 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21severinoNN 22moisesNN 23joaoNN elementovazdel Cl 8 24taniaNN 25giseleNN 26N Cl 9 27alessandraNN 28fernandoNN 29N Cl 10 30soniaNN 31N 32N

25 Procuras, inserções e deleções realizam percurso que começa no início da classe correspondente Procuras, inserções e deleções realizam percurso que começa no início da classe correspondente Proibindo-se deleções, procuras e inserções encerram percurso ao encontrar o elemento ou uma posição vazia (desnecessário o campo del) Proibindo-se deleções, procuras e inserções encerram percurso ao encontrar o elemento ou uma posição vazia (desnecessário o campo del) elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3ciroNN 4antonioNN 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13bereniceNN 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloNN 20carlosNN Cl 7 21severinoNN 22moisesNN 23joaoNN elementovazdel Cl 8 24taniaNN 25giseleNN 26N Cl 9 27alessandraNN 28fernandoNN 29N Cl 10 30soniaNN 31N 32N

26 Permitindo-se deleções, marca-se o campo del do elemento deletado Permitindo-se deleções, marca-se o campo del do elemento deletado Exemplo: deletando-se paulo e moises, inserção na classe 6 ou 7, só na classe 8 e adiante Exemplo: deletando-se paulo e moises, inserção na classe 6 ou 7, só na classe 8 e adiante elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3ciroNN 4antonioNN 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13bereniceNN 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloN 20carlosNN Cl 7 21severinoNN 22moisesN 23joaoNN elementovazdel Cl 8 24taniaNN 25giseleNN 26N Cl 9 27alessandraNN 28fernandoNN 29N Cl 10 30soniaNN 31N 32N

27 Uma procura por um elemento da classe 6 que não esteja presente, só termina na posição 26 (vazia) Uma procura por um elemento da classe 6 que não esteja presente, só termina na posição 26 (vazia) Encerrar uma procura para inserção, quando encontrado um elemento deletado, não garante que o elemento a ser inserido não esteja presente Encerrar uma procura para inserção, quando encontrado um elemento deletado, não garante que o elemento a ser inserido não esteja presente elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3ciroNN 4antonioNN 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13bereniceNN 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloN 20carlosNN Cl 7 21severinoNN 22moisesN 23joaoNN elementovazdel Cl 8 24taniaNN 25giseleNN 26N Cl 9 27alessandraNN 28fernandoNN 29N Cl 10 30soniaNN 31N 32N

28 A recuperação de posições deletadas é um trabalho complicado de remanejamento dos elementos dentro do vetor A recuperação de posições deletadas é um trabalho complicado de remanejamento dos elementos dentro do vetor Isso deve ser feito quando se esgotarem as posições de inserção Isso deve ser feito quando se esgotarem as posições de inserção elementovazdel Cl 0 0sergioNN 1rogerioNN 2itamarNN Cl 1 3ciroNN 4antonioNN 5N Cl 2 6N 7N 8N Cl 3 9orlandoNN 10julianaNN 11N elementovazdel Cl 4 12joseNN 13bereniceNN 14N Cl 5 15mariaNN 16raimundoNN 17N Cl 6 18franciscoNN 19pauloN 20carlosNN Cl 7 21severinoNN 22moisesN 23joaoNN elementovazdel Cl 8 24taniaNN 25giseleNN 26N Cl 9 27alessandraNN 28fernandoNN 29N Cl 10 30soniaNN 31N 32N