La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño y análisis de algoritmos Clasificación II.

Presentaciones similares


Presentación del tema: "Diseño y análisis de algoritmos Clasificación II."— Transcripción de la presentación:

1 Diseño y análisis de algoritmos Clasificación II

2 Temario Clasificación –Ordenamientos masivos Ej:Merge sort

3 Medios masivos, Merge sort y su análisis Los algoritmos anteriores son inaplicables, si la cantidad de datos por ordenar no pueden ser procesados en memoria principal (directos) Se se requieren métodos indirectos para tratar con muchos datos, Ej: dispositivos perifericos secuenciales Cintas Discos magnéticos Esta impone fuertes restricciones, lo que lleva a usar técnica de mezcla, (merge) Alg mezcla1.: 1.Dividir la secuencia a en dos mitades: denominadas b y c 2.Mezcalr b y c cambiando cada elemento en pares ordenados 3.Llamar a la secuencia mezclada y repetir 1 y 2, esta vez está combinando los pares ordenados en cuádrupolos ordenados,. 4.Repetir 1,2,3 combinando los cuádruplos en octetos y seguir haciendo esto 5.(cada vez duplicando los longitudes de las subsecuencias combinadas) completamente ordenada 6.Fin Secuencia cuando esta está completamente ordenada Clasificación

4 Medios masivos, Merge sort y su analisis Ejemplo: Dada la siguiente secuencia: 44 55 12 42 94 18 06 67 Paso 1 2 secuencias 44 55 12 42 94 18 06 67 Resultado 44 94 |18 55 | 06 12 | 42 67 mezcla, (merge), de los componentes individuales da 44 94 |18 55 06 12 | 42 67 Resultado 06 12 44 94 | 18 42 55 67 Repitiendo otra vez por la mitad y combinando los pares ordenados: 06 12 44 94 | 18 42 55 67 finalmente la tercera operación de división y MEZCLA, produce, al fin el resultado deseado: 06 12 18 44 42 55 67 94

5 Def: fase; cada operación que trata el conjunto completo de datos combinación Def: pase o etapa; el proceso más corto que, por repetición,constituye el proceso de clasificación. El ejemplo anterior tuvo 3 pases, cada uno consistente en una fase, de división y una fase de combinación. tres “cintas” Para lograr la clasificación se requiere de tres “cintas”: Este proceso se puede llamar “mezcla de tres cintas. Clasificación Medios masivos, Merge sort y su analisis Cinta a Fase de división Cinta b Cinta c Cinta a Fase de combinación

6 Clasificación Medios masivos, Merge sort y su analisis El proceso anterior puede ser mejorado: Las fases de división no contribuyen, directamente, en la clasificación; pues de ninguna manera, permutan los elementos.; se puede pensar que son improductivas, pese que constituyen la MITAD de todas las operaciones de copiado. Si se combinara la fase de división, con la mezcla pueden eliminarse por completo las operaciones de división. En vez de combinar en una sola secuencia,el resultado del proceso se redistribuye, al instante en DOS CINTAS, que constituyen las fuentes del próximo pase. A diferencia del algoritmo anterior, (mezcla de dos fases), este algoritmo se conoce como: Mezcla de UNA sola fase o mezcla BALANCEADA. Es mejor, (en VELOCIDAD), porque sólo ejecuta la mitad de las operaciones de copiado, aunque se necesitan 4 cintas; Para ejemplificar se usará una ED. Arreglo, pero se trabajaran en forma estrictamente secuencial, como si fueran archivos. Existe una fuerte dependencia del algoritmo con la estructura de datos usada.

7 Clasificación Medios masivos, Merge sort y su analisis La forma general de la fase combinada mezcla-divisón puede ilustrarse con el siguiente diagrama: i j kl fuente destino mezcla división El destino de los elementos combinados se cambia desde el comienzo del arreglo de destino al final del arreglo, después de cada par ordenado en la primera fase, después de cada cuádruplo ordenado en la segunda fase, etc.; de esta forma se llenan uniformemente las dos secuencias de destino, representadas por los dos extremos de un solo arreglo. Luego de cada pase, los dos arreglos intercambian su papel: la fuente se convierte en un nuevo destino y viceversa.

8 Clasificación Medios masivos, Merge sort y su analisis ED: :ARRAY[] OF item ED: a:ARRAY[1.. 2*n] OF item Una simplificación final del programa puede lograrse uniendo los dos arreglos conceptualmente distintos en uno sólo de tamaño duplicado. Así pues los datos pueden representarse Un ejemplo de cómo ordena este algoritmo: Datos originales en la primera parte del arreglo (o primer arreglo simulado) Agrupación de a pares en cada extremo Agrupación de a cuádruplos en cada extremo Ordenamiento final

