Está en la página 1de 29

Notaci´on Asint´otica

An´alisis y Dise˜no de Algoritmos

Marzo 2014

Asint´otica An´alisis y Dise˜no de Algoritmos Marzo 2014 An´alisis y Dise˜no de Algoritmos — Notaci´on

Complejidad

La complejidad (o costo) de un algoritmo es una medida de la cantidad de recursos (tiempo, memoria) que el algoritmo necesita. La complejidad de un algoritmo se expresa en funci´on del tama˜no del problema (entradas). El comportamiento de la funci´on determina la eficiencia. No es

unica´

para un algoritmo, depende de los datos.

No es unica´ para un algoritmo, depende de los datos. An´alisis y Dise˜no de Algoritmos —

´

Ordenes de Complejidad Se dice que O(f (n)) define un orden de complejidad. Escogeremos como representante de este orden a la funci´on f (n) m´as sencilla del mismo. As´ı tendremos:

O(1) Orden Constante (1) Orden Constante

O(log n ) Orden Logar´ıtmico (log n) Orden Logar´ıtmico

O( n ) Orden Lineal (n) Orden Lineal

O( n log n ) Log-lineal (cuasilineal) (n log n) Log-lineal (cuasilineal)

O( n 2 ) Orden Cuadr´atico (n 2 ) Orden Cuadr´atico

O( n 3 ) Orden C´ubico (n 3 ) Orden C´ubico

O( n a ) Orden Polinomial a > 3 (n a ) Orden Polinomial a > 3

O( a n ) Orden Exponencial a > 1 (a n ) Orden Exponencial a > 1

O( n !) Orden Factorial (n!) Orden Factorial

) Orden Exponencial a > 1 O ( n !) Orden Factorial An´alisis y Dise˜no de
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 4/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 4/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 5/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 5/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 6/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 6/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 7/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 7/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 8/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 8/29
Notaci´on Asint´otica El inter´es principal del an´alisis y dise˜no de algoritmos radica en saber c´omo

Notaci´on Asint´otica El inter´es principal del an´alisis y dise˜no de algoritmos radica en saber c´omo crece el tiempo de ejecuci´on, cuando el tama˜no de la entrada crece. Esto es la eficiencia asint´otica del algoritmo. Se denomina asint´otica porque analiza el comportamiento de las funciones en el l´ımite, es decir su tasa de crecimiento (infinito).

el l´ımite, es decir su tasa de crecimiento (infinito). An´alisis y Dise˜no de Algoritmos — Notaci´on
el l´ımite, es decir su tasa de crecimiento (infinito). An´alisis y Dise˜no de Algoritmos — Notaci´on
Notaci´on Asint´otica Se describe por medio de una funci´on cuyo dominio son los n´umeros naturales,

Notaci´on Asint´otica Se describe por medio de una funci´on cuyo dominio son los n´umeros naturales, estimado a partir de tiempo de ejecuci´on de algoritmos en base a la longitud de la entrada.

Se consideran las funciones asint´oticamente no negativas. Captura el comportamiento de la funci´on para valores
Se consideran las funciones asint´oticamente no negativas. Captura el comportamiento de la funci´on para valores
Se consideran las funciones asint´oticamente no negativas. Captura el comportamiento de la funci´on para valores
Se consideran las funciones asint´oticamente no negativas. Captura el comportamiento de la funci´on para valores

Se consideran las funciones asint´oticamente no negativas. Captura el comportamiento de la funci´on para valores grandes de n (entrada). Los tres tipos de notaci´on m´as usados son O-grande, Ω-grande y Θ.

para valores grandes de n (entrada). Los tres tipos de notaci´on m´as usados son O -grande,
para valores grandes de n (entrada). Los tres tipos de notaci´on m´as usados son O -grande,
de notaci´on m´as usados son O -grande, Ω-grande y Θ. An´alisis y Dise˜no de Algoritmos —
O-Grande Es el m´etodo mas usado para expresar la complejidad de un algoritmo. Este denota

O-Grande Es el m´etodo mas usado para expresar la complejidad de un algoritmo. Este denota el l´ımite o cota superior de la funci´on de complejidad. Para una funci´on dada g (n), la expresi´on O(g (n)) (se lee como O grande de g de n), representa el siguiente conjunto de funciones:

