Sie sind auf Seite 1von 5

Enunciado Proyecto Uno - Curso de Algoritmia

UNIVERSIDAD TECNOLGICA DE PEREIRA


Programa de Maestra en Ingeniera de Sistemas y Computacin
Profesor Hugo Humberto Morales Pea
Lunes 18 de Julio de 2011

2. Algoritmo Merge Sort Opti-

1. Introduccin

mizado en Consumo de Memo-

El siguiente proyecto tiene por objeto enfrentar a los


estudiantes del curso:

ria

a la implementacin y prueba de todos los algoritmos de ordenamiento trabajados en clase: Inser-

2.1. Funcin Merge Sort Optimizada

tion Sort, Merge Sort tradicional, Merge Sort optimizado en el consumo de memoria, Heap Sort,
Quick Sort y Counting Sort,

enviados por referencia a la funcin MERGE-SORTAUX. Los parmetros de la funcin MERGE-SORT-

En esta funcin se crean los vectores L y R que son

OPTIMIZE son: A que es un arreglo de elementos, p


y r que son dos ndices que denotan el inicio y el fin del
arreglo, tal que p r.

a la investigacin, implementacin y prueba de los


algoritmos de ordenamiento: Bubble Sort, Selection Sort y Heapinsert Sort,

function MERGE-SORT-OPTIMIZE(A, p, r)

if p < r then

q (p+r)
2

n1 q

n2 r q

create arrays L[1 . . . n1 + 1] and R[1 . . . n2 + 1]

MERGE-SORT-AUX(A, L, R, p, q)

1
a la aplicacin de la tcnica de programacin
de divide y vencers en los algoritmos de ordenamiento de Merge Sort (tradicional y mejorado)
y Quick Sort,
a la escogencia de un lenguaje de programacin
y de unas estructuras de datos para la implementacin de los diferentes algoritmos de orde-

2.2. Funcin Merge Sort Auxiliar

namiento, y

La funcin MERGE-SORT-AUX recibe como


parmetros los vectores A, L y R, y los indices p y r
que denotan el inicio y el fin del sub-arreglo que se est

al anlisis de los diferentes algoritmos de ordenamiento desde dos puntos de vista: complejidad
espacial y temporal.

ordenando, tal que p r.


1

3. Algoritmos a Implementar

function MERGE-SORT-AUX(A, L, R, p, r)
1
2

if p < r then

q (p+r)
2

MERGE-SORT-AUX(A, L, R, p, q)

MERGE-SORT-AUX(A, L, R, q + 1, r)

MERGE-AUX(A, L, R, p, q, r)

Todo equipo de trabajo debe implementar:


1. el algoritmo Bubble Sort,
2. el algoritmo Selection Sort,
3. el algoritmo Insertion Sort,
4. el algoritmo Heapinsert Sort,

2.3. Funcin Merge Auxiliar


5. el algoritmo Merge Sort tradicional,
En esta funcin se tienen como parmetros A que
es un arreglo con los elementos a ordenar, L y R son
arreglos de elementos, p, q y r (con p q < r) son

6. el algoritmo Merge Sort optimizado en consumo


de memoria,

ndices que denotan sobre el vector A el inicio y el fin


de la informacin que debe quedar almacenada en los

7. el algoritmo Heap Sort,

vectores L y R, vectores que permiten almacenar de


forma temporal los elementos de la secuencia ordenada
de la izquierda (L, de la palabra en ingles Left) y los

8. el algoritmo Quick Sort, y


9. el algoritmo Counting Sort.

elementos de la secuencia ordenada de la derecha (R,


de la palabra en ingles Right).

4. Implementacin
Para el desarrollo del proyecto ustedes deben escoger
el sistema operativo y el lenguaje de programacin de
sus preferencias.

function MERGE-AUX(A, L, R, p, q, r)
1

n1 q p + 1

n2 r q

for i 1 to n1 do

4
5
6

Cada equipo de trabajo debe implementar una interfaz grfica de entrada/salida. Los datos de entrada se
leern de archivos tipo texto; la interfaz de salida debe

L[i] A[p + i 1]
for j 1 to n2 do

permitir ver claramente que la solucin s satisface el


pedido de entrada.

R[j] A[q + j]

L[n1 + 1]

R[n2 + 1]

i1

La entrada del problema estar normalizada para


permitir que todos los equipos de trabajo prueben
sus algoritmos con los mismos datos. La salida del

10 j 1

problema, de la misma manera, estar normalizada


para permitir la verificacin de los resultados obtenidos.

11 for k p to r do
12

if L[i] R[j] then

13

A[k] L[i]

14

ii+1

15
16

Todos los programas tienen que correr bajo un


mismo sistema operativo, un mismo lenguaje de programacin y un mismo computador; se debe entregar el programa ejecutable (si es del caso) y el cdigo

else A[k] R[j]


j j+1

fuente.
2

5. Anlisis

5.4. Tamaos de las entradas para todos


los algoritmos

5.1. Eficiencia en tiempo


Todos los algoritmos de ordenamiento se tienen
Para cada una de los algoritmos se deber calcular

que probar (correr) con entradas de tamao: 100.000,


200.000, 300.000, 400.000, . . . , 1500.000 . Para es-

la complejidad en tiempo de ejecucin, prctica,


