Programación 3: estructuras de archivos

102
Programación 3 Estructuras de archivos Angel Vázquez-Patiño [email protected] Departamento de Ciencias de la Computación Universidad de Cuenca 1 de noviembre de 2016

Transcript of Programación 3: estructuras de archivos

Page 1: Programación 3: estructuras de archivos

Programación 3

Estructuras de archivos

Angel Vázquez-Patiñ[email protected]

Departamento de Ciencias de la ComputaciónUniversidad de Cuenca

1 de noviembre de 2016

Page 2: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 2/102

Objetivos

1.Conocer las definiciones básicas de archivos y sus componentes

2.Entender las diferencias entre usar estructuras de datos y estructuras de archivos

3.Conocer los tipos de organización de los archivos

4.Conocer las operaciones básicas en archivos

5.Implementar algoritmos de ordenamiento externo

Page 3: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 3/102

Contenido

Introducción

Estructuras de archivos

Tipos de organización

Métodos de acceso

Operaciones básicas en archivos

Operaciones básicas en registros

Page 4: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 4/102

Contenido

Ordenamientos externos

Intercalación directa

Intercalación natural

Intercalación balanceada

Intercalación polifase

Intercalación de cascada

Page 5: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 5/102

Introducción

Page 6: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 6/102

IntroducciónArchivo● Colección de información (datos relacionados entre sí)

almacenada como una unidad en alguna parte del computador

● Pueden utilizarse en un mismo tratamiento; como soporte material de estas informaciones

● Secuencia de registros con igual estructura● Para poder acceder a determinada información en cualquier

momento, se necesitará que ella esté depositada en soportes físicos

● Sin energía la información permanece allí. La forma de guardar los datos en estos dispositivos auxiliares es mediante las estructuras llamadas archivos

Page 7: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 7/102

IntroducciónEstructuras de datos vs Estructuras de archivos● Estructuras de datos: RAM (capacidad limitada)● Se necesita almacenamiento secundario y no se tiene

acceso aleatorio● Costo de recuperación muy diferentes● Un enfoque para las operaciones que se oriente al

diseño de estructuras de archivos reconocería esto. Así minimizaría el número de acceso al disco y además intentaría adecuar el patrón de acceso de modo que, cuando se necesite otra parte de la información, ésta se localice donde el acceso resulte relativamente barato

Page 8: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 8/102

Introducción

Estructuras de datos vs Estructuras de archivos● Justificación: existencia de volúmenes de datos

amplios, tamaño de memoria limitado● Objetivo: minimizar el número de accesos a los

archivos● Un requerimiento muy común de un sistema de

información es el ordenamiento de archivos

Page 9: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 9/102

Introducción

Características del almacenamiento en memoria secundaria● Razones

– Proporciona capacidad de almacenamiento mayor a la memoria primaria, y a un costo mucho menor

– Almacenamiento de información no volátil; después de cerrar la aplicación o apagar el sistema

● Estas características son básicas en multitud de aplicaciones, principalmente las relacionadas con la gestión y el procesamiento de información

Page 10: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 10/102

Relación de velocidad entre memorias primaria y secundaria

Page 11: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 11/102

Introducción

Características del almacenamiento en memoria secundaria● Características

– Más lento que el acceso a RAM

– En memoria secundaria la lectura/escritura se realiza en bloques. Entre 512 y 4096 bytes

– t acceso = t posicionamiento cabeza + t de lectura/escritura de bloque. I.e., leer varios bloques en posiciones consecutivas es más eficiente que cuando los bloques están en distintas posiciones

Page 12: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 12/102

Pista

Acceso en memoria secundaria

Page 13: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 13/102

Introducción

Características del almacenamiento en memoria secundaria● Cuando se trabaja con grandes volúmenes de

información en memoria secundaria, es fundamental minimizar el número de accesos para obtener un tiempo de acceso razonable

● Las estructuras de archivos (análogo a las estructuras de datos) son un conjunto de herramientas que permiten un acceso eficiente a la información almacenada en archivos

Page 14: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 14/102

Introducción

Características del almacenamiento en memoria secundaria● Estructuras de archivos

– Métodos específicos de representación de la información en un archivo

– Operaciones para acceder a la información: lectura, escritura, modificación, búsqueda, ordenación, etc.

● Las estructuras de archivos son la base de los modernos sistemas de base de datos

Page 15: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 15/102

Estructuras de archivos

