Está en la página 1de 32

Sede Tuluá

Tema 3: Notación Asintótica

Fundamentos de Análisis y Diseño de Algoritmos


Introducción
Sede Tuluá

► Se utiliza para estudiar tiempos de ejecución u ocupaciones de memoria.

► Representa la forma en que crece una función.

► En general no se consideran constantes, que no son valores propios de los


algoritmos.

► Son asintóticas pues representan el comportamiento cuando el tamaño de la


entrada tiende a infinito  Eficiencia asintótica
Orden de Crecimiento
Sede Tuluá
Casos Introductorios
Sede Tuluá

► Suponga que tiene 4 algoritmos para resolver un mismo problema y cuyos


tiempos de ejecución son los siguientes:
• A1 con T(n) = 100n
• A2 con T(n) = 5n2
• A3 con T(n) = n3/2
• A4 con T(n) = 2n

► De acuerdo con el orden de crecimiento de la función de tiempo de ejecución,


determinar la eficiencia de cada algoritmo.

► Si dispone de 1000 segundos para ejecutar cada algoritmo, ¿Cuál es el


tamaño máximo de la entrada que se puede procesar?
Notación O (mayúscula)
Sede Tuluá

► Representa el orden de crecimiento de una función (cota superior).

► También llamada Big-O u O-grande


Notación O (mayúscula)
Sede Tuluá

► DEFINICIÓN:

• Dada una función f:N→R+, llamamos orden de f al conjunto


de todas las funciones de N en R+ acotadas superiormente
por un múltiplo real positivo de f para valores de n
suficientemente grandes.

• Dadas las funciones f(n) y g(n), decimos que f(n)  O(g(n)) si


y solo si hay constantes positivas c y n0 tal que:
f(n) ≤ c.g(n), para n ≥ n0
Notación O (mayúscula)
Sede Tuluá

► Se consideran funciones con rango R+ pues el tiempo de ejecución no puede


ser negativo.

► Sólo interesa lo que pase asintóticamente (n >= n0), por lo que podríamos
considerar funciones no definidas en todo N.

► No se tienen en cuenta las constantes del tiempo de ejecución


(f(n) <= c.g(n)).
Notación O (mayúscula)
Sede Tuluá

► Al estudiar un tiempo de ejecución T, se pretende obtener la función f que


acote a T siendo lo más cercana posible a ella, por lo que se tiene una
relación de orden en el conjunto de los órdenes:

Si O(f)<=O(g) Λ T  O(f) Λ T  O(g)

entonces, se intenta encontrar el menor O(f) / t  O(f)

► La relación de orden es una inclusión de conjuntos, por lo que se escribe


O(f)<=O(g) u O(f)  O(g)
Notación O (mayúscula)
Sede Tuluá

► Ejemplos:
• Determinar órdenes para las siguientes funciones:
• T(n) = 5n2 + 3n + 6
• T(n) = n.lg(n)
• T(n) = 10

• Cuál es la mejor forma de O para las funciones anteriores?


Relaciones entre órdenes
Sede Tuluá

► O(c)=O(d), con c y d constantes positivas.

► O(c)O(n)

► O(cn+b)=O(dn+e), con c y d constantes positivas.

► O(p)=O(q), si p y q son polinomios del mismo grado y con coeficiente


principal positivo.

► O(p)O(q), si p y q son polinomios con coeficiente principal positivo y el


grado de p es menor que el de q.

► O(p)O(2n), si p es un polinomio.
Notación Ω
Sede Tuluá

► Provee una cota inferior de la forma en que crece el tiempo de ejecución.


Notación Ω
Sede Tuluá

► DEFINICIÓN:
• Dada una función f:N→R+, llamamos omega de f al conjunto
de todas las funciones de N en R+ acotadas inferiormente por
un múltiplo real positivo de f para valores de n
suficientemente grandes.

• Dadas las funciones f(n) y g(n), decimos que f(n)  Ω (g(n))


si y solo si hay constantes positivas c y n0 tal que f(n) ≥ c g(n),
para n ≥ n0
Notación Ω
Sede Tuluá

► Ejemplos:
• Determinar una cota inferior asintótica para las siguientes
funciones:
• T(n) = 5n2 + 3n + 6
• T(n) = n.lg(n)
• T(n) = 10

• Cuál es la mejor forma de Ω para las funciones anteriores?


Relaciones entre Ω
Sede Tuluá

► Ω(c)= Ω(d), con c y d constantes positivas.

► Ω(c) Ω(n)

► Ω(cn+b)= Ω(dn+e), con c y d constantes positivas.


► Ω(p)= Ω(q), si p y q son polinomios del mismo grado y con coeficiente
principal positivo.

► Ω(p) Ω(q), si p y q son polinomios con coeficiente principal positivo y el


grado de p es menor que el de q.

► Ω(p) Ω(2n), si p es un polinomio.


Notación 
Sede Tuluá

► También conocida como notación de orden exacto.


Notación 
Sede Tuluá

► Son las funciones a las que f acota superior e inferiormente:

(f)= Ω(f)  O(f)

TEOREMA:

f(n)  (g(n)) si y solo sí:

f(n)  Ω(g(n)) y f(n)  O(g(n))

► De acuerdo con el teorema, no existen relaciones de inclusión. En esta


notación.
Notación 
Sede Tuluá

► Ejemplos:
• Determinar una cota de orden exacto para las siguientes
funciones:
• T(n) = 5n2 + 3n + 6
• T(n) = n.lg(n)
• T(n) = 10

• Es posible escoger, entre varias, una mejor forma de  para


