Академический Документы
Профессиональный Документы
Культура Документы
Funciones de redispersin
Redispersin lineal.
h
i
(k) = h(i, k) = (h(k) + i) mod M
Es sencilla de aplicar.
Se recorren todas las cubetas para i= 1, , M-1.
Problema de agrupamiento: Si se llenan varias cubetas consecutivas y hay
una colisin, se debe consultar todo el grupo. Aumenta el tamao de este
grupo, haciendo que las inserciones y bsquedas sean ms lentas.
0 1 2 3 4 5 6 7 8 9 . . . . M-2 M-1
Funciones de redispersin
Redispersin con saltos de tamao C.
h
i
(k) = h(i, k) = (h(k) + Ci) mod M
Es sencilla de aplicar.
Se recorren todas las cubetas de la tabla si C y M son primos entre s.
Inconveniente: no resuelve el problema del agrupamiento.
Redispersin cuadrtica.
h(i, k) = (h(k) + D(i)) mod M
D(i) = (+1, -1, +2
2
, -2
2
, +3
2
, -3
2
, )
Funciona cuando M= 4q + 3, para q e N
Resuelve el problema del agrupamiento?
Funciones de redispersin
Redispersin doble.
h(i, k) = (h(k) + C(k)i) mod M
Idea: es como una redispersin con saltos de tamao C(k), donde el tamao
del salto depende de k.
Si M es un nmero primo, C(k) es una funcin:
C : tipo_clave [1, , M-1]
Se resuelve el problema del agrupamiento si los sinnimos (con igual valor h(k))
producen distinto valor de C(k).
Ejemplo. Sea k = x
1
x
2
x
3
x
4
h(k) = x
1
x
4
mod M
C(k) = 1 + (x
3
x
2
mod (M-1))
Las tablas de dispersin
Conclusiones:
Idea bsica: la funcin de dispersin, h, dice
dnde se debe meter cada elemento. Cada k va a
la posicin h(k), en principio
Con suficientes cubetas y una buena funcin h, el
tiempo de las operaciones sera O(1).
Una buena funcin de dispersin es esencial.
Cul usar? Depende de la aplicacin.
Las tablas de dispersin son muy buenas para
Inserta, Suprime y Consulta, pero
Qu ocurre con Unin, Interseccin, Mximo,
Mnimo, listar los elementos por orden, etc.?
REFERENCIA
Aho A, Hopcroft J, Ullman J, Estructuras de datos y
algoritmos. Captulo 4 pg. 107-135. Adison-Wesley
Iberoamericano, S.A. 1998.
Estructura de datos
www.slidefinder.net/p/parte_estructuras_datos_tema_conjuntos/.../p2