9 Procedure mergesort: (nivel 1) VAR i, j,k,L:index ; up BOOLEAN; p: INTEGER; BEGIN Up := TRUE; p :=1; REPEAT inicializar variables índice IF up THEN i := 1; j:=n; k:=n+1; ELSE k:=1;L:=n;i:=n+1;j:=2*n; END; hacer la mezcla de las fuente i y j hacia los destinos k y L;grupos largo p up:= not(UP); p:=2*p; UNTIL p=n END Clasificación Medios masivos, Merge sort y su analisis Los datos estan en el rango [1..n] inicialmente, luego de acuerdo con la variable up se alojan entre [n+1..2*n] alternadamente. P corresponde al largo de las subsecuencias a mezclar.

10 (nivel 2, refinamiento ) h:=1;m:=n; /* m = número de elementos por mezclar */ REPEAT; q:=p;r:=p;m:=m-2*p; mezclar q elementos de las fuentes i, con r elementos de la fuente procedentes de la fuente j, el índice destino se aumenta en h. h := -h; k se intercambia con L UNTIL m=0; Clasificación Medios masivos, Merge sort y su analisis Se Introducen h y m que corresponden a la inicialización de variables índice del refinamiento anterior. Se debe tener en cuenta que el pase de combinación que incluye n elementos es también una secuencia de combinaciones de grupos de largo p. Entre cada mezcla parcial de ese tipo, el destino se cambia del extremo inferior al superior del arreglo de destino o a la inversa para garantizar una distribución igual en ambos extremos. Si el destino de los elementos es el extremo inferior del arreglo,entonces el índice de destino es k, que se incrementa tras cada movimiento de un elemento. Si los elementos deben moverse al extremo superior del arreglo de destino, el índice destino es L, que se decrementa con cada movimiento. Para simplificar se usa siempre k, cambiando los valores con L. El incremento es positivo o negativo de acuedo con h

11 Clasificación Medios masivos, Merge sort y su analisis (nivel 3, refinamiento ) WHILE (q <>0) AND (r<>0) DO IF a[i] < a[j] THEN mover una elemento de la fuente i, al destino k, avanzar i y k; q:=q-1; ELSE mover una elemento de la fuente j, al destino k, avanzar j y k; r:=r-1; END; Copiar extremo de la secuencia i, copiar extremo de la secuencia j En el paso de refinamiento final, hay que formular la verdadera proposición de la mezcla, se debe tener presente que el cabo (extremo) de una subsecuencia, que no queda vacia luego de una mezcla, debe anexarse a la secuencia de salida simples operaciones de copiado.

12 Clasificación Medios masivos, Merge sort y su analisis restricción Antes de describir el programa completo, se puede eliminar la restricción de que n debe ser una potencia d 2. Estas 3 asignaciones (ya vistas); q:=p;r:=p;m:=m-2*p; se pueden reemplazar por: IF m >=p THEN q:=p ELSE q:=m END; m:=m-q; IF m >=p THEN r:=p ELSE r:=m END; m:=m-r; Finalmente, para GARANTIZAR, el término del algoritmo, la condición p = n, que controla la REPETICION EXTERNA, se cambia or p>=n. Con todo este refinamiento sucesivo, se tiene el programa: Straight merge o mezcla directa. VER FIGURA. Cada paso duplica p y la clasificación se termina cuando p>=n por lo cual incluye log n pases. Por definición en cada pase se copia el número completo n de elementos, en consecuencia se realizan n*log n operaciones. El orden del algoritmo es

13 Procedure mergesort: VAR i, j,k,L,t:index ; up BOOLEAN; h,m,p,q,r: INTEGER; BEGIN Up := TRUE; p :=1; REPEAT h:=1;m:=n; IF up THEN i := 1; j:=n; k:=n+1; ELSE k:=1;L:=n;i:=n+1;j:=2*n; END; REPEAT; q:=p;r:=p;m=m-2*p; (*se puede generalizar con las cuatro instrucciones de la diapo anterior*) WHILE (q <>0) AND (r<>0) DO IF a[i] < a[j] THEN a[k] := a[i] ;i:=i+1;k:=k+h;q:=q-1 ELSE a[k] := a[j] ;j:=j-1;k:=k+h;r:=r-1 END END; WHILE (r>0) DO a[k] := a[j] ;j:=j-1;k:=k+h;r:=r-1 END; WHILE (q>0) DO a[k] := a[i] ;i:=i+1;k:=k+h;q:=q-1 END; h := -h;t:=k;k:=L;L:=t UNTIL m=0; up:= not(up); p:=2*p; UNTIL p>=n; IF NOT UP THEN FOR i:=1 TO n DO a[i]:=a[i+n] END END;


Descargar ppt "Diseño y análisis de algoritmos Clasificación II."

Presentaciones similares


Anuncios Google