Hash tables Fábio Nakano.

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Dados Listas Prof. Rodrigo Rocha
Advertisements

LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
HASHING Katia Guimarães julho/2002
Programação em Java Prof. Maurício Braga
Estruturas de Dados Marcio Gonçalves.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Algoritmos de Busca CONTEÚDO (1) Motivação (2) Busca Linear
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
Algoritmos de Pesquisa em Cadeias de Caracteres
TADS – Tipos Abstratos de Dados
Algoritmos e Estrutura de Dados I
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
DNS Introdução.
Pesquisa em Memória Primária
Pesquisa em Memória Primária - Hashing
Pesquisa em Memória Primária – Árvores de Busca
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária – Árvores de Busca
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Hashing (Espalhamento)
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Pesquisa em Memória Primária
Análise Léxica Supondo o trecho de programa abaixo:
Listas com Ponteiros Listas encadeadas Listas circulares.
Ponteiros em Linguagem C
2002/2003 Programação Orientada para Objectos 1 Aula 4 Memória, unidade básica de memória e conceito de endereço Ponteiros Relação de ponteiros com matrizes.
Listas Encadeadas.
Aula 11 Fábio Nakano.
Marco Antonio Montebello Júnior
Alocação Dinâmica de Memória
Algoritmos e Estruturas de Dados
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Aula 12 Fábio Nakano. Aquecimento... Demonstre por indução que: S n = (2n-1)=n 2.
Departamento de Estatística e Informática
Algoritmos de Busca Parte II
Pesquisa em memória primária: hashing
Pesquisa em Memória Primária
Aula 11 LISTAS LIGADAS.
Algorítmos e estrutura de dados III
Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Hashing - Espalhamento
Estruturas de Dados e Ordenação
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
Estruturas de Dados Aula 9: Listas (parte 1)
Tabelas Hash Prof. Túlio Toffolo
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Estruturas de Dados Aula 6: Cadeias de Caracteres
Tabela Hash Alunos : Gustavo Jorge Zanin nºUSP
Prof. Hilton Cardoso Marins Junior
Folha de cálculo – Microsoft Excel
Estrutura de dados Aula 6 - hash
Hashing (Tabela de Dispersão)
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Lista Ligada Estrutura de Dados II Prof. Gale. Vantagens  Crescem (ou decrescem) à medida que elementos são inseridos (ou removidos)  seqüência encadeada.
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

Hash tables Fábio Nakano

Bibliografia CLR Ziviani

Conjuntos dinâmicos Operações Aplicações Insere Busca Elimina dicionários; tabelas de símbolos; índices;

Em um vetor

Listas Ligadas Classe LinkedList Complexidade de tempo para inserção (no início / final) busca remoção (no início / final)

Espalhar – uma bagunça organizada Sei exatamente onde está cada folha de papel na minha mesa!!! É uma questão de saber onde procurar !!!

Endereçamento direto Imagine que possa se espalhar elementos por toda a memória... ... e recuperá-los em tempo constante!!!

Calculando chaves No computador qualquer coisa é codificada e representada como conteúdo de memória. Este conteúdo por sua vez, pode ser visto como números. int ascii_of_A = (int)'A';  // retorna 65   int calculaChave (String txt) {        int h=0;        for (int i = 0; i < txt.length(); i++) {                int chr = txt.charAt(i);                h+= chr;         }  return (h%103)

Hash É o jeito mais eficiente de saber onde procurar. Calcula um índice baseado na chave que se quer buscar , h(chave). O cálculo tem que ser feito em tempo constante. Para este índice ser “bom”, precisa ter a propriedade de espalhar os elementos uniformemente.

E em caso de colisão??? Encadeamento...

Hash simples e uniforme com colisões resolvidas por encadeamento fator de carga (ou taxa de ocupação) Complexidade de uma busca sem sucesso Complexidade (média de pior caso) de uma busca com sucesso

Como gerar “boas” funções Método da divisão Método da multiplicação h(k)=k mod m este método funciona melhor quando m é primo problema: primos grandes sucessivos são muito distantes entre si. h(k)=m*(A*k-floor(A*k)) há valores de A melhores que outros. Um deles é a chamada “proporção áurea” ou número de ouro.