Sei sulla pagina 1di 14

Hashing

Sandy Porto

Introducao
Tratamento de

Colisoes
Rehashing

Parte II: Hashing


Estrutura de Dados II

Sandy Porto
sandyporto@gmail.com
Universidade Federal de Sergipe

10 de Janeiro de 2017

0 / 13

Conteudo

Hashing
Sandy Porto

Introducao
Tratamento de

Colisoes

Introducao

Tratamento de Colisoes

Rehashing

Rehashing

1 / 13


Introducao
Relembrando

Hashing
Sandy Porto

Introducao
Tratamento de

Colisoes
Rehashing

direta ha uma relacao


entre o valor da chave
Na organizacao
C e o endereco E do registro.

e acesso a
Hashing e um dos metodos
de organizacao
registros em arquivos.
f (chave) = endereco

hash gera um provavel

A chamada funcao
endereco do
registro a partir do valor da chave.

O provavel
endereco e chamado endereco base.
Hash mais utilizada: f (ch) = ch mod M, onde M
A funcao
deve ser um numero
primo.

2 / 13


Introducao
Exemplo

Hashing
Sandy Porto

f (ch) = ch mod 13

Introducao
Tratamento de

Colisoes
Rehashing

3 / 13


Introducao
Exemplo

Hashing
Sandy Porto

f (ch) = ch mod 13

Introducao
Tratamento de

Colisoes
Rehashing

O endereco de algumas chaves e o


mesmo, e agora?

4 / 13


Introducao

Colisao

Hashing
Sandy Porto

Introducao
Tratamento de

Colisoes
Rehashing

e o nome dado quando duas ou mais chaves


Colisao
distintas geram o mesmo valor de endereco base.
a
que nao
gere colisoes.

Hashing perfeito: uma funcao


E

melhor solucao?

Tratamento de Colisoes:
hash mais utilizadas na literatura nao
sao

As funcoes
perfeitas.
depois de aplicada a funcao
hash e necessario

Entao,
fazer o

tratamento de colisoes.

Metodos
utilizados:
Listas Encadeadas
Cada endereco base da tabela hash e a cabeca de uma lista
encadeada

Enderecamento Aberto
A chave colidida sera colocada em algum espaco em branco
de deslocamento.
na tabela hash de acordo com uma funcao
5 / 13

Conteudo

Hashing
Sandy Porto

Introducao
Tratamento de

Colisoes

Introducao

Tratamento de Colisoes

Rehashing

Rehashing

6 / 13


Tratamento de Colisoes
Listas Encadeadas

Hashing
Sandy Porto

Introducao
Tratamento de

Colisoes
Rehashing

7 / 13


Tratamento de Colisoes
Enderecamento Aberto

Hashing
Sandy Porto

f (ch) = ch mod 13, g (end ) = end + 1

Introducao
Tratamento de

Colisoes
Rehashing

8 / 13


Tratamento de Colisoes
Enderecamento Aberto

Hashing
Sandy Porto

f (ch) = ch mod 13, g (end ) = end + 1

Introducao
Tratamento de

Colisoes
Rehashing

9 / 13


Tratamento de Colisoes
Enderecamento Aberto

Hashing
Sandy Porto

f (ch) = ch mod 13, g (ch) = (ch mod 3) + 1

Introducao
Tratamento de

Colisoes
Rehashing

10 / 13


Tratamento de Colisoes
Enderecamento Aberto

Hashing
Sandy Porto

f (ch) = ch mod 13, g (ch) = (ch mod 3) + 1

Introducao
Tratamento de

Colisoes
Rehashing

11 / 13

Conteudo

Hashing
Sandy Porto

Introducao
Tratamento de

Colisoes

Introducao

Tratamento de Colisoes

Rehashing

Rehashing

12 / 13

Rehashing
Hashing
Sandy Porto

Introducao
Tratamento de

Colisoes
Rehashing

Refazer a estrutura hash.


o
Seja M o tamanho atual da estrutura e N o tamanho apos
rehashing:

Se N > M, o objetivo e diminuir a frequencia


de colisoes.
Se N = M, o objetivo e reorganizar a estrutura hash.
Se N < M, o objetivo e poupar espaco.

13 / 13

Potrebbero piacerti anche