Está en la página 1de 16

Estructura de Datos y de la Informacin

M del Puerto Paule Ruiz

Tema 15: Ficheros y Ordenacin Externa

Lenguajes y Sistemas Informticos

Universidad de Oviedo

Ficheros (I)
Definicin:

Coleccin de registros del mismo tipo en Memoria Secundaria. Secuencial: Lista enlazada con punteros/referencias sobre Memoria Secundaria. Relativo: Array unidimensional (vector) implementado en Memoria Secundaria. Cada registro puede estar en cualquier posicin del vector. No se hace una gestin contigua de memoria (los n primeros registros en las n primeras posiciones). Necesidad de un campo que nos indique si esa posicin est vaca o llena.

Estructuras de Ficheros Fundamentales

M del Puerto Paule Ruiz

Ficheros (II)

Indexado simple: Tabla hash cerrada sobre MS Secuencial indexado : Tabla hash abierta con listas de registros de claves sinnimas preferiblemente ordenadas por el valor de la clave

M del Puerto Paule Ruiz

Ordenacin Externa

Ordenacin sobre ficheros secuenciales. No hay acceso directo a cualquier elemento. Acceso a un elemento (de cada vez) Mtodos:

Mezcla directa Mezcla natural

M del Puerto Paule Ruiz

Mezcla directa (I)


Consta de dos pasadas:

Distribucin Mezcla

p=1; while p<n { /*distribuimos los elementos de a de p en p en las dos subsecuencias de b y c*/ Distribuir (a, b, c, p); /*Mezclamos las subsecuencias b y c de longitud p sobre a*/ MezclaMos (a, b, c, p); p=p*2; }

a: Secuencia a ordenar n: nmero de elementos a ordenar Nmero de veces que se ejecuta el bucle aprox. E[log2(n)+1]
M del Puerto Paule Ruiz

Mezcla directa (II)


Distribucin
while (queden elementos en a){ Copiar siguientes p elementos de a en b Si todava quedan elementos en a Copiar siguientes p elementos de a en c }

Complejidad O(n)

Mezcla
while queden subsecuencias en b y ca mezclar{ Mezclar de b y cde longitud <= p sobre a }

Complejidad O(n)
M del Puerto Paule Ruiz

Ejemplo 1

Mezcla directa (III)


Complejidad total: [O(n)+O(n)]*O(log2n)=O(2n*log2n)=O(n *log2n) Ventajas: Buena complejidad Desventaja: Consume mucha memoria: Hecho comn a todos los algoritmos de ordenacin externa.
M del Puerto Paule Ruiz

Mezcla Natural(I)
Objetivo:

No romper las subsecuencias ordenadas que ya existen de partida en la secuencia a ordenar Subsecuencia ordenada : a1, a2, ...,ai-1,..,aj-1, aj,...,an ai.clave<=ai+1.clave<=...<=aj1.clave<=aj.clave

Tramo:

M del Puerto Paule Ruiz

Mezcla Natural (II)


while numtramos>1 { /*distribuimos los elementos de aen las dos subsecuencias de b y c*/ Distribuir (a, b, c); /*Mezclamos las subsecuencias b y c sobre a*/ MezclaMos (a, b, c);
}

El nmero pasadas que se ejecuta el bucle ser menor o igual E[log2(t)+1] donde : - t es el nmero de tramos original de a Es igual porque puede haber unificacin de tramos

M del Puerto Paule Ruiz

Mezcla Natural (III)


Distribucin
while (queden elementos en a){ Copiar siguiente tramo dea en b Si todava quedan elementos en a Copiar siguiente tramo de a en c } Complejidad: O(n)

Mezcla
while queden subsecuencias en b y c{ Si quedan tramos en b Copiar siguiente tramo de b en x Si quedan tramos en c Copiar siguiente tramo de c en y Mezclar (x, y, a) Complejidad: O(n)
M del Puerto Paule Ruiz

Mezcla Natural (III)


Ejemplo 2 Complejidad de Mezcla Natural: O(2n E[log2t+1])=O(nlog2t) Caso peor: Vector inversamente ordenado Inicialmente n tramos>igual que mezcla directa Caso mejor: Vector ordenado: Inicialmente tenemos un tramoO(n) Ventajas: Mejora la complejidad de la Mezcla Directa para vectores inicialmente ordenados Se comporta mejor que MezclaDirecta al aprovechar la fusin de tramos.

M del Puerto Paule Ruiz

Mezcla Equilibrada (I)

T: n de ficheros a utilizar (usualmente T es par) S: n de tramos

Distribuir los s tramos del fichero 1 entre T/2 ltimos ficheros while A no este ordenado Mezclar tramos de los T/2 ficheros activos sobre los T/2 ficheros restantes. Ejemplo 3

M del Puerto Paule Ruiz

Mezcla Equilibrada (II)

El fichero ordenado queda en :


Si mezcla par: En el T/2+1 Si mezcla impar: 1 T=4 T=4 T=6 s=7n de mezclas =3 s=3 n de mezclas=2 s=7 n de mezclas=2

Nmero de mezclas necesarias en funcin de s:


M del Puerto Paule Ruiz

Mezcla Equilibrada (III)


S=150

T=4 n de mezclas<=E(log2(149))+1<=8 T=6 n de mezclas<=E(log3(149))+1<=5 T=8 nde mezclas<=E(log4(149))+1<=4 El signo es <= porque hay fusin de tramos. Distribucin O(n) Mezcla O(n) Mezcla equilibrada O(nlog(T/2)n)

Complejidad:

M del Puerto Paule Ruiz

Mezcla Polifsica (I)

Distribucin: distribuir los tramos de un fichero a ordenar en los T-1 ficheros en el n indicado en la secuencia generalizada de Fibonacci. Mezcla: Hacer mezclas de tramos sobre el fichero vaco hasta que un fichero quede vaco. Realizar esto hasta que el fichero original quede ordenado.

M del Puerto Paule Ruiz

Mezcla Polifsica (II)


Secuencia Fibonacci:

T=3 a1=1; a2=1; k>=3fib(k)=fib(k-1)+fib(k-2) 1, 1, 2, 3, 5, 8, . T=4 a1=1;a2=1; a3=1fib(k)=fib(k-1)+fib(k2)+fib(k-3) 1,1,1,3,5,9,17,31,... T=cualquiera k<T fib(k)=1 k>=T sumatorio(fib(k) T-1 fib anteriores

M del Puerto Paule Ruiz

También podría gustarte