Tabela Hash. Disciplina: Estruturas de Dados Professora: Camila Taumaturgo M.Sc.

Documentos relacionados
HASHING Hashing Motivação - Acesso Direto:

HASHING HASHING 6/10/2008

Aula 30: Tabelas de dispersão. Conceitos e princípios de funcionamento

Aula 32: Encadeamento interior. Modelo de encadeamento interior. Algoritmo de busca por encadeamento interior

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco.

TABELAS HASH. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

SCC0601 Introdução à Ciência da Computação II. Prof. Lucas Antiqueira

Aula 31: Encadeamento exterior. Modelo de encadeamento exterior. Complexidade do encadeamento exterior

Estruturas de Dados Tabelas de Espalhamento

Tabela Hash. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 15/05/2015

Transformação de Chave. (Hashing)

Transformação de Chave - Hashing

Hashing: conceitos. Hashing

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

Arquivos de Acesso Direto. Vanessa Braganholo

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

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

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

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Hashing. Prof Márcio Bueno. /

Matemática Discreta 12

Hashing. Cormen Capítulo 11

TABELAS DE DISPERSÃO/HASH

Algoritmos de pesquisa. Tabelas de dispersão/hash

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

Dicionários. Prof. César Melo

Hashing Letícia Rodrigues Bueno

EA075 Memória virtual

Matemática Discreta. SLIDE 3 Professor Júlio Cesar da Silva. site:

Endereçamento Aberto

Algoritmo e Programação Matemática

Hashing convencional...

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Hashing. Prof. Josenildo Silva IFMA 2014

Hashing. Hashing. Hashing versus Indexação. Hashing. Hashing convencional... Exemplo de espalhamento. Revisão...

TAD dicionário. Métodos do TAD dicionário:

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

i a[i]

Variáveis e instruções de repetição

Classificação e Pesquisa de Dados. Aula 23 Organização de Arquivos: Arquivos Indexados, Diretos e Arquivos Invertidos

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

Tabelas de dispersão/hash

Hashing (Tabela de Dispersão)

Aula prática 5. Funções Recursivas

Informações Importantes! INF TURMA A

O que é um jogo digital?

HASHING HASHING HASHING HASHING. HASHING - Função hash - Propriedades HASHING. Notas de aula da disciplina IME Estruturas de Dados I

ESTRUTURA DE DADOS E ALGORITMOS. Hashing (Tabela de Dispersão) Cristina Boeres

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

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Hashing externo. Graça Nunes. Fonte: Folk & Zoelick, File Structures

Universidade de São Paulo

As Listas são simples de se implementar, mas, com um tempo médio de acesso T = n/2, tornando-se impraticáveis para grandes quantidades de dados.

Pesquisa em Memória Primária Hashing

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

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

