Hash Tables Tabelas de Espalhamento

Documentos relacionados
Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

ANÁLISE E PROJETO DE BANCO DE DADOS

Tabelas de Dispersão. Algoritmos e Estruturas de Dados Verão Cátia Vaz 1

Tabelas de dispersão/hash

Dicionários. Prof. César Melo

Hashing: conceitos. Hashing

Hashing Externo. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo M.C.F. de Oliveira Cristina Ciferri

INF 1620 P1-04/10/03 Questão 1 Nome:

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Técnicas de Programação II

Vetores Unimensionais

Matemática Discreta 12

Hashing. ACH Introdução à Ciência da Computação II. Delano M. Beder

Algoritmos e Estrutura de Dados. Aula 11 Estrutura de Dados: Tabelas Hash Parte II Prof. Tiago A. E. Ferreira

Diagramas Sintáticos

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Introdução a Programação de Jogos

Programação Estruturada

TABELA HASH. Prof. André Backes. Princípio de funcionamento dos métodos de busca

Criando seu próprio tipo de dado. Prof. Fabrício Olivetti de França

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501)

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

Algoritmos e Estruturas de Dados: Tabela de Dispersão com Encadeamento

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Python - Dicionários. Introdução à Programação SI1

Aula 12: Funções. CI208 - Programação de Computadores. Prof. MSc. Diego Roberto Antunes

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash?

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Matrizes. Para começar... Matrizes. Matrizes

Curso de Programação C em Ambientes Linux Aula 05

1.Quais serão os valores de x, y e p ao final do trecho de código abaixo? int x, y, *p;y = 0; p = &y; x = *p; x = 4; (*p)++; --x; (*p) += x;

Exercícios: Arquivos

Algoritmos de pesquisa. Tabelas de dispersão/hash

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Vetores e Matrizes. Prof. Fabrício Olivetti de França Charles Henrique

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

TÉCNICO DE INFORMÁTICA - SISTEMAS

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

Linguagem de Programação Visual

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

Complexidade de algoritmos Notação Big-O

Indexação e Busca. O objetivo deste trabalho é projetar e implementar um sistema de programas para indexação e busca em arquivos de texto.

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Estrutura de Dados. Aula 07 Alocação Dinâmica

Técnicas de projeto de algoritmos: Indução

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016

Módulo 18 - Tabelas de Dispersão

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

13 Hashing (parte 2) SCC201/501 - Introdução à Ciência de Computação II

Classificação e Pesquisa

Estrutura de Dados. Plano de Ensino. Vilson Heck Junior. Campus Lages. Instituto Federal de Santa Catarina

CURSO DE POO COM JAVA

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

Agenda. Ideia. Buscar um item em um array. Função hash. Função hash. Hash Table. Introdução Definição Hash Table. Métodos de resolução de conflitos

Fundamentos de Programação de Computadores Linguagem C Vetor Unidade 09 Linguagem C - Vetor 1/16

Transcrição:

Hash Tables Tabelas de Espalhamento Estruturas de Prof. Vilson Heck Junior

Hash Table Como Estrutura de : Serve para organizar e armazenar dados de forma a agilizar o processo de pesquisa; Pode ser programada de diversas formas, sendo a mais comum com o uso de array e listas dinâmicas.

Tabela Hash Usos mais comuns: Indexação de grandes volumes de informação; Classificação por categorias; Softwares per-to-per (BitTorrent); Entre outros.

Tabela Hash São elementos compositores: Função Hash (Função de espalhamento); Chaves de Pesquisa; Hash; Array de informações ou de listas de informações.

Função Hash esponsável pelo espalhamento (distribuição) dos dados, através da geração do índice do elemento com base em uma determinada chave e operação matemática; O desempenho da tabela, como um todo, é completamente dependente do planejamento desta função; Quanto menos colisões ocorrerem, melhor é a função Hash escolhida, e melhor o desempenho da tabela como um todo.

Função Hash Exemplo de Função Hash (1): Supondo que queremos dividir todos os nomes de pessoas em um determinado cadastro pela primeira letra (maiúscula) do nome: public int FuncaoHash(String chave) { } return chave.touppercase().charat(0) 65;

Função Hash Exemplo de Função Hash (2): Supondo que queremos dividir todos os CPFs de pessoas em um determinado cadastro de 100 em 100 registros: public int FuncaoHash(long chave) { } return (int)(chave % 100);

Chave Hash É o valor que será utilizado pela fórmula Hash para o espalhamento dos dados; Como no exemplo anterior, a chave utilizada como parâmetro da função, nada mais é do que uma string contendo o nome que se pretende espalhar separando pela primeira letra do nome.

