ORGANIZACIN RELATIVA ACCESO DIRECTO Concepto Funciones Hash Organizacin

  • Slides: 20
Download presentation
ORGANIZACIÓN RELATIVA ACCESO DIRECTO ØConcepto ØFunciones Hash

ORGANIZACIÓN RELATIVA ACCESO DIRECTO ØConcepto ØFunciones Hash

Organización Relativa Es aquella organización que plantea, que el archivo se mantiene organizado en

Organización Relativa Es aquella organización que plantea, que el archivo se mantiene organizado en modo directo debido a que el orden físico no corresponde con el orden lógico. Para accesar a los datos almacenados en el archivo se hace de manera directa por la posición que ocupan en el archivo. Los registros se deben almacenar en un medio direccionable y tener un campo clave el cual será transformado para ser utilizado como dirección de almacenamiento. Por lo tanto debe existir la correspondencia entre los valores clave y las direcciones disponibles en el medio de almacenamiento

Ventajas q Los registros se pueden leer y escribir en cualquier orden y posición

Ventajas q Los registros se pueden leer y escribir en cualquier orden y posición q Es mas rápido el acceso a los registros q Se pueden realizar accesos secuenciales q Los registros se actualizan en el mismo archivo en tiempo real Desventajas q Se requiere programar la relación entre el contenido del registro y la posición que ocupa. q Existen huecos libres dentro del medio de almacenamiento y entre registros q El algoritmo para la conversión de las claves y para el almacenamiento deben ser creados de modo que dejen el menor numero de huecos libres y se genere el menor numero de colisiones de dirección.

Espacios libres

Espacios libres

Funciones Hash Dada la siguiente expresión Dirección Relativa Dirección Absoluta A toda dirección relativa

Funciones Hash Dada la siguiente expresión Dirección Relativa Dirección Absoluta A toda dirección relativa corresponde una dirección absoluta, es decir a cada registro a almacenar de acuerdo a un campo clave, le corresponde una dirección absoluta en el medio de almacenamiento. Por lo tanto se debe transformar la clave en un dirección, por medio de las funciones Hash. h(x)

Aritmética Modular Se elige un número primo, o con pocos divisores, mayor que el

Aritmética Modular Se elige un número primo, o con pocos divisores, mayor que el número N de registros a almacenar. La función se define: Ó h(k) = k mod m para que las direcciones vayan de 0 a m-1 h(k) = k mod m para que las direcciones vayan de 1 a m En esta formula m ha de ser primo para minimizar el número de colisiones

Ejemplo: En un archivo se almacenaran 996 direcciones (registros), para esto se elige un

Ejemplo: En un archivo se almacenaran 996 direcciones (registros), para esto se elige un número primo cercano 997, aplicando la formula se obtiene: Para : 245643 245981 257135 Fórmula Resultado h(245643) = 245643 mod 997 = h(245981) = 245981 mod 997 = h(257135) = 257135 mod 997 = 381 719 906

Plegamiento Consiste en partir la clave k en varias partes k 1, k 2,

Plegamiento Consiste en partir la clave k en varias partes k 1, k 2, k 3. . kn, y la combinación de las partes de un modo conveniente (con frecuencia sumando las partes) da como resultado la dirección del registro. Cada parte ki, a excepción de la última tiene el mismo número de dígitos que la dirección especificada. La función hash es: h(k) = k 1, k 2, k 3. . kn

Ejemplo : El archivo de alumnos con el campo clave de 6 dígitos, este

Ejemplo : El archivo de alumnos con el campo clave de 6 dígitos, este se puede dividir en grupos de tres y tres dígitos. Aplicando al función : Para : Formula Resultado 245643 h(245643) = 245 + 643 = 888 245981 h(245981) = 245 + 981 = 1226 queda 226 ( se ignora el 1) 257135 h(257135) = 257 + 135 = 392

O a la inversa usando las partes pares k 2, k 4 antes de

O a la inversa usando las partes pares k 2, k 4 antes de sumarlas para obtener otras direcciones. Para : 245643 245981 257135 Formula h(245643) = 245 + 346 h(245981) = 245 + 189 h(257135) = 257 + 531 Resultado = = = 591 434 788

Mitad del cuadrado Consiste en calcular el cuadrado de la clave k y la

Mitad del cuadrado Consiste en calcular el cuadrado de la clave k y la dirección del registro viene representada por los dígitos de k 2 que ocupan cierta posición. La función hash es: h(k) 2 = c Donde c se forma por los dígitos de k 2 que están en las posiciones P 1, P 2, . . , Pi

Ejemplo : El archivo de alumnos con el campo clave de 6 dígitos, se

Ejemplo : El archivo de alumnos con el campo clave de 6 dígitos, se escogen los dígitos 4 to, 5 to y 6 to por la derecha. Para : 245643 245981 257135 Fórmula Resultado h(245643)2 = 60340483449 h(245981)2 = 60506652361 h(257135)2 = 66118408225 483 652 408

Resolución de Colisiones Las funciones hash no siempre ofrecen direcciones distintas, cuando se presentan

Resolución de Colisiones Las funciones hash no siempre ofrecen direcciones distintas, cuando se presentan direcciones repetidas se trata entonces de una colisión, para resolver esto se deben seguir métodos de solución. Direccionamiento abierto Se trata de buscar la primera dirección disponible después de la que dio como resultado la función hash.

El problema de este método al ser lineal, llega a agrupar los registros en

El problema de este método al ser lineal, llega a agrupar los registros en posiciones contiguas, lo cual aumenta el tiempo de búsqueda de un registro. Esto se puede minimizar por medio de : • Prueba Cuadrática h(k) = p donde p se repite para otro valor clave k, entonces : p, p+1, p+2, p+3…p+n p, p+1, p+4, p+9. . p+i 2

Ejemplo: Suponiendo que se obtiene lo siguiente: k formula p 245643 h(245643)2 = 60340483449

Ejemplo: Suponiendo que se obtiene lo siguiente: k formula p 245643 h(245643)2 = 60340483449 483 y p colisiono, entonces la búsqueda de lugar libre seria 438+12 = 439 o 438+22 =442 o 438+32 = 447

 • Prueba doble direccionamiento hash En este método se aplica una segunda función

• Prueba doble direccionamiento hash En este método se aplica una segunda función hash para k, de manera que :

Direccionamiento por encadenamiento o cerrado En este método el problema de colisiones se resuelve

Direccionamiento por encadenamiento o cerrado En este método el problema de colisiones se resuelve utilizando listas ligadas, que contendrán todos los registros que tienen la misma dirección

Operaciones de actualización: • Altas • Bajas • Individual • General • Consulta •

Operaciones de actualización: • Altas • Bajas • Individual • General • Consulta • Individual • General • Modificación • Individual • General Consideraciones • Validar : Entrada y salida de datos • Validar : Duplicación de registros • Generar posición • Controlar colisiones