Medición y rendimientos de Algoritmos

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

INTELIGENCIA ARTIFICIAL
Complejidad Computacional
Diseño y análisis de algoritmos
1. La ciencia y su método. Medida de magnitudes..
DISEÑO DE EXPERIMENTOS
MÉTODO EMPÍRICO.
Técnicas para la elaboración de un instrumento
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
¿ Que es la complejidad de un algoritmo ?
Programación I Teoría III
Técnico en programación de Software
UNIDAD I MODELOS Y TOMA DE DECISIONES
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
PROGRAMACION DE ESTRUCTURAS DE DATOS
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Evaluacion de algoritmos
ESTRATEGIAS Y DISEÑOS AVANZADOS DE INVESTIGACIÓN SOCIAL
ALGORITMOS 2 DIGITALES II
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
Tema 3. Optimización de Código
El método científico Ing. Nelson Velásquez.
Funciones en lenguaje C
CONCEPTOS BÁSICOS DE ESTADÍSTICA
Ingeniero Anyelo Quintero
Investigación y desarrollo experimental Innovación Tecnológica
Unidad III: APLICACIÓN DE LOS MÉTODOS CIENTIFICOS
ESTRUCTURAS DE CONTROL
Maracaibo, 5 de Noviembre de 2007 Universidad del Zulia Facultad de Ingeniería Instituto de Cálculo Aplicado Universidad del Zulia Facultad de Ingeniería.
NUMEROS PSEUDO ALEATORIOS
Fundamentos de Programación
Semana 5 Subprogramas..
Academia de Informática
Programación en Matlab
Análisis de Algoritmos
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )
TEORÍA DE ERRORES SESIÓN Nº 01.
MEDIDA Y MÉTODO CIENTÍFICO
Introducción al análisis de 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.

Principios del diseño experimental Maestría Ingeniería Industrial
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
La Física La Física es la ciencia que estudia la naturaleza en su aspecto más amplio. Se consideran fenómenos físicos aquellos que están asociados a los.
ESTADÍSTICAS DESCRIPTIVA
Inferencia Estadística
Titular: Agustín Salvia
Algoritmos de Ordenamiento y Complejidad
Capítulo 1. Conceptos básicos de la Estadística
Capítulo 6. ANÁLISIS DE ALGORITMOS
Análisis de Algoritmos
Análisis de algoritmos Generalidades
Matrices Prof. Flor Narciso Departamento de Computación
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Metodología de la programación
PRINCIPIOS DE PROGRAMACIÓN
Presente un cuestionario con los aspectos mas importantes sobre los
Introducción a los TADs
Lic. Carla Aguirre Montalvo
Análisis y Diseño de Algoritmos Programa #1 Samuel Garrido Daniel.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Simulacion. Simulación Es la construcción de modelos informáticos que describen la parte esencial del comportamiento de un sistema de interés, así como.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
TEMA 7 ANÁLISIS DE LOS RESULTADOS TEMA 7 ANÁLISIS DE LOS RESULTADOS.
Transcripción de la presentación:

Medición y rendimientos de Algoritmos Análisis de algoritmos Medición empírica Medición simulada Medición analítica Soporte matemático Notaciones comunes (O grande) Métodos de ordenamientos, medición de tiempos de ejecución

Medición empírica Es un modelo de investigación científica. Lleva a cabo un experimento Los datos empíricos son obtenidos de las pruebas acertadas y los errores, es decir, de experiencia. Su aporte al proceso de investigación es resultado fundamentalmente de la experiencia.

Características de la medición empírica Es un método fáctico: se ocupa de los hechos que realmente acontecen Se vale de la verificación empírica: no pone a prueba las hipótesis mediante el mero sentido común o el dogmatismo filosófico o religioso, sino mediante una cuidadosa contrastación por medio de la percepción. Es autocorrectivo y progresivo. La ciencia se construye a partir de la superación gradual de sus errores. No considera sus conclusiones infalibles o finales. El método está abierto a la incorporación de nuevos conocimientos y procedimientos con el fin de asegurar un mejor acercamiento a la verdad. Muestra: El muestreo es un parte importante del método analítico ya que si se toma mal la muestra los resultados serian erróneos o inservibles.

