Академический Документы
Профессиональный Документы
Культура Документы
Estático (Revisão)
Prof. Kristian Magnani
(Baseado em Folk 11.1, 11.2,
11.3.1-2, 11.4.1+poisson, 11.6.2)
2007 / 2
Atenção: A leitura destes slides
não dispensa a leitura da
bibliografia da disciplina.
Hash
• Um tipo de indexação a custo O(1)
• hash (moer) - é uma função h(k) que transforma
uma chave k em um endereço.
• O endereço retornado é usado como base para
armazenar e recuperar registros.
• Diferenças do hash em relação à indexação:
1. endereços gerados parecem ser aleatórios
(randomizing);
2. duas chaves distintas podem ser mapeadas em um
mesmo endereço (colisão). Neste caso as chaves
são ditas sinônimos.
Um primeiro exemplo
• 75 registros
• chave = nome da pessoa
• Espaço disponível para 1000 registros
• h(k) = pegar o código ASCII dos dois
primeiros caracteres de k e multiplicar
estes valores, e considerar apenas os
últimos 3 dígitos.
J|O|Ã|O 74 (J) * 79 (O) = 846
Problemas:
• muitas colisões;
• combinações desperdiçadas (ex.: xz).
Hash perfeito
• Hash perfeito: h(k) que não gera colisões.
• Encontrar hash perfeito é um problema difícil.
(ex.: 4000 registros, 5000 posições disponíveis,
1 em cada 10120.000 algoritmos [Hanson, 1982])
• Solução prática: reduzir o número de colisões a
um nível aceitável:
1. espalhar os registros (no exemplo, talvez usar mais
do que usar as duas primeiras letras);
2. usar mais memória (mais espaço disponível para
colocar registros);
3. colocar mais de um registro em um mesmo endereço
(buckets).
Um exemplo melhorado
• Passo 1: Representar a chave em forma de
número.
74 79 65 79 32 32 32 32 32 32 32 32
J | O | A | O | | | | | | | |
1 1 1
A 2 A 2 A 2
B 3 B 3 B 3
C 4 C 4 C 4
D 5 D 5 D 5
6 6 6
onde:
• r = no. de registros a serem armazenados
• N = no. de endereços disponíveis
• x = no. registros atribuídos a um mesmo
endereço
Densidade de empacotamento
• densidade
= no de registros / no de endereços
=r/N
100 bytes 100 bytes 100 bytes 100 bytes 100 bytes
0000 0| | | | |
0501 2|JOAO |ANTONIO | | |
1002 5|MARIA |JOSE |MARTA |PEDRO |ANA
1503 3|PRISCILA |FATIMA |SANDRA | |