Вы находитесь на странице: 1из 52

Contenido

Evaluaci on

Almacenamiento y Recuperaci on de la Informaci on


1

Notas de clase basadas en los libros File Structures de Folk y Algorithms de Sedgewick Estructuras de archivos Habr a 3 ex amenes (E ) y 6 tareas (T ). Cada examen valdr a 25 puntos. Cada tarea valdr a 5 puntos. S requiere E 35, T 15 y E + T 60. B requiere E 40, T 20 y E + T 73. MB requiere E 45, T 25 y E + T 87. Grafos y sus aplicaciones Arboles AVL Ordenamiento externo Indices Arboles B y B+ Dispersi on
2 3 4 5 6 7

Dr. Francisco Javier Zaragoza Mart nez franz@correo.azc.uam.mx

UAM Azcapotzalco Departamento de Sistemas

Trimestre 2009 Invierno

Francisco Zaragoza (UAM Azcapotzalco)

Trimestre 09I

1 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Trimestre 09I

2 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Trimestre 09I

3 / 464

Ex amenes y tareas
1

Contenido
Dise no y especicaci on de estructuras de archivos Objetivos de las estructuras de archivos Operaciones fundamentales de procesamiento de archivos
2 3

Part I Estructuras de archivos


4

El primer examen consistir au nicamente del tema Estructuras de archivos (dos tareas). AVL (dos El segundo examen consistir a de los temas Grafos y Arboles tareas).

Almacenamiento secundario Conceptos fundamentales de estructuras de archivos


5

El tercer examen consistir a de los dem as temas (dos tareas).

Manipulando archivos con registros


6

Organizaci on de archivos para mejora del desempe no

Francisco Zaragoza (UAM Azcapotzalco)

Trimestre 09I

4 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

5 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

6 / 464

Discos y memoria

Estructuras de datos y de archivos

Objetivos I

Los discos son muy lentos comparados con la memoria.

Se desea obtener la informaci on buscada con un solo acceso al disco.

Se puede obtener un dato de la memoria en aproximadamente 10 ns.

Para obtener un dato del disco se necesitan aproximadamente 10 ms.

La diferencia de velocidad entre los discos y la memoria hace que las estructuras de datos en memoria no sirvan para resolver los problemas de datos almacenados en disco. Por lo tanto, debemos establecer nuevos objetivos para el dise no y especicaci on de estructuras de archivos.

Si eso no es posible, se desean estructuras de archivos que nos permitan encontrar la informaci on con tan pocos accesos al disco como sea posible. Queremos que la informaci on relacionada quede agrupada, de modo que podamos obtenerla con un solo acceso al disco.

Por lo tanto, los discos son unas 106 veces m as lentos que la memoria.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

7 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

8 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

9 / 464

Objetivos II
1

Contenido
Dise no y especicaci on de estructuras de archivos

Archivos f sicos y l ogicos

Se deben mantener todas estas propiedades a un cuando los archivos cambien, crezcan o se hagan m as peque nos cuando se agregue o borre informaci on.

Un archivo f sico es una colecci on de bytes almacenada en alg un dispositivo (cinta, disco, disco compacto, etc.) Un archivo l ogico es la visi on de un programa de un archivo: el programa puede leer o escribir datos sin saber c omo ni d onde.

Las estructuras de datos deben aprovechar los dispositivos de almacenamiento, ya sean secuenciales o de acceso arbitrario: cintas, discos, discos compactos, etc.
3

Operaciones fundamentales de procesamiento de archivos Archivos f sicos y l ogicos Apertura de archivos Cerrado de archivos Lectura y escritura de archivos Tipos de acceso y b usqueda Consideraciones especiales Almacenamiento secundario Conceptos fundamentales de estructuras de archivos Manipulando archivos con registros
Estructuras de archivos Trimestre 09I 11 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos

5
Trimestre 09I 10 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

12 / 464

Contenido

Apertura de un archivo

Apertura de un archivo en C

Dise no y especicaci on de estructuras de archivos Antes de que un programa pueda usar un archivo l ogico, este se debe relacionar con un archivo f sico. A esta operaci on se le llama apertura. Un archivo se puede abrir para escritura, lectura, sobreescritura, agregado y combinaciones de estas. Puede tener acceso secuencial o arbitrario. En algunos sistemas operativos se pueden indicar los modos de uso y permisos.

Abajo fis es el archivo f sico, fp es el archivo l ogico y modo es alguno de w (escritura) r, (lectura) o a (agregado) seguido posiblemente de + (actualizaci on) o b (binario). #include <stdio.h> FILE *fp;

Operaciones fundamentales de procesamiento de archivos Archivos f sicos y l ogicos Apertura de archivos Cerrado de archivos Lectura y escritura de archivos Tipos de acceso y b usqueda Consideraciones especiales

Almacenamiento secundario

Conceptos fundamentales de estructuras de archivos

if ((fp = fopen(fis, modo)) == NULL) { /* no se pudo abrir el archivo */ } else { /* todo bien */ }

5
Trimestre 09I 13 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos

Manipulando archivos con registros


Trimestre 09I 14 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 15 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Contenido

Cerrado de un archivo

Cerrado de un archivo en C

Dise no y especicaci on de estructuras de archivos La operaci on contraria se llama cerrado. Esto libera un archivo l ogico en el programa que se puede reusar para otro archivo f sico. Tambi en garantiza que toda la informaci on enviada al archivo l ogico quede almacenada en el archivo f sico. Normalmente, el sistema operativo se encarga de cerrar todos los archivos que hayan quedado abiertos al nalizar la ejecuci on de un programa (aunque lo mejor es que lo haga el propio programa).

Operaciones fundamentales de procesamiento de archivos Archivos f sicos y l ogicos Apertura de archivos Cerrado de archivos Lectura y escritura de archivos Tipos de acceso y b usqueda Consideraciones especiales

Abajo fp es el archivo l ogico. if (fclose(fp) == EOF) { /* no se pudo cerrar el archivo */ } else { /* todo bien */ }

Almacenamiento secundario

Conceptos fundamentales de estructuras de archivos

Manipulando archivos con registros


Trimestre 09I 16 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 17 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 18 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Contenido

Lectura de archivos

Lectura de archivos en C

Dise no y especicaci on de estructuras de archivos

Al nivel m as bajo se tiene al menos la operaci on lee(archivo, destino, cuenta) que lee cuenta bytes del archivo l ogico coloc andolos en la direcci on destino. A niveles m as altos, se pueden tener varias operaciones de lectura de caracteres, enteros, otantes, cadenas, estructuras, etc. r = fread(a, sizeof(tipo), n, fp); size_t r, n; tipo a[MAX];

Operaciones fundamentales de procesamiento de archivos Archivos f sicos y l ogicos Apertura de archivos Cerrado de archivos Lectura y escritura de archivos Tipos de acceso y b usqueda Consideraciones especiales

Abajo n es el n umero de objetos de cierto tipo que se desean leer del archivo l ogico fp en el arreglo a y r es el n umero de objetos que se leyeron en realidad.

Almacenamiento secundario

Conceptos fundamentales de estructuras de archivos

5
Trimestre 09I 19 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 20 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Manipulando archivos con registros


Estructuras de archivos Trimestre 09I 21 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Escritura de archivos

Escritura de archivos en C

Fin de archivo

Al nivel m as bajo se tiene al menos la operaci on

Normalmente se tiene una operaci on que nos indica si ya hemos le do el u ltimo dato o byte de un archivo l ogico. En C, esto se hace de la siguiente forma:

escribe(archivo, fuente, cuenta) size_t r, n; tipo a[MAX]; r = fwrite(a, sizeof(tipo), n, fp);

Abajo n es el n umero de objetos de cierto tipo que se desean escribir en el archivo l ogico fp del arreglo a y r es el n umero de objetos que se escribieron en realidad.

que escribe cuenta bytes en el archivo l ogico tomados a partir de la direcci on fuente.

A niveles m as altos, se pueden tener varias operaciones de escritura de caracteres, enteros, otantes, cadenas, estructuras, etc.

if (feof(fp)) { /* llegamos al fin de archivo */ } else { /* aun quedan datos por leer */ }

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

22 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

23 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

24 / 464

Contenido

Acceso secuencial y arbitrario

Operaci on de b usqueda

Dise no y especicaci on de estructuras de archivos

Cada vez que hacemos una lectura o escritura avanzamos una o m as posiciones en el archivo. A este tipo de acceso se le llama secuencial. Pero en ocasiones queremos brincar a alguna posici on espec ca del archivo, por ejemplo, porque sabemos que all est a el siguiente dato que necesitamos. A este tipo de acceso se le llama arbitrario.

A la operaci on que nos permite brincar de una posici on a otra de un archivo se le llama b usqueda (seek en ingl es). Esta operaci on es de la forma busqueda(archivo, posici on) donde se indica la posici on del archivo l ogico a la que se quiere brincar.

Operaciones fundamentales de procesamiento de archivos Archivos f sicos y l ogicos Apertura de archivos Cerrado de archivos Lectura y escritura de archivos Tipos de acceso y b usqueda Consideraciones especiales

Almacenamiento secundario

Conceptos fundamentales de estructuras de archivos

Manipulando archivos con registros


Trimestre 09I 25 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 26 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 27 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

B usqueda de archivos en C
1

Contenido
Dise no y especicaci on de estructuras de archivos

Cuidados al usar archivos

Algunos sistemas cambian unos caracteres por otros sin preguntar. Otros agregan informaci on innecesaria. La mayor a de los sistemas organizan los archivos en directorios, pero sus estructuras son distintas de sistema a sistema. Algunos sistemas tienen tipos especiales de archivos (dispositivos f sicos, tuber as, redirecciones, etc.).

Abajo pos es la posici on en el archivo l ogico fp a la que queremos brincar con respecto al origen que puede ser SEEK SET (principio), SEEK CUR (actual) o SEEK END (n).

int origen; long pos;


3

Operaciones fundamentales de procesamiento de archivos Archivos f sicos y l ogicos Apertura de archivos Cerrado de archivos Lectura y escritura de archivos Tipos de acceso y b usqueda Consideraciones especiales Almacenamiento secundario Conceptos fundamentales de estructuras de archivos Manipulando archivos con registros
Estructuras de archivos Trimestre 09I 29 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos

fseek(fp, pos, origen);

5
Trimestre 09I 28 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

30 / 464

Contenido

Hardware de discos

Vista lateral de un disco

Dise no y especicaci on de estructuras de archivos

Operaciones fundamentales de procesamiento de archivos Los accesos al disco siempre son m as lentos que los accesos a la memoria. Recuerde que los discos son unas 106 veces m as lentos que la memoria. Pero no todos los accesos al disco son igual de lentos. Esto se debe a la forma en la que trabajan los discos.

La informaci on est a almacenada en Nsup supercies que giran alrededor de un eje. Ejemplo: Nsup = 4. Cada una tiene una cabeza de lectura y escritura que est a unida a un brazo.

Almacenamiento secundario Discos Cintas magn eticas Tipos de almacenamiento Archivos y el sistema operativo Buers

Conceptos fundamentales de estructuras de archivos

Manipulando archivos con registros


Trimestre 09I 31 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 32 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 33 / 464

Francisco Zaragoza (UAM Azcapotzalco) 6

Estructuras de archivos Organizaci on de archivos para mejora del desempe no

Vista superior de un disco

Sectores y cilindros

Capacidad de un disco

Cada supercie est a dividida en Npis pistas conc entricas.

Un sector es la unidad m as peque na que se puede direccionar en un disco. Al conjunto de pistas que quedan una arriba de otra en las diferentes supercies se le llama cilindro. Se pueden leer todos los datos almacenados en un cilindro sin mover las cabezas. A este movimiento se le llama b usqueda.

Ejemplo: Npis = 10. Cada pista est a dividida en Nsec sectores separados por espacios.

Cada uno de los sectores de un disco tiene una cierta capacidad de Csec bytes. La capacidad de pistas, supercies y disco pueden calcularse en t erminos de Csec :
Cpis = Nsec Csec . Csup = Npis Cpis . Cdis = Nsup Csup .

Ejemplo: Nsec = 24.

C omo se calcula la capacidad de un cilindro?

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

34 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

35 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

36 / 464

Compaginaci on

Grupos y alcance

Fragmentaci on interna

0 As , una vez que se localiza un grupo en el disco se pueden leer todos sus sectores sin realizar ninguna b usqueda. Ejemplo: grabar 300 bytes en un sector de 512 bytes. A esto se le llama fragmentaci on interna. Tambi en puede ocurrir al nivel de grupos. Los grupos suelen usarse en las tablas de asignaci on de archivos (FAT). Una colecci on de grupos adyacentes se llama un alcance. En ingl es: cluster y extent.

A veces los sectores se organizan en grupos con un n umero jo de sectores contiguos.

Se pueden numerar los sectores de una pista como est an colocados de forma f sica, pero es posible que no se puedan leer en ese orden.

Todos los sectores de un disco debieran contener el mismo n umero de bytes, pero a veces eso no es posible.

Por eso a veces se compaginan para no tener que esperar una vuelta completa para leer dos sectores consecutivos.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

37 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

38 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

39 / 464

P erdida de espacio

Tipos de espera

Minimizar efectos de espera

Existen otras fuentes de p erdida de espacio.

El tiempo de b usqueda es el requerido para mover el brazo al cilindro 1 del tiempo de lado a lado. correcto. En promedio es 3

Hay muchas t ecnicas para tratar de minimizar los efectos de estas esperas:
1 2 3 4 5

Por ejemplo, la debida a informaci on que necesite estar en el disco pero que no est a relacionada con los datos. El tiempo de transferencia se puede calcular bytes transferidos tiempo de revoluci on bytes en una pista

Ejemplo: la informaci on de formato.

La espera rotacional es el tiempo que necesita el disco para girar de modo que el sector deseado se encuentre bajo la cabeza. En promedio on. es 1 2 del tiempo de revoluci

Cambiar el tama no de los grupos. Usar m ultiples discos. Usar paralelismo. Usar discos en memoria. Usar caches, buers, etc.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

40 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

41 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

42 / 464

Contenido

Hardware de cintas

Vista superior de una cinta


espacio espacio
pista

Dise no y especicaci on de estructuras de archivos

Operaciones fundamentales de procesamiento de archivos A diferencia de los discos, las cintas no proveen de ninguna facilidad para el acceso directo (o arbitrario) de datos. Sin embargo, proveen de un acceso secuencial muy r apido. Las cintas son peque nas y econ omicas comparadas con los discos de la misma capacidad. bloque

marco 0 1 1 0 1 0 0 1 1 bloque

Almacenamiento secundario Discos Cintas magn eticas Tipos de almacenamiento Archivos y el sistema operativo Buers

bloque

Conceptos fundamentales de estructuras de archivos

Una cinta se puede pensar como dividida en pistas. Cada pista es una sucesi on de bits. Un marco son los bits en la misma posici on de todas las pistas.

Manipulando archivos con registros


Trimestre 09I 43 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 44 / 464

Francisco Zaragoza (UAM Azcapotzalco) 6

Estructuras de archivos Organizaci on de archivos para mejora del desempe no

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

45 / 464

Marcos y paridad

Marcos y espacios

Par ametros de una cinta

Las cintas se suelen clasicar seg un tres de sus par ametros. Los marcos est an agrupados en bloques de datos. Los bloques est an separados por espacios que no contienen datos. El prop osito de los espacios es el de sincronizar el ujo de datos. Adem as se considera la longitud de la cinta. Observe que todos estos par ametros son constantes.
Su densidad d (de 800 a 30000 bit/in). Su velocidad v (de 30 a 200 ft/s). Su tama no de espacio s (de 0.3 a 0.75 in).

El u ltimo bit del marco no suele formar parte de un dato, sino que se suele usar para vericar su validez.

Un m etodo com un es el de asegurar que la cantidad de unos en un marco siempre tenga la misma paridad.

As se habla de paridad par o impar, siendo esta u ltima la m as com un.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

46 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

47 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

48 / 464

Relaciones entre los par ametros


1

Tasas de transmisi on de datos

Contenido
Dise no y especicaci on de estructuras de archivos Operaciones fundamentales de procesamiento de archivos

Si la cinta tiene n bloques de datos y cada uno de ellos mide b in, entonces su longitud queda dada por = n(b + s ). La tasa efectiva de transmisi on de datos es la velocidad real a la que b se transmiten datos de una cinta y queda dada por 12vd b+ s. En ambos casos se debe multiplicar por el n umero de bits de datos en un marco.

Observe que b y n son variables.

La tasa nominal de transmisi on de datos es la m axima velocidad a la que se pueden transmitir datos de una cinta y queda dada por 12vd . De d onde sali o el 12?
3

La elecci on adecuada de estos par ametros impacta la cantidad de informaci on que se puede almacenar en la cinta.

Qu e pasa si n = 1? Y si b = 0?

Almacenamiento secundario Discos Cintas magn eticas Tipos de almacenamiento Archivos y el sistema operativo Buers
4

Conceptos fundamentales de estructuras de archivos


5

Manipulando archivos con registros


Trimestre 09I 50 / 464 Francisco Zaragoza (UAM Azcapotzalco) 6 Estructuras de archivos Organizaci on de archivos para mejora del desempe no Trimestre 09I 51 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

49 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Discos y cintas

Almacenamiento primario

Almacenamiento secundario

Los discos se usan para tener acceso arbitrario a archivos y para almacenar archivos cuando se desea acceso inmediato.

Tipos: registros, memoria, disco en memoria y memoria cach e. Medio: semiconductores. Tiempo de acceso: 109 a 105 s. Capacidad: 1 a Costo: 104 a 109 101 bytes. pesos/bit.

Tipos: acceso directo y secuencial. Medio: cintas y discos magn eticos. Tiempo de acceso: 103 a 102 s. Capacidad: 104 a 1011 bytes. Costo: 107 a 102 pesos/byte.

Las cintas se usan para procesar archivos secuencialmente y para almacenar archivos por periodos de tiempo muy largos.

Estos roles han cambiado un poco gracias a la disminuci on del costo de los discos.

Las cintas siguen siendo, en ocasiones, el m etodo m as eciente de almacenamiento.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

52 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

53 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

54 / 464

Almacenamiento terciario
1

Contenido
Dise no y especicaci on de estructuras de archivos Operaciones fundamentales de procesamiento de archivos

El camino de un byte

Tipos: archivo y copia de seguridad.


3

Qu e pasa cuando un programa escribe un byte a un archivo en un disco? Sabemos que el programa llama a una funci on de escritura. Tambi en sabemos que eventualmente el byte quedar a escrito de alguna forma en el disco. Pero lo que pasa entre la llamada del programa y la escritura en el disco es moderadamente complicado.

Medio: cintas y discos opticos.

Tiempo de acceso: 1 a 102 s.

Capacidad: 104 a 1012 bytes.

Costo: 107 a 105 pesos/byte.

Almacenamiento secundario Discos Cintas magn eticas Tipos de almacenamiento Archivos y el sistema operativo Buers Conceptos fundamentales de estructuras de archivos Manipulando archivos con registros
Estructuras de archivos Organizaci on de archivos para mejora del desempe no Trimestre 09I 56 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