Clasificaciones de la medición empírica Método Experimental: Aislando al objeto y las propiedades que estudia de la influencia de otros factores Reproduciendo el objeto de estudio en condiciones controladas -Modificando las condiciones bajo las cuales tiene lugar el proceso o fenómeno que se estudia. Método de la observación científica Método de la medición Es el método empírico que se desarrolla con el objetivo de obtener información numérica acerca de una propiedad o cualidad del objeto Se apoya en procedimientos estadísticos.

Medición simulada La simulación es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la finalidad de comprender el comportamiento del sistema Simular, es reproducir artificialmente las relaciones entrada-salida de un sistema. Esto ocurre siempre cuando la operación de un sistema o la experimentación en él son imposibles, costosas, peligrosas o poco prácticas, como en el entrenamiento de personal, pilotos de aviones, para la enseñanza de la medicina, ingeniería civil (resistencia sísmica), etc.

Medición Analítica Se realiza a partir de la experimentación y el análisis de gran número de casos para establecer leyes universales Se descompone el todo en sus partes para estudiar en forma intensiva cada uno de sus elementos Este método nos permite conocer más del objeto de estudio, con lo cual se puede: explicar, hacer analogías, comprender mejor su comportamiento y establecer nuevas teorías.  

El análisis de la eficiencia de un algoritmo Estudia el tiempo que tarda un algoritmo en ejecutarse y la memoria que requiere.

Como se mide El tiempo de ejecución se mide contando el número de pasos del programa. Los comentarios y las instrucciones de declaración no son pasos de programa. Las expresiones y las instrucciones de asignación representan un paso de programa. Si las expresiones contienen llamadas a funciones al número de pasos se le suma al número de pasos de la función. Si la llamada a la función tiene paso de parámetros por valor hay que tener en cuenta las asignaciones a estos parámetros.

Como se mide cont. Si la función es recursiva deben considerarse también las variables locales, ya que deben ser almacenadas en la pila del sistema. Si las expresiones manejan tipos compuestos (por ejemplo vectores) el número de pasos depende del tamaño de los datos. Las instrucciones de iteración. La ejecución de la parte de control cuenta como el número de pasos de la expresión que debe ser evaluada. El numero de pasos necesarios para ejecutar el cuerpo del bucle debe multiplicarse por el número de veces que se ejecuta el bucle.

Como se mide cont. Instrucciones de selección. La ejecución de la parte de control cuenta como el número de pasos de la expresión que debe ser evaluada. Se considerarán las diversas alternativas al contar el número de pasos total del programa. La instrucción de retorno return cuenta como el número de pasos de la expresión que debe ser evaluada.

Ejemplo Función línea contador frecuencia total pasos float sum (float *a, const int n) { float s = 0; 1 int i = 0 2 while (i < n) { 3 n+1 s +=a[i]; 4 n i++; } 5 return; } 6 3n+4

Factores que afectan el tiempo de ejecución Tamaño de los datos de entrada Contenido de los datos de entrada El código generado por el compilador y el computador

