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

Slides:



Advertisements
Presentaciones similares
ALGORITMO Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea y resolver un problema. De un modo más formal,
Advertisements

Complejidad Computacional
Complejidad Computacional
Diseño y análisis de algoritmos
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
DISEÑO DE EXPERIMENTOS
ANÁLISIS DE REQUERIMIENTOS
Razonamiento algorítmico
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
GESTIÓN DE LOS COSTOS DEL PROYECTO
Resolución de Problemas Algoritmos y Programación
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
La prueba U DE MANN-WHITNEY
PROGRAMACION DE ESTRUCTURAS DE DATOS
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Programación 1 Introducción
METODO DE ORDENAMIENTO POR SELECCIÓN.
Matemáticas Discretas y Algoritmos
Medición y rendimientos de Algoritmos
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
LOGICA DE PROGRAMACION
Proceso de información en la computadora
Programación II Profesor A.S. MOLINA, Carlos
Análisis de Algoritmos
Introducción al análisis de algoritmos
Algoritmos.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.

Algoritmos de búsqueda
Tablas de Hash.
LENGUAJE DE PROGRAMACIÓN
PROGRAMACIÓN PROCEDIMENTAL
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Velocidad Instantánea en un Movimiento Rectilíneo.
Aplicación de estructuras de datos
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Capítulo 7 Gestión de memoria.
Fracciones equivalentes
Metodología para solución de problemas
Capacidad de Proceso.
Animación en Flash MX Conceptos Basicos.
Análisis y Diseño de Algoritmos
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Parte I. Estructuras de Datos.
Análisis de Algoritmos
UNIDAD 1.- EVALUACIÓN DE DATOS ANALITICOS
Práctica de laboratorio:
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
PRUEBAS ESTADISTICAS NO PARAMETRICAS
Alexander Aristizabal Ángelo flores herrera
Ordenamiento en lenguaje c
Algoritmo de Retropropagación. Conclusiones de Retropropagación n 1. Si la neurona j es un nodo de salida es igual al producto de la derivada y la señal.
ALGORITMO QUE ES ??.
Elaboración de algoritmos usando lógica de programación
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Desarrollo de lógica algorítmica.
Introducción a los TADs
* Cuando nos permite desarrollar un programa que necesitamos para tomar un conjunto de buenas prácticas para hacer eso. Esto se debe a que podemos ahorrar.
problemas de la calidad del software

“Análisis y Diseño de Algoritmos” 2a Entrega, Programa 6 Centro de Investigación y Estudios Avanzados del IPN Samuel Garrido Daniel 15-Abril-2004 México,
ESTE TERMINO SE DEFINE COMO : UN PROCESO EN EL CUAL SE NOS DESCRIBE UN PROBLEMA (EN LENGUAJE NATURAL), LUEGO DE ESTO SE PLANTEAN POSIBLES RESOLUCIONES.
Taller de investigación 1
Capitulo 1 Análisis descriptivo
Programación I Prof. Carolina Cols. Algoritmo es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.
TEMA II EL PROCESO DE LA PLANEACION. 1.Pasos en el proceso de planeación.
INSTITUTO UNIVERSITARIO POLITÉCNICO “SANTIAGO MARIÑO” EXTENSIÓN GUAYANA Autor: Fabiola Gil C.I: Noviembre 2014.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

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

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.

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.

Algoritmos de ordenamiento

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.

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

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

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.

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 < 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.

Resultado 1  Configuración de la computadora: procesador: AMD Duron 1Ghz., sistema operativo: Windows XP, memoria : 374 MB, compilador: Borland TurboC  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.

Resultado 1 (ii)

Resultado 2  Configuración de la computadora: procesador: Celeron 500Mhz, sistema operativo:Windows XP, memoria: 150 MB, compilador: Turbo C  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.

Prueba 2 (ii)

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.

Prueba 3 (ii)