130 likes | 270 Views
Ordenamiento Interno y Búsqueda Binaria. Almacenamiento y Recuperación de Información. Cuál es el costo de accesar memoria secundaria, ya sabemos que es alto . Ahora vamos a enfocarnos en la solución a cómo buscar en un archivo una pieza de información .
E N D
Ordenamiento Interno y Búsqueda Binaria Almacenamiento y Recuperación de Información
Cuál es el costo de accesar memoria secundaria, ya sabemos que es alto. • Ahora vamos a enfocarnos en la solución a cómo buscar en un archivo una pieza de información. • Debemos hacer hincapié en que aún un buen algoritmo de búsqueda implica muchas comparaciones, si además tenemos que hacer accesos (memoria secundaria) esto se convierte en una agonía. • Se trata de minimizar accesos a disco y consecuentemente el tiempo utilizado.
Este concepto se centra en las formas de ordenar y encontrar información de forma rápida. • Si contamos con records de longitud fija podemos utilizar el NRR (número relativo de record). • Pero que pasa cuando la longitud no es fija, entonces la pregunta se traduce en: cuál es el record de Juanita López.
Podemos accesar por llaves, sin embargo esto implica un acceso secuencial. • ¿Y si el record no se encuentra en el archivo? • supongamos que los registros están ordenados; en una búsqueda binaria comenzamos comparando a López Juanita con el registro de la mitad del archivo, • ¿Que tal que el archivo tiene 500 registros?
Diferentes tipos de búsquedas • Búsqueda secuencial: O(n) • Ordenamiento secuencial: O (n2) • Ordenamiento más eficiente: O (n logn) • Búsqueda binaria: O (logn) • Todas son muy LENTAS al trabajar con archivos en disco. • Cuando sea posible estas operaciones deben desarrollarse en memoria principal.
En cualquier caso deben considerarse las limitaciones de los métodos más eficientes: • La búsqueda binaria requiere más de dos accesos a disco duro. • Mantener un archivo ordenado es muy caro. • El ordenamiento en memoria principal, sólo sirve para archivos pequeños.
Cualquier método que mejore lo anterior debe al menos cumplir una de las siguientes condiciones: • No debe ser necesario reorganizar los registros en un archivo, cada vez que se agregue un nuevo registro. (índices y dispersión) • Debe estar asociado con una estructura que nos permita una mejora substancial en la velocidad de reorganización de un archivo. (árboles B y B+)
Ordenamiento por Claves • En este método, no hace falta contar con todo el registro para ordenarlo, sólo sus claves o llaves, junto con los NRR de cada registro. • Ordenarlas en memoria y luego re-escribir los registros en el nuevo orden. • Al principio parece que este método funciona. Podemos ordenar archivos muchos más grandes y en el mismo espacio de memoria.
Las desventajas que notamos son: • El archivo lo tenemos que leer dos veces. • La segunda lectura no es secuencial, sino en un orden arbitrario. • Lo anterior señala que el método no funciona como esperábamos. • La solución es fácil • No re-escribimos el archivo • Generamos un segundo archivo (índice)
Este segundo archivo: • Contiene la estructura generada en memoria, es decir cada registro del archivo índice contiene dos campos: • La clave • El RNN del registro original • Lo anterior se logra con: • Una lectura secuencial del archivo original • Una escritura secuencial del archivo índice • Esto si que es más rápido que la solución original
Vista Conceptual del arreglo de nodos-llave; después de ordenar las llaves en memoria Registros Arreglo de las llaves Catalina Márquez | Calle 10 Martha Mora | Av. 20 Juanita López | Bulevard Aeropuerto Roberto Beulo | zona rosa Roberto Beulo k Juanita López 3 Catalina Márquez 1 .. .. .. Martha Mora 2 Almacenamiento secundario En RAM
Un efecto secundario de este método es que los registros no se mueven de su lugar. • Imagine lo que sucedería si en alguna parte de nuestro registro hubiera un indicador NRR de otro registro. • Al mover los registros esta información se volvería completamente inútil • Cuando un archivo contiene este tipo de referencias se dice que están fijos (pinned) y si esta referencia deja de tener sentido, se dice que esta volando (dangling poniter)