9 Hash Principio Para encontrar algo en la

  • Slides: 13
Download presentation
9. Hash

9. Hash

Principio Para encontrar algo en la menor cantidad posible de intentos, hay que guardarlo

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

¿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. 2. 3. Truncamiento Doblamiento Aritmética Modular

Funciones Hash 1. 2. 3. Truncamiento Doblamiento Aritmética Modular

1. Truncamiento Ignorar parte de la llave y usar lo restante directamente como índice

1. Truncamiento Ignorar parte de la llave y usar lo restante directamente como índice (cálculo rápido, mala dispersión)

2. Doblamiento Dividir la llave y combinarla 62538194 = 625 + 381 + 94

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

3. Aritmética Modular h(k) = k % M �M primo mayor que el número de registros (se distribuye en localidades consecutivas)

Colisión A dos llaves les corresponde la misma posición Hash: Mil registros K 1

Colisión A dos llaves les corresponde la misma posición Hash: Mil registros K 1 = 66103194 h(K 1) = 66103194 % 1001 = 157 K 2 = 66104195 h(K 2) = 66103195 % 1001 = 157

Solución de Colisiones 1. 2. 3. Doble Conversión Apertura de Direcciones Encadenamiento

Solución de Colisiones 1. 2. 3. Doble Conversión Apertura de Direcciones Encadenamiento

1. Doble Conversión g(h(k)) K 1 = 66103194 h(K 1) = 157 g(h(k 1))

1. Doble Conversión g(h(k)) K 1 = 66103194 h(K 1) = 157 g(h(k 1)) = 194 + h(k 1) g(h(K 1)) = 194 + 157 = 351 K 2 = 66104195 h(K 2) = 157 g(h(K 2)) = 195 + 157 = 352

2. Apertura de Direcciones La llave que colisiona, se coloca en la siguiente posición

2. Apertura de Direcciones La llave que colisiona, se coloca en la siguiente posición disponible de la tabla

3. Encadenamiento En arreglo de: 3 a. Cabezas de listas ligadas 3 b. Raíz

3. Encadenamiento En arreglo de: 3 a. Cabezas de listas ligadas 3 b. Raíz de árbol (ABB, B, B+)

Propuesta de Trabajo Final Arreglo Hash de cien casillas con encadenamiento a listas ligadas

Propuesta de Trabajo Final Arreglo Hash de cien casillas con encadenamiento a listas ligadas que distribuye, con módulo, quinientas llaves de cuatro (dígitos o caracteres) mismas que son leídas de un archivo de texto, al final muestra para cada casilla del arreglo su lista ligada