tabelas hash

Upload: rodrigo-souza

Post on 06-Jul-2015

278 views

Category:

Documents


0 download

TRANSCRIPT

Tabelas HashProf. Thales Castro

MotivaoDada uma tabela com uma chave e vrios valores por linha, quero rapidamente procurar, inserir e apagar registros baseados nas suas chaves Estruturas de busca sequencial/binria levam tempo at encontrar o elemento desejado. Ex: Arrays e listas5 2 6 1 7 8 4 9

Ex: rvores 8 2 9 6 4

5

2

6

1

4

1

MotivaoEm algumas aplicaes, necessrio obter o valor com poucas comparaes, logo, preciso saber a posio em que o elemento se encontra, sem precisar varrer todas as chaves. A estrutura com tal propriedade chamada de tabela hash.20 mod 8 = 40 1 2 3 4 5 6

45 mod 8 = 57

20 ? 11 ?

6411 mod 8 = 3

11 20

7

45 ?

Funes Hashing Os registros com as chaves so armazenados nessa tabela, e endereados a partir de uma funo de transformao sobre a chave de pesquisa A essa funo d-se o nome de Funo HASHING Seja M o tamanho da tabela: A funo de hashing mapeia as chaves de entrada em inteiros dentro do intervalo [1..M]

Formalmente: A funo de hashing h(kj) p [1,M] recebe uma chave kj {k0,..,km} e retorna um nmero i, que o ndice do subconjunto mi [1,M] onde o elemento que possui essa chave vai ser manipulado

Funes Hashing Mtodo pelo qual: As chaves de pesquisa so transformadas em endereos para a tabela (funo de transformao); Obtm-se valor do endereo da chave na tabela HASH

Tal funo deve ser fcil de se computar e fazer uma distribuio equiprovvel das chaves na tabela Existem vrias funes Hashing, dentre as quais: Resto da Diviso Meio do Quadrado Mtodo da Dobra Mtodo da Multiplicao Hashing Universal

Resto da Diviso Forma mais simples e mais utilizada Nesse tipo de funo, a chave interpretada como um valor numrico que dividido por um valor O endereo de um elemento na tabela dado simplesmente pelo resto da diviso da sua chave por M (Fh(x) = x mod M), onde M o tamanho da tabela e x um inteiro correspondendo chave 0