55 / 464

Francisco Zaragoza (UAM Azcapotzalco) 6

Trimestre 09I

57 / 464

El programa hace la llamada

El manejador de archivos

El buer de entrada y salida

Supongamos que queremos agregar un byte que representa al caracter P almacenado en la variable ch en cierto archivo. El manejador de archivos verica que la solicitud se pueda llevar a cabo (archivo abierto para escritura, etc.). Si todo va bien, lee de la FAT en que disco, cilindro, pista y sector se debe colocar el byte.

El sistema operativo, siendo sucientemente complejo, contiene un subsistema llamado manejador de archivos que se encarga de todo lo relacionado a la entrada, salida y dispositivos de almacenamiento.

El manejador de archivos debe determinar si ese sector ya est a en la memoria o no. En el segundo caso, se debe encontrar un buer de entrada y salida para poder leer el sector en ese espacio. El buer permite que se puedan hacer los accesos de entrada y salida al disco en unidades de un sector o un bloque. El buer se copiar a al disco cuando se llene o cuando se cierre el archivo correspondiente.

Llamamos a escribe(archivo, ch, 1).

Esto resulta en una solicitud al sistema operativo, el cual se encargar a de supervisar que la llamada se efect ue exitosamente.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

58 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

59 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

60 / 464

Actualizaci on del buer

El byte deja la memoria

Y nalmente llega al disco

ch Hasta este momento, todo el movimiento del byte ha ocurrido en la memoria principal. Lo que pasa ahora es mec anico y muy lento. El disco debe mover su cabeza a la pista pedida (a menos que ya est e all ) y debe esperar a que el sector deseado pase debajo de la cabeza. Cuando esto ocurre, se env an al disco uno por uno los bytes del buer (incluyendo nuestra P) y sus bits se escriben uno por uno a la supercie del disco. Este procesador ahora deber a esperar hasta que el controlador del disco le indique que est a disponible para escritura. Y la P queda all , girando pl acidamente.

abc sector

Ahora el contenido del buer se pasar a a un procesador de entrada y salida junto con la informaci on de en qu e parte del disco deber a ser almacenado.

buer

abc

Si fuera necesario se lee el sector en un buer y luego se copia la P a la posici on correspondiente.


Trimestre 09I 61 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 62 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 63 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Actualizaci on del sector


1

Contenido
Dise no y especicaci on de estructuras de archivos Operaciones fundamentales de procesamiento de archivos La idea de tener un buer es la de trabajar con grandes cantidades de informaci on antes de hacer una operaci on de entrada o salida. La cantidad y tama no de los buers puede afectar bastante el desempe no del programa. El caso m as sencillo es el de mantener un buer en memoria para todas las operaciones de entrada y salida. Qu e pasa si s olo se tiene un buer y se hacen lecturas y escrituras alternadas?

Manejo de buers

controlador
2

abcPsector
3

procesador de entrada y salida

abcP

buer

abcP
4

Almacenamiento secundario Discos Cintas magn eticas Tipos de almacenamiento Archivos y el sistema operativo Buers Conceptos fundamentales de estructuras de archivos Manipulando archivos con registros
Estructuras de archivos Organizaci on de archivos para mejora del desempe no Trimestre 09I 65 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos

El buer se copia al procesador de entrada y salida, de all va al controlador del disco y nalmente al sector.
5
Trimestre 09I 64 / 464 Francisco Zaragoza (UAM Azcapotzalco) 6

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

66 / 464

Dos o m as buers
1

Contenido
Dise no y especicaci on de estructuras de archivos Operaciones fundamentales de procesamiento de archivos

Persistencia de datos

Para evitar ese problema se suelen mantener al menos dos buers cambiando sus roles.
2 3

La intenci on de escribir archivos es la de volver persistentes los datos. Almacenamiento secundario Conceptos fundamentales de estructuras de archivos Organizaci on por campos y registros Manipulando archivos con registros Organizaci on de archivos para mejora del desempe no Los datos deben sobrevivir a la vida del programa que los crea. Adem as debe ser posible que otros programas los puedan usar.
4

La idea es que se puedan procesar los datos de un buer mientras se est an transriendo datos entre el otro buer y el disco.

Por supuesto, se pueden mantener m as de dos buers estableciendo pol ticas m as o menos complicadas para su uso (usado menos recientemente, etc.).
5

Esto implica que se debe poder recrear su estructura original.

En cualquier caso, se debe experimentar.


6

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

67 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

68 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

69 / 464

Campos y registros

Necesidad de la estructura de archivos

Formas de organizaci on de campos

La unidad b asica de informaci on es el campo, el cual contiene un solo valor. Los campos se pueden organizar de al menos dos formas. Imagine que tenemos algunas estructuras con varios miembros. Qu e pasa si las escribimos a un archivo? Si no tenemos cuidado no podremos distinguir entre los varios campos o registros y ser a imposible recuperar las estructuras originales. Es por eso que se necesita organizar los campos en un archivo de una forma m as inteligente que la simple concatenaci on. Existen al menos cuatro formas de organizaci on:
1 2 3 4

Un arreglo est a formado por varios campos del mismo tipo.

Un registro est a formado por diferentes tipos de campos.

Esto corresponde con los conceptos de miembro, vector y estructura almacenados en la memoria principal.

Ejemplos de arreglos

cero|uno|dos|tres|cuatro cero..uno...dos...tres..cuatro

Hacer que los campos tengan longitud predecible. Comenzar cada campo con un indicador de longitud. Colocar un separador al nal de cada campo. Utilizar expresiones de la forma dato=valor para identicar cada campo y su contenido.

Ejemplos de registros

File Structures|Folk|1998|Addison Wesley|0-201-87401-6 Algoritmos en C++|Sedgewick|1995|Pearson|968-444-401-X


Trimestre 09I 70 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 71 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 72 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Campos de longitud predecible

Campos con indicadores de longitud

Campos con separadores

Es muy f acil recuperar la informaci on del archivo. Si agregamos la longitud, sigue siendo f acil recuperar la informaci on (siempre y cuando se coloque la cuenta al inicio del campo). Incluso se puede saber con cierta precisi on cu anto espacio adicional se necesita para incluir esta cuenta. Observe que el subcampo de longitud es a su vez de longitud ja. Por lo tanto, la selecci on del separador es importante.

Sabemos cu anto mide cada campo y cada registro.

Si agregamos separadores, estos se deben poder distinguir f acilmente de los datos. Por ejemplo, no podemos usar espacios como separadores si los datos son frases de m as de una palabra.

Pero esto tiene sus inconvenientes:

Si el espacio destinado a un campo es muy grande se desperdicia.

Y si es muy corto es posible que algunos datos no quepan.

Ejemplos
15 4 41413File StructuresFolk1998Addison Wesley0-201-87401-6 17 9 4 713Algoritmos en C++Sedgewick1995Pearson968-444-401-X

Ejemplos

Ejemplos
File Structures|Folk|1998|Addison Wesley|0-201-87401-6 Algoritmos en C++|Sedgewick|1995|Pearson|968-444-401-X

File Structures Folk 1998Addison Wesley0-201-87401-6 Algoritmos en C++Sedgewick1995Pearson 968-444-401-X

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

73 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

74 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

75 / 464

Campos con descriptores

Formas de organizaci on de registros

Observaciones I

A diferencia de las anteriores formas, ahora es posible que un campo provea informaci on acerca de s mismo. De la misma manera, se necesitan organizar los registros en un archivo. Existen al menos cinco formas de hacer esto.
1 2 3 4 5

Esto permite tener campos adicionales a los previstos o campos ausentes.

Normalmente se usan en conjunto con los separadores.

La primera forma es muy com un. Observe que no es equivalente a que todos los campos tengan longitud ja. La segunda forma es muy u til cuando los registros tengan esa propiedad. La tercera forma es muy com un cuando se trabaja con registros de longitud variable.

Hay que cuidar que el descriptor dato no sea muy largo con respecto a valor.

Ejemplos

TITULO=File Structures AUTOR=Folk FECHA=1998 EDITORIAL=Addison Wesley ISBN=0-201-87401-6


Trimestre 09I 76 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos

TITULO=Algoritmos en C++ FECHA=1995 EDITORIAL=Pearson AUTOR=Sedgewick ISBN=968-444-401-X

Hacer que tengan longitud predecible. Hacer que los registros tengan un n umero de campos predecible. Comenzar con un indicador de longitud. Colocar un separador al nal del registro. Usar un segundo archivo para almacenar el lugar de inicio de cada registro.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

77 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

78 / 464

Observaciones II

Indicadores de longitud y buers

Representaci on de la longitud

En la cuarta forma se mantienen las reglas sobre delimitadores y normalmente se usa uno distinto al que separa los campos.

Si queremos colocar un indicador de longitud al principio de cada registro debemos conocer su valor de antemano. Es por eso que primero se debe construir el registro para despu es escribirlo al archivo. A esto tambi en se le llama buer. Los buers tambi en se pueden usar para leer un registro completo a la vez. Las operaciones de escritura y lectura se deben poder coordinar entre s .

Hay al menos dos formas en las que se puede escribir la longitud: binario o ASCII. Sin importar cu al se use, debe ser posible distinguirla del resto del archivo. Ejemplo: 65 en ASCII produce 0x36 0x35 mientras que en binario produce 0x41. No todos los sistemas representan los n umeros binarios de la misma forma. La pareja de bytes 0x01 0x02 puede signicar 258 en un sistema y 513 en otro.

Al segundo archivo de la quinta forma se le llama ndice.

En general, ning un m etodo es mejor que los dem as para una situaci on cualquiera.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

79 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

80 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

81 / 464

Contenido

Llaves o claves

Forma can onica

Dise no y especicaci on de estructuras de archivos

Operaciones fundamentales de procesamiento de archivos Nuestra estructura de archivos se enfoca en el registro como unidad de informaci on. Tiene sentido pensar en c omo leer un registro espec co sin leer todo el archivo. Como primera medida resulta conveniente identicar un registro con una llave o clave. En ingl es key.

Es m as f acil pensar en el registro de Juan que en el primer registro. Como esta clave ser a proporcionada por un usuario que puede cometer errores, se debe establecer una forma can onica. Esto quiere decir que algunas claves que parecen distintas (como Juan, jUaN y JUAN) en realidad deben representar a la misma clave (por ejemplo juan).

Almacenamiento secundario

Conceptos fundamentales de estructuras de archivos

Manipulando archivos con registros Acceso a registros Estructura de registros

Organizaci on de archivos para mejora del desempe no


Trimestre 09I 82 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 83 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 84 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Clave primaria

Selecci on de la clave

B usqueda secuencial por clave

Normalmente se desea que las claves de todos los registros presentes sean distintas. Se debe tener cuidado en la selecci on de la clave primaria. Lo mejor es que la clave primaria no dependa de los campos del registro. Cu antos registros con clave juan hay? La clave primaria no debe cambiar cuando cambie el registro (recuerde que una persona puede cambiar sus datos personales, pero sigue siendo la misma persona).

Si esto no ocurre podemos tener una confusi on acerca de cu al es el registro buscado.

Lo m as f acil es prevenir que el problema aparezca.

Una vez que tenemos claves es muy sencillo escribir un programa que lea el archivo secuencialmente hasta que encuentre los registros con las claves deseadas. Qu e tan eciente es esto? Recuerde que nuestra principal preocupaci on es la cantidad de lecturas que se hacen del disco.

A esta clave u nica se le llama clave primaria.

Esto abre la puerta a que haya claves secudarias, terciarias, etc.

Ejemplos

RFC, CURP, ISBN, ISSN, etc.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

85 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

86 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

87 / 464

Eciencia de la b usqueda secuencial

Aplicaciones de la b usqueda secuencial

Acceso directo a registros

Si tenemos n registros y hacemos una lectura por registro entonces haremos un m aximo de n y un promedio de n/2 lecturas.

Aunque la b usqueda secuencial parece demasiado lenta, tiene sus aplicaciones: B usqueda de patrones. Archivos con pocos registros. Archivos en los que casi nunca tiene que realizarse una b usqueda. Archivos almacenados en cinta. B usquedas en las que se espera obtener muchos resultados.

Una alternativa es el acceso directo. Se puede tener acceso directo a un registro si podemos buscar (seek) directamente el principio del registro para leerlo inmediatamente. De esta manera no importa que tan grande sea el archivo, se puede localizar cualquier registro en un tiempo constante.

Por supuesto, si agrupamos los registros en grupos de k entonces haremos un m aximo de n/k y un promedio de n/(2k ) lecturas.

Como k es constante, de todas formas el n umero de lecturas es proporcional a n.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

88 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

89 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

90 / 464

B usqueda de registros de longitud ja


1

Contenido
Dise no y especicaci on de estructuras de archivos Operaciones fundamentales de procesamiento de archivos Almacenamiento secundario Conceptos fundamentales de estructuras de archivos Manipulando archivos con registros Acceso a registros Estructura de registros Organizaci on de archivos para mejora del desempe no
Estructuras de archivos Trimestre 09I 92 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 93 / 464

Longitud de un registro

C omo sabemos d onde inicia un registro?


2 3

Hay varias formas de resolver este problema.

Si ya decidimos tener registros de longitud ja es necesario pensar en c omo se puede escoger esa longitud. Imagine que un sector tiene 512 bytes y que un registro debe medir al menos 30 bytes.

La m as f acil es cuando todos los registros tienen la misma longitud y sabemos el n umero de registro relativo que buscamos.
4

Si sabemos que cada registro mide r bytes y que el registro buscado tiene n umero relativo n entonces este comienza a partir del byte rn.
5

Los bytes y registros se numeran desde el 0.

Entonces tiene sentido escoger que cada uno de los registros mida 32 bytes para asegurar que cada sector contiene un n umero entero de registros.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

91 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Registro de cabecera
1

Uso del registro de cabecera

Contenido
Dise no y especicaci on de estructuras de archivos Operaciones fundamentales de procesamiento de archivos Almacenamiento secundario
3 4

En ocasiones es necesario o conveniente agregar cierta informaci on adicional a un archivo que sirva para su uso posterior. Seguramente, el registro de cabecera tendr a una estructura distinta a la de los dem as registros del archivo. El prop osito del registro de cabecera es que el archivo se autodescriba. Esto sirve para que los programas que usen este archivo no necesiten saber con anticipaci on todos los detalles de la estructura del archivo.

Conceptos fundamentales de estructuras de archivos


5

Frecuentemente se usa un registro de cabecera para incluir informaci on como el n umero de registros, el tama no de los registros, el momento de su u ltima actualizaci on, el nombre del archivo y la longitud de la cabecera.

Manipulando archivos con registros


6

Organizaci on de archivos para mejora del desempe no Compresi on de datos Compactaci on de archivos B usqueda y ordenamiento internos Ordenamiento por claves
Trimestre 09I 95 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 96 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

94 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Compresi on de archivos

T ecnicas de compresi on de datos

Reducci on de redundancia

Hay muchas razones por las cuales es buena idea comprimir archivos:

Existen varias t ecnicas de compresi on de datos: Usar una notaci on distinta (abreviaturas). Suprimir informaci on repetida. Uso de c odigos de longitud variable. Eliminaci on de datos.

Se logra codicando los datos en campos de longitud ja y casi siempre resulta en datos binarios (es decir, no en ASCII). Tiene varios problemas: El archivo ya no podr a ser le do por una persona com un y corriente. Hay un costo de codicaci on y decodicaci on. Todos los programas que usen el archivo deber an de conocer la codicaci on.

Uso de menos espacio.

Transmisi on m as r apida.

Transmisi on con menor ancho de banda.

Procesamiento secuencial m as r apido.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

97 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

98 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

99 / 464

Cu ando usarla?

Codicaci on por corridas

Ejemplo de corridas

Suponga que se quiere comprimir la cadena Se usa en archivos que contienen pocos datos y mucho espacio desperdiciado (como las im agenes con pocos detalles). Se transforman las secuencias de datos consecutivos id enticos (llamadas corridas) en secuencias especiales. Estas consisten de un byte indicador de corrida, el dato que se repite y la cantidad de veces que se repite. La cadena comprimida resultante es 00122112212152052232142081000. Ser a cierto que siempre se comprime? 00121211111000002221111000000001000 usando al 2 como indicador de corrida y los d gitos del 1 al 9 para indicar la cuenta. Una corrida debe tener longitud al menos cuatro, excepto para el 2. Porqu e?

La respuesta depende del contexto.

Si el archivo ya es muy peque no, si lo usan muchos programas distintos o si alguno de ellos no puede lidiar con datos en binario entonces es una mala idea.

Si el archivo es muy grande y s olo lo usa un programa entonces es una buena idea.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

100 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

101 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

102 / 464

C odigos de longitud variable

C odigo Morse

C odigo de Human

Si un dato aparece muchas m as veces en un archivo que otro dato en el mismo archivo tiene sentido asignarle un c odigo m as corto al primero que al segundo. E I S U R W D K G O A N M T

A diferencia del c odigo Morse, este tipo de c odigos no necesita separadores para saber donde termina una letra. Se obtienen a partir de las probabilidades de aparici on de las letras en un archivo. Ejemplo: si las letras a, b, c, d, e, f aparecen con probabilidades 0.1, 0.23, 0.45, 0.06, 0.07, 0.09 entonces sus c odigos son 0000, 01, 1, 0011, 0010, 0001. Qu e dice en 10010111010110010101? . en Morse.

El c odigo Morse es un ejemplo muy conocido de este tipo de c odigo.

Otro ejemplo (donde la tabla de codicaci on puede cambiar de archivo a archivo) es la codicaci on de Human. Arbol binario de decisi on que contiene parte del c odigo Morse La palabra MORSE se codica como -- --- .-. ...

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

103 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

104 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

105 / 464

Compresi on con p erdida


1

Contenido
Dise no y especicaci on de estructuras de archivos Operaciones fundamentales de procesamiento de archivos Almacenamiento secundario Conceptos fundamentales de estructuras de archivos Manipulando archivos con registros
5 6

Recuperando espacio en archivos

A veces no es necesario preservar la informaci on hasta el u ltimo detalle.


3 4

Si el u nico tipo de operaci on que se realiza en un archivo es la de agregar registros entonces nunca se desperdiciar a espacio. La situaci on cambia si se permiten borrados o modicaciones de registros. Una modicaci on se puede ver como un borrado seguido de una adici on, por lo que no la estudiaremos a detalle.

Archivos de sonido, imagen o video.

Se pueden lograr grandes ganancias descartando la informaci on que resulte irrelevante.

Ejemplos: mp3, jpeg y mpeg.

Organizaci on de archivos para mejora del desempe no Compresi on de datos Compactaci on de archivos B usqueda y ordenamiento internos Ordenamiento por claves
106 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 107 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 108 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

Compactaci on de archivos

Programas y registros borrados

Problemas de la compactaci on

