E N D
1. Tabelas Hash Prof. Thales Castro 
2. Motivao 
3. Motivao 
4. 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) ? [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
 
5. 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
 
6. 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 <= F(x) <= M 
7. Resto da Diviso 
Ex: M=1001 e a seqncia de chaves: 1030, 839, 10054 e 2030
Chave   Endereo 
1030      29 
10054      53 
839      838 
2030      29   
8. Resto da Diviso  Desvantagens Funo extremamente dependente do valor de M escolhido
M deve ser um nmero primo
Valores recomendveis de M devem ser >20 
9. Funes Hash Seja qual for a funo, na prtica existem sinnimos  chaves distintas que resultam em um mesmo valor de hashing. 
Quando duas ou mais chaves sinnimas so mapeadas para a mesma posio da tabela, diz-se que ocorre uma coliso. 
 
10. Tratamento de Colises Algumas solues conhecidas 
11. Tabelas Hash- Colises Qualquer que seja a funo de transformao, existe a possibilidade de colises, que devem ser resolvidas, mesmo que se obtenha uma distribuio de registros de forma uniforme;
Tais colises devem ser corrigidas de alguma forma; 
O ideal seria uma funo HASH tal que, dada uma chave 1 <= I <= 26, a probabilidade da funo me retornar a chave x seja PROB(Fh(x)= I) = 1/26, ou seja, no tenha colises, mas tal funo  difcil, se no impossvel 
12. Resto da Diviso - Coliso No exemplo dado, M=1001 e a seqncia de chaves: 1030, 839, 10054 e 2031
Chave   Endereo 
1030      29 
10054      53 
839      838 
2030      29   
13. Tratamento de Colises Alguns dos algoritmos de Tratamento de Colises so:
Endereamento Fechado
Endereamento Aberto
Hashing Linear
Hashing Duplo 
14. Endereamento Fechado Tambm chamado de Overflow Progressivo Encadeado
Algoritmo: usar uma lista encadeada para cada endereo da tabela
Vantagem: s sinnimos so acessados em uma busca. Processo simples. 
Desvantagens: 
 necessrio um campo extra para os ponteiros de ligao.
Tratamento especial das chaves: as que esto com endereo base e as que esto encadeadas
 
15. Endereamento Fechado 
16. Endereamento Fechado 
17. Endereamento Fechado 
18. Endereamento Fechado 
19. Endereamento Fechado 
20. Hashing Linear Tambm conhecido como Overflow Progressivo
Consiste em procurar a prxima posio vazia depois do endereo-base da chave
Vantagem: simplicidade 
Desvantagem: se ocorrerem muitas colises, pode ocorrer um clustering (agrupamento) de chaves em uma certa rea. Isso pode fazer com que sejam necessrios muitos acessos para recuperar um certo registro. O problema vai ser agravado se a densidade de ocupao para o arquivo for alta 
21. Hashing Linear 
22. Hashing Linear - Implementao 
23. Hashing Linear - Implementao 
24. Hashing Linear 
25. Hashing Duplo Tambm chamado de re-hash 
Ao invs de incrementar a posio de 1, uma funo hash auxiliar  utilizada para calcular o incremento. Esta funo tambm leva em conta o valor da chave. 
Vantagem: tende a espalhar melhor as chaves pelos endereos. 
Desvantagem: os endereos podem estar muito distantes um do outro (o princpio da localidade  violado), provocando seekings adicionais 
26. Hashing Duplo 
27. Hashing Duplo - Implementao 
28. Hashing Duplo - Implementao 
29. Endereamento Aberto Remoo  
30. Endereamento Aberto: Remoo 
31. Tabelas HASH Dinmica 
32. Endereamento Aberto  Expanso 
33. Endereamento Aberto  Expanso  
34. Endereamento Aberto Expanso  
35. Quando no usar Hashing? 
36. FIM