1 / 35

Tabelas Hash

Motiva

benjamin
Télécharger la présentation

Tabelas Hash

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    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

More Related