tabela hash
TRANSCRIPT
![Page 1: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/1.jpg)
Tabela HashMarcos Castro
![Page 2: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/2.jpg)
2
Tabela Hash• De acordo com a Wikipédia:• Tabela hash é uma estrutura de dados que associa chaves de pesquisa a
valores.• É também chamada de tabela de dispersão ou tabela de espalhamento.• Objetivo: fazer uma busca rápida e obter o valor desejado.
![Page 3: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/3.jpg)
3
Tabela Hash• Problema de se utilizar array (vetor):• Embora os arrays permitam acessar uma posição com custo O(1), eles não
possuem mecanismo que permita calcular a posição onde uma informação está armazenada, portanto, a operação de busca não é O(1).• Uma solução seria a utilização de tabelas hash.
![Page 4: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/4.jpg)
4
Tabela Hash• A tabela hash é uma generalização da ideia de array.• Utiliza uma função para espalhar os elementos que queremos
armazenar na tabela.• Os elementos ficam dispersos de forma não ordenada.• Importante: função de hashing.• A função de hashing é responsável por “espalhar” os elementos.• A tabela hash permite a associação de chaves e valores.• Através da chave é possível obter uma informação de forma rápida.
![Page 5: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/5.jpg)
5
Tabela Hash• O custo de obter um valor, em média, é O(1).• Isso acontece porque é calculada a posição onde está o elemento.• Vantagem: eficiência na operação de busca.• Desvantagem: alto custo para obter os elementos de forma ordenada.• O objetivo é diminuir o número de colisões para evitar o pior caso:
O(N) onde N é o tamanho da tabela.• Colisão: dois elementos tentando ocupar a mesma posição dentro da
tabela.
![Page 6: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/6.jpg)
6
Tabela Hash• Várias aplicações:• Verificação de integridade dos dados.• Armazenamento seguro de senhas (armazena-se o resultado da função hash e
não a senha propriamente dita).• Criptografia.
![Page 7: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/7.jpg)
7
Tabela Hash• É ideal escolher um número primo como tamanho da tabela hash e
evitar valores que sejam potência de dois.• Um número primo reduz a probabilidade de colisões.• Potência de dois pode gerar mais colisões.
![Page 8: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/8.jpg)
8
Tabela Hash• Sempre ao fazer inserção e busca, tem-se que calcular a posição dos
dados dentro da tabela.• A função de hashing serve para calcular uma posição a partir de uma
chave. Essa função é muito importante quanto a eficiência. Ela é responsável por distribuir as informações na tabela.
![Page 9: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/9.jpg)
9
Tabela Hash• Uma boa função de hashing:• Simples e barata de se calcular.• Garantir que valores diferentes produzam posições diferentes.• Distribuição equilibrada dos dados (máximo espalhamento).• A função de hashing é muito importante!
![Page 10: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/10.jpg)
10
Tabela Hash• Função de Hashing:• Resto da divisão por M.• Método bastante utilizado: H(K) = K mod M.• K é um inteiro correspondente à chave.
![Page 11: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/11.jpg)
11
Tabela Hash• Existem duas estratégias básicas para o tratamento de colisões:• Encadeamento.• Endereçamento aberto.
![Page 12: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/12.jpg)
12
Tabela Hash• No encadeamento, cada posição da tabela mantém uma lista
encadeada.• As chaves são inseridas ao final de cada lista, que é percorrida para
verificar se a chave já está na tabela.
![Page 13: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/13.jpg)
13
Tabela Hash
![Page 14: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/14.jpg)
14
Tabela Hash
![Page 15: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/15.jpg)
15
Tabela Hash
![Page 16: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/16.jpg)
16
Tabela Hash
![Page 17: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/17.jpg)
17
Tabela Hash
![Page 18: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/18.jpg)
18
Tabela Hash
![Page 19: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/19.jpg)
19
Tabela Hash
![Page 20: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/20.jpg)
20
Tabela Hash
![Page 21: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/21.jpg)
21
Tabela Hash
![Page 22: Tabela Hash](https://reader035.vdocuments.site/reader035/viewer/2022062316/58730be81a28ab99088b6d75/html5/thumbnails/22.jpg)
22
Dúvidas?
www.twitter.com/mcastrosouzawww.github.com/marcoscastro