Professional Documents
Culture Documents
Clase 8
Hashing (Dispersin)
Hasta el momento
Secuencia:
Problema
3 o 4 accesos
Solucin
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Dispersin o Hashing
Tcnica
Tcnica
Tcnica
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Llave
#intermedio
Direccin
Conversin
del # a una
direccin
Conversin de
l ave a nmero
Atributos
del hash
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Costo
determinar la direccin
UNLP - Facultad d
Hashing (Dispersin)
Densidad
Funcin
Mtodo
de empaquetamiento
de hash
de tratamiento de desbordes
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Funcin
de hash
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Colisin:
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Soluciones
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Soluciones
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Algoritmos
simples de dispersin
Condiciones
Repartir registros en forma uniforme en el espacio de
direcciones disponible
Aleatoria (las claves son independientes, no influyen
una sobre la otra)
11
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
funcin Dispersin (llave, #max)
sum := 0
j := 0
mientras j < # elementos de llave
sum := sum + 100 * llave[j] + llave [ j + 1]
j := j + 2
fin mientras
retorna ( sum mod #max)
Funcin
1
uniforme
12
de dispersin
A
peor
IBD - CLASE 8
aceptable
UNLP - Facultad d
Hashing (Dispersin)
13
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Funciones de dispersin
Centros cuadrados: la llave se multiplica por si
misma y tomando los dgitos centrales al cuadrado,
posteriormente se ajusta al espacio diponible
Divisin: la clave se divide por un # aproximadamente
igual al # de direcciones (nmero primo pues tiende a
distribuir residuos en forma ms eficiente)
Desplazamiento: los dgitos externos de ambos
extremos se corren hacia adentro, se suman y se
ajusta al espacio disponible
Plegado: los dgitos externos se pliegan, suman y
adaptan al espacio de direcciones.
14
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Anlisis de dgitos: analizan las claves para eliminar
posibles repeticiones en la misma.
Conversin de raz: la base del nmero se modifica y en
la serie de dgitos resultante se suprimen dgitos de orden
mayor.Ej: para direcciones entre 0 y 99, se ingresa la
clave 453 ->base11(453)=382-> 382 mod 99= 85
Divisin polinmica: cada dgito clave se toma como
coeficiente de polinomio, se divide por polinomio fijo, el
coeficiente del resto se toma como direccin.
15
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Cul
mtodo elegir ?
general:
Divisin mejor
Plegado, para claves muy largas
16
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
17
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Densidad de empaquetamiento
Proporcin
18
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Densidad de empaquetamiento
No
Densidad
de empaquetamiento menor
Menos overflow
Ms desperdicio de espacio
19
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
DE =
K
CxN
K!
1 I
1 K I
P( I )
* ( ) * (1 )
I !*(K I )! N
N
(Distribucin de Poisson)
20
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
21
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
En
I!
22
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
En
Las
(1 / 1) 0 * e (1/1)
P(0)
1!
23
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
N
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
3679
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Ejemplo:
K(claves)= 500
N(direcciones de memoria)= 1000
DE (densidad de empaquetamiento)= 500/1000 = 0.5
Cuntas direcciones no debern tener registros
asignados ?
= 1000*0.607 =607
26
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
27
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Conclusin:
si la DE es del 50% y cada direccin puede
almacenar slo un registro, puede esperarse
que aprox. el 21% de los registros seran
almacenados en algn lugar que no sea sus
direcciones base
28
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
DE
0.10
0.30
0.50
0.70
0.80
0.90
1.00
29
Saturacin
4.8 %
13.6 %
21.4 % (ejemplo visto)
28.1 %
31.2 %
34.1 %
36.8 %
IBD - CLASE 8
UNLP - Facultad d
Hashing (Dispersin)
Los
30
IBD - CLASE 8
UNLP - Facultad d