Tabelas Hash
-
Upload
rodrigo-souza -
Category
Documents
-
view
281 -
download
0
Transcript of Tabelas Hash
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