Univesidad Técnica Federico
Santa María
Estructura de Datos y Algoritmos
Tarea 01
Por:
Eric de la Goublaye de Ménorval 9792010-9
Nicolas Cheker
9892002-1
Introducción:
El siguiente programa permite observar gráficamente los costos y
metodos de ordenamientos de los conocidos algoritmos Insertion Sort, Merge
Sort y Heap Sort. Ademas permite comparar los algoritmos selecionados, es
decir, se puede ver un algoritmo, compararlo con otro o con otros dos.
El programa consta
de dos funciones, la primera de graficar los costos de tiempo de los algoritmos
versus el tamaño de los arreglos a ordenar y la segunda de graficar
dinámicamente la posición de los elementos del arreglo versus
el tamaño de los arreglos a ordenar.
Desarrollo:
El programa consta de varios archivos los cuales son compilados por medio
de un Makefile. Existen archivos con los codigos fuentes (*.c) y librerías
(*.h), tambien se podra observar la creación automática de
un archivo de configuración de Gnuplot *.gnu y la creación
de archivos (*.DAT) que son creados al momento de ejecutar el programa.
Se tiene cinco archivos código fuente,
de los cuales tres son para cada algoritmo (insertion.c, mergesort.c, heapsort.c),
otro para la creacion del archivo de configuración del Gnuplot ()
y un último que hace el llamado de los algoritmos y de los gráficos
(diagrama.c)
Tambien se encuentra un archivo makefile
altamente configurado para compilar los archivos y por último este
archivo Readme.html.
El contenido de los arreglos en el
programa son generados de manera aleatoria, partiendo de una semilla sacada
del tiempo del computador, esto se observa claramente en el código
fuente del archivo creararreglo.c
NOTA: Todos los archivos son fuertemente comentados para un mejor entendimiento
de para del corrector.
Modo de empleo:
Despues de descomprimir el archivo
nicoeric01.tar aparece una carpeta con el mismo nombre incluyendo los archivos
mencionados anteriormente.
Para complar los archivos basta colocar
el la linea de comando: (# = linea de comando)
# make
Una ventaja de este programa a diferencia
de los otros es que permite al usuario ingresar los algoritmos que se deseen
estudiar y comparar . Esto permite una posible extención del programa,
es decir, si se desea estudiar otro algorimto bastaría con colocar
el codigo fuente, por ejemplo otroalgoritmo.c, permitiendo entonces una expansión
de este programa para otros programadores por medio de modulos. Para lograr
este objetivo se debe colocar los siguientes argumentos de entrada al momento
de ejecutar el programa:
#./diagrama 1 2 3 m
Donde:
1 es
el llamado al Algoritmo Insertion Sort.
2 es
el llamado al Algoritmo MergeSort.
3 es
el llamado al Algoritmo HeapSort.
m es
el valor de la posición máxima del conetnido de los arreglos
para la segunda fase (Diagrama Dinámico)
Al momento de ejecutar el programa crea archivos objetos (*.o) los cuales
pueden ser eliminados de manera simple ejecutando en la linea de comando
la siguiente instrucción:
#make clean
Igualmente para
que el programa pueda graficar se crean automaticamente archivos de datos
(*.DAT los cuales para ), los cuales pueden ser facilmente eliminados colocando
en la linea de comado la siguiente instrucción:
#make data
Ejemplos de Uso:
#./diagrama 1 1000 (permite observar par el Algoritmo InsertionSort con m=1000)
#./diagrama 3 2 5000 (permite observar para los Algoritmos HeapSort y MergeSort
con m=1000)
#./diagrama 1 2 3 4500 (permite observar el ordenamiento de todos los algoritmos
con m=4500)
NOTA: El primer argumento y m son datos obligadatorios que deben ser colocados
para poder ejecutar el problema.
Conclusion:
Este programa entrega gráficos
de gran importancia para el entendimiento de los algoritmos, en su primera
fase muestra el costo de los algoritmos y en su segunda fase muestra como
se va costruyendo el ordenamiento de los algoritmos de una manera dinámica
y amistosa.
Gracias a este programa se ve claramente
los algoritmos a baja y alta carga permitiendo estudiar el desempeño
de ellos, como tambien su manera de construir el arreglo ordenando permitiendo
un mejor entendimiento de los Algoritmos InsertionSort, MergeSort y HeapSort.