La compactaci on no se hace con frecuencia. Los programas que usen estos archivos deben ignorar los registros borrados. Una ventaja es que se puede recuperar un registro borrado siempre y cuando no se haya realizado una compactaci on. Si hay espacio disponible, la forma m as f acil de hacer la compactaci on es usando un segundo archivo (aunque no es necesario). La compactaci on tiene varios problemas. Si el archivo se modica con gran frecuencia entonces la compactaci on tambi en deber a ocurrir frecuentemente.

Un primer mecanismo para recuperar el espacio perdido por operaciones de borrado se llama compactaci on. Este busca a trav es del archivo aquel espacio en el que no haya datos y lo recupera.

Para ello se necesita una forma de saber si cierto espacio contiene o no datos.

Una forma de hacer esto es colocando un indicador o campo de borrado en el registro.

Si el programa que usa el archivo es interactivo entonces el usuario tendr a que esperar una cantidad considerable de tiempo para que se efect ue esta operaci on.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

109 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

110 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

111 / 464

Registros de longitud ja

Lista de registros disponibles

Pila de registros disponibles

Suponga que los registros son de longitud ja. Entonces cualquier registro cabe en el espacio liberado por uno borrado. Una forma de lograr esto es creando una lista ligada de registros disponibles. Como el orden en el que se encuentren estos registros es indistinto conviene utilizar el tipo de lista ligada m as sencillo de implementar. Cu al es?

Se necesita un m etodo para decidir inmediatamente si hay o no espacio reutilizable y, en su caso, saber d onde est a.

Se necesita una forma de indicar d onde est a el tope de la pila y cu ando no hay m as elementos en la pila. No podemos usar apuntadores porqu e? Pero podemos usar los n umeros de registro relativos para indicar d onde est a el siguiente elemento libre y el -1 para indicar que no hay m as elementos. Este indicador se puede guardar en un campo del registro (y el tope en la cabecera).

Por lo tanto, si sabemos d onde hay un espacio libre lo podemos reutilizar.

Una forma simple es la de buscar secuencialmente en el archivo hasta que encontremos un registro borrado.

Si el archivo es muy grande este proceso es demasiado lento.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

112 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

113 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

114 / 464

Registros de longitud variable

Fragmentaci on externa

Pol ticas de reuso de registros

Si los registros son de longitud variable:

Ya no podemos usar el n umero de registro relativo, as que debemos usar en su lugar la posici on en bytes del registro en el archivo.

Un problema nuevo es qu e hacer con el espacio que sobra al usar un registro disponible m as grande de lo necesario? La idea de usar registros de longitud variable era la de desaparecer este problema! Una opci on es colocar ese espacio extra de nuevo en la lista de espacio disponible. Puede ocurrir que ese espacio sea tan peque no que no sea utilizable. Este es un caso de fragmentaci on externa.

C omo decidimos cu al espacio libre utilizar para grabar un registro? Esto ya no es ciencia, sino m as bien arte. Algunas estrategias comunes son:
1 2 3

Adem as, necesitamos saber de qu e longitud es cada registro (aunque esa informaci on podr a ya existir en el registro).

En el primero que quepa (rst t). En el de menor tama no (best t). En el de mayor tama no (worst t).

Tampoco podemos usar cualquier registro libre sino s olo los que sean sucientemente grandes: la pila ya no nos ser au til.

Ninguna de ellas es mejor que las dem as para una situaci on arbitraria.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

115 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

116 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

117 / 464

Contenido

B usqueda y ordenamiento

Limitaciones

Dise no y especicaci on de estructuras de archivos Suponga que un archivo tiene n registros. La b usqueda secuencial tarda n. El ordenamiento secuencial tarda n2 . La b usqueda binaria tarda log n. El ordenamiento eciente tarda n log n. Todos son muy lentos con archivos. Estas operaciones debieran hacerse solamente en la memoria. Mantener un archivo ordenado es muy caro. El ordenamiento en memoria s olo sirve para archivos peque nos. Los m etodos ecientes de b usqueda y ordenamiento tienen serias limitaciones. La b usqueda binaria requiere de m as de dos accesos al disco.

Operaciones fundamentales de procesamiento de archivos

Almacenamiento secundario

Conceptos fundamentales de estructuras de archivos

Manipulando archivos con registros

Organizaci on de archivos para mejora del desempe no Compresi on de datos Compactaci on de archivos B usqueda y ordenamiento internos Ordenamiento por claves
Trimestre 09I 118 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 119 / 464 Francisco Zaragoza (UAM Azcapotzalco) Estructuras de archivos Trimestre 09I 120 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Condiciones para mejores m etodos


1

Contenido
Dise no y especicaci on de estructuras de archivos Operaciones fundamentales de procesamiento de archivos Almacenamiento secundario Conceptos fundamentales de estructuras de archivos Manipulando archivos con registros Organizaci on de archivos para mejora del desempe no Compresi on de datos Compactaci on de archivos B usqueda y ordenamiento internos Ordenamiento por claves
Estructuras de archivos Trimestre 09I 122 / 464

Ordenamiento por claves

Se debe cumplir al menos una de las siguientes:


3

Observe que no se necesita tener todo el registro para poder ordenarlo. Basta tener las llaves o claves. Un primer m etodo de mejora es:
1 2 3

No debe ser necesario reorganizar los registros en un archivo cada vez que se agregue un nuevo registro ( ndices y t ecnica de dispersi on). Debe estar asociado con una estructura que nos permita una mejora sustancial en la velocidad de reorganizaci on de un archivo ( arboles B , B + , B , etc).
4 5

Estudiaremos estos m etodos m as adelante.


6

Leer las llaves junto con los n umeros relativos de cada registro. Ordenar las llaves en memoria. Reescribir los registros en el nuevo orden.

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

121 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

123 / 464

Primer m etodo

Problemas de este m etodo

Soluci on para este m etodo

Archivo original ana sol Al principio parece que el m etodo funciona. Podemos ordenar archivos mucho m as grandes en la misma cantidad de memoria. Pero los registros se deben leer dos veces. La primera vez es en orden secuencial. uno 2 uno voz voz 4 Pero la segunda vez es en orden arbitrario. As que no funciona como esper abamos. C omo resolver este problema?

pez ana 6 sol 7

ola

uno

non

voz

res

non 3

voz 4

res 5

No reescribamos el archivo, sino que generemos un segundo archivo ndice. Este archivo contendr a la estructura generada en memoria. Cada uno de sus registros contendr a dos campos: la clave y el n umero relativo del registro original. Esto se puede hacer con una lectura secuencial del archivo original seguida de una escritura secuencial del archivo ndice. Esto s es m as r apido que la soluci on original.

Copia en la memoria pez ola uno 0 1 2 Ordenado en memoria ana non ola 6 3 1 Archivo nal

pez 0

res 5

sol 7

ana

non

ola

pez

res

sol

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

124 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

125 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

126 / 464

Archivo e ndice

Efectos secundarios

Observe que con este m etodo los registros no se mueven de su lugar. 6 ana Qu e pasar a si en alg un registro del archivo hubiera un indicador del n umero relativo de otro registro? 7 sol

Part II Grafos y sus aplicaciones

1 ola Al mover los registros el indicador ser a in util. 6 uno 2 Cuando un archivo contiene este tipo de referencias se dice que los registros est an jos (pinned) y si estas se pierden se dice que quedan colgando (dangling). 7 voz 4

Archivo original 0 pez Archivo ndice 0 ana 6

2 uno

3 non

4 voz

5 res

1 non 3

2 ola 1

3 pez 0

4 res 5

5 sol 7

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

127 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Estructuras de archivos

Trimestre 09I

128 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

129 / 464

Contenido

Objetos y conexiones

Mapas y caminos
B 5 6 7 3 4 6

Representaci on de grafos y aplicaciones Grafos (no dirigidos) Grafos dirigidos Muchos problemas cotidianos se formulan de manera natural por medio de objetos y las conexiones que haya entre ellos. Mapas y caminos. Laberintos. Circuitos el ectricos. Redes de computadoras. Redes sociales.

Recorridos de un grafo

15 9 A 9 1 4 7 8 3 2 A

Grafos con costos

La red del Metro


Trimestre 09I 130 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 131 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 132 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Laberintos

Circuitos el ectricos

Redes de computadoras

Tres amplicadores con transistores.

Un laberinto resuelto
Trimestre 09I 133 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 134 / 464

Redes tipo estrella y anillo


Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 135 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Grafos, v ertices y aristas


0 4

Dibujos de grafos

Dos dibujos de un grafo

Un grafo G = (V , E ) es una pareja ordenada de conjuntos de v ertices y aristas. Generalmente se representa a un grafo con un dibujo donde cada v ertice es un punto y cada arista es una l nea que une dos puntos. 5 4 7 2 6 Un bosque, un camino y un ciclo.
Trimestre 09I 136 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 137 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones

Todos los v ertices y aristas de G deben ser distintos (es decir, tener nombres distintos). La ubicaci on de los puntos y la forma de las l neas suele no importar, pues solamente representan relaciones. Pero a veces un grafo representa a un objeto geom etrico y en ese caso ambas cosas resultan ser importantes. 6

Cada arista une a dos v ertices.

A veces una arista une a un v ertice consigo mismo (lazo) o m as de una arista une a los mismos v ertices (paralelas). 7 2

Y a veces las aristas tienen costos.

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

138 / 464

Caminos y conexidad

Ciclos y arboles

Grafos y el n umero de aristas

Sean n = |V | y m = |E |. Un camino que comienza y termina en el mismo v ertice es un circuito. Un circuito que no repite v ertices es un ciclo. Un grafo que no tiene ciclos se llama bosque. Un bosque conexo se llama arbol. Un arbol que pasa por todos los v ertices de un grafo se llama abarcador.

Un camino es una secuencia de v ertices en la que cada dos v ertices consecutivos est an unidos por una arista.

Un grafo (sin aristas paralelas ni lazos) que tiene todas las aristas posibles (es decir, si m = 1 2 n(n 1)) se llama completo.

Un grafo es conexo si hay caminos entre cada pareja de v ertices.

Si un grafo no es conexo entonces tiene m as de una componente conexa.

Un grafo que tiene relativamente pocas aristas (es decir, si m n) se llama disperso. Un grafo que tiene relativamente muchas aristas (es decir, si m n2 ) se llama denso.

Un camino que no repite v ertices se llama camino simple.

Teorema
Un grafo es un arbol si y s olo si es conexo y tiene m = n 1.

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

139 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

140 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

141 / 464

Representaciones de un grafo

Matriz de adyacencia

Lectura de una matriz cuadrada

Hay al menos tres formas distintas de representar un grafo en un programa. 5 1

3 4

La matriz de adyacencia se utiliza para representar grafos densos.

int n; int a[MAXV][MAXV]; int i, j;

La lista de adyacencia se utiliza para representar grafos dispersos.

En ocasiones se usa la matriz de incidencia. 2 6 7

Las tres se pueden usar para representar los costos de las aristas.

A 0 1 2 3 4 5 6 7

0 0 1 0 1 1 0 0 0

1 1 0 1 0 0 0 0 0

2 0 1 0 1 0 0 0 0

3 1 0 1 0 1 0 0 0

4 1 0 0 1 0 0 0 0

5 0 0 0 0 0 0 1 0

6 0 0 0 0 0 1 0 1

7 0 0 0 0 0 0 1 0

scanf("%d", &n); for(i = 0; i < n; i++) for(j = 0; j < n; j++) scanf("%d", &a[i][j]);

8 0 1 0 1 1 0 0 0

1 0 1 0 0 0 0 0

0 1 0 1 0 0 0 0

1 0 1 0 1 0 0 0

1 0 0 1 0 0 0 0

0 0 0 0 0 0 1 0

0 0 0 0 0 1 0 1

0 0 0 0 0 0 1 0

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

142 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

143 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

144 / 464

Lectura de una matriz triangular

Listas de adyacencia

Lectura de una lista

int n, i, j; int a[MAXV][MAXV]; 0 0 : 1 3 4. 5 2 : 1 3. 3 : 0 2 4. 4 : 0 3. 5 : 6. 2 6 : 5 7. 7 : 6. 6 7 1 0 0 0 0 4 1 0 0 0 0 1 0 0 0 1 scanf("%d%d", &n, &m); for (i = 0; i < n; i++) inicializa(&a[i]); for (j = 0; j < m; j++) { scanf("%d%d", &u, &v); inserta(u, &a[v]); inserta(v, &a[u]); } 1 3 1 : 0 2. 8 0 1 2 3 4 0 5 6 8 1 2 3 4 0 3 6 7 int n, m, u, v, i, j; lista a[MAXV];

scanf("%d", &n); for(i = 0; i < n; i++) for(j = 0; j <= i; j++) if (i == j) a[i][j] = 0; else { scanf("%d", &a[i][j]); a[j][i] = a[i][j]; }

8 1 0 1 1 0 0 0

1 0 0 0 0 0

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

145 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

146 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

147 / 464

Matriz de incidencia

Lectura de una matriz rectangular

Contenido

0
7

int n, m, u, v, i, j; int a[MAXV][MAXE];

Representaci on de grafos y aplicaciones Grafos (no dirigidos) Grafos dirigidos


8

Recorridos de un grafo
9

I 0 1 2 3 4 5 6 7 scanf("%d%d", &n, &m); for (j = 0; j < m; j++) { scanf("%d%d", &u, &v); for (i = 0; i < n; i++) { if (i == u || i == v) a[i][j] = 1; else a[i][j] = 0; } } 8 0 1 2 3 4 0 5 6 8 1 2 3 4 0 3 6 7

01 1 1 0 0 0 0 0 0

12 0 1 1 0 0 0 0 0

23 0 0 1 1 0 0 0 0

34 0 0 0 1 1 0 0 0

40 1 0 0 0 1 0 0 0

03 1 0 0 1 0 0 0 0

56 0 0 0 0 0 1 1 0

67 0 0 0 0 0 0 1 1

Grafos con costos

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

148 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

149 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

150 / 464

Objetos y precedencias

Calles de un sentido

Secuenciaci on de tareas
IC IP

Otros problemas cotidianos se formulan por medio de objetos y las relaciones de precedencia que haya entre ellos. SB

ED

MN

Mapas con calles de un sentido.

Secuenciaci on de tareas.

IA

ARI

IO

Redes sociales jer arquicas. C DA

Flujos o tr aco de objetos.

Relaciones asim etricas. AA

Mapa del centro de la ciudad


Trimestre 09I 151 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 152 / 464

Diagrama de seriaci on de UEA


Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 153 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Redes sociales jer arquicas


0 4

Grafos dirigidos y arcos

Dos grafos dirigidos

Un grafo dirigido D = (V , A) es una pareja ordenada de conjuntos de v ertices y arcos. 5 4 7 2 6 5 1 3 3 Todos los v ertices y arcos son distintos. Cada arco va de un v ertice a otro. A veces un arco va de un v ertice a s mismo (lazo) o m as de un arco va de un mismo v ertice a otro (arcos paralelos). Y a veces los arcos tienen capacidades. 6 Uno fuertemente conexo y el otro no.
Trimestre 09I 154 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 155 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones

Arbol geneal ogico de los Buend a

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

156 / 464

Caminos dirigidos

Representaci on de grafos dirigidos

Matriz de adyacencia

0 Hay al menos tres formas de representar un grafo dirigido en un programa. La matriz de adyacencia se usa para representar grafos dirigidos densos. La lista de adyacencia se usa para representar grafos dirigidos dispersos. En ocasiones se usa la matriz de incidencia. Las tres se pueden usar para representar las capacidades de los arcos. 6 7 5 1 4 2 3

Un camino dirigido es una secuencia de v ertices en la que hay un arco de cada v ertice al siguiente.

Un grafo dirigido es fuertemente conexo si hay caminos entre cada pareja de v ertices.

Si un grafo dirigido no es fuertemente conexo entonces tiene m as de una componente fuertemente conexa.

A 0 1 2 3 4 5 6 7

0 0 0 0 0 1 0 0 0

1 1 0 0 0 0 0 0 0

2 0 1 0 0 0 0 0 0

3 1 0 1 0 0 0 0 0

4 0 0 0 1 0 0 0 0

5 0 0 0 0 0 0 0 0

6 0 0 0 0 0 1 0 0

7 0 0 1 0 0 0 1 0

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

157 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

158 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

159 / 464

Lectura de una matriz cuadrada

Lista de adyacencia

Lectura de una lista

0 0 : 1 3. 1 : 2. 5 1 4 2 6 7 3 2 : 3 7. 3 : 4. 4 : 0. 5 : 6. 6 : 7. 7 : nil.

int n; int a[MAXV][MAXV]; int i, j 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0

int n, m, u, v, i, j; lista a[MAXV];

scanf("%d", &n); for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &a[i][j]);

8 0 0 0 0 1 0 0 0

1 0 0 0 0 0 0 0

scanf("%d%d", &n, &m); for (i = 0; i < n; i++) inicializa(&a[i]); for (j = 0; j < m; j++) { scanf("%d%d", &u, &v); inserta(u, &a[v]); }

8 0 1 2 3 4 0 5 6 2

9 1 2 3 4 0 3 6 7 7

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

160 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

161 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

162 / 464

Matriz de incidencia

Lectura de una matriz rectangular

Contenido

Representaci on de grafos y aplicaciones

0
8

int n, m, u, v, i, j; int a[MAXV][MAXA];

5 1

Recorridos de un grafo B usqueda en profundidad B usqueda en amplitud Componentes conexas y biconexas Uni on y pertenencia Ordenamiento topol ogico Grafos con costos

6
9

I 0 1 2 3 4 5 6 7

01 -1 +1 0 0 0 0 0 0

12 0 -1 +1 0 0 0 0 0

23 0 0 -1 +1 0 0 0 0

34 0 0 0 -1 +1 0 0 0

40 +1 0 0 0 -1 0 0 0

03 -1 0 0 +1 0 0 0 0

56 0 0 0 0 0 -1 +1 0

67 0 0 0 0 0 0 -1 +1

27 0 0 -1 0 0 0 0 +1

scanf("%d%d", &n, &m); for (j = 0; j < m; j++) { scanf("%d%d", &u, &v); for (i = 0; i < n; i++) a[i][j] = 0; a[u][j] = -1; a[v][j] = +1; }

8 0 1 2 3 4 0 5 6 2

9 1 2 3 4 0 3 6 7 7

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

163 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

164 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

165 / 464

Recorrido de un grafo

B usqueda en profundidad

Ejemplo de profundidad (1)

(0,-)

(0,1)

Cuando se trabaja con grafos uno se encuentra con preguntas comunes. El primer m etodo se puede describir f acilmente de forma recursiva. Al inicio se marcan todos los v ertices del grafo como no vistos. Luego, para cada v ertice no visto se le marca como ya visto y se visita recursivamente a todos sus vecinos no vistos.

Tiene ciclos? Es conexo? Cu ales son sus componentes conexas?

(5,-) (1,-) (4,-) (2,-) (6,-) (7,-) (3,-)

(5,-) (1,-) (4,-) (2,-) (6,-) (7,-) (3,-)

Para responder a estas preguntas se debe poder recorrer un grafo de forma met odica, de modo que se visiten todos sus v ertices y aristas (de preferencia una sola vez).

