Resumindo o documento:
1) Descreve os processos de rehashing e encadeamento em tabelas hash;
2) Pede para implementar e testar métodos de tratamento de colisão como coalescido, amostragem linear e duplo;
3) Solicita esquematizar o rehashing de uma lista de chaves usando uma função hash inicial.
1. EXERCÍCIOS HASHING
1) Descreva os passos gerais de execução do processo de rehashing.
2) Descreva os passos gerais de execução do processo de encadeamento.
3) Pesquise os seguintes métodos de tratamento de colisão em tabelas hash:
a) Coalescido
b) Amostragem Linear
c) Duplo
Implemente e teste esses métodos de tratamento de colisão em tabelas hash.
4) Esquematizar o rehasing de:
a) Chaves: 11 – 5 – 23 – 22 – 38 – 55 – 39;
b) Função inicial: f(chave)=chave mod P, onde P é o tamanho da tabela;
5) Desafio: Crie um arquivo hash com registros para 20 cidades do estado de Amazonas
cujos nomes comecem com as letras a, b, c, s. A chave de cada registro será o nome da
cidade e não são necessários outros campos para este exercício. Comece colocando os
nomes destas cidades em ordem alfabética.
a) Examine a lista ordenada. Que padrões você nota que podem afetar sua escolha de
uma função de hash?
b) Implemente uma função hash() que utiliza alguma combinação dos códigos ASCII das
letras do nome, mas de forma que você possa alterar o número de caracteres que são
utilizados na combinação. Execute o hash() várias vezes, cada vez utilizando um
número diferente de caracteres e produzindo as seguintes estatísticas para cada
execução:
a. O número de colisões;
b. O número de endereços com 0,1,2,3,...5, ou mais de 5 cidades associadas.
Discuta os resultados de seu experimento em termos de efeitos da escolha de diferentes
quantidades de caracteres e como eles se relacionam com o resultado que você poderia esperar
de uma distribuição aleatória.