Page 16: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 16/102

Estructuras de archivos

Objetivos● Minimizar el número de accesos● Mantener agrupada la información relacionada

(para evitar accesos adicionales)● Almacenamiento permanente● Manipulación de un gran número de datos● Independencia de los programas● Residentes en soportes externos

Page 17: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 17/102

Estructuras de archivos

Registros y campos● Un archivo es como un papel en blanco. Existen

casi tantos formatos como aplicaciones● Los archivos suelen estructurarse en campos y

registros● La unidad básica de información es el campo:

contiene un dato de un tipo sencillo (e.g., una fecha, edad, nombre)

● Una lista de diferentes campos relacionados constituye un registro (e.g., datos de una persona)

Page 18: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 18/102

Estructuras de archivos

Registros y campos

Número Apellido 1 Apellido 2 Nombre 1 Nombre 2

1 AREVALO ARMIJOS JAIME PAUL

Page 19: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 19/102

Estructuras de archivos

Registros y campos● Un archivo es un colección de registros,

normalmente del mismo tipo● Normalmente las operaciones de entrada/salida se

realizan con registros completos● En todo momento en memoria sólo se mantiene uno

o a lo sumo unos pocos registros, con los que se realizan las operaciones necesarias

● La codificación de la información en los distintos campos y registros se realiza utilizando dos formatos básicos: formato texto y formato binario

Page 20: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 20/102

Estructuras de archivos

Registros y camposNúmero Apellido 1 Apellido 2 Nombre 1 Nombre 2

1 AREVALO ARMIJOS JAIME PAUL

2 ARIAS OCHOA JEFFERSON Hernán

3 Arteaga García Emily Judith

4 BARZALLO TORRES ERICK Andrés

5 BUÑAY MONCAYO DAVID EFRAIN

6 Collaguazo MALLA CHRISTIAN XAVIER

7 GOMEZ JARAMILLO DANIEL EDUARDO

8 LANDIVAR ORDOÑEZ TANIA MARICELA

9 MACIAS NARVAEZ MIGUEL ANGEL

10 PEÑARANDA SARMIENTO JONNATHAN ESTEBAN

11 QUIZHPI PERALTA ESTUARDO MATEO

12 Remache FARINANGO Paola MARIBEL

13 SALINAS BUESTAN CHRISTIAN PAUL

14 Sigua Loja EDISSON FERNANDO

Page 21: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 21/102

Estructuras de archivos

Registros y campos● Formato texto

– La codificación de los caracteres puede realizarse usando distintas codificaciones: ASCII, UTF8, UTF16, etc.

– Un formato de representación estándar el archivo es legible por otras aplicaciones y plataformas

– Puede ser editado fácilmente con un editor de texto

Page 22: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 22/102

Estructuras de archivos

Registros y campos● Formato binario

– Más compactos que los basados en texto

– Lectura/escritura más rápida

– Generalmente menos transportables y más específicos de la plataformas/entorno de programación

– La forma más sencilla de crear un archivo codificado consiste en pasar directamente la imagen de los tipos empleados en memoria a disco

Page 23: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 23/102

Estructuras de archivos

Registros y campos● Formato binario

Page 24: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 24/102

Estructuras de archivos

Tipos de organización

Determina la forma en la que los registros se colocan físicamente en el disco y cómo se puede acceder a ellos● Organización primaria

– Archivo no ordenado (montón), archivo ordenado (secuencial), archivo mixto, archivo disperso (direccionamiento directo o hashing), árboles B

● Organización secundaria (indexada)

Page 25: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 25/102

Estructuras de archivos

Tipos de organización● Organización primaria● Organización secundaria (indexada)

– Índice ordenado de un nivel

– Índice multinivel

Page 26: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 26/102

Estructuras de archivos

Organización secuencial● Sucesión de registros almacenados en forma

consecutiva sobre un soporte externo● Los registros están ubicados físicamente en una

secuencia usualmente fijada por uno o más campos de control contenidos dentro de cada registro, en forma ascendente o descendente

● Tiene un último registro en particular, contiene una marca (en general un asterisco) de fin de archivo que se detecta con funciones tipo EOF (end of file)

Page 27: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 27/102

Estructuras de archivos

Organización secuencial

Page 28: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 28/102

Estructuras de archivos

Organización secuencial● Archivos de texto

– Casos particulares de archivos con organización secuencial

