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 2: Orden de algoritmos.

Presentaciones similares


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

1 Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos

2 MTP: Metodología y Tecnología de la Programación 2 Introducción al orden  Hemos indicado en la unidad anterior que:  Una función t n es predice la eficiencia con una precisión limitada por un multiplicador constante  Por el principio de indiferencia, el análisis empírico de un algoritmo está limitado en precisión por constantes arbitrarias  Ambos hechos implican que tanto el análisis teórico como empírico de la eficiencia de algoritmos sólo predice aproximadamente el comportamiento real n t c2tnc2tn c3tnc3tn c1tnc1tn

3 MTP: Metodología y Tecnología de la Programación 3 Introducción al orden  Dado el problema inducido por los multiplicadores, cabría preguntarse si es posible caracterizar el comportamiento de la función t n  Nos interesan especialmente los casos para “n” grandes  La solución es buscar funciones que acoten (asintóticamente) inferior y superiormente a t n n t c2tnc2tn c3tnc3tn c1tnc1tn ¿?

4 MTP: Metodología y Tecnología de la Programación 4 Cota superior Big O  Dada una función f(n), O(f(n)) es el conjunto de funciones de complejidad g(n) para las cuales  Existe una constante real positiva c  Y un entero no negativo N  Tales que para todo n>= N, g(n) <= cf(n) n t g(n) cf(n) 12 1  Condición asintótica 2  Efecto del multiplicador

5 MTP: Metodología y Tecnología de la Programación 5 Cota inferior   Dada una función f(n),  (f(n)) es el conjunto de funciones de complejidad g(n) para las cuales  Existe una constante real positiva c  Y un entero no negativo N  Tales que para todo n>= N, g(n) >= cf(n) n t g(n) 12 1  Condición asintótica 2  Efecto del multiplicador cf(n)

6 MTP: Metodología y Tecnología de la Programación 6 Introducción a   O(f(n)) y  (f(n)) son conjuntos de funciones  Por ejemplo, n, n+1, n 2, n 2 +n, etc. pertenecen a O(n 2 ) y  n 2, n 2 +1, n 2 +n+1, etc. pertenecen a  (n 2 )  Una función (o conjunto de funciones) g(n) pertenece simúltáneamente a múltiples O(f(n)) y  (f(n))  Por ejemplo, n 2 pertenece a O(n 2 ), O(n 3 ), O(n 4 ), etc. y  n 2 pertenece a  (n 2 ),  (n) y  (c), c constante real positiva  Por ello, O(f(n)) y  (f(n)) caracterizan de forma gruesa a las funciones g(n)  Si g(n)  O(f(n)), nada se nos dice acerca de   Si g(n)   (f(n)), nada se nos dice acerca de O

7 MTP: Metodología y Tecnología de la Programación 7 Introducción a   Sería interesante obtener algún tipo de acotación que implicara simultáneamente a O y   Ello permitiría acotar superior e inferiormente las funciones g(n), lo cual permitiría una mejor caracterización t g(n) cf 2 (n) df 1 (n)

8 MTP: Metodología y Tecnología de la Programación 8 Orden (  )  Para una función f(n)  (f(n)) = O(f(n))   (f(n))   (f(n)) representa, por lo tanto, el conjunto de funciones de complejidad g(n) para las cuales existen constantes reales positivas c y d, y un entero N no negativo, tales que para todo n >= N cf(n) <= g(n) <= df(n)

9 MTP: Metodología y Tecnología de la Programación 9 Orden (  )   (f(n)), al acotar superior e inferiormente las funciones g(n), permite identificar que g(n) posee una complejidad “en el orden de” f(n)  Asintóticamente, las funciones g(n) tardarán “más o menos lo mismo” que f(n), con la precisión de un multiplicador (u obviando éste, que es precisamente lo que se buscaba) t g(n) cf (n) df (n)

10 MTP: Metodología y Tecnología de la Programación 10 Propiedades del orden (  ) 1.g(n)  O(f(n))  f(n)   (g(n)) {dualidad} 2.g(n)   (f(n))  f(n)   (g(n)) {clasificación} 3.Si c >= 0, d > 0, g(n)  O(f(n)) y h(n)   (f(n)), entonces cg(n) + dh(n)   (f(n)) {eliminación de términos de menor peso} 4. {límite}

11 MTP: Metodología y Tecnología de la Programación 11 Notas finales  Existen un conjunto de funciones de complejidad de utilización habitual  (1),  (log n),  (n),  (n log n),  (n 2 ),  (n j ),  (n k ),  (a n ),  (b n ),  (n!)  donde k > j > 2 y b > a > 1  (ver gráficas en doc. anexo)

12 MTP: Metodología y Tecnología de la Programación 12 Notas finales  En algunas ocasiones, determinar las funciones de complejidad de un algoritmo es complejo  Con cierta frecuencia, si se restringe el análisis a los valores de ‘n’ que cumplen cierta condición p(n), se puede obtener fácilmente una función de complejidad  Se define la complejidad asintótica condicional (O,  y  ) como el conjunto de funciones de complejidad g(n) tales que, dados una función f(n) y un predicado p(n)  Existe una constante real positiva c  Y un entero no negativo N  cumplen que para todo n>= N, p(n)  g(n) <= cf(n)

13 MTP: Metodología y Tecnología de la Programación 13 Notas finales  Puede suceder que el análisis de la complejidad de un algoritmo no dependa únicamente de un parámetro “n”, sino de varios parámetros simultáneamente  Las definiciones de O,  y  pueden extenderse a múltiples parámetros con la misma formulación de para un único parámetro.


Descargar ppt "Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos."

Presentaciones similares


Anuncios Google