Índice Hash Índice é o valor que é retornado pela função Hash; É um número que representa a posição no array de dados aonde a informação deverá ser inserida.

Array de Informações É um array que pode armazenar diretamente os valores, para cada uma das posições resultantes da função Hash, ou armazenar referências para as listas de dados associadas a uma determinada posição fornecida pela Função Hash.

xemplo Distribuindo números de X em X: Imagine que temos um banco de dados de uma instituição bancária. Neste banco de dados, definimos como chave para uma tabela Hash o número da conta-corrente do cliente. Queremos então dividir, através da tabela Hash, as contas bancarias dos clientes em 6 grupos.

xemplo Distribuindo números de X em X: Este banco de dados esta sempre crescendo; Por isso não podemos definir limiares fixos separando grupos de contas. Uma das soluções, seria, separar os números das contas, inclusive as futuras novas, de X em X números. Como isto? Segue a demonstração:

Entrada Função Hash = E % L E = L (Largura; ) =

Entrada Função Hash L (Largura; ) = E % L E = =

Entrada Função Hash L (Largura; ) = E % L E = = 03

Entrada Função Hash L (Largura; ) = E % L E = = 03

Entrada Função Hash L (Largura; ) = E % L E = = 03

Entrada Função Hash = E % L E = L (Largura; ) =

Entrada Função Hash L (Largura; ) = E % L E = =

Entrada Função Hash L (Largura; ) = E % L E = =

Entrada Função Hash L (Largura; ) = E % L E = =

Entrada Função Hash L (Largura; ) = E % L E = =

11 Entrada Função Hash = E % L E = L (Largura; ) =

Entrada 11 Função Hash L (Largura; ) = E % L E = 11 =

Entrada Função Hash 11 L (Largura; ) = E % L E = 11 =

Entrada Função Hash L (Largura; ) 11 = E % L E = 11 =

Entrada Função Hash L (Largura; ) 11 = E % L E = 11 =

Entrada Função Hash L (Largura; ) 11 = E % L E = 11 =

Entrada Função Hash L (Largura; ) = E % L E = 11 = 11

06 Entrada Função Hash = E % L E = L (Largura; ) = 11

Entrada 06 Função Hash L (Largura; ) = E % L E = 06 = 11

Entrada Função Hash 06 L (Largura; ) = E % L E = = 00 11

Entrada Função Hash L (Largura; ) 06 = E % L E = = 00 11

Entrada Função Hash L (Largura; ) = E % L E = = 00 06 11

20 Entrada Função Hash = E % L E = L (Largura; ) = 06 11

Entrada 20 Função Hash L (Largura; ) = E % L E = 20 = 06 11

Entrada Função Hash 20 L (Largura; ) = E % L E = 20 = 02 06 11

Entrada Função Hash L (Largura; ) 20 = E % L E = 20 = 02 06 11

Entrada Função Hash L (Largura; ) = E % L E = 20 = 02 06 20 11

35 Entrada Função Hash = E % L E = L (Largura; ) = 06 20 11

Entrada 35 Função Hash L (Largura; ) = E % L E = 35 = 06 20 11

Entrada Função Hash 35 L (Largura; ) = E % L E = 35 = 06 20 11

Entrada Função Hash L (Largura; ) 35 = E % L E = 35 = 06 20 11

Entrada Função Hash L (Largura; ) 35 = E % L E = 35 = 06 20 11

Entrada Função Hash L (Largura; ) = E % L E = 35 = 06 20 35 11

Entrada Função Hash L (Largura; ) = E % L E = 35 = 06 20 11 35

xercícios 1. Crie uma função Hash que separa números de CPF de 200 em 200 elementos; 2. Com a função h(k) = k % 11, desenhe o resultado de uma Hash Table para os dados: 82, 31, 28, 4, 45, 27, 59, 79, 35; 3. Com a função hash abaixo, desenhe o resultado de uma Hash Table com os seguintes valores: 80, 35, 29, 33, 19, 18, 40, 10, 6, 21; public static int funcaohash(int valor) { } if (valor % 2 == 0) { return 0; } else if (valor % 3 == 0) { } return 1; return 2;

Trabalho Hash Table Uma empresa precisa de um programa de computador que efetue o cadastro de compradores. Os compradores deverão ser alocados e recuperados rapidamente da memória. Crie o programa para esta empresa, alocando os Compradores em uma hash table. Use sua criatividade para escolher os componentes que irá utilizar para construir a Hash Table; A chave hash deverá ser composta pelo NOME do comprador; Cada comprador tem os seguintes dados: Nome; CPF; G; Telefone.