Vejamos o Exercicio Hash

2
Vejamos o exercicio: Construir uma tabela hash para inserir os elementos {5, 3, 12, 29, 33,18, 14, 4, 9}. Usar a função mod 7. Hash fechado Passo 1. Para o hash fechado, como temos 9 elementos, nossa tabela deverá ter 9 posições, iniciando ma posição 0, iremos até a posição 8. Passo 2. Efetuar a divisão de cada valor (apenas divisão inteira) guardando o resto que indicará a posição na tabela, por exemplo, 5 mod 7 = 5 pois 5 dividido por 7 dá quociente 0 e sobra resto 5. Assim o 5 irá ser colocado na posição 5. 1) 5 mod 7 = 5 2) 3 mod 7 = 3 3) 12 mod 7 = 5 4) 29 mod 7 = 1 5) 33 mod 7 =5 6) 18 mod 7 = 4 7) 14 mod 7 = 0 8) 4 mod 7 = 4 9) 2 mod 7 = 2 Observamos que o 12 deveria ser colocado na posição 5 (12 mod 7 =5) que já está ocupada pelo valor 5 (ver (1)) ocorrendo colisão, então colocamos na próxima posição livre que é 6. 29 irá para a posição 1 e 33 irá para a posição 5 (nova colisão) devendo ir para a próxima posição que também estará ocupada (posição 6) ocorrendo a 2ª colisão devendo então ocupar a posição 7 que é a próxima posição livre. Dessa forma teremos a tabela: Indice Valor Acessos Colisões 0 14 1 - 1 29 1 - 2 2 1 - 3 3 1 - 4 18 1 - 5 5 1 -

Transcript of Vejamos o Exercicio Hash

Page 1: Vejamos o Exercicio Hash

Vejamos o exercicio:

Construir uma tabela hash para inserir os elementos {5, 3, 12, 29, 33,18, 14, 4, 9}. Usar a função mod 7.

Hash fechado

Passo 1. Para o hash fechado, como temos 9 elementos, nossa tabela deverá ter 9 posições, iniciando ma posição 0, iremos até a posição 8.

Passo 2. Efetuar a divisão de cada valor (apenas divisão inteira) guardando o resto que indicará a posição na tabela, por exemplo, 5 mod 7 = 5 pois 5 dividido por 7 dá quociente 0 e sobra resto 5.

Assim o 5 irá ser colocado na posição 5.

1) 5 mod 7 = 52) 3 mod 7 = 33) 12 mod 7 = 54) 29 mod 7 = 15) 33 mod 7 =56) 18 mod 7 = 47) 14 mod 7 = 08) 4 mod 7 = 49) 2 mod 7 = 2

Observamos que o 12 deveria ser colocado na posição 5 (12 mod 7 =5) que já está ocupada pelo valor 5 (ver (1)) ocorrendo colisão, então colocamos na próxima posição livre que é 6.

29 irá para a posição 1 e 33 irá para a posição 5 (nova colisão) devendo ir para a próxima posição que também estará ocupada (posição 6) ocorrendo a 2ª colisão devendo então ocupar a posição 7 que é a próxima posição livre. Dessa forma teremos a tabela:

Indice Valor Acessos Colisões0 14 1 -1 29 1 -2 2 1 -3 3 1 -4 18 1 -5 5 1 -6 12 2 17 33 3 28 4 5 4

Observe que para acessar o valor 4, primeiro vamos no índice 4, segundo acesso no índice 5, terceiro acesso no índice 6, quarto acesso no índice 7 e finalmente localizamos, no quinto acesso, o valor 4 que sofreu 4 colisões nos índices 4 a 7.

Para o hash aberto, construímos uma tabela de 0 a 6 pois o maior resto possível é 6.

Page 2: Vejamos o Exercicio Hash

A vantagem aqui é que colocamos (quando ocorre colisão) um nó na lista encadeada na posição.

Indice Valor0 141 292 23 34 18 45 5 12 336

Veja que quando ocorre colisão (valor 12) colocamos ele ao lado, isto é, cada indice poderá ter uma lista ligada (desde que hajam valores a serem inseridos na mesma posição), assim como a 1ª posição da lista já tinha o 5, colocamos ao lado o 12, da mesma forma o 33 ao lado do 12 que também ocuparia a posição 5.