– Constan de una serie de líneas, cada una se encuentra constituida por una serie de caracteres, separadas por una marca de fin de línea que es posible detectar

Page 29: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 29/102

Estructuras de archivos

Organización directa● Los datos se colocan y se acceden

aleatoriamente mediante su posición,es decir,indicando el lugar relativo que ocupan dentro del conjunto de posiciones posibles

● En esta organización se pueden leer y escribir registros, en cualquier orden y en cualquier lugar

Page 30: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 30/102

Estructuras de archivos

Organización directa● Ventaja

– Rapidez de acceso a un registro cualquiera

● Desventajas– Establecer la relación entre la posición que ocupa

un registro y su contenido

– Puede desaprovecharse parte del espacio destinado al archivo

Page 31: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 31/102

Estructuras de archivos

Organización indexada● Un archivo con esta organización consta de

tres áreas:1) Área de índices

2) Área primaria

3) Área de excedentes (overflow)

Page 32: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 32/102

Estructuras de archivos

Organización indexada● Ventajas

– Rápido acceso, y, además, el sistema se encarga de relacionar la posición de cada registro con su contenido por medio del área de índices

– Gestiona las áreas de índices y excedentes

● Desventajas– Necesidad de espacio adicional para el área de índices

– El desaprovechamiento de espacio que resulta al quedar huecos intermedios libres después de sucesivas actualizaciones

Page 33: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 33/102

Estructuras de archivos

Organización primaria

Page 34: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 34/102

Organización primaria

Archivo no ordenado (montículo o montón)● Registros almacenados al final del archivo, en

orden de inserción● Inserción muy eficiente● Búsqueda lineal● Eliminación física o por marca

– Reorganización para recuperar espacio desocupado

– O aprovechar huecos para nuevos registros

Page 35: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 35/102

Organización primaria

Archivo no ordenado (montículo o montón)● Modificación de un registro

– Si longitud variable, puede provocar eliminación + inserción

● Lectura ordenada supone creación de una copia ordenada del archivo– Suele utilizarse una técnica de ordenación externa

Page 36: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 36/102

Organización primaria

Archivo ordenado (secuencial)● Registros almacenados de forma ordenada

según valores de cierto campo– Campo de ordenación

– Si el campo es clave, se le llama clave de ordenación

● Ventajas respecto a los archivos no ordenados– Lectura ordenada muy eficiente si el orden es el

de los valores del campo de ordenación: lectura secuencial

Page 37: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 37/102

Organización primaria

Archivo ordenado (secuencial)● Ventajas respecto a los archivos no ordenados

– Buscar siguiente (en el orden del campo de ordenación) no suele necesitar otro acceso a bloque

– Buscar un registro dado su valor del campo de ordenación es rápido: búsqueda binaria

● Pero si la Lectura ordenada o Buscar no están basados en el campo de ordenación, estas ventajas “desaparecen”

Page 38: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 38/102

Organización primaria

Archivo ordenado (secuencial)● Inserción

– Supone encontrar posición correcta para el registro

– Abrirle espacio mediante desplazamiento de registros (¡costoso!)

● Eliminación física o por marca– Con problemas de eficiencia similares a la inserción

Page 39: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 39/102

Organización primaria

Archivo ordenado (secuencial)● Para aumentar la eficiencia de la inserción

– Dejar espacio libre en cada bloque para nuevos registros

– Archivo de desbordamiento auxiliar, no ordenado, que periódicamente se ordena y fusiona con el archivo principal

– Buscar se complica: binaria en principal + lineal en auxiliar

Page 40: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 40/102

Organización primaria

Archivo ordenado (secuencial)● Modificación

– Si la condición de búsqueda se basa en el campo de ordenación, usar búsqueda binaria, sino, búsqueda lineal

– Si el campo modificado es el de ordenación, el nuevo valor puede provocar su cambio de ubicación: eliminación + inserción

Page 41: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 41/102

Organización primaria

Archivo ordenado (secuencial)● Archivo secuencial encadenado

– Registros ordenados de forma lógica (no física)

– Uso de punteros

– Mayor flexibilidad

● Estructuras de datos para implementar este tipo de archivos– Listas lineales

– Listas múltiples

– Listas circulares

– Árboles binarios de búsqueda

Page 42: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 42/102

¿Qué colección usar?

Page 43: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 43/102

¿Qué colección usar?

Page 44: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 44/102

Organización primaria

