La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Medición y rendimientos de Algoritmos

Presentaciones similares


Presentación del tema: "Medición y rendimientos de Algoritmos"— Transcripción de la presentación:

1 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

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

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

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

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

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

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

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

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

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

11 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

12 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

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

14 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, ? asignaciones y 99 intercambios.

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

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

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

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

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

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

21 Gráfica de notación O grande

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


Descargar ppt "Medición y rendimientos de Algoritmos"

Presentaciones similares


Anuncios Google