Upload
dinhkhue
View
218
Download
0
Embed Size (px)
Citation preview
Espalhamento
Eficiente técnica para armazenamento e recuperação de
dados;
Principal vantagem: não requer ordenação de dados, o
que torna a inserção tão rápida quanto o acesso;
Fundamentos
Espalhamento (ou hashing) de um conjunto C é a sua divisão
em um número finito de partes C1, C2, ..., Cn para n > 1, tal
que:
Todo elemento de ocorre em uma dessas partes;
Nenhum elemento de ocorre em mais de uma dessas partes;
Durante o espalhamento de um conjunto em partes,
nenhum de seus elementos é perdido ou duplicado;
,
Fundamentos A distribuição unívoca dos elementos de C em n partes é
feita através de uma função de espalhamento:
A função mapeia cada elemento de C à sua respectiva parte Ci:
A função h é ótima se, no espalhamento realizado, a diferença absoluta entre o número de elementos de quaisquer duas partes é no máximo 1.
,
Fundamentos
O espalhamento é uniforme se todas as parte de têm
aproximadamente o mesmo tamanho.
Quantidade de elementos da menor parte:
Quantidade de elementos da maior parte:
,
Método da Divisão
É indicado quando C é um subconjunto de N;
O resto de uma divisão tem como resultado um valor entre 0
e n-1:
Transformação de elementos
alfanuméricos
Quando os elementos de são alfanuméricos, o método da
divisão não pode ser usado diretamente;
A solução é simples: soma-se o código ASCII de cada
caractere.
Tratamento de permutações
Como a posição da letra não é levada em consideração, os
valores de para , são os seguintes:
Tratamento de permutações
Uma forma simples e eficiente de resolver o problema é
usar soma com deslocamentos;
Os bits do código ASCII de cada caracter serão
deslocados à esquerda, antes de serem acumulados à
soma total, de forma cíclica;
Tratamento de permutações
Na soma com deslocamentos, o valor numérico de cada
caractere depende também de sua posição , sendo calculado
pela fórmula:
O operador << é usado para deslocamento de bits à
esquerda.
Tratamento de permutações
Para entender o funcionamento da fórmula, vejamos os
possíveis valores de ‘A’, dependendo da sua posição, na
tabela a seguir:
Tabela Hashing
Ao aplicar qualquer função hashing sobre um conjunto de
chaves, duas ou mais podem ser mapeadas para o mesmo
endereço;
Esta situação é chamada de colisão.
Como nem sempre é possível gerar um número pequeno de
colisões, para minimizá-las são utilizados métodos de
tratamento.
Exemplo de métodos para tratamento de colisão: Buckets,
Espalhamento Combinado, Tabela Hashing com
Lista Encadeada.