Archivo mixto● Almacena registros de diferente tipo● Los registros provienen de distintas tablas

– Están relacionadas mediante una o varias columnas● Clave externa y clave candidata

– Las operaciones más frecuentes son las consultas y no es habitual modificar las columnas comunes

– Solicitudes frecuentes de filas relacionadas de ambas tablas

● Operaciones que implican la reunión (JOIN) de tablas

Page 45: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 45/102

Organización primaria

Archivo mixto● En el archivo …

– Los registros relacionados están físicamente adyacentes

– Clave del fichero mixto: campos “comunes” de los registros

● Ventajas del uso de archivos mixtos– Mayor eficiencia de las operaciones con JOIN entre

tablas

– Valores de la clave del fichero mixto almacenados sólo una vez

Page 46: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 46/102

Organización primaria

Archivo de direccionamiento calculado (hashing)● Permite acceso rápido a registros según una condición

de búsqueda de igualdad sobre un sólo campo– Campo de dispersión (columna de dispersión)

– Si es clave del fichero, se llama clave de dispersión

● Función de dispersión h– Se aplica el valor k del campo de dispersión de un registro

(fila)

– Y produce la dirección del bloque de disco en el que está el registro

● La localización del registro dentro del bloque se hace en el búfer

Page 47: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 47/102

Tarea● Entienda la Codificación de Huffman● MOOC: https://goo.gl/dpekyS● Vídeo del MOOC, capítulo 4 (árboles):

https://youtu.be/W6WZT12ruGQ

Page 48: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 48/102

Estructuras de archivos

Organización secundaria

Page 49: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 49/102

Organización secundaria● Índices en base de datos, tema a ver en la

materia de base de datos (vea https://goo.gl/NzNNrz)

● Archivos Relativos

Page 50: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 50/102

Archivos relativos● Una forma efectiva de organizar un archivo

cuando existe la necesidad de acceder individual y directamente a registros

● En un archivo relativo, existe una relación predecible entre la key usada para identificar un registro y la localización del registro dentro del archivo

● Importante: orden lógico de registros no necesita tener ninguna relación con su secuencia física

Page 51: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 51/102

Archivos relativos

Encontrar el N-ésimo registro● Cuando un archivo relativo se establece debe

definirse una relación que será utilizada para obtener de un valor de llave a una dirección física

● Esta relación, llamada R, es una función de mapeo, de los valores de llaves a direcciones del archivo

Page 52: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 52/102

Archivos relativos

Page 53: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 53/102

Archivos relativos● Cuando se debe grabar un registro en un

archivo relativo, la función de mapeo R se usa para traducir el valor de llave de registro a una dirección, la cual indica dónde deberá almacenarse el registro

● Cuando es necesario recuperar el registro con un valor de llave particular la función de R es aplicada a ese valor de la llave, traduciéndolo a una dirección donde se encuentra el registro

Page 54: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 54/102

Archivos relativos● En contraste con los archivos secuencialmente

organizados, no es necesario acceder los registros del archivo relativo en orden serial. En lugar de esto, una ocurrencia particular de un registro se puede acceder directamente

● El carácter de acceso directo de los archivos de organización relativa no tendría ninguna ventaja si un archivo relativo fuese almacenado en medios de acceso serial, como la cinta magnética. Por lo tanto, los archivos relativos se almacenan en memoria principal o en dispositivos de almacenamiento de acceso directo

Page 55: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 55/102

Métodos de acceso

Page 56: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 56/102

Métodos de acceso● Manera de acceder a los registros de un archivo

para leer o grabar información

Fundamentalmente● Acceso secuencial

– Acceso a registros según secuencia física, en el orden es que están escritos. Para acceder al registro N hay que pasar previamente por los N-1 registros anteriores

● Acceso directo– Acceso a un registro sin tener que pasar por los

registros anteriores

Page 57: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 57/102

Operaciones básicas sobre archivos

Page 58: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 58/102

Operaciones básicas sobre archivos

Creación● Definición del archivo

Apertura● Comunicación del archivo lógico con el físico

Cierre● Cerrar la conexión

Lectura● Acceder al archivo para ver su contenido

Page 59: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 59/102

Operaciones básicas sobre archivos

Fin de archivo● Detecta el final del archivo

Destrucción● Borra el archivo

Reorganización● Optimiza la estructura

Page 60: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 60/102

Operaciones básicas sobre archivos

Fusión● Reune varios archivos en uno solo

Actualización● Alta

– Adición de registros

● Baja– Eliminación lógica de registros

● Modificación– Alterna la información del contenido

Page 61: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 61/102

Operaciones básicas sobre registros

Page 62: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 62/102

Operaciones básicas sobre registrosEliminación de registros● Los registros eliminados se incluirán por

ejemplo en una lista de tal forma que siempre tendremos que almacenar la dirección del último registro eliminado. ¿Qué estructura de datos?

● Al eliminar un registro se marca como borrado con una marca especial en el primer campo y luego se escribirá en este campo la posición del que era último registro borrado

Page 63: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 63/102

Operaciones básicas sobre registrosCreación de registros● Al insertar un nuevo registro habrá que

comprobar si se tiene algún espacio● Se comprueba si hay registros eliminados● Si los hay, se usa el espacio y se inserta el

nuevo registro en esa posición

Page 64: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 64/102

Operaciones básicas sobre registrosObtención de datos● Localizar ciertos registros para examinar y

procesar su contenido

Actualización de registros● Consiste en cambiar el contenido de un

archivo, para hacer que refleje la situación actual. Estos cambios pueden incluir la adición, modificación y/o eliminación de registros

Page 65: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 65/102

Ordenamiento e intercalación de archivos

Page 66: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 66/102

Motivación, intercalación● Considere un archivo de 2000 registros que deben ordenarse y

suponga que la memoria primaria tiene capacidad sólo para 1000

● Una forma de enfocar el problema es aplicar un método de ordenamiento interno para ordenar separadamente dos subconjuntos del archivo: los registros del 1 al 1000 y del 1001 al 2000

● La salida de cada ordenamiento interno es un archivo que contiene la sublista ordenada. Después las dos sublistas ordenadas pueden ser intercaladas

● La intercalación incluye comparaciones por pares de la llave del siguiente registro y en cada una de las sublistas ordenadas. El registro que tenga la llave de menor valor (ordenamiento ascendente) es el registro por escribirse en el archivo intercalado

Page 67: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 67/102

Motivación, intercalación

Page 68: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 68/102

Fases de ordenamiento de registros

1) División● División del archivo en varias sublistas

