Algoritmos/Estruturas de dados/Tabela Hash: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição
Acrescentando informações
Linha 2:
 
A Função hash pode ser feita de diversas maneiras, porém procura-se montá-la de uma forma que a posição seja encontrada com O(1), independentemente do tamanho do arquivo, ou seja, o acesso seja direto ao registro.
[[Ficheiro:Hash3.JPG|miniaturadaimagem|centro|303x303px]]
 
Entretanto,podem ocorrer casos em que chaves distintas apontam para uma mesma função hash, tento-se então as Colisões de hash, que podem ser tratadas de diversas maneiras, como encadeamento externo, encadeamento interno, sondagem linear, sondagem quadrática e hash externa.
[[Ficheiro:Hash table 4 1 1 0 0 1 0 LLHASHTB32.svg|centro|miniaturadaimagem|300x300px294x294px]]
 
A função de dispersão da tabela hash seguem dois princípios: quanto mais dispersos melhor, ou seja, evitar o acontecimento de colisões de chaves. Ela também analisa qual é o tipo da chave que está sendo utilizada para o calculo da função, como por exemplo, podemos ter valores inteiros para o "código" do registro. Nesse caso, é muito recorrente o uso da função de hashing modular, que calcula a posição pelo calculo de mod M, sendo M o trabalho da tabela Hash, que desejavelmente seja um número primo, para facilitar a dispersão.
 
Linha 16 ⟶ 15:
 
Com isso, esperamos que a função hash possa ser calculada de forma eficiente e que tenha uma grande dispersão de elementos, evitanto o máximo possível a colisão. Bem como o exemplo a seguir, que mostra o a dispersão de mais de 10 mil palavras, em uma função modular, com hash de tamanho 97.
[[Ficheiro:Dispersão_hash.png|miniaturadaimagem|Amostra de dispersão da tabela hash|centro|356x356px]]