Está en la página 1de 16

9.

Dispersión
Hash
Principio

Para encontrar algo en la menor


cantidad posible de intentos, hay
que guardarlo “en su lugar”
¿Cuál es el lugar de un dato?

 Número de lista
 Id numérico
 A = 1, B = 2, .... => ABAD = 1+2+1+4 = 8

Posición definida con una función de conversión


sobre la llave primaria
Funciones Hash
1. Truncamiento
2. Doblamiento
3. Aritmética Modular
1. Truncamiento

Ignorar parte de la llave y usar lo restante


directamente como índice

6 2 5 3 8 1 9 4 => 394
 

(cálculo rápido, mala dispersión)


2. Doblamiento

Dividir la llave y combinarla

62538194 = 625 + 381 + 94 = 1100 = 110

(mejor dispersión que el truncamiento)


3. Aritmética Modular

h(k) = k % M

 M primo mayor que el número de registros


Colisión

A dos llaves les corresponde la misma posición Hash:

Mil registros
K1 = 66103194 h(K1) = 66103194 % 1001 = 157
K2 = 66104195 h(K2) = 66103195 % 1001 = 157
Solución de Colisiones

1. Doble Conversión
2. Apertura de Direcciones
3. Encadenamiento
1. Doble Conversión g(h(k))
K1 = 66103194
h(K1) = 157
g(h(k1)) = 194 + h(k1)
g(h(K1)) = 194 + 157 = 351

K2 = 66104195
h(K2) = 157
g(h(K2)) = 195 + 157 = 352
2. Apertura de Direcciones
La llave que colisiona, se coloca en la siguiente
posición disponible de la tabla
3. Encadenamiento
En arreglo de:
3a. Cabezas de listas ligadas
3b. Raíz de árbol (ABB, B, B+)
Ejemplo de Aritmética Modular
Abad en una BD de 10,000 registros:

97+98+97+100 = 392
módulo 10001
posición 392
Ejercicio…

Arreglo Hash de 10 casillas con encadenamiento a


listas ligadas que distribuye, con módulo, cincuenta
llaves no repetidas de cuatro dígitos cada una mismas
que son leídas de un archivo de texto, al final, muestra
para cada casilla del arreglo su lista ligada
…Ejercicio

Para evaluación, subir a la plataforma, en un solo Word o


PDF el código como texto y las imágenes de las llaves
y las listas ligadas del arreglo
Propuesta de Trabajo Final

Arreglo Hash de cien casillas con encadenamiento a


árboles binarios de búsqueda (abb) que distribuye, con
doblamiento, quinientas llaves de cuatro (dígitos o
caracteres) no repetidas, mismas que son leídas de un
archivo de texto, al final muestra para cada casilla del
arreglo su abb en cualquier orden (pre-pos-en)

También podría gustarte