2) Ordenamiento interno● Ordenamiento de registros de las sublistas mediante varias

ejecuciones distribuidas en dos o más dispositivos de almacenamiento. Se guarda como archivo secuencial

3) Intercalación● Combinación de sublistas ordenadas en una sola ejecución

4) Salida● Copia de archivo ordenado en medio de almacenamiento

final

Page 69: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 69/102

Lógica de intercalación● Las llaves, Llave1, Llave2 y LlaveM son usadas

para referirse a las llaves de los registros en la sublista 1, sublista 2 y la sublista de intercalación resultante, respectivamente

● Esta lógica descansa sobre el hecho de tener las sublistas de entrada ordenadas por la llave que dirige la intercalación

● Las listas de entrada no necesariamente deben ser de la misma longitud; cuando una lista se termina el resto de la otra lista es copiado (en orden) en el archivo intercalado resultante

Page 70: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 70/102

Page 71: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 71/102

Fase de intercalación

Page 72: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 72/102

Fase de intercalación

Tipos● Intercalación directa● Intercalación natural● Intercalación balanceada● Intercalación polifase● Intercalación de cascada

Page 73: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 73/102

Intercalación directa● Probablemente el más utilizado, fácil

comprensión● Consiste en la realización sucesiva de una

partición y una fusión que produce secuencias ordenadas de longitud cada vez mayor

● En la primera pasada, la partición es de longitud 1 y la fusión o mezcla produce secuencias ordenadas de longitud 2

Page 74: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 74/102

Intercalación directa● En la segunda pasada, la partición es de

longitud 2 y la fusión o mezcla produce secuencias ordenadas de longitud 4

● Este proceso se repite hasta que la longitud de la secuencia para la partición sea: parte entera ((n + 1)/2). n:número de elementos del archivo original

● Vea https://goo.gl/uN9PWt

Page 75: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 75/102

Intercalación directa

Page 76: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 76/102

Intercalación natural● Una intercalación que manipula dos archivos

de entrada a la vez se llama intercalación de doble vía; una intercalación que manipula M archivos de entrada a la vez se llama intercalación de M-vías. M es referido como el grado de la intercalación.

● Una intercalación natural de M vías se define como una intercalación con M archivos de entrada y sólo uno de salida

