Análisis de algoritmos Medición empírica Medición simulada Medición analítica Soporte...

22
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

Transcript of Análisis de algoritmos Medición empírica Medición simulada Medición analítica Soporte...

Page 1: 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 y rendimientos de Algoritmos

Análisis de algoritmosMedición empíricaMedición simuladaMedición analítica

Soporte matemáticoNotaciones comunes (O grande)

Métodos de ordenamientos, medición de tiempos de ejecución

Page 2: 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 empíricaEs un modelo de investigación científica.Lleva a cabo un experimentoLos 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.

Page 3: 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,

Características de la medición empíricaEs 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.

Page 4: 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,

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íficaMé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.

Page 5: 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 simuladaLa 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ónde 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.

Page 6: 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 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.  

Page 7: 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,

El análisis de la eficiencia de un algoritmo

Estudia el tiempo que tarda un algoritmo en ejecutarse

y la memoria que requiere.

Page 8: 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,

Como se mideEl 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.

Page 9: 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,

Como se midecont.

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.

Page 10: 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,

Como se midecont.

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.

Page 11: 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,

EjemploFunción línea contado

rfrecuencia

total pasos

float sum (float *a, const int n) {

float s = 0; 1 1 1 1

int i = 0 2 1 1 1

while (i < n) { 3 1 n+1 n+1

s +=a[i]; 4 1 n n

i++; } 5 1 n n

return; } 6 1 1 1

3n+4

Page 12: 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,

Factores que afectan el tiempo de ejecución

Tamaño de los datos de entradaContenido de los datos de entradaEl código generado por el compilador y el

computador

Page 13: 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,

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.

Page 14: 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,

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.

Page 15: 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,

Factor: contenido de los datos de entradaEn 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).

Page 16: 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,

Factor: el compilador y el computadorSe 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.

Page 17: 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,

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

Page 18: 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,

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.

Page 19: 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,

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

Page 20: 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,

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

Page 21: 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,

Gráfica de notación O grande

Page 22: 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,

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.