La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Análisis y Diseño de Algoritmos Programa #1 Samuel Garrido Daniel.

Presentaciones similares


Presentación del tema: "Análisis y Diseño de Algoritmos Programa #1 Samuel Garrido Daniel."— Transcripción de la presentación:

1 Análisis y Diseño de Algoritmos Programa #1 Samuel Garrido Daniel

2 Enunciado del programa A. Escriba un procedimiento que tenga como entrada una dimensión n, genere un arreglo aleatorio A de n números enteros, y de como salida los tiempos respectivos,medidos con el reloj de la computadora, que tardan para ordenar alarreglo A los algoritmos OrdenamientoPorInserccion y OrdenamientoPorSeleccion. B. Grafique los tiempos variando n en el intervalo [10, 2000], a pasos queusted estime adecuados. A. C. Realice pruebas en procesadores de distintas velocidades.

3 Eficiencia de los algoritmos  Mediante el estudio formal de las funciones con ayuda de la notación asintótica.  Mediante un estudio experimental, lo que conlleva habitualmente a la elaboración de una serie de pruebas que reflejen condiciones diferentes de funcionamiento del algoritmo estudiado. Estas pruebas se realizan para cantidades de datos crecientes y los resultadosde las pruebas son presentadas de manera adecuada.

4 Algoritmos de ordenamiento

5 Ordenamiento por Selección  La idea básica de este algoritmo consiste en buscar la dirección del menor elemento del arreglo y colocar el elemento de la dirección del menor en la primera posición. Luego se busca la dirección del segundo elemento más pequeño del arreglo y se coloca ese elemento en la segunda posición. El proceso continúa hasta que todos los elementos del arreglo han sido ordenados.

6 Ordenamiento por Inserción   En este método se considera que en todo momento se tiene la secuencia de elementos a ordenar dividida en dos subsecuencias, la primera de ellas, A(1), A(2),..,A(i-1) ya ordenada, y la segunda, A(i),..,A(n), con los elementos que faltan por ordenar.   En cada paso, empezando con i=2, e incrementando el valor de i de uno en uno, se toma el elemento i del array y se inserta en el sitio adecuado dentro de la subsecuencia ordenada.   El caso i=1 no se tiene en cuenta pues se considera que el primer elemento esta ordenado respecto a si mismo

7 Complejidad conocida  O(n 2 )  Existen mejores algoritmos de ordenamiento

8 Experimentalmente  Para medir el tiempo de ejecución de los dos algoritmo se utilizo la función clock() del lenguaje ANSI C, la cual devuelve un valor de tipo clock_t que contiene el número de cilcos de reloj al momento de ser invocada.  Para determinar el tiempo en segundos del valor retornado por la función clock() es necesario dividirla entre la constante CLK_TCK. Con esto se logra la mejor aproximación para medir el tiempo de los algoritmos que se analizaran.

9 Resultados obtenidos  Cabe mencionar que los incrementos de n para realizar las mediciones se realizaron inicialmente en el rango especificado en el enunciado del programa,es decir de 10 < n < 2000 con diferentes incrementos, obteniendo como resultado que en todas las ejecuciones dentro de este rango de n, se obtuvieron resultados de tiempos de 0 segundos, en todos los casos, lo cual hizo imposible apreciar las variaciones de tiempo entre uno y otro algoritmo.  Por lo tanto se buscó un rango alternativo de n para realizar las pruebas,siendo 1000 < n < 15000 el rango seleccionado, con incrementos de i = 500. Sin embargo por razones de espacio en el documento se realizaron las graficas tomando incrementos de i = 1500 iniciando con n = 4500.

10 Resultado 1  Configuración de la computadora: procesador: AMD Duron 1Ghz., sistema operativo: Windows XP, memoria : 374 MB, compilador: Borland TurboC++ 3.0.  Los resultados obtenidos muestran en la fig. 1 la manera en que el algoritmo por selección ligeramente consume mayor tiempo al principio, sin embargo a medida que aumentan los datos mejora su eficiencia en comparación con el algoritmo de inserción.

11 Resultado 1 (ii)

12 Resultado 2  Configuración de la computadora: procesador: Celeron 500Mhz, sistema operativo:Windows XP, memoria: 150 MB, compilador: Turbo C++ 3.0.  La prueba utilizando este procesador permite ver como la eficiencia en tiempode los algoritmos es casi parecida y alternándose o igualándose en cuanto aconsumir menos tiempo en las diferentes ejecuciones, sin embargo el algoritmo de selección prueba nuevamente con este rango de datos ser en general mas eficiente como se aprecia en la figura 2.

13 Prueba 2 (ii)

14 Prueba 3  Configuración de la computadora: procesador: G3 700Mhz, sistema operativo:Mac OS X, memoria: 128 MB, compilador: gcc 3.3 (Apple inc.).  En lafigura 3 se muestra el tiempo de ejecución de estas dos pruebas y se puede apreciar claramente como el desempeño del algoritmo de Inserción es mucho mejor con valores de n de mayor tamaño.

15 Prueba 3 (ii)


Descargar ppt "Análisis y Diseño de Algoritmos Programa #1 Samuel Garrido Daniel."

Presentaciones similares


Anuncios Google