Ejercicio: Algoritmo de ordenación por selección 1 for (int i = 1; i < n; i++) { // pmin es la posición del mínimo de a[i..n] int pmin = i; for (int j = i+1; j < n; j++) if (a[j] < a[pmin]) pmin = j; intercambiar(a[i],a[pmin]); } Ejercicio: Contar el número de pasos de programa del algoritmo de ordenación por selección.

Respuesta En el algoritmo de ordenación por selección: Para un vector de 10 posiciones se realizan como mucho 45 comparaciones, 45 + ? asignaciones y 9 intercambios. Para un vector de 100 posiciones se realizan como mucho ?2 comparaciones, ?2 + 99 asignaciones y 99 intercambios.

Factor: contenido de los datos de entrada En el algoritmo de ordenación por selección: Si el vector está ordenado se realizan n asignaciones y n2 comparaciones, Si el vector está completamente desordenado (ordenado en orden descendente), se realizan n asignaciones, n2 comparaciones y asignaciones y n intercambios Analizar la eficiencia del algoritmo en el peor de los casos. Analizar la eficiencia del algoritmo en el caso promedio: es necesario conocer el tiempo de ejecución de cada ejemplar y la frecuencia con que se presenta cada uno de ellos (su distribución de probabilidades).

Factor: el compilador y el computador Se utiliza el criterio asintótico, esto es ignorar el efecto del computador, ya que: Se pretende analizar la eficiencia del algoritmo de un modo totalmente independiente de las máquinas y lenguajes existentes Diferentes implementaciones de un algoritmo diferirán en sus tiempos de ejecución a lo sumo en una constante multiplicativa, para tamaño de los datos de entrada suficientemente grandes Un factor constante en los tiempos de ejecución no se considera en general importante frente a una dependencia del tamaño de los datos de entrada.

3 tipos de ejemplares A la hora de analizar un algoritmo es necesario saber que pueden darse Caso mejor: se trata de aquellos ejemplares del problema en los que el algoritmo es más eficiente; por ejemplo: multiplicar un número por cero, insertar en una lista vacía, ordenar un vector que ya está ordenado, etc. Generalmente no nos interesa. Caso peor: se trata de aquellos ejemplares del problema en los que el algoritmo es menos eficiente (no siempre existe el caso peor). Ejemplos: insertar al final de una lista, ordenar un vector que está ordenado en orden inverso, etc. Nos interesa mucho. Caso medio: se trata del resto de ejemplares del problema. Por ejemplo: multiplicar dos números enteros distintos de cero, insertar en una lista que no sea el principio ni el final, ordenar un vector que no está ordenado ni en orden directo ni inverso, etc. Es el caso que más nos debería preocupar puesto que será el más habitual, sin embargo no siempre se puede calcular (habría que saber cuáles son las probabilidades de los distintos ejemplares).

La notación O-grande La notación “O grande” se utiliza para manejar la complejidad de un algoritmo, es decir, la cota superior del tiempo de ejecución. Ignora los factores constantes, es decir, ignora si se hace una mejor o peor implementación del algoritmo, además de ser independiente de los datos de entrada del algoritmo. Es decir, la utilidad de aplicar esta notación a un algoritmo es encontrar un límite superior del tiempo de ejecución, es decir, el peor caso.

Tiempos 1 : Tiempo de ejecución constante. Significa que la mayoría de las instrucciones se ejecutan una vez o muy pocas. logN : Tiempo de ejecución logarítmico. Se puede considerar como una gran constante. La base del logaritmo (en informática la más común es la base 2) N : Tiempo de ejecución lineal. Un ejemplo sería un algoritmo que lee N números enteros y devuelve la media aritmética. N·logN : El tiempo de ejecución es N·logN. Es común encontrarlo en algoritmos como Quick Sort y otros del estilo divide y vencerás. Si N se duplica, el tiempo de ejecución es ligeramente mayor del doble.

Tiempos N2 : Tiempo de ejecución cuadrático. Suele ser habitual cuando se tratan pares de elementos de datos, como por ejemplo un bucle anidado doble. Si N se duplica, el tiempo de ejecución aumenta cuatro veces. El peor caso de entrada del algoritmo Quick Sort se ejecuta en este tiempo. N3 : Tiempo de ejecución cúbico. Como ejemplo se puede dar el de un bucle anidado triple. Si N se duplica, el tiempo de ejecución se multiplica por ocho. 2N : Tiempo de ejecución exponencial. No suelen ser muy útiles en la práctica por el elevadísimo tiempo de ejecución. Si N se duplica, el tiempo de ejecución se eleva al cuadrado.

Gráfica de notación O grande

Clasificar los diferentes algoritmos con la notación O grande Insertar al inicio de una lista simple Borrar en un arreglo ordenado Borrar en un arreglo desordenado Imprimir una matriz de adyacencia Ordenamiento de burbuja.