HASHING. Árvores de Busca: Atualização/Busca - caso médio: O(log n) Atualização/Busca - pior caso: O(log n)

Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) {

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

ESTRUTURAS DE CONTROLE - LAÇOS OU MALHAS DE REPETIÇÃO

Universidade Federal de Uberlândia Faculdade de Computação. Representação e aritmética binária

ANÁLISE E PROJETO DE BANCO DE DADOS

Introdução a Tabelas Hash

CAI Fluxograma Revisão 7

CURSO PRF 2017 MATEMÁTICA

Métodos de Busca Parte 2

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

AEDI Fundamentos Revisão 1

Tabelas de Hash MBB. Novembro de Algoritmos e Complexidade LEI-LCC

Sistemas de Numeração

Estruturas de Dados Estruturas de Dados Fundamentais

Infraestrutura de Hardware

Informática Fundamentos em C++ Revisão 1

Ciência da Computação. Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Linguagem Computacional

Estruturas de Dados Estáticas Cont.

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES REPRESENTAÇÃO NUMÉRICA. Cristina Boeres

Oficina de Python Prof. Me. José Carlos Perini

A inserção da chave 6 da árvore acima resulta na árvore abaixo.

Métodos de Busca. Parte 2. ICC2 Prof. Thiago A. S. Pardo. Baseado no material do Prof. Rudinei Goularte

ALGORITMOS + PASCAL MODULO 4

Introdução Métodos de Busca Parte 2 - Hashing

Arquitetura e Organização de Computadores

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

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

ESTRUTURAS DE REPETIÇÃO - PARTE 1

Capacidade de Armazenamento. Bit. Binário para Decimal. Decimal para Binário. Operações Aritméticas no Sistema binário.

Oficina de Python Prof. Me. José Carlos Perini

Capítulo 2- Funções. Dado dois conjuntos não vazios e e uma lei que associa a cada elemento de um único elemento de, dizemos que é uma função de em.

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

Polos Olímpicos de Treinamento. Aula 7. Curso de Teoria dos Números - Nível 2. Aula de Revisão e Aprofundamento. Prof.

Ponto Fixo e Ponto Flutuante

SEBENTA INTRODUÇÃO Á ALGORITMIA

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Home Programa Exercícios Provas Professor Links. 2.1 Representação de um número na base dois. O número binário 101,101 significa, na base dois:

Pilhas e Filas. Nádia Félix e Hebert Coelho

Transcrição:

Tabela Hash Disciplina: Estruturas de Dados Professora: Camila Taumaturgo email: camila.taumaturgo@ifrn.edu.br

Sumário Tabela Hash Introdução Princípios de funcionamento Funções de Dispersão Tratamento de colisões por encadeamento

Tabela Hash Uma Tabela Hash, também conhecida como tabela de dispersão ou tabela de espalhamento, é uma estrutura de dados especial, que associa chaves e valores. Seu objetivo é a partir de uma chave simples, fazer uma busca rápida e obter o valor desejado.

Introdução A Tabela Hash leva em conta o valor absoluto de cada chave, interpretado como um valor numérico. Através da aplicação de uma função conveniente, a chave é transformada em um endereço de uma tabela

Introdução

Princípios de Funcionamento Suponha que existam n chaves a serem armazenadas em uma tabela T, sequencial e de tamanho m. As posições da tabela se situam no intervalo [0, m1]. Isto é, a tabela é particionada em m compartimentos, cada uma corresponde a um endereço e podendo armazenar r nós distintos.

Princípios de Funcionamento O objetivo é armazenar cada chave no bloco referente ao seu endereço. A busca, assim, requer somente um acesso a um bloco. 03 05 00 01 07 04 00 01 03 04 05 07

Princípios de Funcionamento Valor da chave como seu índice na tabela. Cada chave x é adicionada no compartimento x. Acesso direto. 03 05 00 01 07 04 00 01 03 04 05 07

Princípios de Funcionamento Valor da chave como seu índice na tabela. Cada chave x é adicionada no compartimento x. Acesso direto. O acesso direto pode ser usado no caso n < m.

Princípios de Funcionamento Chaves nem sempre são valores numéricos. As chaves podem consistir em nomes de pessoas. Solução: Todo dado não numérico corresponde uma representação numérica no computador. Assim sendo, todas as chaves são consideradas numéricas.

Princípios de Funcionamento Vamos utilizar sempre o aceso direto? Não

Princípios de Funcionamento Vamos utilizar sempre o aceso direto? Não A quantidade de espaços vazios pode ser proibitiva. 03 05 00 01 07 04 00 01 03 04 05 07

Princípios de Funcionamento Como resolver?

Princípios de Funcionamento Como resolver? Transformar cada chave x em um valor no intervalo [0, m1]. Através de uma função de dispersão h. Dada a chave x, determinase o valor h(x), denominado endereçobase de c. Se o compartimento h(x) estiver desocupado, poderá ser utilizado para armazenar a x.

Princípios de Funcionamento A função de dispersão pode não garantir a injetividade. É possível a existência de outra chave y x, tal que h(y) = h(x). Esse fenômeno é denominado de colisão. As chaves x e y são sinônimas em relação a h. Na ocorrência desse fato, utilizase um procedimento especial, denominado tratamento de colisão.

Função de dispersão Uma função de dispersão h transforma uma chave x em um endereçobase h(x) da tabela de dispersão. Idealmente, uma função de dispersão deve satisfazer às seguintes condições: produzir um número baixo de colisão; ser facilmente computável; ser uniforme.

Função de dispersão Método da Divisão Método da Dobra Método da Multiplicação

Método da Divisão Fácil e eficiente Muito empregado A chave x é dividida pela dimensão da tabela m, e o resto da divisão é usado com endereço chave. Isto é h(x) = x mod m Resulta em endereços no intervalo

Método da Divisão Alguns valores de m são melhores que outros. Se m é um número par, h(x) será par quando x for par e ímpar quando x for ímpar. Não é uma boa solução. Se m for uma potência de 2, h(x) dependerá apenas de alguns dígitos de x. A situação é pior.

Método da Divisão Existem alguns critérios que têm sido aplicados com bons resultados práticos. Escolher m de modo que seja um número primo não próximo a uma potência de 2. Escolher m tal que não possua divisores primos menores que 20.

Método da Divisão m = 23 44 46 49 68 71 97 44 mod 23 = 21 44

Método da Divisão m = 23 44 46 49 68 71 97 46 mod 23 = 0 46 44

Método da Divisão m = 23 44 46 49 68 71 97 49 mod 23 = 3 46 49 44

Método da Divisão m = 23 44 46 49 68 71 97 68 mod 23 = 22 46 49 44 68

Método da Divisão m = 23 44 46 49 68 71 97 71 mod 23 = 2 46 71 49 44 68

Método da Divisão m = 23 44 46 49 68 71 97 97 mod 23 = 5 46 71 49 97 44 68

Método da dobra Suponha a chave como uma sequência de dígitos escritos num pedaço de papel. O método em questão consiste em dobrar esse papel, de maneira que os dígitos se sobreponham. Esses devem ser somados sem levar em consideração o vai um.

Método da dobra Chave: 279384 t = 2 d = 6 Método da Dobre Dobra 27 em 93 e soma, descartando vai um. Resultado Intermediário: 6584 Dobra 65 em 84 e soma... Resultado final: 30

Método da dobra Utilizando bits Chave: 71 71 = 00010 00111 00010 00111 00101 ou exclusivo = 5

Método da Multiplicação Existem algumas variações. Método mais conhecido: Meio do quadrado. A chave é multiplicada por ela mesma. O resultado é armazenada em palavra de memória de b bits. O número de bits necessário para forma o endereçobase de uma chave é então retirado dos b bits. Descartandose os bits excessivos da extrema direita e da extrema esquerda.

Tratamento de colisões por encadeamento O endereço base pode ser encontrado para chaves diferentes como resultado da função de dispersão. O que é chamado de colisão. Uma ideia para tratar colisões consiste em armazenar chaves sinônimas em listas encadeadas: Encadeamento exterior Encadeamento interior

Encadeamento Exterior Solução muito usada, Consiste em manter m listas encadeadas, uma para cada possível endereço base. Um campo para o encadeamento dever ser acrescentado a cada nó. O nós correspondentes ao endereçobase serão apenas nóscabeças para essas listas.

Encadeamento Exterior

Encadeamento Interior Não queremos adicionar m listas externas à tabela. Resolvese o problema da colisão mediante o emprego de listas encadeadas, desde que estas compartilhem o mesmo espaço de memória que a tabela de dispersão.

Encadeamento Interior O encadeamento interior prevê a divisão da tabela T em duas zonas, uma de endereçobase, de tamanho p, e outra reservada aos sinônimos, de tamanho s. Naturalmente p + s = m Os valores p e s são fixos. A função de dispersão deve obter endereçosbase na faixa [0, p 1] apenas.

Encadeamento Interior Cada nó da tabela possui dois campos, um para armazenar o valor, e outro um ponteiro que indica o próximo elemento da lista de sinônimos correspondentes ao endereçobase em questão.

Encadeamento Interior n = 5 m = 7 p = 4 e s = 3 48 03 80 31 20 Função de dispersão: h(x) = x mod 4

Encadeamento Interior m = 7 48 mod 4= 0 48 03 80 31 20 48

Encadeamento Interior m = 7 03 mod 4= 3 48 03 80 31 20 48 03

Encadeamento Interior m = 7 80 mod 4= 0 48 03 80 31 20 48 03 80

Encadeamento Interior m = 7 31 mod 4 = 3 48 03 80 31 20 48 03 80 31

Encadeamento Interior m = 7 20 mod 4 = 0 48 03 80 31 20 48 03 80 31 20

Referências Goodrich, M. T., Tamassia, R. Estruturas de Dados e Algoritmos em Java, 2013. Nina Edelweiss e Renata Galante. Estruturas de dados, Série livros didáticos informática ufrgs 18, 2009. Szwarcfiter, J. L., Markenzon, L. Estruturas de Dados e Seus Algoritmos, 3 ed. 2010