las funciones anteriores?
Notación o (pequeña)
Sede Tuluá

► Define una cota estrictamente superior

► Se utiliza para comparar tiempos con el mismo orden.

► No hay relaciones de inclusión.

► (2n)= (3n), pero o(2n)≠o(3n)


Notación ω (minúscula)
Sede Tuluá

► Define una cota estrictamente inferior

► Se utiliza para comparar tiempos con el mismo orden.

► No hay relaciones de inclusión.

► (2n)= (3n), pero ω(2n) ≠ ω(3n)


Propiedades Asintóticas
Sede Tuluá

► fO(g) y gO(h)  fO(h)

► fΩ(g) y gΩ(h)  fΩ(h)

► fO(g) O(f)O(g)

► fΩ(g)  Ω(f)Ω(g)

► O(f)O(g) fO(g)

► Ω(f)Ω(g) fΩ(g)

► O(f)=O(g) fO(g) y gO(f)

► Ω(f)=Ω(g) fΩ(g) y gΩ(f)


Propiedades Asintóticas
Sede Tuluá

► fO(g) y gO(h)  fO(h) ► O(f)=O(g) fO(g) y gO(f)

► fΩ(g) y gΩ(h)  fΩ(h) ► Ω(f)=Ω(g) fΩ(g) y gΩ(f)

► fO(g) O(f)O(g) ► O(f)=O(g)Ω(f)=Ω(g)  (f)=(g)  f(g)

► fΩ(g)  Ω(f)Ω(g) ► O(f+g)=O(max(f,g))

► Ω(f+g)=Ω(min(f,g))

► O(f)O(g) fO(g)

► Ω(f)Ω(g) fΩ(g) Para calcular los órdenes en un programa sólo


es necesario hacerlo de la parte con mayor
orden.
Complejidades Algorítmicas
Sede Tuluá

Complejidad Terminología

O(1) Complejidad constante

O(log n) Complejidad logarítmica

O(n) Complejidad lineal

O(n log n) Complejidad n log n

O(nb) Complejidad polinomial

O(bn) Complejidad exponencial

O(n!) Complejidad factorial


Comparación entre órdenes
Sede Tuluá

► O(1)O(log n)O(n1/2) O(n) O(n log n)  O(n log n log n) O(n2) O(n3) 
 O(2n) O(n!) O(nn)

► O((log n)p) O(n1/q)

► Con Ω cambia el sentido de las inclusiones


Cotas Asintóticas Frecuentes
Sede Tuluá

► c ϵ θ(1)
𝑛.(𝑛+1)
► σ𝑛𝑖=1 𝑖 = ϵ θ(n2)
2

𝑛 1
► σ𝑛𝑖=1 𝑖2 = . 𝑛 + 1 . (𝑛 + ) ϵ θ(n3)
3 2

► σ𝑛𝑖=1 𝑖𝑘 ϵ θ(nk+1) ∀𝑘ϵN

► σ𝑛𝑖=1 log 𝑖 ϵ θ(n.log n)

► σ𝑛𝑖=1(𝑛 − 𝑖)𝑘 ϵ θ(nk+1) ∀𝑘ϵN


Resumen de Notaciones
Sede Tuluá
Ejercicio
Sede Tuluá

• ¿Cuáles son ciertas y cuáles no?


• 3n2  O(n2) 3  (n2)
• n
• 3n2  (n2) 2  (n3)
• n
• 3n2  (n2) 3  (n2)
• n
• 2n+1  O(2n) n  O(2n)
• (2+1)
• O(n)  O(n2) n  (2n)
• (2+1)
• n2  O(n3)
• (n+1)!  O(n!)
• n  O(n )
3 2
2  O(n!)
• n
• n2  (n3)
Tipos de Problema
Sede Tuluá

► Complejidad polinómica en el peor caso: Tratable, de lo contrario:


Intratable.

► Si no existe un programa que lo pueda solucionar: Irresolube, de lo


contario: Resoluble
Monotonicidad de Funciones
Sede Tuluá

► f(n) es Monotónica creciente si m ≤ n implica f(m) ≤ f(n)

► f(n) es Monotónica decreciente si m ≤ n implica f(m) ≥ f(n)

► f(n) es Estrictamente creciente si m < n implica f(m) < f(n)

► f(n) es Estrictamente decreciente si m < n implica f(m) > f(n)


Notación Estándar
Sede Tuluá

► Logaritmos:

• lg n = log2 n

• ln n = loge n

• lgk n = (lg n)k

• lg lg n = lg(lg n)

• lg n + k = (lg n) + k ≠ lg (n + k)

• Si n > 0, b> 1, logb n es estrictamente creciente


Notación Estándar
Sede Tuluá

► Logaritmos: Para a, b, c ϵ R+, y n ϵ N:

• 𝑎=𝑏𝑙𝑜𝑔𝑏 𝑎

• logc(a.b) = logc(a) + logc(b)

• logb(an) =n. logb(a)

• logb(a) = logc (a) / logc (b)

• logb(1/𝑎) = - logb(a)

• logb(a) = 1/ loga (b)


Funciones Frecuentes
Sede Tuluá

► Funciones Parte Entera (Piso y Techo)


• ⌊x⌋ = max{ k | k ϵ Z ∧ x ≤ k }
• ⌈x⌉ = min{ k | k ϵ Z ∧ x ≥ k }

► Exponenciales:
• Para todo real a ≠ 0, y m, n ϵ N:
• a0 = 1
• a1 = a
• a-1 = 1 /a
• (am)n = amn
• aman = am+n
Preguntas
Sede Tuluá

También podría gustarte