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
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 = 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 (se distribuye en localidades consecutivas)
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
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 de árbol (ABB, B, B+)
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