Estos algoritmos pueden ser recursivos o iterativos y s olo dependen un poco de la representaci on.

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

166 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

167 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

168 / 464

Ejemplo de profundidad (2)

Ejemplo de profundidad (3)

Ejemplo de profundidad (4)

(0,1)

(0,1)

(0,1)

(0,1)

(0,1)

(0,1)

(5,-) (5,-) (4,-) (2,3) (7,-) (6,-) (3,-)

(5,-)

(5,-) (1,2) (4,-) (2,3) (7,-) (6,-) (3,4) (1,2) (4,-) (2,3) (7,-) (3,4)

(5,-) (1,2) (4,5) (2,3) (6,-) (7,-) (3,4)

(5,-) (1,2) (4,5) (2,3) (6,-) (7,-) (3,4)

(1,2)

(4,-)

(3,-)

(1,2)

(2,-)

(6,-)

(7,-)

(6,-)

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

169 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

170 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

171 / 464

Ejemplo de profundidad (5)

Ejemplo de profundidad (6)

Implementaci on de profundidad

(0,1)

(0,1)

(0,1)

(0,1)

Se necesita un arreglo visto que indique si el v ertice correspondiente ha sido visto o no. El valor de no visto puede ser 0 mientras que el de visto puede ser el del orden de visita.

(5,-) (4,5) (2,3) (7,-) (6,7) (7,-) (6,7) (7,8) (2,3) (2,3) (3,4) (4,5) (4,5) (1,2) (3,4) (3,4) (1,2) El resto depende de la representaci on.

(5,6)

(5,6)

(5,6)

(1,2)

(4,5)

(3,4)

(1,2)

(2,3)

(6,-)

(7,-)

(6,-)

orden = 0; for (k = 0; k < n; k++) visto[k] = 0; for (k = 0; k < n; k++) if (visto[k] == 0) visita(k);

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

172 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

173 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

174 / 464

Profundidad con listas

Profundidad con matriz

Profundidad no recursiva
Se necesita una pila (cualquier representaci on).

En este caso la b usqueda en profundidad toma tiempo m + n. void visita(int k) { int t; visto[k] = ++orden; for (t = 0; t < n; t++) if (a[k][t] != 0) if (visto[t] == 0) visita(t); }

En este caso la b usqueda en profundidad toma tiempo

n2 .