O ( g ( n )) = f ( n ): existen constantes positivas c

O(g (n)) = f (n): existen constantes positivas c y n0 tal que 0 f (n) g (n) para todas n > n0

Podemos escribir f (n) O(g (n)) porque O(g (n)) es un conjunto, pero es conveniente escribirlo as´ı f (n) = O(g (n))

es conveniente escribirlo as´ı f ( n ) = O ( g ( n )) An´alisis
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 12/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 12/29
O-Grande: Propiedades f (x) lim g(n) ∈ → f (n) ∈ O(g (n)) ∧ g
O-Grande: Propiedades
f
(x)
lim
g(n) ∈ → f (n) ∈ O(g (n)) ∧ g (n) ∈ O(f (n))
x→∞
f
(x)
lim
g(n) ∈ 0 → f (n) ∈ O(g (n)) ∧ g (n) ∈/ O(f (n))
x→∞
f
(x)
lim
g(n) ∈ ∞ → f (n) ∈/ O(g (n)) ∧ g (n) ∈ O(f (n))
x→∞
O(f (n)) + O(g (n)) → O(max(f (n), g (n))
O(c ∗ f (n)) → O(f (n))
O(f (n)) ∗ O(g (n)) → O(f (n) ∗ g (n))
f (n) = a m · n m + a m−1 · n m−1 +
+ a 1 · n + a 0 ∈ O(n m )
· n m + a m−1 · n m−1 + + a 1 · n +
O-Grande: Ejemplo 3 n 2 − 100 n + 6 = O ( n 2

O-Grande: Ejemplo 3n 2 100n + 6 = O(n 2 ) ¿?

Ejemplo 3 n 2 − 100 n + 6 = O ( n 2 ) ¿?
Ejemplo 3 n 2 − 100 n + 6 = O ( n 2 ) ¿?
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 15/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 15/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 16/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 16/29
O-Grande: Ejemplo 3 n 2 − 100 n + 6 = O ( n 3

O-Grande: Ejemplo 3n 2 100n + 6 = O(n 3 ) ¿?

Ejemplo 3 n 2 − 100 n + 6 = O ( n 3 ) ¿?
Ejemplo 3 n 2 − 100 n + 6 = O ( n 3 ) ¿?
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 18/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 18/29
O-Grande: Ejemplo 3 n 2 − 100 n + 6 = O ( n )

O-Grande: Ejemplo 3n 2 100n + 6 = O(n) ¿?

O-Grande: Ejemplo 3 n 2 − 100 n + 6 = O ( n ) ¿?
O-Grande: Ejemplo 3 n 2 − 100 n + 6 = O ( n ) ¿?
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 20/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 20/29
Ω − Grande Esta notaci´on es el inverso de la O-grande. Es usada para expresar

Grande Esta notaci´on es el inverso de la O-grande. Es usada para expresar la cota inferior. Para una funci´on dada g (n), la expresi´on Ω(g (n)) (se lee como Ω grande de g de n), representa el siguiente conjunto de funciones:

Ω( g ( n )) = f ( n ): existen constantes positivas c y

Ω(g (n)) = f (n): existen constantes positivas c y n0 tal que 0 cg (n) f (n) para todas n > n0

0 ≤ cg ( n ) ≤ f ( n ) para todas n > n
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 22/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 22/29
Ω − Grande : Propiedades f (x) lim g(n) ∈ → f (n) ∈ Ω(g
Ω − Grande : Propiedades
f
(x)
lim
g(n) ∈ → f (n) ∈ Ω(g (n)) ∧ g (n) ∈ Ω(f (n))
x→∞
f
(x)
lim
g(n) ∈ 0 → f (n) ∈/ Ω(g (n)) ∧ g (n) ∈ Ω(f (n))
x→∞
f
(x)
lim x→∞
g(n) ∈ ∞ → f (n) ∈ Ω(g (n)) ∧ g (n) ∈/ Ω(f (n))
Ω(f (n)) + Ω(g (n)) → Ω(max(f (n), g (n))
Ω(c ∗ f (n)) → Ω(f (n))
Ω(f (n)) ∗ Ω(g (n)) → Ω(f (n) ∗ g (n))
f (n) = a m · n m + a m−1 · n m−1 +
si a m > 0
+ a 1 · n + a 0 ∈ Ω(n m )
· n m−1 + si a m > 0 + a 1 · n + a

ω Grande : Ejemplo

3n 2 − 100 n + 6 = Ω( n 2 ) ¿? n 2 100n + 6 = Ω(n 2 ) ¿?

3n 2 − 100 n + 6 = Ω( n 3 ) ¿? n 2 100n + 6 = Ω(n 3 ) ¿?

3n 2 − 100 n + 6 = Ω( n ) ¿? n 2 100n + 6 = Ω(n) ¿?

n 3 ) ¿? 3 n 2 − 100 n + 6 = Ω( n )
Θ − Grande Esta notaci´on expresa el orden exacto o promedio. Para una funci´on dada

Θ Grande Esta notaci´on expresa el orden exacto o promedio. Para una funci´on dada g (n), la expresi´on Θ(g (n)) (se lee como Θ grande de g de n), representa el siguiente conjunto de funciones:

Ω( g ( n )) = f ( n ): existen constantes positivas c 1,

Ω(g (n)) = f (n): existen constantes positivas c1, c2 y n0 tal que 0 c1g (n) f (n) c2g (n) para todas n > n0

Una funci´on f (n) puede ser escrita como f (n) = Θ(g (n)) si hay coeficientes positivos c1 y c2 tales que f (n) puede estar entre c1g (n) y c2g (n)

f ( n ) puede estar entre c 1 g ( n ) y c 2
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 26/29
An´alisis y Dise˜no de Algoritmos — Notaci´on Asint´otica 26/29
Θ − Grande : Propiedades f (x) lim g(n) ∈ → f (n) ∈ Θ(g
Θ − Grande : Propiedades
f
(x)
lim
g(n) ∈ → f (n) ∈ Θ(g (n))
x→∞
f
(x)
lim
g(n) ∈ 0 → f (n) ∈ O(g (n)) ∧ g (n) ∈/ Θ(f (n))
x→∞
f
(x)
lim x→∞
g(n) ∈ ∞ → f (n) ∈ Ω(g (n)) ∧ g (n) ∈/ Ω(f (n))
Θ(f (n)) + Θ(g (n)) → Θ(max(f (n), g (n))
Θ(c ∗ f (n)) → Θ(f (n))
Θ(f (n)) ∗ Θ(g (n)) → Θ(f (n) ∗ g (n))
f (n) = a m · n m + a m−1 · n m−1 +
si a m > 0
+ a 1 · n + a 0 ∈ Θ(n m )
· n m−1 + si a m > 0 + a 1 · n + a

Θ Grande : Ejemplo

3n 2 − 100 n + 6 = Θ( n 2 ) ¿? n 2 100n + 6 = Θ(n 2 ) ¿?

3n 2 − 100 n + 6 = Θ( n 3 ) ¿? n 2 100n + 6 = Θ(n 3 ) ¿?

3n 2 − 100 n + 6 = Θ( n ) ¿? n 2 100n + 6 = Θ(n) ¿?

Θ( n 3 ) ¿? 3 n 2 − 100 n + 6 = Θ( n
Tarea De las siguientes afirmaciones indicar si es cierta/falsa junto a su demostraci´on as´ı como

Tarea De las siguientes afirmaciones indicar si es cierta/falsa junto a su demostraci´on as´ı como su gr´afica

2 ∈ O(n 3 ) n 3 ∈ O(n 2 ) n 2 ( n
2 ∈ O(n 3 )
n
3 ∈ O(n 2 )
n
2 ( n + 1) ∈ O(2 n )
3 n ∈ O(2 n )
2 ∈ Ω(n 3 )
n
3 ∈ Ω(n 2 )
n
2 ( n + 1) ∈ Ω(2 n )
3 n ∈ Ω(2 n )
http://rechneronline.de/function-graphs/
3 n ∈ Ω(2 n ) http://rechneronline.de/function-graphs/ An´alisis y Dise˜no de Algoritmos — Notaci´on