extrapolndola de las medidas de tiempo de ejecucin
tomadas para diferentes tamaos de entradas. Esto

tos tamaos de entrada se deben calcular los factores


constantes para los algoritmos de complejidad en el caso promedio (n2 ).

implicar generar un nmero grande de ejemplos de


prueba, al azar y guardarlos en un archivo, para poder
probar todas los algoritmos de ordenamiento con
los mismos datos de entrada.

5.5. Tamaos de las entradas adicionales


para todos los algoritmos de complejidad en el caso promedio de (n) o
(n lg n)

El anlisis debe estar contenido en una tabla donde,


para cada algoritmo, se tomen muestras de diferentes
tamaos (unas dos o tres muestras por cada n), se de el
tiempo real de ordenamiento, la complejidad temporal

Los tamaos de las entradas son: 1000.000,


2000.000, 3000.000, 4000.000, 5000.000, . . . ,
20000.000 . Con estos tamaos de entrada se deben

del algoritmo, y se calcule el factor constante1 . Un


ejemplo de una tabla (para un algoritmo de complejidad

calcular los factores constantes para estos algoritmos.

(n2 )) es presentado en la tabla 1.

5.6. Inferir tiempos de ejecucin esperados

Tambin deber comparar los tiempos tomados por


las diferentes alternativas, y a partir de all sacar conclusiones.

Con los factores constantes de cada uno de los algoritmos inferir tiempos de ejecucin de ellos para entradas de tamao: 30000.000, 40000.000, 60000.000,

5.2. Eficiencia en espacio

. . . , 200000.000

Para cada una de los algoritmos de ordenamiento


debern calcular la complejidad en espacio, prctica,
extrapolndola de las medidas de espacio demandado

5.7. Inferir consumo de espacio de almacenamiento

(en disco y en memoria principal) tomadas para


diferentes tamaos de entradas .

Con respecto al consumo en la practica en espacio


de almacenamiento de los algoritmos, inferir la canti-

Tambin deber comparar los espacios medidos para

dad de espacio de almacenamiento que necesita cada


uno de los algoritmos para ordenar entradas de tamao:
30000.000, 40000.000, 60000.000, . . . , 200000.000

las diferentes alternativas, y a partir de all sacar conclusiones.

5.3. Nmeros a ordenar


5.8. Grficos de tamao de entrada versus
tiempo de ejecucin

Este proyecto est destinado a ordenar nmeros enteros sin signo generados aleatoriamente entre 0 (cero)

Graficar en un plano cartesiano el tiempo de ejecucin (eje y) versus el tamao de la entrada (eje x) para
cada uno de los algoritmos, donde se muestre que efec-

y 6000.000 (seis millones). Cada nmero debe tener la


misma probabilidad de aparicin.
1 Tener en cuenta que
tiempoReal = f actorConstante complejidadAlgoritmo

tivamente la grfica es el g(n) de la complejidad del al3

goritmo. Adicionalmente para las ejecuciones con en-

7. Entrega del proyecto

tradas de 100.000 a 1500.000 se debe graficar en un


solo plano cartesiano todos los tiempos de ejecucin
para todos los algoritmos. De igual forma se debe hacer

El proyecto debe ser entregado como mximo, el


Jueves 28 (veintiocho) de Julio de 2011, a las 8:00 PM,

lo mismo para los algoritmos que tienen complejidad


en el caso promedio de (n lg n) para las entradas de

por correo electrnico.

1000.000, 2000.000, 3000.000, . . . , 20000.000 .

8. Calificacin

5.9. Otros detalles

La calificacin del proyecto se har teniendo en


cuenta los siguientes porcentajes: 50 % para la implementacin de los algoritmos de ordenamiento y 50 %
para el informe escrito.

Desarrollen y soporten sus anlisis utilizando los


mtodos apropiados (tablas, grficos, indicadores
estadsticos), donde puedan apreciarse las variaciones
de acuerdo al tamao y naturaleza de los datos de
entrada. Expliquen claramente el significado de sus
datos y cmo se analizaron.
Sugerencia: Sus resultados sern ms exactos si sus
muestras son variadas y lo suficientemente grandes.

5.10. Caractersticas del computador


Se deben colocar las especificaciones del nico computador en el que se tienen que hacen todas las pruebas. Dependiendo de la mquina los factores constantes varan (es decir, tienden a ser ms grandes o ms
pequeos).

5.11. Conclusiones
Esta es una de las partes ms interesantes del trabajo
(pero no por ello la que ms vale). En ella se espera que
ustedes analicen los resultados obtenidos y justifiquen
claramente sus afirmaciones apoyados en su formacin
como ingenieros.

6. Grupos de trabajo
Este proyecto debe ser desarrollado en equipos de
trabajo de mnimo tres y mximo cuatro estudiantes.
4

Entrada (n)
5
5
5
10
10
10
.
.
.

Tiempo Real (segundos)


0.11
0.11
0.12
0.38
0.40
0.41
.
.
.

Complejidad ((n2 ))
25
25
25
100
100
100
.
.
.
Constante

Tabla 1: Clculo del factor constante

Factor Contante
0.0044
0.0044
0.0048
0.0038
0.0040
0.0041
.
.
.
0.0042

Das könnte Ihnen auch gefallen