void visita(int k) { nodo *t;

visto[k] = ++orden; for (t = a[k]; t != NULL; t = t->sig) if (visto[t->v] == 0) visita(t->v);

void visita(int k) { nodo *t; mete(k, pila); while (!vacia(pila)) { k = saca(pila); visto[k] = ++orden; for (t = a[k]; t != NULL; t = t->sig) if (visto[t->v] == 0) { mete(t->v, pila); visto[t->v] = -1; /* en pila */ } } }
Trimestre 09I 176 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 177 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

175 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Observaciones de profundidad

Profundidad en grafos dirigidos

Ejemplo de profundidad dirigida 1

(0,-) Los algoritmos de b usqueda en profundidad para grafos se pueden usar sin cambios en grafos dirigidos. Lo que cambia es la estructura generada. Los arcos solamente se visitan una vez. Los arcos que no pertenecen al bosque de b usqueda en profundidad pueden apuntar hacia arriba, hacia abajo o ser transversales. (6,-)

(0,1)

Con este m etodo se visita cada v ertice una vez y cada arista dos veces. (5,-) (1,-) (4,-) (2,-) (7,-) (6,-) (3,-) (5,-) (1,-) (4,-) (2,-) (7,-) (3,-)

El orden de visita de los v ertices y aristas depende de la representaci on.

Las aristas que visitan por primera vez v ertices no vistos forman el bosque de b usqueda en profundidad.

Las dem as aristas apuntan hacia arriba.

Este m etodo es una generalizaci on del recorrido en preorden de un arbol.

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

178 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

179 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

180 / 464

Ejemplo de profundidad dirigida 2

Ejemplo de profundidad dirigida 3

Ejemplo de profundidad dirigida 4

(0,1) (0,1) (0,1) (0,1) (0,1)

(0,1)

(5,-) (5,-) (3,-) (1,2) (4,-) (2,3) (6,-) (7,-) (6,-) (7,-) (6,-) (7,6) (6,-) (2,3) (2,3) (3,4) (1,2) (4,5) (3,4) (1,2) (4,5) (3,4) (1,2) (4,5) (5,-) (5,-) (5,7)

(5,-)

(1,2) (4,-) (2,3) (7,-)

(3,-)

(1,2) (4,-)

(3,4)

(2,-)

(2,3) (7,6)

(6,-)

(7,-)

(6,-)

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

181 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

182 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

183 / 464

Ejemplo de profundidad dirigida 5

Contenido

B usqueda en amplitud

(0,1)
7

(0,1) Representaci on de grafos y aplicaciones


8

(5,7) (3,4)

(5,7)

Si en el m etodo de b usqueda en profundidad no recursivo se reemplaza la pila por una cola se obtiene un recorrido distinto. A este se le llama b usqueda en amplitud. Este m etodo es parecido al de recorrer un arbol por niveles a partir de la ra z.

(1,2) (4,5) (2,3) (7,6)


9

(3,4)

(1,2) (4,5)

(2,3) Grafos con costos

Recorridos de un grafo B usqueda en profundidad B usqueda en amplitud Componentes conexas y biconexas Uni on y pertenencia Ordenamiento topol ogico

(6,8)

(7,6)

(6,8)

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

184 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

185 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

186 / 464

Ejemplo de amplitud 1

Ejemplo de amplitud 2

Ejemplo de amplitud 3

(0,-)

(0,1)

(0,1)

(0,1)

(0,1)

(0,1)

(5,-) (5,-) (4,-) (2,-) (7,-) (6,-) (3,-)

(5,-)

(5,-) (1,2) (4,-) (2,-) (7,-) (6,-) (3,-) (1,2) (4,-) (2,-) (7,-) (3,3)

(5,-) (1,2) (4,4) (2,-) (6,-) (7,-) (3,3)

(5,-) (1,2) (4,4) (2,5) (6,-) (7,-) (3,3)

(1,-)

(4,-)

(3,-)

(1,-)

(2,-)

(6,-)

(7,-)

(6,-)

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

187 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

188 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

189 / 464

Ejemplo de amplitud 4

Ejemplo de amplitud 5

Ejemplo de amplitud dirigida 1

(0,1)

(0,1)

(0,1)

(0,1)

(0,-)

(0,1)

(5,)

(5,6) (4,4) (4,-) (2,-) (6,-) (7,-) (6,-) (2,5) (7,-) (6,7) (7,-) (6,7) (7,8) (2,5) (2,5) (3,3) (4,4) (4,4) (1,-) (3,-) (1,-) (4,-) (1,2) (3,3) (1,2) (3,3)

(5,6)

(5,6)

(5,-)

(5,-) (3,-)

(1,2)

(4,4)

(3,3)

(1,2)

(2,5)

(2,-) (7,-)

(6,-)

(7,-)

(6,-)

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

190 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

191 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

192 / 464

Ejemplo de amplitud dirigida 2

Ejemplo de amplitud dirigida 3

Ejemplo de amplitud dirigida 4

(0,1)

(0,1)

(0,1)

(0,1)

(0,1)

(0,1)

(5,-) (3,3) (1,2) (4,-) (2,4) (6,-) (7,-) (6,-) (7,-) (2,4) (3,3) (1,2) (4,5) (3,3)

(5,-)

(5,-)

(5,-)

(5,-) (1,2) (4,5) (2,4) (6,-) (7,6) (3,3)

(5,7) (1,2) (4,5) (2,4) (6,-) (7,6) (3,3)

(1,2) (4,-) (2,-) (7,-)

(3,-)

(1,2) (4,-)

(2,-)

(6,-)

(7,-)

(6,-)

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

193 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

194 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

195 / 464

Ejemplo de amplitud dirigida 5

Contenido

Componentes conexas

(0,1)
7 8

(0,1)

Representaci on de grafos y aplicaciones Tanto la b usqueda en profundidad como en amplitud se pueden usar para encontrar las componentes conexas de un grafo. Las u nicas modicaciones que se necesitan son que visita enumere el v ertice que se acaba de visitar y que la llamada no recursiva a visita separe las listas de v ertices. Esto se puede hacer con un arreglo inver que tome los valores inver[orden] = k (el negativo en la llamada no recursiva).

(5,7) (3,3)

(5,7)

(1,2) (4,5) (2,4) (7,6)


9

(3,3)

(1,2) (4,5)

(2,4)

Recorridos de un grafo B usqueda en profundidad B usqueda en amplitud Componentes conexas y biconexas Uni on y pertenencia Ordenamiento topol ogico Grafos con costos

(6,8)

(7,6)

(6,8)

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

196 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

197 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

198 / 464

Implementaci on de componentes
A F A veces es u til revisar que un grafo no tiene cuellos de botella o puntos de fallo u nicos. E B D L J K Componentes biconexas de un grafo.
Trimestre 09I 199 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 200 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 201 / 464

Componentes biconexas

Ejemplo de componentes biconexas

A G J H I M K C G

orden = 0; for (k = 0; k < n; k++) visto[k] = 0; for (k = 0; k < n; k++) if (visto[k] == 0) { visita(k); inver[visto[k]] = -inver[visto[k]]; }

H I

Un punto de articulaci on es un v ertice de un grafo que al borrarlo aumenta el n umero de componentes conexas del grafo. C E F L M Un grafo que no tiene puntos de articulaci on se llama biconexo. En un grafo biconexo cada pareja de v ertices distintos est an conectados por al menos dos caminos disjuntos.

void visita(int k) { nodo *t; visto[k] = ++orden; inver[orden] = k; for (t = a[k]; t != NULL; t = t->sig) if (visto[t->v] == 0) visita(t->v); }

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Algoritmo de componentes biconexas

Implementaci on de biconexas

Contenido

Modiquemos la b usqueda en profundidad para calcular las componentes biconexas.


8

int visita(int k) { nodo *t; int temp, alto;


7

Representaci on de grafos y aplicaciones

Un v ertice x no es de articulaci on si cada uno de sus hijos y tiene alg un descendiente conectado a un punto m as alto que x .

Excepto si es la ra z, que es un punto de articulaci on si tiene dos o m as hijos.

Hagamos que visita devuelva el v ertice m as alto del arbol encontrado.

Recorridos de un grafo B usqueda en profundidad B usqueda en amplitud Componentes conexas y biconexas Uni on y pertenencia Ordenamiento topol ogico
9

visto[k] = ++orden; alto = orden; for (t = a[k]; t != NULL; t = t->sig) if (visto[t->v] == 0) { temp = visita(t->v); if (temp < alto) alto = temp; if (temp >= visto[k]) articulacion(k); } else if (visto[t->v] < alto) alto = visto[t->v]; return alto; }
Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 203 / 464

Grafos con costos

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

202 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

204 / 464

Uni on y pertenencia

Gr acas din amicas

Bosque de arboles

En algunas variantes del problema de conexidad lo u nico que se quiere saber es si un cierto v ertice est a conectado a otro.

Hasta ahora todas las gr acas que hemos considerado han sido est aticas (no cambian). El algoritmo que estudiaremos funciona con gr acas a las que se les agregan aristas. A la operaci on de agregar una arista la llamaremos uni on y a la pregunta de conexidad la llamaremos pertenencia. Estos nombres vienen de la versi on del problema con conjuntos.

La estructura que usaremos para representar a los subconjuntos es un bosque de arboles. Al principio cada elemento forma su propio subconjunto y queda representado por un arbol con un solo v ertice. Cuando se unen dos subconjuntos, sus arboles se juntan en un solo arbol. Para vericar la pertenencia se revisa si los dos elementos est an en el mismo arbol.

Otro problema id entico es el siguiente: se tiene una familia de subconjuntos disjuntos y se quiere saber si dos elementos est an en el mismo subconjunto.

En el problema de gr acas los subconjuntos corresponden con las componentes conexas.

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

205 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

206 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

207 / 464

Ejemplo de uni on y pertenencia 1

Ejemplo de uni on y pertenencia 2

Ejemplo de uni on y pertenencia 3

1 1 1 5 2 4 3 4 Se a nade la arista (4, 5). 3 4 3 4 3 Se a nade la arista (1, 5). 5 4 5 2 5 2 3 4 5 5 2 2 3 5 2 1 4 1 2 1

1 3

Gr aca sin aristas.

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

208 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

209 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

210 / 464

Ejemplo de uni on y pertenencia 4

Ejemplo de uni on y pertenencia 5

Ejemplo de uni on y pertenencia 6

1 1 1 2 5 5 4 4 Se a nade la arista (4, 1). 3 5 3 4 3 4 5 3 2 2 2 1

1 5

1 1 2 5 4 4 3 Se a nade la arista (1, 3). 3 2 4 5

1 2

Se a nade la arista (3, 2).

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

211 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

212 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

213 / 464

Representaci on de los arboles

Contenido

Grafos dirigidos ac clicos

Representaci on de grafos y aplicaciones En muchas aplicaciones es importante que un grafo dirigido no contenga ciclos dirigidos. Por ejemplo, si los v ertices representan actividades y los arcos precedencias entonces la presencia de un ciclo dirigido implica una inconsistencia. Se les llama grafos dirigidos ac clicos (en ingl es directed acyclic graph o DAG).

Usaremos un arreglo padre donde cada entrada se nala al padre.


8

Al inicio el arreglo satisface padre[i] = i.

La ra z del arbol que contiene a un elemento i se encuentra iterando i = padre[i].

Dos elementos est an en el mismo arbol si tienen la misma ra z.

Para hacer la uni on de dos elementos buscamos sus ra ces i, j y si son distintas hacemos padre[i] = j.
9

Recorridos de un grafo B usqueda en profundidad B usqueda en amplitud Componentes conexas y biconexas Uni on y pertenencia Ordenamiento topol ogico Grafos con costos

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

214 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

215 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

216 / 464

Ejemplo de grafo ac clico

Ordenamiento topol ogico

Contenido

A F K D M A veces lo que interesa es un orden topol ogico inverso. La b usqueda en profundidad recursiva encuentra un orden topol ogico inverso. C omo se halla un orden normal?
9

H Los v ertices de un grafo ac clico pueden procesarse de modo que ning un v ertice se procese antes que otro que apunte a el. L
8 7

I Representaci on de grafos y aplicaciones Recorridos de un grafo

B A esto se le llama un orden topol ogico (y generalmente hay m as de uno de ellos).

D E

H Grafos con costos B usqueda por prioridad Arboles abarcadores de costo m nimo Caminos m as cortos

B usqueda en profundidad en un grafo ac clico.

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

217 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

218 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

219 / 464

Grafos con costos

Ejemplo de grafo con costos

B usqueda por prioridad

A 4 F 1 4 4 1 H G C 3 2 3 B E 2 3 D 2 3 Si en el m etodo de b usqueda en profundidad no recursivo se reemplaza la pila por una cola de prioridad se obtiene un recorrido distinto. A este se le llama b usqueda por prioridad. La prioridad se le asigna a los v ertices. Recordemos que una cola de prioridad se puede implementar con un mont culo.

En muchas aplicaciones se desea elegir algunas aristas de un grafo para satisfacer algunas restricciones.

El factor de decisi on suele estar asociado con un cierto costo de las aristas.

Este costo puede representar distancia, tiempo, benecio, etc.

Es muy f acil almacenar el costo en cualquiera de las representaciones vistas de grafos.

c A B C D E F G H

A 3 3 2 4 -

B 3 3 1 -

C 3 3 2 1

D 3 3 2 -

E 2 2 2 -

F 4 1 4 -

G 4 4

H 1 4 -

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

220 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

221 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

222 / 464

Ejemplo de b usqueda por prioridad 1


0 0

Ejemplo de b usqueda por prioridad 2


0

Ejemplo de b usqueda por prioridad 3


0 0

2 6 4 1 5

2 6

2 6 4 1 1

2 6 4 1

2 6 4 1

7 [(2, 0), (3, 0), (4, 0), (6, 0)] [(3, 0), (4, 0), (5, 2), (6, 0)] [(1, 3), (4, 0), (5, 2), (6, 0)].

7 [(1, 3), (4, 0), (5, 2), (6, 0)] [(4, 0), (5, 2), (6, 0), (7, 1)] [(5, 2), (6, 0), (7, 1)].

Cola de prioridad [(0, )] [(2, 0), (3, 0), (4, 0), (6, 0)].
Trimestre 09I 223 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

224 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

225 / 464

Ejemplo de b usqueda por prioridad 4


0
7

Contenido

Arboles abarcadores m nimos

0 Representaci on de grafos y aplicaciones Recorridos de un grafo

2 6
9 8

Recordemos que un arbol abarcador es un arbol que usa todos los v ertices de un grafo. Si las aristas tienen costos le asignaremos a cada arbol abarcador como costo la suma de los costos de las aristas que lo forman. Un grafo conexo suele tener m as de un arbol abarcador. Nos interesa encontrar un arbol abarcador de costo m nimo. Aplicaci on: Conexi on a costo m nimo. Dos algoritmos para resolver este problema.

4 1 Grafos con costos B usqueda por prioridad Arboles abarcadores de costo m nimo Caminos m as cortos

Cola de prioridad [(5, 2), (6, 0), (7, 1)] [(6, 0), (7, 1)] [(7, 1)].
Trimestre 09I 226 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 227 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 228 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Algoritmo de Prim
A 4 F B E 2 2 3 C G H 4 1 G 4 3 3 4 C G H 4 1 3 1 E 1 4 2 B 2 3 2 D F 2 D 3 3 4 3 F B 1 4 3 A 4

Ejemplo del algoritmo de Prim 1

Ejemplo del algoritmo de Prim 2


A 3 3 E 2 3 C 1 H G 4 1 2 2 D F B 1 4 3 C H [(D , E , 2), (C , E , 2), (B , A, 3), (F , A, 4)] [(C , E , 2), (B , A, 3), (F , A, 4)] [(H , C , 1), (B , A, 3), (F , A, 4)].
Trimestre 09I 230 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 231 / 464

A 4 3 E 2 3 2 2 3 D

El algoritmo de Prim construye un arbol abarcador de costo m nimo usando la b usqueda por prioridad.

La prioridad de cada v ertice viene dada por el costo m nimo de las aristas que lo unan a los v ertices ya explorados.

La prioridad de los v ertices puede cambiar a lo largo de la ejecuci on del algoritmo.

Esto necesita una estructura de datos que pueda actualizar la prioridad. [(A, , 0)] [(E , A, 2), (B , A, 3), (D , A, 3), (F , A, 4)] [(D , E , 2), (C , E , 2), (B , A, 3), (F , A, 4)].
Trimestre 09I 229 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Ejemplo del algoritmo de Prim 3


A A 3 3 2 E 2 3 C 1 H 1 4 G 3 C 4 1 H 2 D F B 4 3 E 2 3 2 2 3 D

Ejemplo del algoritmo de Prim 4


A 4 F B 1 4 G 3 C 4 1 H [(F , B , 1), (G , H , 4)] [(G , H , 4)] [].
232 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 233 / 464

Algoritmo de Kruskal

3 3 E 2 3 2 2 D

El algoritmo de Kruskal construye un arbol abarcador m nimo con uni on y pertenencia. Al principio cada v ertice forma su propia componente conexa. Las aristas se ordenan crecientemente por costo y se consideran en ese orden. Si los dos v ertices de una arista est an en diferentes componentes conexas se hace la uni on y se agrega la arista al arbol abarcador, en caso contrario se ignora.

[(H , C , 1), (B , A, 3), (F , A, 4)] [(B , A, 3), (F , A, 4), (G , H , 4)] [(F , B , 1), (G , H , 4)].
Trimestre 09I

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

234 / 464

Ejemplo del algoritmo de Kruskal 1


A A 3 4 D F B E 2 3 4 G 4 C G H 4 1 1 3 3 C H 1 E 2 3 1 3 4 C G H ED, EC, AD, AB, BC, DC, FA, GH, FG.
Trimestre 09I 236 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 237 / 464

Ejemplo del algoritmo de Kruskal 2


A A 3 4 D B F 3 2 2 3 D 3 2 2 3 4 4 D B E 2 3 4 1 1 3 4 C G H 4 1 2 F 3 2 D B E 2 3 1 3 4 C 1 H CH, AE, ED, EC, AD, AB, BC, DC, FA, GH, FG.
Trimestre 09I 235 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones

Ejemplo del algoritmo de Kruskal 3


A

A 3 3 2 2

4 3 2 E 2 2 F

FB, CH, AE, ED, EC, AD, AB, BC, DC, FA, GH, FG.

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Ejemplo del algoritmo de Kruskal 4


A 3 3 2 E 2 3 C 1 H El algoritmo de Prim se ejecuta en tiempo (m + n) log n. El algoritmo de Kruskal se ejecuta en tiempo m log m + n log n. 2 D Los empates que ocurran se pueden resolver de cualquier forma y producir an diversos arboles abarcadores m nimos. En ambos algoritmos puede haber empates.
8 7

Observaciones de ambos algoritmos

Contenido

Representaci on de grafos y aplicaciones Recorridos de un grafo

Ambos algoritmos pueden encontrar arboles abarcadores m aximos.

Grafos con costos B usqueda por prioridad Arboles abarcadores de costo m nimo Caminos m as cortos

AB, BC, DC, FA, GH, FG.


Trimestre 09I 238 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 239 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 240 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Caminos m as cortos

Algoritmo de Dijkstra

Ejemplo del algoritmo de Dijkstra 1


(A, 0) 4 (F , ) 1 4 3 (B , ) 2 3 2 2 (E , ) 3 (C , ) 3 (D , ) (F , 4) 1 4 3 4 3 (B , 3) 2 2 2 (E , 2) 3 (A, 0) 3 (D , 3)

Si un grafo es conexo entonces todos sus v ertices est an conectadas por caminos.

El algoritmo de Dijkstra genera los caminos m as cortos desde un v ertice inicial a todos los dem as usando la b usqueda por prioridad. La prioridad de cada v ertice es el costo m nimo de un camino a el desde el v ertice inicial usando s olo los v ertices ya explorados. Al principio el v ertice inicial tiene prioridad 0 y todos los dem as tienen prioridad +. Cada que se explora un v ertice se actualizan las prioridades de sus vecinos no explorados.

Es probable que cada pareja de v ertices est e conectada por m as de un camino.

Si a cada camino le asignamos un costo igual a la suma de los costos de las aristas que lo forman nos interesa encontrar un camino de costo m nimo o camino m as corto.

Si todos los costos son iguales a 1 entonces ya sabemos como resolver este problema.

4 (G , )

(H , )

4 (G , )

(C , ) (H , ) [(A, , 0)] [(E , A, 2), (B , A, 3), (D , A, 3), (F , A, 4)] [(B , A, 3), (D , A, 3), (C , E , 4), (F , A, 4)].

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

241 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

242 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

243 / 464

Ejemplo del algoritmo de Dijkstra 2


(A, 0) (A, 0) 3 3 2 2 (B , 3) 1 3 (C , 4) 1 (H , ) (H , ) (H , 5) (H , 5) [(C , E , 4), (F , A, 4)] [(F , A, 4), (H , C , 5)] [(H , C , 5), (G , F , 8)].
Trimestre 09I 244 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 245 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Ejemplo del algoritmo de Dijkstra 3


(A, 0) 3 4 4 (D , 3) (B , 3) 1 2 3 4 (G , 8) 4 (C , 4) (G , 8) 4 1 1 3 3 3 4 (C , 4) 4 (G , ) [(H , C , 5), (G , F , 8)] [(G , F , 8)] [].
Grafos y sus aplicaciones Trimestre 09I 246 / 464

Ejemplo del algoritmo de Dijkstra 4


(A, 0) 3 4 (D , 3) (B , 3) 1 2 (F , 4) 3 2 2 (E , 2) 3 (C , 4) (H , 5) 3 2 2 (E , 2) (F , 4) 2 (E , 2) (B , 3) 3 2 3 3 (D , 3) (A, 0)

(A, 0)

4 4 (D , 3) (F , 4) 2 1 2 3 1 3 4 (C , 4) 4 (G , ) 1 2 3 (E , 2) 3 2 (D , 3) (F , 4)

(F , 4) 2 4 (E , 2)

(B , 3)

(D , 3)

(F , 4)

(E , 2)

(B , 3)

(C , 4)

4 (G , )

(H , )

4 (G , )

[(B , A, 3), (D , A, 3), (C , E , 4), (F , A, 4)] [(D , A, 3), (C , E , 4), (F , A, 4)] [(C , E , 4), (F , A, 4)].

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Otro ejemplo de Dijkstra 1


(A, 0) 3 5 (D , 3) (B , 3) 1 3 3 1 (C , 4) 4 (G , ) 1 (H , ) 3 1 4 (C , 5) 4 (G , ) 1 (H , ) 3 3 4 1 (H , ) [(B , A, 3), (D , A, 3), (C , E , 5), (F , A, 5)] [(D , A, 3), (C , B , 4), (F , B , 4)] [(C , B , 4), (F , B , 4)].
Trimestre 09I 247 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 248 / 464

Otro ejemplo de Dijkstra 2


(A, 0) 3 5 (D , 3) (B , 3) 1 (E , 2) 2 (F , 4) 3 (D , 3) 2 3 5 (F , 4) 1 4 4 (G , ) 1 1 3 (B , 3) 3 3 2 2 (E , 2) (A, 0)

Otro ejemplo de Dijkstra 3


(A, 0) 3 2 2 (E , 2) 3 (C , 4) (H , ) 4 (G , ) 1 (D , 3) (F , 4) 1 4 1 5 3 (B , 3) 3 2 2 (E , 2) 3 (C , 4) (H , 5) [(C , B , 4), (F , B , 4)] [(F , B , 4), (H , C , 5)] [(H , C , 5), (G , F , 8)].
Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 249 / 464

(A, 0)

(A, 0) 3 (D , 3)

5 3 2 (F , 5) (E , 2) 2

(F , ) 3 (C , )

(B , )

(D , ) (F , 5)

(B , 3)

(E , )

4 (G , )

(C , )

(H , )

4 (G , )

[(A, , 0)] [(E , A, 2), (B , A, 3), (D , A, 3), (F , A, 5)] [(B , A, 3), (D , A, 3), (C , E , 5), (F , A, 5)].

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Otro ejemplo de Dijkstra 4


(A, 0) 3 3 2 (D , 3) (E , 2) 3 (C , 4) 1 (H , 5) 2

Observaciones de Dijkstra

Todos los caminos m as cortos

(A, 0)

(F , 4) 3

(B , 3)

(D , 3)

(F , 4)

(E , 2)

(B , 3)

El algoritmo de Dijkstra construye un arbol de caminos m as cortos con ra z en el v ertice inicial. Este arbol no es u nico. El algoritmo de Dijkstra se ejecuta en tiempo (m + n) log n usando listas de adyacencia y en tiempo n2 usando matrices de adyacencia.

A veces queremos encontrar las longitudes (o costos) de los caminos ertices de un grafo. m as cortos entre todas las parejas de v Podemos hacerlo usando el algoritmo de Dijkstra n veces, una desde cada v ertice. Esto se ejecuta en tiempo n(m + n) log n usando listas de adyacencia y en tiempo n3 usando matrices de adyacencia. Hay una forma m as sencilla.

(C , 4)

(G , 8) 4

(H , 5)

(G , 8) 4

[(H , C , 5), (G , F , 8)] [(G , F , 8)] [].


Trimestre 09I 250 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 251 / 464 Francisco Zaragoza (UAM Azcapotzalco) Grafos y sus aplicaciones Trimestre 09I 252 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Algoritmo de Floyd

Implementaci on de Floyd

Ejemplo del algoritmo de Floyd 1

Suponga que los v ertices est an numerados del 1 al n y queremos responder la siguiente pregunta:

Se comienza con una matriz de adyacencia a con los costos de las aristas (o n umeros muy grandes donde no las haya).

Paso 0

Paso 1

Paso 2

Cu al es la longitud a(u , v , i ) del camino m as corto del v ertice u al v usando s olo v ertices intermedios con n umeros i ?

Se termina con las longitudes de los caminos m as cortos.

Observe que a(u , v , 0) es el costo de la arista uv si u y v son adyacentes o bien +.

Si i > 0 entonces a(u , v , i ) es el menor de a(u , v , i 1) y a(u , i , i 1) + a(i , v , i 1).

Porqu e?

for (i = 0; i < n; i++) for (u = 0; u < n; u++) for (v = 0; v < n; v++) { t = a[u][i] + a[i][v]; if (t < a[u][v]) a[u][v] = t; }

0 3 3 2 4 -

3 0 3 1 -

3 0 3 2 1

3 3 0 2 -

2 2 2 0 -

4 1 0 4 -

4 0 4

1 4 0

0 3 3 2 4 -

3 0 3 6 5 1 -

3 0 3 2 1

3 6 3 0 2 7 -

2 5 2 2 0 6 -

4 1 7 6 0 4 -

4 0 4

1 4 0

0 3 6 3 2 4 -

3 0 3 6 5 1 -

6 3 0 3 2 4 1

3 6 3 0 2 7 -

2 5 2 2 0 6 -

4 1 4 7 6 0 4 -

4 0 4

1 4 0

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

253 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

254 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

255 / 464

Ejemplo del algoritmo de Floyd 2

Contenido

Paso 6

Paso 7

Paso 8

Part III
10

0 3 4 3 2 4 8 5

3 0 3 6 5 1 5 4

4 3 0 3 2 4 8 1

3 6 3 0 2 7 + 4

2 5 2 2 0 6 + 3

4 1 4 7 6 0 4 5

8 5 8 + + 4 0 4

5 4 1 4 3 5 4 0

0 3 4 3 2 4 8 5

3 0 3 6 5 1 5 4

4 3 0 3 2 4 8 1

3 6 3 0 2 7 + 4

2 5 2 2 0 6 + 3

4 1 4 7 6 0 4 5

8 5 8 + + 4 0 4

5 4 1 4 3 5 4 0

0 3 4 3 2 4 8 5

3 0 3 6 5 1 5 4

4 3 0 3 2 4 5 1

3 6 3 0 2 7 8 4

2 5 2 2 0 6 7 3

4 1 4 7 6 0 4 5

8 5 5 8 7 4 0 4

5 4 1 4 3 5 4 0

Arboles AVL

Arboles balanceados Arboles binarios de b usqueda Arboles AVL Arboles 2-3-4 Arboles rojinegros

Francisco Zaragoza (UAM Azcapotzalco)

Grafos y sus aplicaciones

Trimestre 09I

256 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Trimestre 09I

257 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Trimestre 09I

258 / 464

Arboles binarios de b usqueda

Un ejemplo de arbol binario de b usqueda

Otro ejemplo de arbol binario de b usqueda


A A Q Q D A D A D A D A D A D

Q W E

E R

W F Q Q F G F G F G F G

Recordemos que un arbol binario de b usqueda es un arbol binario donde cada nodo tiene una clave. Q E R W

La clave de un nodo es mayor que la clave de su hijo izquierdo y es menor que la de su hijo derecho.

Las operaciones de b usqueda e inserci on son muy sencillas.

E Y I R

W Y A

E I R

W Y

H J

H J K

El problema es que un arbol binario de b usqueda puede quedar desbalanceado.

Insertando Q, W, E, R, Y, I, A Insertando A, D, F, G, H, J, K
Trimestre 09I 259 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 260 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 261 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Contenido
+ 0 + 0 0 * + 0 0 0 + 0 0 0 + 0 0 Arboles que s y no son AVL
Trimestre 09I 262 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 263 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 264 / 464

Arboles AVL Ejemplos de arboles AVL


0 0 0 -

0 Una soluci on al problema de creaci on de arboles binarios degenerados es la de reorganizar los nodos de un arbol conforme se van haciendo operaciones. 0 0 Los arboles AVL cumplen la propiedad de que las alturas de los dos sub arboles que comparten una ra z dieren a lo mucho en 1. 0 0 Estos arboles y sus operaciones fueron inventados por Adelson-Velsky y Landis. Arboles balanceados de tipo 1. -

10

Arboles balanceados Arboles binarios de b usqueda Arboles AVL Arboles 2-3-4 Arboles rojinegros

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Observaciones sobre arboles AVL

Contenido

Arboles 2-3-4

La b usqueda, inserci on y el borrado en arboles AVL inician de la misma forma que los arboles binarios de b usqueda.
10

Para entender mejor los arboles rojinegros, primero estudiaremos los arboles 2-3-4. Cada nodo de un arbol 2-3-4 puede tener una, dos o tres claves. Esto signica dos, tres o cuatro hijos, respectivamente. Un nodo con k claves dene k + 1 intervalos (es por eso que tiene k + 1 hijos). La b usqueda en estos arboles es muy parecida a la de los arboles binarios.

La diferencia es que al descubrir un desbalance se debe realizar una o m as rotaciones para recuperar el balance.

La altura m axima de un arbol AVL con n nodos es de aproximadamente 1.44 log n.

Arboles balanceados Arboles binarios de b usqueda Arboles AVL Arboles 2-3-4 Arboles rojinegros

Se suelen implementar como arboles rojinegros.

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL Trimestre 09I 265 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Trimestre 09I

266 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Trimestre 09I

267 / 464

Tres tipos de nodos

Inserci on en arboles 2-3-4

Inserci on en un 4-nodo

M GL NR TZ

HQ

FMS

La inserci on es un poco m as complicada. Primero se hace una b usqueda (posiblemente infructuosa). El caso sencillo es cuando debemos insertar en un 2-nodo o en un 3-nodo: simplemente se transforma en un 3-nodo o en un 4-nodo. El problema es cuando debemos insertar en un 4-nodo.

Una primera opci on ser a insertar como hijo de ese 4-nodo. Pero resulta que una mejor opci on es dividir el 4-nodo en dos 2-nodos. Se pasa una de las claves al nodo padre. Se inserta la nueva clave en uno de los dos 2-nodos reci en creados.

AL

NZ

AG

IP

RZ

AE

Un 2-nodo, un 3-nodo y un 4-nodo

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Trimestre 09I

268 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Trimestre 09I

269 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Trimestre 09I

270 / 464

Ejemplos de inserci on en un 4-nodo

Casos especiales

Observaciones de arboles 2-3-4

E Qu e pasa si el padre del 4-nodo es un 4-nodo? LPT Esto garantiza que ning un 4-nodo tenga un 4-nodo como padre. DPV Qu e pasa si el 4-nodo es la ra z del arbol? En este caso simplemente se divide en tres 2-nodos y uno de ellos se vuelve la nueva ra z del arbol. L T Esto se puede evitar si durante la b usqueda se divide cada 4-nodo que se vea. Todos los caminos de la ra z a las hojas miden lo mismo. Los arboles 2-3-4 quedan balanceados sin mayor esfuerzo.

DH

DV

JOT

LPT

Las b usquedas y las inserciones no necesitan m as de 1 + log2 n pasos.

EO

DHP

Las implementaciones suelen ser lentas al tener que trabajar con diferentes tipos de nodos.

Cuando el padre es un 2-nodo o un 3-nodo

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL Trimestre 09I 271 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 272 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Arboles AVL

Trimestre 09I

273 / 464

Ejemplo de construcci on I

Ejemplo de construcci on II

Ejemplo de construcci on III


Q Q I T E O Q UWY AE I OP R T UWY AE I OP RS R UWY E I OP Q T UWY R T UWY

QT Q E E W R UWY EI R UWY

QT

QW

EQW

Q QT WY EIO R UWY E O R IQT E R

QT

QT

RW

RTW

Inserci on de Q, W, E, R, T, Y Inserci on de U, I, O

Inserci on de P, A, S
Trimestre 09I 274 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 275 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 276 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Contenido

Arboles rojinegros

Representaci on de nodos

M Curiosamente, los arboles 2-3-4 se pueden representar como arboles binarios con un bit adicional por liga. A este bit se le llama color y este puede ser rojo o negro. A estos arboles se les llama rojinegros. Algunas veces se asignan colores a los nodos, pero es lo mismo que asignarle colores a las ligas. H M Q

HQ

FMS

10

Arboles balanceados Arboles binarios de b usqueda Arboles AVL Arboles 2-3-4 Arboles rojinegros

2-nodo, 3-nodo y 4-nodo en rojinegro


Trimestre 09I 277 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 278 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 279 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Observaciones de arboles rojinegros

Operaciones en arboles rojinegros

Cambios de color

Observe que si se contraen las ligas rojas se obtiene un arbol 2-3-4. Cada una de las operaciones con los 4-nodos se puede traducir a las operaciones correspondientes en un arbol rojinegro. Estas operaciones se llaman cambios de color y rotaciones. Los cambios de color ocurren en los casos sencillos del arbol 2-3-4. Las rotaciones ocurren en los casos complicados del arbol 2-3-4.

Esto implica que nunca hay dos ligas rojas consecutivas.

Todos los caminos de la ra z a las hojas tienen el mismo n umero de ligas negras.

La altura de un arbol rojinegro es

1 + 2 log2 n. Divisi on de 4-nodos con un cambio de colores

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL Trimestre 09I 280 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 281 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Arboles AVL

Trimestre 09I

282 / 464

Necesidad de rotaciones

Qu e fue lo que pas o?

Rotaciones simples

?
El problema se detecta cuando se encuentran dos ligas rojas consecutivas. Esto s olo pudo ocurrir porque el 3-nodo qued o orientado en la direcci on equivocada. Hay dos orientaciones para un 3-nodo.

?
Trimestre 09I 283 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL

El problema se resuelve reestructurando el arbol rojinegro con rotaciones.

Rotaci on simple izquierda izquierda

Divisi on de 4-nodos con un cambio de colores


Trimestre 09I 284 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 285 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Rotaciones dobles

Rotaciones rojinegras

Ejemplo de construcci on I
Q Q W E Q E W E R Q W E R T Q W Q W

Hay dos tipos de rotaciones simples (II y DD). Y dos tipos de rotaciones dobles (ID y DI). Todas ellas se pueden deducir de manera sencilla de las operaciones correspondientes en arboles 2-3-4.

Rotaci on doble izquierda derecha

Inserci on de Q, W, E, R, T
Trimestre 09I 286 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 287 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 288 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Ejemplo de construcci on II
Q Q T R Q Q T I T O R U A Inserci on de P, A, S
Arboles AVL Trimestre 09I 290 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 291 / 464

Ejemplo de construcci on III


Q T I R U P Q T O R U P Y U Y A W E O R W E I T I O P R S U Q T W Y P Q I W Y E Y O U Y U Y W R W E O R W E R U O I E T T T W Y I I Q Q

Ejemplo de construcci on IV

Q E W

E R E Y U W

Inserci on de T, Y, U
Trimestre 09I 289 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Inserci on de I, O

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Rotaciones AVL
b a a a h b h h h+1 h h+1 h h1

Rotaciones II y DD

Rotaciones ID y DI
c b

Recordemos que en un arbol AVL las alturas de los dos sub arboles de cada nodo dieren a lo mucho en 1.

h b

Cuando se hacen inserciones o borrados se puede perder este balance.

h1

h2

Para recuperar el balance se hace tiene que hacer uno de cuatro tipos de rotaciones.

h2

Rotaci on izquierda izquierda (la rotaci on derecha derecha es sim etrica)


Trimestre 09I 292 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 293 / 464

Rotaci on izquierda derecha con h = max{h1 , h2 } y h 1 min{h1 , h2 } (la rotaci on derecha izquierda es sim etrica)
Francisco Zaragoza (UAM Azcapotzalco) Arboles AVL Trimestre 09I 294 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles AVL

Contenido

Qu e es un ndice?

Part IV
11

Las u ltimas p aginas de la mayor a de los libros contienen un ndice. Tal ndice es una tabla que contiene una lista de temas (claves) y los n umeros de p agina (referencias) donde se pueden encontrar esos temas. Todos los ndices est an basados en los mismos dos conceptos b asicos: claves y referencias.

Indices

Indexaci on Indices sencillos Indices secundarios Atado

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

295 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

296 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

297 / 464

Primera aplicaci on de ndices

Indices y registros jos Segunda aplicaci on de ndices

El ndice de un libro provee de una manera r apida de encontrar un tema (en lugar de buscar secuencialmente por todo el libro). Los ndices funcionan de manera indirecta. Permiten imponer un orden en un archivo sin ordenar el archivo. Esto permite el uso de registros jos. Tambi en hace que agregar registros sea mucho m as r apido que si mantuvieramos el archivo ordenado.

Las palabras en un libro son como los registros jos (pinned). Considere el problema de buscar libros en la biblioteca.

Normalmente uno quiere poder localizarlos por autor, t tulo o tema. Una forma de lograr esto es con tres bibliotecas: una organizada por autor, otra por t tulo y la u ltima por tema. En la realidad, una biblioteca mantiene tres cat alogos: uno organizado por autor, otro por t tulo y el u ltimo por tema.

Porqu e no podemos usar la b usqueda binaria?

Si orden aramos alfab eticamente las palabras de un libro ser a muy f acil encontrarlas.

Dice dif cil el entender libro lo m as pero poco que ser a un.

Francisco Zaragoza (UAM Azcapotzalco)

Indices Trimestre 09I 298 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 299 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Indices

Indices

Trimestre 09I

300 / 464

Indices m ultiples

Indices sencillos

Ejemplo de ndices y registros

Los tres cat alogos son en realidad tres ndices distintos. Primero estudiaremos los ndices sencillos. Estos se llaman as porque la estructura que los representa es un arreglo sencillo. M as adelante estudiaremos ndices con estructuras m as complejas, en particular con la estructura de un arbol.

Existen varios tipos de ndices dependiendo de la estructura de datos que se utilice para representarlos.

La clave primaria se form o concatenando los dos primeros campos de los registros

Cada uno usa una clave distinta.

Pero todos usan las mismas referencias.

De este modo podemos tener distintas formas de buscar registros a trav es del uso de ndices m ultiples.

Claves ANG3795 COL31809 COL38358 DG139201 DG18807 FF245 LON2312 MER75016 RCA2626 WAR23699

Ref 152 338 196 382 241 427 17 285 62 117

Dir 17 62 117 152 196 241 285 338 382 427

Registros LON|2312|Romeo and Juliet|Prokofiev|Maazel RCA|2626|Quartet in C Sharp Minor|Beethoven|Julliard WAR|23699|Touchstone|Corea|Corea ANG|3795|Symphony No. 9|Beethoven|Giulini COL|38358|Nebraska|Springsteen|Springsteen DG|18807|Symphony No. 9|Beethoven|Karajan MER|75016|Coq dOr Suite|Rimsky-Korsakov|Leinsdof COL|31809|Symphony No. 9|Dvorak|Bernstein DG|139201|Violin Concerto|Beethoven|Ferras FF|245|Good News|Sweet Honey in the Rock|Sweet Honey

Francisco Zaragoza (UAM Azcapotzalco)

Indices Trimestre 09I 301 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

302 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

303 / 464

Indices y registros de tama no variable

Observaciones sobre ndices sencillos

Operaciones en un archivo indexado

En este caso no podemos ordenar el archivo y usar b usqueda binaria en el. Porqu e?

El ndice est a ordenado por clave primaria mientras que el archivo est a ordenada por orden de llegada. Para poder hacer b usqueda binaria el ndice debe estar almacenado en la memoria. Una vez que se encuentra la clave primaria en el ndice basta hacer una b usqueda en el disco para recuperar el registro. Para poder usar el ndice varias veces, este se debe volver persistente.

Creaci on de los archivos de datos y de ndice. Carga del ndice a la memoria. Escritura del ndice al disco. Agregar registros al archivo de datos. Eliminar registros del archivo de datos. Actualizar registros en el archivo de datos. Actualizaci on del ndice.

Una alternativa es formar un ndice.

En nuestro caso, el ndice es un arreglo que contiene las claves primarias en orden junto con las referencias a los registros.

Podemos usar b usqueda binaria en el ndice.

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

304 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

305 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

306 / 464

Escritura del ndice al disco

Actualizaci on de registros

Indices demasiado grandes

Qu e ocurre si no hacemos o no se completa la escritura del ndice al disco? Agregar o eliminar registros es muy sencillo. Recordemos que se debe actualizar el ndice. Hay dos tipos de actualizaci on de registros: Si la actualizaci on cambia el valor del campo de clave se necesita una reorganizaci on del ndice (y posiblemente de los datos). Si la actualizaci on no cambia el valor del campo de clave no se necesita reorganizar el ndice (pero posiblemente s los datos).

El archivo de ndice no reejar a el estado actual del archivo de datos.

Qu e pasa si el ndice es tan grande que no se puede almacenar en memoria? En este caso debemos pensar en otras organizaciones del ndice. Una opci on es usar una estructura de arbol (por ejemplo los arboles B y B + que veremos m as adelante). Otra opci on es usar alguna t ecnica de dispersi on (como las que estudiaremos al nal del curso).

Es muy importante que el programa contenga al menos las siguientes dos previsiones:

Se debe poder saber que el ndice no es correcto (mediante una bandera de estado).

Se debe poder reconstruir el ndice.

Francisco Zaragoza (UAM Azcapotzalco)

Indices Trimestre 09I 307 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 308 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Indices

Indices

Trimestre 09I

309 / 464

Contenido

Acceso por claves m ultiples

Claves secundarias duplicadas

11

Es dif cil pensar que haremos b usquedas usando las claves primarias. Casi siempre haremos b usquedas usando combinaciones de claves secundarias. C omo lograr encontrar un dato usando una clave secundaria? Podr amos mantener un segundo ndice ordenado por la clave secundaria y con una referencia al registro que la contiene.

El primer problema que surge es que las claves secundarias no son u nicas. Por lo tanto puede haber varios registros distintos que la contengan. Esto lo resolveremos ordenando las diferentes apariciones de una clave secundaria seg un su referencia.

Indexaci on Indices sencillos Indices secundarios Atado

Francisco Zaragoza (UAM Azcapotzalco)

Indices Trimestre 09I 310 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

311 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

312 / 464

Uso de referencias

Operaciones en ndices secundarios

Ejemplo de ndices secundarios

Indice primario y dos ndices secundarios


Agregar un registro: muy parecida a como se hace en un ndice primario. Borrar un registro: s olo se arregla el ndice primario, dejando que la operaci on falle al ir del ndice secundario al primario. Actualizar un registro: hay tres casos, seg un se afecten las claves primarias, secundarias o ninguna de las dos.

Dijimos que podr amos pensar en usar como referencia el lugar de inicio del registro correspondiente.

En vez de eso usaremos como referencia la clave primaria.

La ventaja de esto es que si un registro cambia de lugar s olo se debe actualizar el ndice primario.

Primaria ANG3795 COL31809 COL38358 DG139201 DG18807 FF245 LON2312 MER75016 RCA2626 WAR23699

Ref 152 338 196 382 241 427 17 285 62 117

Secundaria BEETHOVEN BEETHOVEN BEETHOVEN BEETHOVEN COREA DVORAK PROKOFIEV RIMSKY-KORS SPRINGSTEEN SWEET HONEY

Primaria ANG3795 DG139201 DG18807 RCA2626 WAR23699 COL31809 LON2312 MER75016 COL38358 FF245

Secundaria COQ DOR SU GOOD NEWS NEBRASKA QUARTET IN ROMEO AND J SYMPHONY NO SYMPHONY NO SYMPHONY NO TOUCHSTONE VIOLIN CONC

Primaria MER75016 FF245 COL38358 RCA2626 LON2312 ANG3795 COL31809 DG18807 WAR23699 DG139201

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

313 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

314 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

315 / 464

Acceso usando combinaciones de claves

Mejoras a la estructura

Una mejor soluci on

Es sencillo implementar b usquedas con uniones o intersecciones (OR y AND). Una posibilidad es dejar que cada clave secundaria se reera a un vector de tama no jo de claves primarias. Secundaria BEETHOVEN COREA ... ANG3795 DG139201 DG18807 WAR23699 RCA2626 Primarias

Observe que es poco eciente insertar varias veces la misma clave secundaria. Otra posibilidad es la de separar el ndice secundario en dos archivos. Uno conteniendo s olo las claves secundarias y una referencia a la primera clave primaria en el segundo archivo. El segundo archivo tendr a la estructura de una lista ligada ordenada.

Primero encontramos la primera entrada de cada ndice secundario que contiene las palabras de nuestra b usqueda.

A partir de este momento se procesan las dos listas secuencialmente.

Notemos que a cada paso es f acil saber si esa entrada nos interesa o no ya que vienen ordenadas por clave primaria.

Francisco Zaragoza (UAM Azcapotzalco)

Indices Trimestre 09I 316 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 317 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Indices

Indices

Trimestre 09I

318 / 464

Ejemplo de ndice en dos archivos

Ventajas y desventajas

Indices selectivos

Secundaria El primer archivo s olo debe ordenarse cuando se agregue una nueva clave secundaria. El segundo archivo no debe reordenarse y se puede hacer con registros de tama no jo. El segundo archivo no tiene la propiedad de localidad y se requiere hacer b usquedas en el disco para moverse en la lista ordenada.

Ref

# Primaria Sig

Estos son ndices que no contienen entradas para todos los registros de un archivo. Los ndices selectivos son u tiles cuando el contenido de un archivo se puede dividir natural y l ogicamente en diversas categor as.

BEETHOVEN COREA DVORAK PROKOFIEV RIMSKY-KORS SPRINGSTEEN SWEET HONEY

0 6 1 8 5 9 4

0 1 2 3 4 5 6 7 8 9

ANG3795 COL31809 DG18807 DG139201 FF245 MER75016 WAR23699 RCA2626 LON2312 COL38358

3 -1 7 2 -1 -1 -1 -1 -1 -1

Francisco Zaragoza (UAM Azcapotzalco)

Indices Trimestre 09I 319 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

320 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

321 / 464

Contenido

Atado (binding)

Atado pronto y tard o

11

En qu e momento queda atada una clave a la direcci on f sica del registro asociado? En nuestro ndice primario en el momento de construcci on mientras que en nuestro ndice secundario en el momento de uso. El primer momento resulta en un acceso m as r apido pero tiene un costo de reorganizaci on muy alto. El segundo momento resulta en un acceso m as lento pero m as seguro.

Indexaci on Indices sencillos Indices secundarios Atado

El atado tard o permite que los ndices secundarios contengan errores sin que esto sea un gran problema. Al nal es mejor hacer los cambios importantes en un solo lugar (el ndice primario) que en varios. Hay al menos una aplicaci on del atado pronto: en sistemas de archivos grabados en medios no reescribibles (nunca cambian).

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

322 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

323 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Indices

Trimestre 09I

324 / 464

Contenido

Operaciones cosecuenciales

Part V
12

Ordenamiento externo
Mezcla o uni on. Apareamiento o intersecci on.

Operaciones cosecuenciales Procesos cosecuenciales Aplicaci on de procesos cosecuenciales Ordenamiento interno revisitado Ordenamiento externo en discos Ordenamiento externo en cintas Se requiere poner atenci on a varios detalles. Que son sencillos bajo ciertas suposiciones.

Estas son operaciones que consisten en el procesamiento coordinado de dos o m as listas secuenciales para producir una sola lista de salida. Algunos ejemplos de estas operaciones:

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

325 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

326 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

327 / 464

Detalles

Suposiciones

Contenido

Inicializaci on: acomodar las cosas de modo que podamos comenzar. Se desean procesar dos o m as archivos de entrada en forma paralela para producir uno o m as archivos de salida.
12

Obtenci on y acceso del siguiente elemento de la lista: se requiere de un m etodo sencillo. Cada archivo est a ordenado por una o m as claves y todos los archivos est an ordenados de la misma forma. De ser necesario, deben existir dos valores especiales (centinelas) uno menor y otro mayor que todas las claves posibles. Los registros se deben procesar en el orden l ogico (no f sico). Para cada archivo debe haber un u nico registro actual y este es el registro que se debe procesar. Los registros s olo se pueden manipular en memoria interna.

Sincronizaci on: debemos asegurar que estamos procesando los elementos en las listas en el orden apropiado de modo que no dejemos de considerar a ninguno.

Manejo de n de archivo: saber qu e hacer en este caso.

Operaciones cosecuenciales Procesos cosecuenciales Aplicaci on de procesos cosecuenciales Ordenamiento interno revisitado Ordenamiento externo en discos Ordenamiento externo en cintas

Reconocimiento de errores: si ocurre alg un error en los datos (por ejemplo datos duplicados o fuera de orden) queremos poder detectarlo y tomar alguna acci on.

Algoritmo: eciente, sencillo y f acil de modicar.

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

328 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

329 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

330 / 464

Mezcla de k v as
A D C B Q D C G C D C B A A

Arbol de selecci on o torneo


Q D C B Q D F G F D D B D B

Contenido

Considere el problema de mezclar k listas ordenadas de entrada en una sola lista ordenada de salida.

La forma m as sencilla es a trav es de un ciclo que revise todas las listas para averiguar cu al es el siguiente elemento a procesar. Z X E R V T Q W S D C F G Y

Q Z X E R V T Y A W S D C F G B

Z X E R V T Y

Q W S D C F G B

12

Esto es una generalizaci on simple de c omo se hace con dos listas.

Operaciones cosecuenciales Procesos cosecuenciales Aplicaci on de procesos cosecuenciales Ordenamiento interno revisitado Ordenamiento externo en discos Ordenamiento externo en cintas Q Z W X S E D R V F T G Y

No es la forma m as eciente si k es grande.

Torneo con ocho listas (tres niveles)


Trimestre 09I 331 / 464 Francisco Zaragoza (UAM Azcapotzalco) Ordenamiento externo Trimestre 09I 332 / 464 Francisco Zaragoza (UAM Azcapotzalco) Ordenamiento externo Trimestre 09I 333 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Ordenamiento interno

Ahorrando tiempo

Ordenamiento por mont culo

Si los datos a ordenar caben en memoria, la forma m as simple de ordenarlos consta de tres pasos: Si hubiera dos discos la lectura y la escritura se podr an hacer en paralelo. La clave es el uso de buers m ultiples. Si s olo hubiera un disco se podr a empalmar el ordenamiento con la lectura y escritura. La idea es usar ordenamiento por mont culo.

Existen formas de lograr que algunos de estos pasos se empalmen en el tiempo.

En la primera etapa se construye el mont culo al mismo tiempo que se leen los datos. En la segunda etapa vamos ordenando los datos al mismo tiempo que los escribimos. En la primera etapa se lee un buer mientras el anterior se agrega al mont culo. En la segunda etapa se escribe un buer mientras el siguiente se borra del mont culo.

Leer los datos. Ordenar los datos. Escribir los datos.

De esta forma parece que el tiempo necesario para estas tres operaciones es la suma de los tres tiempos de cada paso.

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

334 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

335 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

336 / 464

Mont culo en dos pasos

Contenido

Ordenamiento externo con mezclas

Q A Z W X S E D

A D E Q X Z S W

Z W X S E D
12

A Q

E Q S W X Z A D

Aun no tenemos un algoritmo para ordenar archivos que no quepan en memoria. Sin embargo, el algoritmo de mezcla de k v as es un buen principio. Recordemos que existen algoritmos que pueden ordenar un vector sin necesitar almacenamiento adicional. Un ejemplo eciente es el de ordenamiento por mont culo.

X S E D

A Q Z W

S W X Z A D E Q

E D

Operaciones cosecuenciales Procesos cosecuenciales Aplicaci on de procesos cosecuenciales Ordenamiento interno revisitado Ordenamiento externo en discos Ordenamiento externo en cintas

A Q S W X Z

X Z A D E Q SW

A D E Q X Z S W

A D E Q SW X Z

Primera y segunda etapa del ordenamiento


Trimestre 09I 337 / 464 Francisco Zaragoza (UAM Azcapotzalco) Ordenamiento externo Trimestre 09I 338 / 464 Francisco Zaragoza (UAM Azcapotzalco) Ordenamiento externo Trimestre 09I 339 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Corridas

Ejemplo de corridas
QA Z WS X E D C R F V T G B Y H N U J M I K O 1 A Q SWX Z 2 3 C D E F R V 5 5 5 B G H N T Y I J KM O U 5 A B C D E F G H I J K MN O Q R S T U VWX Y Z Cuatro corridas y mezcla de 4 v as
Trimestre 09I 340 / 464 Francisco Zaragoza (UAM Azcapotzalco) Ordenamiento externo Trimestre 09I 341 / 464

Caracter sticas

Ordenar archivos de cualquier tama no. 4 La lectura de la entrada es secuencial. La lectura de cada corrida es secuencial. La escritura de la salida es secuencial. B usquedas s olo al cambiar de corrida. Si se usan mont culos se puede traslapar la entrada y salida con el procesamiento. Tambi en funciona con cintas.

Podemos leer una parte del archivo, ordenarla y grabarla en un archivo.

Luego leer una segunda parte, ordenarla y grabarla en otro archivo, etc.

A cada uno de estos subarchivos ordenados se le llama una corrida.

Una vez que el archivo original se ha ordenado parcialmente en varias corridas podemos usar el algoritmo de mezcla de k v as para producir un solo archivo ordenado.

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

342 / 464

Cu anto se tarda este proceso?

C omo disminuir este costo?

Mezcla en dos etapas

Se tarda m as de lo deseado al cambiar de corrida pues se requiere una b usqueda. Agregar m as memoria o discos (que normalmente no se puede hacer). Realizar la mezcla en m as de un paso. Incrementar de alguna forma el tama no inicial de las corridas (usando reemplazo directo).
M M /k

Esto se puede minimizar leyendo en un buer tanto como se pueda de cada corrida. Finalmente realizamos una mezcla de estas k1 corridas.

Suponga que tenemos k = k1 k2 corridas de tama no M cada una. Entonces podemos realizar k1 veces el proceso de mezclar k2 corridas para obtener k1 corridas de tama no k2 M .

Sea M la memoria disponible. = k b usquedas Encontrar otras formas de traslapar la entrada y salida con el proceso.

k corridas implica buer de tama no M /k .

Como cada corrida mide M entonces se hacen por corrida.

El n umero total de b usquedas es k 2 .

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

343 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

344 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

345 / 464

Ejemplo de mezcla en dos etapas

Cu al es el n umero total de b usquedas?

Observaciones

QA Z WS X E D C R F V T G B Y H N U J M I K O I M J U Cada corrida de la segunda etapa mide k2 M y tendr a un buer de k2 M usquedas. tama no M /k1 por lo que har a M /k1 = k1 k2 b Entre las dos etapas se har an k1 k2 (k1 + k2 ) b usquedas. Esto es menos de k 2 b usquedas si k1 , k2 > 1. K O
2 b La primera etapa har a k 1 k2 usquedas.

A Q

S X

C R

G T

H N

WZ

D E

F V

B Y

Cada registro se lee dos veces (pero esto se hace de forma secuencial). Cu al es el mejor valor para k1 y k2 ? Es f acil ver que deben ser iguales a k . S olo es posible si k es un cuadrado perfecto. Qu e hacer si k no es un cuadrado perfecto? Se puede hacer un an alisis similar para mezcla en m etapas.

A D E Q S WX Z

B C F G R T V Y

H I J KM N O U

A B C D E F G H I J KM N O Q R S T U VWX Y Z

Con k = k1 k2 = 3 4 = 12 corridas
Trimestre 09I 346 / 464 Francisco Zaragoza (UAM Azcapotzalco) Ordenamiento externo Trimestre 09I 347 / 464 Francisco Zaragoza (UAM Azcapotzalco) Ordenamiento externo Trimestre 09I 348 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Contenido

Ordenamiento en cintas

Reemplazo directo

12

Los m etodos para ordenar en cintas son parecidos a los m etodos para ordenar en discos. El archivo original se distribuye en corridas ordenadas y luego se mezclan las corridas para construir el archivo completo. Una diferencia fundamental es que el m etodo de ordenamiento usado para crear las corridas puede ser el reemplazo directo.

El reemplazo directo tiende a crear corridas m as largas que las que se pueden crear con ordenamiento por mont culo. El reemplazo directo no es muy bueno en discos porque incrementa el n umero de b usquedas. En cintas eso no es problema porque siempre suponemos que tenemos dos o m as de ellas. Supondremos que ya hemos creado las corridas.

Operaciones cosecuenciales Procesos cosecuenciales Aplicaci on de procesos cosecuenciales Ordenamiento interno revisitado Ordenamiento externo en discos Ordenamiento externo en cintas

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

349 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

350 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

351 / 464

Mezcla balanceada de dos v as

Ejemplo de mezcla de dos v as

N umero de fases

T1 0 2 0-3 0-9 0-7 En el ejemplo esto lo hicimos cuatro veces. Si hay k corridas se requieren log2 k fases. 89 Fase 2 Fase 3 Fase 4 4-7 01 23 Fase 0 Diez corridas y cuatro fases 67 Fase 1 45 89 89 3 5 7 9 4 6 8 T2 1 T3 T4

Este m etodo requiere que las corridas est en distribuidas en dos cintas.

A cada paso de la mezcla (excepto el u ltimo) la salida estar a distribuida en dos cintas.

Debido a que no hay b usquedas, el tiempo se mide en t erminos de cu antas veces leemos y escribimos los datos, as como cu antas veces rebobinamos las cintas.

Se necesitan cuatro cintas para poder aplicarlo.

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

352 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

353 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

354 / 464

Mezcla balanceada de n v as

Ejemplo de mezcla de n v as

Mezcla polif asica

T1 0 2 0-3 4-7 23 Fase 0 Diez corridas y tres fases Fase 2


no regresar

4 5 01 67 Fase 1 0-9 Fase 3 45 89 89 7 9

Este m etodo es similar al anterior, excepto que se tienen n cintas de entrada y n cintas de salida en cada fase. T3 T4

T2 1 3

La idea es tratar de evitar al m aximo la simple copia de datos. Esto lograr a tambi en evitar rebobinar las cintas. Existen dos m etodos que usan esta idea llamados mezcla polif asica y en cascada.

En este caso se requieren logn k fases.

Con este m etodo podremos ver f acilmente c omo se puede mejorar.

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

355 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

356 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

357 / 464

Caracter sticas

Ejemplo de mezcla polif asica

Preguntas

T1 0 3 6 7 4 5 T2 1 T3 2 T4

6 7

8 01267 012

9 3458 01267

La distribuci on inicial de las corridas es tal que al menos la primera mezcla es de n 1 v as si se tienen n cintas.

C omo se debe escoger la distribuci on inicial de las corridas que nos lleve a un patr on de mezcla eciente? Existir a alg un algoritmo que encuentre estos patrones as como las distribuciones iniciales? Fase 0 345 Fase 1 345 Fase 2 Fase 3 0-9 Fase 4 Si tenemos k corridas y n cintas existir a alguna manera de calcular la forma optima de mezclar de modo que se pueda comparar nuestro algoritmo contra lo optimo?

La distribuci on de las corridas es tal que las cintas suelen contener un n umero distinto de corridas en cada fase.

Al inicio hay 5, 3 y 2 corridas

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

358 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

359 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Ordenamiento externo

Trimestre 09I

360 / 464

Contenido

Indices demasiado grandes

13

Part VI

Qu e hacer si un ndice es demasiado grande como para caber en memoria? Es obvio que parte del ndice deber a estar en el disco y, por lo tanto, el ndice ser a lento. Si queremos resolver este problema:
1 2

Arboles B y B+

Arboles B Indexaci on con arboles binarios Arboles binarios paginados Indexaci on multinivel Operaciones en arboles B Propiedades de un arbol B Borrado y otros detalles en arboles B Arboles B Arboles B+

La b usqueda en el ndice debe ser m as r apida que la b usqueda binaria. Insertar y borrar una clave debe ser tan r apido como la b usqueda.

14

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 361 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 362 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Arboles B y B+

Trimestre 09I

363 / 464

Insuciencia de los arboles binarios

Problemas de las estructuras binarias

Contenido

13

El uso del disco es demasiado ineciente. Cada lectura de un nodo puede producir una b usqueda en el disco. La lectura s olo trae tres cosas u tiles: la clave actual y las direcciones de los sub arboles izquierdo y derecho. Como una lectura del disco lee al menos un sector es muy importante que en ese sector almacenemos tanta informaci on u til como sea posible.
14

Una estructura de arbol balanceado es fundamental para resolver la segunda parte.

Un arbol binario de b usqueda no ser a suciente pues su estructura puede degenerar en una lista.

Los arboles balanceados AVL, rojinegros y 2-3-4 no tienen este problema, pero no resuelven la primera parte.

Arboles B Indexaci on con arboles binarios Arboles binarios paginados Indexaci on multinivel Operaciones en arboles B Propiedades de un arbol B Borrado y otros detalles en arboles B Arboles B Arboles B+

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 364 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

365 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

366 / 464

Arboles binarios paginados Un arbol binario paginado

Continuaci on del ejemplo

Los arboles binarios paginados intentan resolver esta situaci on colocando tantos nodos adyacentes de un arbol binario como sea posible dentro de un sector.

Si agregaramos otros dos niveles de sectores podr amos encontrar cualquiera de 4095 nodos con s olo 4 b usquedas. Uno esperar a que cupieran m as de 7 nodos en un sector. Por ejemplo, si en cada lectura del disco podemos leer 511 nodos entonces podemos encontrar cualquiera de 134217727 claves con s olo 3 lecturas. Este es el desempe no que buscamos! 63 nodos en 9 sectores

Por ejemplo, si se pueden escribir 7 nodos en un sector entonces ser a posible escribir todos los nodos de un arbol balanceado con 63 nodos en 9 sectores.

La b usqueda de cualquier nodo s olo requerir a 2 lecturas del disco (en vez de 6).

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

367 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

368 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

369 / 464

Desempe no de arboles paginados

Problemas

Contenido

13

Si podemos leer k nodos en una lectura del disco entonces podremos encontrar cualquiera de n claves en un m aximo de logk +1 (n + 1) lecturas de disco. C omo aseguramos que las claves en el sector ra z distribuyen de forma adecuada a las dem as claves? C omo evitamos que en un mismo sector queden claves que no distribuyen bien a las claves debajo de ellos? C omo garantizamos que cada sector contenga al menos un n umero m nimo de claves?
14

Sin embargo, nada es gratis.

Aun puede ser que nuestro arbol binario quede desbalanceado, por lo que la b usqueda se puede volver secuencial. Arboles B+

Arboles B Indexaci on con arboles binarios Arboles binarios paginados Indexaci on multinivel Operaciones en arboles B Propiedades de un arbol B Borrado y otros detalles en arboles B Arboles B

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 370 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 371 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Arboles B y B+

Trimestre 09I

372 / 464

Indices en arbol Contenido

Arboles B

13

Podemos pensar en ndices estructurados como arboles.

Los arboles B resuelven el problema de la inserci on y borrado lineal. Se han vuelto la forma est andar de representar un ndice. La soluci on requiere de dos ideas:
No se requiere que los registros del ndice est en llenos. Las claves que van a un registro lleno no se env an a otro registro, sino que este se divide en dos registros llenos a la mitad.

Esto nos puede proveer de la capacidad de encontrar cualquiera de una gran cantidad de registros con pocas lecturas del disco.

Sin embargo, esto nos lleva a la posibilidad de requerir tiempo lineal para la inserci on de una clave.

Esto resulta fatal si adem as lo queremos hacer en el disco.


14

Arboles B Indexaci on con arboles binarios Arboles binarios paginados Indexaci on multinivel Operaciones en arboles B Propiedades de un arbol B Borrado y otros detalles en arboles B Arboles B Arboles B+

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 373 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

374 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

375 / 464

Orden del arbol B

Inserci on en un arbol B

Inserci on en un registro lleno

Cada nodo de un arbol B es un registro del ndice y puede contener hasta un n umero m aximo de claves.

Se busca el registro donde debe ir la clave. Si se introduce una clave en un registro que no est a lleno s olo se actualiza ese registro. A menos que la nueva clave resulte ser la m as grande del registro. En este caso se deben actualizar tambi en los niveles superiores del arbol. Esto tiene un costo acotado por la altura del arbol.

En este caso el registro se divide en dos, cada parte con la mitad de las claves. Como se ha creado un nodo su clave m as grande se debe insertar en el nodo superior. A esto se le llama la promoci on de una clave. Esto puede causar que otros nodos se subdividan. Si se subdivide la ra z se agrega un nuevo nivel al arbol. El costo sigue acotado por la altura del arbol.

Este n umero es el orden del arbol B .

Tambi en un n umero m nimo de claves.

Este n umero suele ser la mitad del orden.

Excepto la ra z que puede llegar a tener una clave.

El borrado mezcla dos registros en uno cuando sea necesario.

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

376 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

377 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

378 / 464

Ejemplo de inserci on en un arbol B


Q Z A Q A Q S W Z Q Z WZ A E Q S W X Z A C D E Q Inserci on de S, X, E y D en un arbol B de orden 4 Inserci on de C en un arbol B de orden 4
Trimestre 09I 379 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 380 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 381 / 464

Ejemplo de inserci on en un arbol B


Q Z D Q Z

Ejemplo de inserci on en un arbol B

Q A Q S W X Z Q Z D Q Z A D E Q S W X Z S W X Z A D E Q S W X Z

A Q Z

A QWZ

Q Z

A Q

Inserci on de Q, A, Z y W en un arbol B de orden 4

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Ejemplo de inserci on en un arbol B


D Q W Z

Ejemplo de inserci on en un arbol B

Ejemplo de inserci on en un arbol B


Q Z

D Q W Z

D Q X Z A C D X Z A C D D Q W Z D Q E F Q R S Q Z E F Q R S W

SWZ

A C D

E Q

S W

VW

X Z

D Q W Z

A C D X Z Inserci on de F y V en un arbol B de orden 4


Trimestre 09I 382 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+

E Q

R S W

A C D

E F Q

R S V W

X Z A C D

SWZ

E F Q

R S Inserci on de T en un arbol B de orden 4


Trimestre 09I 383 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+

T VW

X Z

Inserci on de R en un arbol B de orden 4

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

384 / 464

Contenido

Propiedades de un arbol B

B usqueda en el peor de los casos

13

Cada registro ndice tiene un m aximo de m hijos (m es el orden). Cada registro ndice, excepto por la ra z y las hojas, tiene al menos m/2 hijos. La ra z tiene cero o al menos dos hijos. Todas las hojas aparecen en el mismo nivel. El nivel de las hojas forma un ndice completo y ordenado.

Note que el nivel d del arbol tiene al menos 2m/2d 1 nodos. Si n 2m/2d 1 y d es la altura del arbol entonces d 1 + logm/2 (n/2).

Arboles B Indexaci on con arboles binarios Arboles binarios paginados Indexaci on multinivel Operaciones en arboles B Propiedades de un arbol B Borrado y otros detalles en arboles B Arboles B

Por lo tanto se requerir a un m aximo de 1 + logm/2 (n/2) b usquedas. Si m = 29 y n = 224 entonces d 3.

14

Arboles B+

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

385 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

386 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

387 / 464

Contenido

Borrado en arboles B

Borrando una clave de un nodo

13

Debemos buscar una forma de borrar claves que mantenga todas las propiedades de un arbol B mencionadas anteriormente. Es obvio que esas reglas van a depender de cu antas claves haya en el nodo del que se quiera borrar. Tambi en van a depender de cu al es la posici on de la clave que se borra.

Se desea borrar la clave C del nodo N . Si N tiene m as claves que el n umero m nimo y C no es la clave m as grande de N , entonces simplemente se borra C . Si N tiene m as claves que el n umero m nimo pero C es la clave m as grande de N , entonces se borra C y se modican los niveles superiores del ndice para reejar la nueva clave m as grande en N .

Arboles B Indexaci on con arboles binarios Arboles binarios paginados Indexaci on multinivel Operaciones en arboles B Propiedades de un arbol B Borrado y otros detalles en arboles B Arboles B

14

Arboles B+

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 388 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 389 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Arboles B y B+

Trimestre 09I

390 / 464

Ejemplo de borrado en un arbol B


D Q Z

Ejemplo de borrado en un arbol B

Borrando una clave con mezcla

D Q Z

A D

E Q

S W X Z

A D

E Q

S W X Z

Suponga que N tiene exactamente el n umero m nimo de claves y uno de los hermanos de N tiene pocas claves. Entonces se mezcla a N con ese hermano y se borra una clave del nodo padre de N . Qu e quiere decir pocas claves?

D Q Z

D Q X

A D

E Q

S W Z

A D

E Q

S W X

Borrado de X
Trimestre 09I 391 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+

Borrado de Z
Trimestre 09I 392 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 393 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Ejemplo de borrado con mezcla

Borrando una clave con redistribuci on

Ejemplo de borrado con redistribuci on


D Q Z

D Q Z

A D

E Q

S W X Z

Suponga que N tiene exactamente el n umero m nimo de claves y uno de los hermanos de N tiene claves extras.

A D

E Q

S W X Z

E Z

Entonces se mueven algunas de las claves del hermano a N y se modican los niveles superiores del ndice para reejar las claves m as grandes de los nodos afectados. Qu e quiere decir claves extras? A D

D S Z

A D E

S W X Z

W X Z

Borrado de Q
Trimestre 09I 394 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 395 / 464

Borrado de Q
Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 396 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Casos especiales
F Z

Ejemplo de borrado de la ra z

Ejemplo de borrado en un arbol B

D F Q Z C D A Q F X W Z A W Z E F R S T VW X Z Z A W Z

SWZ

Si la ra z termina con s olo una clave y un hijo, esta se puede eliminar y su u nico hijo se vuelve la nueva ra z.

En este caso el arbol decrece de altura.

Es posible que se pueda aplicar la mezcla y la redistribuci on de forma simultanea. Borrado de Q D F S X

Cuando este sea el caso, se puede aplicar cualquiera de las dos reglas.

C D Borrado de Z con mezcla


Trimestre 09I 397 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 398 / 464 Francisco Zaragoza (UAM Azcapotzalco)

E F

R S

T VWX

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Arboles B y B+

Trimestre 09I

399 / 464

Ejemplo de borrado en un arbol B

Redistribuci on durante la inserci on

Contenido

F Z
13

D F Uno podr a imaginar usar la redistribuci on al insertar una clave. X Z Como consecuencia mejorar a el uso del espacio en el arbol B . Algunos estudios emp ricos sugieren redistribuir a menos que ambos hermanos del nodo est en llenos.
14

SWZ Esto evitar a crear nodos nuevos.

C D

E F

R S

T VW

F X

Arboles B Indexaci on con arboles binarios Arboles binarios paginados Indexaci on multinivel Operaciones en arboles B Propiedades de un arbol B Borrado y otros detalles en arboles B Arboles B Arboles B+

D F

S V X

C D

E F

R S

T V

WX

Borrado de Z con redistribuci on


Trimestre 09I 400 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 401 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 402 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Arboles B

Propiedades de los arboles B

Observaciones

Knuth sugiri o una modicaci on de los arboles B basada en la regla de redistribuir cuando se pueda.

Cada nodo tiene un m aximo de m hijos. Cada nodo (excepto la ra z) tiene al menos 2m31 hijos. La ra z tiene al menos dos hijos (a menos que sea hoja). Todas las hojas aparecen al mismo nivel.

Los arboles B tienen algoritmos un poco m as complicados que los arboles B por el trato especial a la ra z (que no tiene hermanos). Existen otras estrategias para disminuir el n umero de accesos al disco. Por ejemplo, los arboles B virtuales mantienen un buer de nodos del arbol B . Como de costumbre, la eciencia de este mecanismo depender a de la estrategia de reutilizaci on de buers (LRU, etc.).

La idea es redistribuir las claves de dos hermanos en tres (uno de ellos nuevo) cuando no se pueda redistribuir.

Se les llama arboles

B .

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

403 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

404 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

405 / 464

Contenido

Acceso secuencial e indexado

Conjuntos secuenciales

13

Arboles B Hemos visto c omo estructurar un archivo para realizar operaciones secuenciales o para realizar b usquedas con ndices. Sin embargo, nuestras soluciones no son capaces de resolver ecientemente el otro tipo de acceso. Existen muchos casos reales en los que se necesitan los dos tipos de acceso sobre los mismos archivos: sistemas de registro de estudiantes, de pago de servicios, etc. A este conjunto lo llamaremos secuencial.

14

Arboles B+ Conjuntos secuenciales y bloques Agregar un ndice al conjunto secuencial Separadores Operaciones con arboles B +

Ataquemos primero el problema de mantener un conjunto de registros en orden f sico por clave mientras se agregan o eliminan registros.

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 406 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 407 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Arboles B y B+

Trimestre 09I

408 / 464

Bloques

Lista de bloques

Ejemplo de lista de bloques

Una forma de localizar las modicaciones a un archivo que contiene varios conjuntos secuenciales es la de grabar cada uno de ellos en un bloque. Insertar o borrar registros de esta estructura se hace de forma similar a como se hace en un arbol B (excepto que esta es una lista). La inserci on puede causar sobrecupo. El borrado puede dejar un bloque muy vac o.

Como los bloques l ogicamente consecutivos no son necesariamente f sicamente consecutivos tambi en contendr an apuntadores a sus bloques adyacentes.

A B C D

I J K L

E F G H

MN O P

Debido a que podemos leer y escribir bloques en una sola operaci on, se volver an nuestra unidad de entrada y salida.

Una vez que se lee un bloque, todos los registros contenidos en el est an en memoria, donde se les puede modicar r apidamente.

Bloques consecutivos f sicamente

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 409 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

410 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

411 / 464

Observaciones

Contenido

Agregar un ndice simple

13

Arboles B Podemos notar que cada bloque contiene un rango de las claves. Si podemos separar esos rangos entonces podemos saber d onde debiera estar una clave dada. Por ejemplo, podemos usar la clave m as grande en cada bloque para identicar al bloque completo de un ndice.

Esta estructura nos permite mantener los registros ordenados sin la necesidad de reordenar todo el archivo. Esto no es gratuito:
14

Nuestro nuevo archivo usa m as espacio que si todos los registros estuvieran ordenados. El orden de los registros no sigue una secuencia f sica.

El tama no del bloque es crucial: no debe ser ni muy grande ni muy peque no.

Arboles B+ Conjuntos secuenciales y bloques Agregar un ndice al conjunto secuencial Separadores Operaciones con arboles B +

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

412 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

413 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

414 / 464

Ventajas y desventajas
H P DH
14

Ejemplo de arbol B + Contenido

Esto resulta en un m etodo simple si todo el ndice cabe en memoria.

L P

13

Arboles B

Por otro lado, notemos que las inserciones y los borrados pueden requerir modicar el ndice de forma secuencial, lo que puede ser demasiado caro. A B C D MN O P I J K L E F G H

Esto, junto con la posibilidad de que el ndice no quepa en memoria, nos lleva a pensar en una estructura de tipo arbol para el ndice.

Arboles B+ Conjuntos secuenciales y bloques Agregar un ndice al conjunto secuencial Separadores Operaciones con arboles B +

Lista de bloques y arbol ndice


Trimestre 09I 415 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 416 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+ Trimestre 09I 417 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Separadores en lugar de claves

Separadores m as cortos

Arbol B + de prejos simples


ABEL B

Observe que el ndice s olo nos sirve para llegar al bloque correcto. Observe que los separadores m as cortos no son necesariamente u nicos, pero cualquiera con esa propiedad nos podr a guiar al tomar decisiones. Ejemplo: abajo y abeja. A un arbol B de separadores m as cortos junto con el conjunto de secuencias se le llama un arbol B + de prejos simples.

Ejemplo: abrasivo y absoluto.

ABAL ABEL

ABONABRI

Para eso no se necesitan las claves, sino simples separadores.

ABACO ABAD ABAJO

ABATE ABECE ABEJA

ABETO ABOCA ABOGA ABOLE

ABONA ABONO ABRA ABRE Lista de bloques y arbol B de separadores


419 / 464 Francisco Zaragoza (UAM Azcapotzalco) Arboles B y B+

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 418 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

Trimestre 09I

ABRIL ABRIR ABUSA


420 / 464

Una idea es la de usar lo que se conoce como separador m as corto. Este es una cadena de longitud m nima tal que es mayor que todas las cadenas del bloque izquierdo pero menor o igual a todas las cadenas del bloque derecho.

Contenido

Borrado e inserci on simples

Cambio en el n umero de bloques

13

Arboles B Los cambios m as sencillos que podemos hacer en un arbol B + son los de borrado e inserci on de claves que no resulten en ninguna mezcla ni redistribuci on de bloques. En estos casos no se necesita cambiar el contenido del arbol B puesto que los separadores que este contiene siguen siendo v alidos. La situaci on es un poco m as complicada cuando los cambios en el umero de bloques. arbol B + cambian el n Si tenemos m as bloques necesitamos m as separadores y viceversa. Por lo tanto este tipo de cambios s alteran el contenido del arbol B .

14

Arboles B+ Conjuntos secuenciales y bloques Agregar un ndice al conjunto secuencial Separadores Operaciones con arboles B +

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

421 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

422 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

423 / 464

Tres casos

Recordatorios

Tama no de los nodos

Si se divide alg un bloque en el conjunto de secuencias se debe insertar un nuevo separador en el conjunto ndice. No sobra hacer los siguientes recordatorios: Toda inserci on o borrado modica el conjunto de secuencias. Pero s olo algunas de estas operaciones modican el conjunto ndice. Y en este caso lo hacen como si fuera un simple arbol B . Esto suele ser buena idea por varias razones:

Aunque no es necesario, el tama no del nodo del arbol B suele ser el mismo que el tama no del nodo del conjunto de secuencias. Se puede usar el mismo conjunto de buers para ambos tipos de nodos. Ambos tipos de bloques pueden aparecer en el mismo archivo. El tama no se escogi o de acuerdo a las caracter sticas del disco y la memoria.

Si se mezclan dos bloques en el conjunto de secuencias se debe eliminar un separador del conjunto ndice.

Si se redistribuyen registros entre dos bloques en el conjunto de secuencias se debe cambiar el valor de uno de los separadores del conjunto ndice.

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 424 / 464 Francisco Zaragoza (UAM Azcapotzalco) Trimestre 09I 425 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Arboles B y B+

Trimestre 09I

426 / 464

Porqu e separadores m as cortos?

Estructura del nodo ndice

Conclusiones

NNLLS1S2...SNI1I2...INR1R2...RN NN es el n umero de separadores (f). LL es la longitud total de los separadores (f). S1, ..., SN son los NN separadores (v). I1, ..., IN forman un ndice de los separadores en el nodo (f). R1, ..., RN son los n umeros de bloque relativo de los nodos hijo (f).

La raz on fue la posibilidad de que cupieran tantos separadores como fuera posible en un nodo del arbol B .

No es trivial determinar cu ando se debe dividir, mezclar o redistribuir. Los arboles B + simples dieren de los de prejos en que los separadores son claves. Esto obliga a usar un poco m as de espacio en los nodos y de tiempo de procesamiento. Pero es m as f acil que trabajar con la estructura variable de los nodos. Tambi en se usan si los separadores no son muy cortos.

Pero entonces no es cierto que todos los nodos de este arbol tienen el mismo n umero de separadores.

Por lo tanto necesitamos que la estructura del nodo nos permita tener un n umero variable de registros de tama no variable.

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+ Trimestre 09I 427 / 464 Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

428 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Arboles B y B+

Trimestre 09I

429 / 464

Contenido

Tiempo de acceso

Part VII

15

Hasta ahora hemos logrado acceso a un archivo con n claves en tiempo: O (n) con b usqueda secuencial. O (logk n) con arboles B . Lo que realmente queremos es acceso en tiempo constante O (1). Recuerde que el tiempo se mide en t erminos del n umero de b usquedas en el disco.

Dispersi on
16

Introducci on a la dispersi on Dispersi on y colisiones Una funci on de dispersi on sencilla Otras funciones de dispersi on Memoria y densidad de empacado T ecnicas de dispersi on

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

430 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

431 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

432 / 464

Dispersi on

Dispersi on y colisiones

Resoluci on de colisiones

Una funci on de dispersi on es una funci on que transforma una clave en una direcci on. Es extremadamente dif cil dise nar funciones de dispersi on que no produzcan colisiones. Algunas formas de lograr esto son: Por lo que en general debemos preocuparnos por c omo resolverlas. Usar m as memoria. Ya sea escogiendo funciones que produzcan pocas colisiones. O jugando con la forma en la que se almacenan los sin onimos.

A diferencia de un ndice, es posible que dos claves se asocien con la misma direcci on, a lo que se le llama colisi on.

Lograr una buena distribuci on de las claves. De preferencia uniforme. Poner m as de una clave en una direcci on. A esto se le llama una cubeta.

Dos claves a las que se les asocia la misma direcci on se llaman sin onimas.

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

433 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

434 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

435 / 464

Contenido

Funciones de dispersi on sencillas

Ejemplo de dispersi on sencilla

15

Una funci on de dispersi on sencilla trabaja as : Representa la clave en forma num erica. La divide en partes iguales y las suma. Divide el resultado entre un primo p y usa el residuo como direcci on. Las sumas se pueden hacer m odulo p . Las direcciones estar an en el rango 0 a p 1.

Considere la clave EJEMPLO. En ASCII es 69, 74, 69, 77, 80, 76, 79. Sumamos las partes para obtener 524. Escogemos el n umero primo p = 97. Y obtenemos la direcci on 524 mod 97 = 39.

Introducci on a la dispersi on Dispersi on y colisiones Una funci on de dispersi on sencilla Otras funciones de dispersi on Memoria y densidad de empacado

16

T ecnicas de dispersi on

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

436 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

437 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

438 / 464

Ejemplo de colisiones

Contenido

Otros m etodos de dispersi on

15

Considere las siete claves CERO, UNO, DOS, TRES, CUATRO, CINCO y SEIS.

Usar una parte de la clave como direcci on. Dividir y sumar s olo una parte de la clave. Dividir la clave completa entre un primo. Elevar la clave al cuadrado y tomar el centro. Cambiar de base la clave.

Utilizando la funci on de dispersi on sencilla con p = 7 obtenemos las siete direcciones 3, 4, 6, 3, 0, 0, 0.


16

Introducci on a la dispersi on Dispersi on y colisiones Una funci on de dispersi on sencilla Otras funciones de dispersi on Memoria y densidad de empacado T ecnicas de dispersi on

Hay una colisi on entre las claves CERO y TRES en la direcci on 3.

Hay otra colisi on entre las claves CUATRO, CINCO y SEIS en la direcci on 0.

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

439 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

440 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

441 / 464

Otros ejemplos de dispersi on

Probabilidad discreta

Distribuci on de Poisson

Usar la E y obtener 69. Es decir, si hay n posiciones de memoria entonces p (i ) = Suponga que se han asignado r claves. Cu al es la probabilidad de que no le toquen claves a la posici on de memoria i ? Cu al es la probabilidad de que le toque una clave a la posici on de memoria i ? P (i , k ) =
1 r k r /n . k! ( n ) e 1 n.

Supongamos que la probabilidad de que una clave c sea asignada a una posici on de memoria i es uniforme.

Usar EEPO y obtener 6.

La probabilidad de que le toquen k claves a la posici on de memoria i r 1 r k 1 . ) despu es de asignar r claves es p (i , k ) = k (1 n nk Esta distribuci on binomial es dif cil de calcular exactamente si r y n son grandes.

Usar EJEMPLO y obtener 95.

El centro del cuadrado es 170 y se obtiene 73.

En base 10 se obtiene 57.

Sin embargo, la distribuci on de Poisson es una buena aproximaci on en este caso.

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

442 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

443 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

444 / 464

Comparaci on entre las dos f ormulas

Contenido

Efecto de usar m as memoria

15

Como ejemplo supongamos que r = n = 10.

p (i , 0) = 0.3487 y P (i , 0) = 0.3679.

Si r = 10 y n = 20 entonces tenemos que 1 p (i , 0) p (i , 1) = 0.0862 (se obtiene 0.0902 con Poisson). Si r = 10 y n = 30 entonces tenemos que 1 p (i , 0) p (i , 1) = 0.0418 (se obtiene 0.0447 con Poisson).
r se le llama densidad de empacado y de ella depende la A la raz on n cantidad de colisiones esperadas.

p (i , 1) = 0.3874 y P (i , 1) = 0.3679.

p (i , 2) = 0.1937 y P (i , 2) = 0.1839.
16

Introducci on a la dispersi on Dispersi on y colisiones Una funci on de dispersi on sencilla Otras funciones de dispersi on Memoria y densidad de empacado T ecnicas de dispersi on

La probabilidad de que i tenga dos o m as claves es 1 p (i , 0) p (i , 1) = 0.2639 o 1 P (i , 0) P (i , 1) = 0.2642.

Los ejemplos vistos tienen

r n

= 1,

1 2

y 1 3.

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

445 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

446 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

447 / 464

Contenido

Sobreujo progresivo

Ejemplo de sobreujo progresivo

15

Introducci on a la dispersi on Este m etodo es muy simple. Si una clave nueva tiene la misma direcci on que una clave que ya est a almacenada entonces se prueba en las siguientes direcciones hasta que se encuentre una direcci on vac a. En caso de que se llegue al nal del archivo se contin ua desde el principio.

Inserci on de CERO, UNO, DOS, TRES, CUATRO, CINCO y SEIS con claves 3, 4, 6, 3, 0, 0, 0
DIR CERO 0 1 2 3 4 5 6 CERO UNO CERO UNO DOS CERO UNO DOS TRES CERO UNO TRES DOS CUATRO CINCO CUATRO CERO UNO TRES DOS CUATRO CINCO CERO UNO TRES DOS SEIS CUATRO CINCO SEIS CERO UNO TRES DOS

16

T ecnicas de dispersi on Sobreujo progresivo Cubetas Borrado de registros Otras formas de resolver colisiones

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

448 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

449 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

450 / 464

Registros ausentes

Longitud de la b usqueda

Contenido

15

Introducci on a la dispersi on

Qu e pasa cuando se busca un registro que no est a en el archivo?


16

Si se encuentra una direcci on vac a ya se sabe que el registro nunca se ha puesto all . Aunque no analizaremos esto, la longitud promedio de una b usqueda aumenta muy r apidamente con respecto a la densidad de empacado. Se considera que si la longitud promedio de una b usqueda es mayor que 2 entonces es inaceptable.

Si el archivo est a (casi) lleno la b usqueda puede ser intolerablemente lenta.

Si el archivo est a lleno la b usqueda regresar a al punto inicial, momento en el que se sabe que el registro no est a all .

T ecnicas de dispersi on Sobreujo progresivo Cubetas Borrado de registros Otras formas de resolver colisiones

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

451 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

452 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

453 / 464

Cubetas

Ejemplo de cubetas

Tama no de una cubeta

Inserci on de CERO, UNO, DOS, TRES, CUATRO, CINCO y SEIS con claves 3, 4, 6, 3, 0, 0, 0
D CERO UNO DOS TRES CUATRO CINCO SEIS

Recordemos que es igual de costoso leer un registro del disco que leer todo el bloque que lo contiene (al que llamaremos cubeta).

Se puede analizar esta situaci on y descubrir que habr a menos sobreujos si las cubetas son m as grandes. Esto considerando igualdad de espacio total disponible. Sin embargo, queda claro que una cubeta no debe ser m as grande que una pista, pues se tendr a que mover el brazo para terminar de leer la cubeta completa.

As , una idea es almacenar varios registros en una sola direcci on de bloque, la cual se obtiene por dispersi on.
0 1 2 3 4 5 6 - - - - - - CERO - CERO - UNO - - - - - - - CERO UNO - DOS - - - CERO TRES UNO - DOS CUATRO - - CERO TRES UNO - DOS CUATRO CINCO - - CERO TRES UNO - DOS -

Cuando la cubeta se llene aun debemos preocuparnos por el sobreujo, pero esto ocurrir a con mucha menor frecuencia que en el caso anterior.

CUATRO CINCO SEIS - CERO TRES UNO - DOS -

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

454 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

455 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

456 / 464

Contenido

Borrado de registros

L apidas

15

Introducci on a la dispersi on

Borrar un registro de un archivo de dispersi on es mucho m as complicado que agregar un registro por dos razones: El espacio liberado por el borrado no debe obstruir b usquedas futuras. Debiera ser posible reutilizar el espacio liberado para futuras inserciones. Esto es particularmente importante si se usa un m etodo de resoluci on de colisiones por sobreujo progresivo.

16

Una forma sencilla de resolver ambos problemas es a trav es del uso de l apidas, es decir, marcas especiales que indiquen que all hab a un registro pero ya no est a. Es importante observar que s olo se debe poner una l apida donde se necesite. Por ejemplo, no se necesita si el siguiente espacio est a vac o. Tambi en se debe notar que las l apidas crean nuevos problemas que no exist an.

T ecnicas de dispersi on Sobreujo progresivo Cubetas Borrado de registros Otras formas de resolver colisiones

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

457 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

458 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

459 / 464

Ejemplo de l apidas

Contenido

Otras formas de resolver colisiones I

Borrado de CERO, CUATRO, CINCO, DOS, UNO y TRES con claves 3, 0, 0, 6, 4, 3.


15

Introducci on a la dispersi on Dispersi on doble: si ocurre una colisi on se usa una segunda funci on de dispersi on para obtener una nueva direcci on que se suma a la anterior hasta que se encuentre una direcci on vac a. Sobreujo encadenado: cada registro contendr a una direcci on donde se pueda encontrar al siguiente registro que obtuvo la misma direcci on al aplicar la funci on de dispersi on. T ecnicas de dispersi on Sobreujo progresivo Cubetas Borrado de registros Otras formas de resolver colisiones

DIR
16

CERO -

CUATRO CINCO

DOS

UNO

TRES

0 1 2 3 4 5 6

CUATRO CINCO CERO UNO TRES DOS

CUATRO CINCO + UNO TRES DOS

+ CINCO + UNO TRES DOS

+ UNO TRES DOS

+ UNO TRES -

+ + TRES -

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

460 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

461 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

462 / 464

Otras formas de resolver colisiones II

Esto es todo

Encadenamiento con area de sobreujo: se crea una segunda area donde se coloquen de forma encadenada los registros que han causado sobreujo (suele ser m as lento). Fin

Tablas de b usqueda: se podr a tener un archivo de dispersi on que no contuviera registros, sino s olo apuntadores a los mismos. Esto es equivalente a un ndice que se accede por dispersi on.

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

463 / 464

Francisco Zaragoza (UAM Azcapotzalco)

Dispersi on

Trimestre 09I

464 / 464

Вам также может понравиться