Page 77: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 77/102

Intercalación natural● El número de sublistas ordenadas que entran a la

fase de intercalación y los grados de intercalaciones son los factores principales para determinar la eficiencia de cada ordenamiento/intercalación

● Puede requerir una cantidad significativa de copiado de datos una y otra vez, causando una alta actividad de E/S. A mayor cantidad de sublistas iniciales, y menor grado de intercalación natural, mayores serán los requerimientos resultantes de E/S, y el proceso será más lento

Page 78: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 78/102

Intercalación natural● Es una optimización de la intercalación directa● La diferencia es que las particiones se realizan

en secuencias ordenadas de tamaño variable en lugar de secuencias de tamaño fijo

● La fusión de las secuencias ordenadas se realiza en dos archivos

● El proceso termina cuando el segundo archivo queda vacío en el proceso de partición-fusión

● Vea https://youtu.be/YmehsKonGx4?t=17s

Page 79: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 79/102

Intercalación natural

Page 80: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 80/102

Intercalación natural

Page 81: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 81/102

Intercalación natural

Page 82: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 82/102

Intercalación natural

Page 83: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 83/102

Intercalación natural

Page 84: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 84/102

Intercalación natural

Page 85: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 85/102

Intercalación natural

Page 86: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 86/102

Intercalación natural

Page 87: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 87/102

Intercalación natural

Page 88: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 88/102

Intercalación natural

Page 89: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 89/102

Intercalación natural

Page 90: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 90/102

Intercalación natural

Page 91: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 91/102

Intercalación natural

Page 92: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 92/102

Tarea● Implementar todos los algoritmos de

ordenamiento externo● Se debe usar un archivo CSV con el siguiente

formato (se dará uno el momento de probar):

campo1,campo2,campo3,campo4

123,texto1,true,25/12/1985

51847,text2,false,25/11/2016

● El usuario puede pedir ordenar el archivo por cualquier campo

Page 93: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 93/102

Intercalación balanceada● Cerca de la mitad de la actividad de E/S de una

intercalación natural es dedicada a redistribuir en múltiples archivos las sublistas recién intercaladas que salen de un paso, como preparación para su entrada al siguiente paso

● Los requerimientos de E/S de una intercalación natural pueden reducirse usando una intercalación balanceada

Page 94: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 94/102

Intercalación balanceada● Una intercalación balanceada evita mucho de este

copiado de registros, una y otra vez, distribuyendo los resultados del paso de intercalación directamente en el número apropiado de archivos para la entrada al siguiente paso de intercalación

● En contraste, una intercalación natural, distribuye todas sus sublistas intercaladas de salida en un solo archivo

● Una intercalación natural de M-vías usa M+1 archivos, mientras que una intercalación balanceada de M-vías usa 2M archivos

● En una intercalación balanceada, los datos son removidos una y otra vez entre un número igual de archivos de E/S

Page 95: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 95/102

Intercalación balanceada● Una intercalación balanceada de m vías utiliza

m archivos de entrada y m archivos de salida● Las k listas ordenadas se distribuyen en forma

uniforme en los m archivos de entrada● Se intercalan las listas de cada uno de los

archivos, distribuyendo en forma uniforme las listas resultantes en los archivos de salida (de mayor tamaño que las iniciales)

● Se repite el último paso hasta que un archivo de salida contiene una lista ordenada

Page 96: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 96/102

Intercalación polifase● Un tipo de intercalación desbalanceada es la

intercalación de polifase● Se utiliza un número constante de archivos de

entrada. Una intercalación de polifase de M-vías usa 2M – 1 archivos de entrada y 1 archivo de salida

● Se intercalan las listas (de mayor tamaño) en el archivo de salida. El archivode entrada que primero queda vacío pasa a ser archivo de salida y el archivode salida pasa a ser de entrada. Se repiten los 2 últimos pasos hasta que unarchivo de salida contenga las lista ordenada

Page 97: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 97/102

Intercalación de cascada

Page 98: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 98/102

Comparativa

Page 99: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 99/102

Conceptos y términos importantes

Page 100: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 100/102

Conceptos y términos importantes● Campo, registro y archivo● Tipos de organización● Operaciones básicas con registros● Operaciones básicas con archivos● Ordenamientos externos

Page 101: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 101/102

Referencias

Page 102: Programación 3: estructuras de archivos

01/11/16 Angel Vázquez-Patiño 102/102

Preguntas