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
→Buckets: Adicionar as fotos pendentes com as descrições e ajuste da página em geral. |
|||
Linha 50:
== Buckets ==
Para armazenar vários registros podemos pensar em usar Buckets que
[[Ficheiro:Bucket1.png|miniaturadaimagem|268x268px|Buckets]]
Como o Bucket funciona:
Temos vários registros param ser armazenados no Bucket, para isso utilizaremos uma função hash, para ver em qual endereço devemos armazenar aquele registro de índice. A inserção no Bucket é feita conforme há espaço nele, caso o Bucket o esteja cheio, devemos utilizar alguns tratamentos de colisões como:
* Sondagem Linear
* Sondagem Quadrática
* Re-Hash
* Área de extensão
* Lista encadeada
== Hash Dinâmica ==
A vantagem da tabela hash dinâmica para a tabela hash estática é que podemos aumentar a dinâmica conforme precisamos, sem reposicionar TODOS os registros, que é o que acontece na tabela hash estática. O reposicionamento dos registros na tabela dinâmica é somente no Bucket que estiver
[[Ficheiro:Hash1.png|centro|miniaturadaimagem|360x360px|
Legenda
* p: profundidade global (diretorio)▼
* p’: profundidade local (bucket)▼
Vantagens do Hash Extensível▼
O diretório cresce sem precisar reposicionar todos os registros, somente os que foram afetados.▼
A lista de Buckets aumenta de acordo com a necessidade.▼
A consulta de Buckets é feita por meio de um ponteiro(rápido).▼
]]
Adicionar a chave numero 20:
[[Ficheiro:Hash2.png|centro|miniaturadaimagem|360x360px|Adicionando a chave 20]]
Como podemos ver a chave 20 não cabe no bucket(0) então devemos criar um novo bucket, aumentar as profundidades global e local (do bucket afetado), duplicar os endereços e fazer novas referencias.
[[Ficheiro:Hash3.png|centro|miniaturadaimagem|360x360px|Após os passos acima.]]
As chaves antigas do bucket(0) foram realocadas passando a usar uma nova função Hash, e dessa forma conseguimos inserir a chave 20, e faremos isso sempre que for preciso, dessa forma não teremos que realocar TODOS os registros mas somente os que forem afetados.
▲'''Vantagens do Hash Extensível'''
Com 2 acessos ao disco podemos recuperar todo nossos registros naquele bucket (acesso ao ponteiro do bucket e ao bucket).▼
▲# O diretório cresce sem precisar reposicionar todos os registros, somente os que foram afetados.
▲# A lista de Buckets aumenta de acordo com a necessidade.
▲# A consulta de Buckets é feita por meio de um ponteiro(rápido).
▲# Com 2 acessos ao disco podemos recuperar todo nossos registros naquele bucket (acesso ao ponteiro do bucket e ao bucket).
|