La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.

Presentaciones similares


Presentación del tema: "Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia."— Transcripción de la presentación:

1 Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia de algoritmos

2 MTP: Metodología y Tecnología de la Programación 2 Noción de eficiencia Dados dos algoritmos distintos que solucionen en mismo problema, sus propiedades son probablemente distintas Tardan tiempos distintos en solucionar el problema (eficiencia temporal) Precisan de tamaños de almacenamiento distintos (eficiencia espacial) Una pregunta obvia que surge a la hora de considerar ambos algoritmos es ¿cuál de ambos es mejor? Lógicamente, el que menos tiempo emplee y menos espacio de almacenamiento necesite Habitualmente, nuestro objetivo principal será mejorar la eficiencia temporal Existen dos formas de valorar la eficiencia de los algortimos Empíricamente Analíticamente (de forma teórica)

3 MTP: Metodología y Tecnología de la Programación 3 Determinación empirica de la eficiencia Consiste en ejecutar cada algoritmo en una máquina real, para instancias de diferente tamaño del problema considerado, y obtener los resultados de tiempos consumidos y espacios utilizados Posee varios inconvenientes Requiere una adecuada selección de los datos de entrada, lo cual no es necesariamente fácil de realizar Requiere múltiples ejecuciones de un mismo algoritmo, y por lo tanto, mucho tiempo Está excesivamente ligado a una máquina concreta, por lo que en algunos casos los resultados no son extrapolables

4 MTP: Metodología y Tecnología de la Programación 4 Determinación teórica de la eficiencia Consiste en determinar matemáticamente la cantidad de recursos (tiempo, espacio) que consume un algoritmo en función del tamaño de las instancias de problemas que resuelve Por tamaño se pueen entender varias cosas: Número de items de entrada, valor(es) de los items, espacio de almacenamiento, etc. Escogeremos en cada caso, dependiendo cuánto de adecuadamente permita la entrada predecir la eficiencia del algoritmo La eficiencia se convierte en una función t n que permite calcular el tiempo/espacio requerido por el algoritmo para problemas de tamaño n

5 MTP: Metodología y Tecnología de la Programación 5 Determinación de la función t n La función t n se identifica a partir de una o un conjunto de operaciones básicas Una operación básica es aquella tal que el trabajo total realizado por el algoritmo (en tiempo o espacio) es proporcional al número de veces que se ejecuta dicha instrucción Ejemplo (temporal): t n = n function busquedaLineal(a:array[1..k] of integer; x:integer):integer; var i:integer; begin i := 1; while i x do i:= i+1; if i > k then busquedaLineal:= 0 else busquedaLineal:= i end; Posibles operaciones básicas

6 MTP: Metodología y Tecnología de la Programación 6 Determinación de la función t n Otro ejemplo (temporal): t n = log 2 n +1 function busquedaBinaria(a:array[1..k] of integer; x:integer):integer; var inf, med, sup, loc:integer; begin inf:= 1; sup:=k; loc:= 0; while inf <= sup and loc = 0 do begin med:= (inf+sup) DIV 2; if a[med] = x then loc:= med else if x < a[med] then sup:= med-1 else inf:= med+1 end; busquedaBinaria:= loc end; Posibles operaciones básicas

7 MTP: Metodología y Tecnología de la Programación 7 Determinación de la función t n La operación básica seleccionada sólo tiene que ser proporcional al trabajo que realiza el algoritmo Podemos obviar el tiempo exacto que tarda en ejecutarse Por ejemplo: El algoritmo de búsqueda binaria anterior realiza: log 2 n +1 operaciones med:= (inf+sup) DIV 2 log 2 n +1 operaciones a[med] = x Si suponemos que la primera operación emplea i segundos y la segunda j segundos de cada vez, el algoritmo tardará (( log 2 n +1)*i)+ (( log 2 n +1)*j) segundos O lo que es lo mismo, (i+j)*( log 2 n +1), esto es, t n predice el tiempo consumido por el algoritmo con la precisión de un multiplicador (i+j) t n determina la eficiencia temporal (o espacial) del algoritmo a coste unitario

8 MTP: Metodología y Tecnología de la Programación 8 Comparación de la eficiencia de algoritmos Dadas dos funciones t n y u n que representan la eficiencia temporal (o espacial) de dos algoritmos t y u, el mejor algoritmo será el que proporcione un menor valor de la función para un n dado Hablamos de una instancia concreta de un problema Es necesario tener en cuenta los multiplicadores ocultos En general, nos va a interesar el comportamiento asintótico, esto es, para valores de n muy grandes Se obvia el efecto de las constantes multiplicadoras Se pasa al límite

9 MTP: Metodología y Tecnología de la Programación 9 Notas finales Un problema de la función t n es predice la eficiencia con coste unitario Esto es, su precisión está limitada por un multiplicador constante Un análisis empírico podría determinar tiempos exactos para instancias concretas Ello proporcionaría (a priori) mejores resultados en la práctica La realidad es que, por el principio de invariancia, dos implementaciones t n y u n similares del mismo algoritmo, funcionado en máquinas distintas, pueden diferir en eficiencia en función de un multiplicador constante para n grandes Esto es, si c y d son constantes t n <= c u n u n <=d t n En consecuencia, la determinación empírica posee los mismos inconvenientes que la determinación teórica de t n


Descargar ppt "Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia."

Presentaciones similares


Anuncios Google