Tema 2 - Notación Asintótica
Tema 2 - Notación Asintótica
Tema 2 - Notación Asintótica
Notacin Asinttica
1 DR. JESS A. GONZLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE
Introduccin
2
Aproximacin terica
Generaliza el nmero de operaciones que requiere un algoritmo para encontrar la solucin a un problema
Introduccin
3
Ventajas
Eleccin de algoritmos eficientes para resolver problemas especficos No depende de lenguajes de programacin ni de hardware
Desventajas
Para muchos casos, en anlisis no es trivial
Introduccin
4
Introduccin
5
Funciones
f(n) = cn (algoritmos lineales) f(n) = cn2 (algoritmos cuadrticos) f(n) = cn3 (algoritmos cbicos)
Un algoritmo puede estar compuesto de dos o ms operaciones, por lo que determinar la complejidad depende de identificar la operacin ms costosa en el algoritmo
Por ejemplo, sume 2 matrices e imprima el resultado. de que orden es el problema?
Principio de Invarianza
6
A travs de un anlisis terico, se puede obtener funciones que representen el nmero de operaciones, independientemente de cmo se implementaron Anlisis Principio de la Invarianza
Dos implementaciones distintas de un mismo algoritmo no van a diferir en su eficiencia en ms de una constante multiplicativa c
El tiempo que requiere un algoritmo para dar una respuesta, se divide generalmente en 3 casos
Peor Caso: caso ms extremo, donde se considera el tiempo mximo para solucionar un problema Caso promedio: caso en el cual, bajo ciertas restricciones, se realiza un anlisis del algoritmo Mejor caso: caso ideal en el cual el algoritmo tomar el menor tiempo para dar una respuesta
Es aquella operacin cuyo tiempo de ejecucin se puede acotar superiormente por una constante que solamente depender de la implementacin particular usada
No depende de parmetros No depende de la dimensin de los datos de entrada
Crecimiento de Funciones
9
Crecimiento de Funciones
10
Eficiencia Asinttica de Algoritmos Cuando el tamao de la entrada es suficientemente grande que slo el orden de crecimiento del tiempo de ejecucin es relevante. Slo importa cmo incrementa el tiempo de ejecucin con el tamao de la entrada en el lmite
Notacin Asinttica
11
Eficiencia Asinttica
Orden de crecimiento del algoritmo conforme el tamao de la entrara se acerca al lmite (incrementa sin frontera)
Notacin O
12
f(n) = O(g(n)), g(n) es una cota superior de f(n) Dada una funcin g(n), denotamos como O(g(n)) al conjunto de funciones tales que:
O(g(n)) = {f:N R+ | c constante positiva y noN : f(n) cg(n), n n0}
Propiedades de O
13
1. 2. 3. 4. 5. 6. 7. 8.
a) b)
Para cualquier funcin de f se tiene que f O(f). f O(g) O(f) O(g). O(f) = O(g) f O(g) y g O(f). Si f O(g) y g O(h) f O(h). Si f O(g) y f O(h) f O(min(g,h)) . Regla de la suma: Si f1 O(g) y f2 O(h) f1 + f2 O(max(g,h)). Regla del producto: Si f1 O(g) y f2 O(h) f1 f2 O(g h) . Si existe lim n Si k 0 y k < entonces O(f) = O(g).
f ( n) = k , dependiendo del valor de k obtenemos: g ( n)
Si k = 0 entonces f O(g), es decir, O(f) O(g), pero sin embargo se verifica que g O(f).
Notacin Omega
14
f(n) = (g(n)), g(n) es una cota asinttica inf. de f(n) Dada una funcin g(n), denotamos al conjunto de funciones (g(n)) de la siguiente forma:
(g(n)) = {f:N R+ | c constante positiva y n0: 0 < cg(n) f(n), n n0}
Propiedades de Omega
15
1. 2. 3. 4. 5. 6. 7. 8.
a) b)
Para cualquier funcin de f se tiene que f (f). f (g) (f) (g). (f) = (g) f (g) y g (f). Si f (g) y g (h) f (h). Si f (g) y f (h) f (max(g,h)) . Regla de la suma: Si f1 (g) y f2 (h) f1 + f2 (g + h). Regla del producto: Si f1 (g) y f2 (h) f1 f2 (g h) . Si existe lim n Si k 0 y k < entonces (f) = (g). Si k = 0 entonces g (f), es decir, (g) (f), pero sin embargo se verifica que f (g).
f ( n) =k g ( n)
Notacin Theta
16
f(n) = (g(n)), c2g(n) y c1g(n) son las cotas asintticas de f(n) tanto superior como inferior respectivamente Diremos que f(n)(g(n)) si f(n) pertenece tanto a O(g(n)) como a (g(n))
(g(n)) = {f:N R+ | c1,c2 constantes positivas, n0: 0 < c1g(n) f(n) c2g(n), n n0}
Propiedades de Theta
17
1. 2. 3. 4. 5. 6. 7.
a) b)
Para cualquier funcin f se tiene que f (f). f (g) (f) (g). (f) = (g) f (g) y g (f). Si f (g) y g (h) f (h). Regla de la suma: Si f1 (g) y f2 (h) f1 + f2 (max(g,h)). Regla del producto: Si f1 (g) y f2 (h) f1 f2 (g h) . Si existe lim n
f ( n) = k , dependiendo del valor de k obtenemos: g ( n) Si k 0 y k < entonces (f) = (g).
Notacin Theta
18
Teorema 2.1
f(n) = (g(n)) si y slo s f(n) = O(g(n)) y f(n) = (g(n)).
Para el caso 3/n c2, cuando n entonces 3/n . Por tanto, c2 = 1/2 Para c1 = 1/14, c2 = y n0 = 7 se cumple que f(n) (n2)
Ejemplo O (1/2)
22
Ejemplo O (2/2)
23
0 < 2n2 + 3n + 1 c n2 0 < 2 + 3/n + 1/n2 c Notemos que si n , 2 + 3/n + 1/n2 2 Si n = 1 entonces 2 + 3/n + 1/n2 = 6 Por tanto, para c = 6 y n0 = 1, se demuestra que f(n) O(n2)
Notacin o
24
f(n) = o(g(n)), g(n) es una cota superior de f(n) que no es asintticamente justa (tight)
Notacin
25
f(n) = (g(n)), g(n) es una cota inferior de f(n) que no es asintticamente justa (tight)
Orden de Complejidad
26
Orden de Complejidad
27
O(c) : Orden constante O(log n): orden logartmico O(n): orden lineal O(n log n): orden casi lineal O(n2): Orden cuadrtico O(n3): Orden cbico O(nc): Orden polinmico de grado c O(2n): Orden exponencial O(n!): Orden factorial
Orden de Complejidad
28
140 120 100 80 60 40 20 0 1 2 3 4 5 6 7 8 9 10 Cons tante Log Lineal Cas i lineal Cuadrtico Cbico Potencia Factorial
Consejos
29
Consejos para Identificar f(n) que Represente el Nmero de Operaciones Elementales (OE) de un Algoritmo
Consejo 1
30
El tiempo de ejecucin de una secuencia de instrucciones (elementales o no elementales), se obtiene sumando los tiempos de ejecucin de cada instruccin
Consejo Instruccin if
32
if (n == 0)
for (i = 0; i<n; i++) r += i;
else
r = 2;
Nota: las instrucciones for, repeat, loop son equivalentes a una instruccin while
El tiempo de ejecucin de una funcin recursiva se calcula a travs de la solucin de funciones de recurrencia (siguiente tema)
Tarea
37
Ejercicios 2.1-3, 2.2-2 (del Cormen, Leiserson, Rivest, Stein) Cules de las siguientes afirmaciones es cierta?
n2 O(n3) 2n+1 O(2n) n2 (n3)