Escolar Documentos
Profissional Documentos
Cultura Documentos
2
+ +
. Entonces =
En efecto
Para n 1, tenemos:
0
+
1
+
2
2
++
1
++
0
+
1
+
2
2
++
= c
, donde c =
0
+
1
+
2
2
+ +
Sean las funciones f(n) = 5n
3
+ 2n
2
+ 22n + 6 y g(n) = n
3
. Entonces
f(n) = O(g(n)) = O(n
3
)
En efecto
Ejemplo:
Sea c = m = 6. Entonces 5n
3
+ 2n
2
+ 22n + 6 6 n
3
, n m.
Sean f(n) = n
2
y g(n) = n dos funciones. Entonces
g(n) es O(f(n)) = O(n
2
)
En efecto
Ejemplo:
Ejemplo:
Sean las funciones f(n) = 3n log
2
n + 5n log
2
log
2
n + 2 y g(n) = n
log n. Entonces
Quien domina asintticamente a quien ?
Para probar que f(n) es O(g(n)), se debe:
a) Escoger o comprobar la existencia de los valores para m y c.
b) Probar que, n m, f(n) c g(n).
NOTA:
Para probar que f(n) no es O(g(n)), se debe:
a) Probar que no existen m y c tal que , n m, f(n) c g(n).
Principios generales
1. Factores constante no tienen valor:
si f(n) = c g(n), entonces f(n) = O(g(n)), c > 0
Ejemplo:
si 2n
3
= 2000n
3
, entonces 2n
3
= O(2000n
3
), m = 0, c = 2000
2. Trminos de orden inferior no tienen importancia:
Si
f(n) = a
k
n
k
+ . . . + a
2
n
2
+ a
1
n + a
0
, con a
k
> 0.
Entonces
f(n) = O(a
k
n
k
) = O(n
k
)
2
n
+ n
3
= O(2
n
), m = 1, c = 2
Ejemplo:
Propiedades:
(1) Si f(n) = O(g(n)) y n, h(n) 0. Entonces h(n).f(n) = O(h(n).g(n))
Sea
f(n) cg(n), n m.
Entonces
h(n).f(n) h(n).c.g(n) = c.h(n)g(n).
Por lo tanto:
h(n)f(n) = O(h(n)g(n)).
Prueba
(2) Si f(n) g(n), n m. Entonces f(n) + g(n) = O(g(n))
Sea
f(n) g(n), n m,
entonces
f(n) + g(n) g(n) + g(n) = 2g(n).
Por lo tanto:
f(n) + g(n) = O(g(n))
Prueba
(3) Si f(n) = O(g(n)) y g(n) = O(h(n)). Entonces f(n) = O(h(n))
Sean f(n) c
1
g(n), n m
1
y g(n) c
2
h(n), n m
2
. Entonces
considerando m = max {m
1
, m
2
} y c = c
1
. c
2
, tenemos que n m se
cumple:
n m
1
y n m
2
Por lo tanto: f(n) c
1
g(n) y g(n) c
2
h(n) .
Remplazando g(n) por c
2
.h(n) en f(n) c
1
g(n), obtenemos:
f(n) c
1
c
2
h(n)
Por lo tanto: f(n) = O(h(n)).
Prueba
(4) Si f
1
(n) = O(g(n)) , f
2
(n) = O(h(n)) y g(n) = O(h(n)) . Entonces
f
1
(n) + f
2
(n) = O(h(n))
Sean f
1
(n) c
1
g(n), n m
1
,
f
2
(n) c
2
h(n), n m
2
g(n) c
3
h(n), n m
3
Entonces considerando m = max{m
1
, m
2
,
m
3
} , tenemos que n m se cumple:
f
1
(n) + f
2
(n) c
1
g(n) + c
2
h(n)
Remplazando g(n) por c
3
h(n),obtenemos:
f
1
(n) + f
2
(n) c
1
c
3
h(n) + c
2
h(n) f
1
(n) + f
2
(n) (c
1
c
3
+ c
2
)h(n)
Por lo tanto: f
1
(n) + f
2
(n) = O(h(n))
Prueba
(5) Si f(n) y g(n) son polinomios donde grad(g(n)) grad(f(n)). Entonces
f(n) = O(g(n))
(6) Si f(n) y g(n) son polinomios donde grad(g(n)) grad(f(n)). Entonces
f(n) no es O(g(n))
(7) Si f(n) es un polinomio, entonces f(n) = O(a
n
), a > 1, f(n) = O(g(n))
(8) a
n
para a > 1 no es O(f(n)) para ningn polinomio f(n).
NOTA
Las funciones de complejidad comunes son las siguientes:
O Nombre de funcin de complejidad
O(1) Constante
O(n) Lineal
O(n
2
) Cuadrtica
O(n
3
) Cbica
O(log n) Logartmica
O(n log n) Lineal logartmica
O(2
n
) Exponencial
O(n!) Factorial
n n n
2
n
3
log
2
(n) 2
n
n!
5 5 25 125 2 32 120
10 10 100 1000 3 1024 3628800
20 20 400 8000 4 1048576 2.4x10
18
30 30 900 27000 5 1x10
9
2.6x10
32
40 40 1600 64000 5 1.1x10
12
8.1x10
47
50 50 2500 125000 6 1.1x10
15
3.0x10
64
100 100 10000 1000000 7 1.2x10
30
> 10
157
Ejemplo:
Ejemplo:
Sea L = {a
n
b
n
/ n 0}. Los algoritmos para decidir L se representa por
medio de la MT M.
1. Escanear toda la cinta, rechazando w si existe un a despus de un b.
2. Repetir: Mientras existan smbolos as y bs
3. Escanear la cinta, remplazando por x un nico a y un nico b.
4. Aceptar si todos los as y bs hubieran sido remplazados por x. Caso
contrario rechazar si sobra un a o un b.
Algoritmo 1:
Anlisis de complejidad del algoritmo 1:
En 1. Para escanear la cinta es necesario n transiciones. Adems para retornar
el cabezal de lectura a la posicin inicial se necesitaran otras n transiciones.
Por lo tanto: O(n) + O(n) = 2O(n) = O(n).
En 2. y 3. se necesitaran O(n) pasos o transiciones. Adems como cada
iteracin remplaza dos smbolos, entonces ser necesario n/2 escaneos de la
cinta.
Por lo tanto:
n/2*O(n) = O(n
2
) transiciones.
En 4. se necesita un solo paso para decidir la aceptacin o el rechazo de w.
Por lo tanto: O(n) pasos.
Finalmente la complejidad del algoritmo es:
O(n) + O(n
2
) + O(n) = O(max{n, n
2
, n}) = O(n
2
).
1. Escanear toda la cinta, rechazando w si existe un a despus de un b.
2. Repetir: Mientras existan smbolos as y bs en la cinta
3. Escanear la cinta para determinar si la cantidad total de as y
bs es par o impar. Si es impar, rechazar.
4. Escanear remplazando los as y despus los bs alternados.
Este proceso empieza con el primer a y el primer b.
5. Aceptar si la cinta no tuviera as y bs. Caso contrario rechazar.
Algoritmo 2:
En 1, 3, 4, 5. Para escanear la cinta es necesario que cada etapa efectu n
transiciones.
Por lo tanto: O(n).
En 1, 5. Son ejecutadas una nica vez.
Por lo tanto: O(n).
En 4. Se elimina a la mitad la cantidad de as y bs cada vez que esta etapa se
ejecuta.
Anlisis de complejidad del algoritmo 2:
En 2. Este loop se ejecuta a lo mas 1 + log
2
n veces (se adiciona 1 para hacer
cero la cantidad de smbolos en la cinta).
Ejemplo: log 6 = 4, pero es necesario 5 iteraciones para llegar en 8, 4, 2, 1 0
smbolos en la cinta.
La complejidad de 2, 3, 4 es:
O(1 + log
2
n) (O(n) + O(n)) = 2O(n)*O(1 + log
2
n)
= O(n)*O(1 + log
2
n)
= O(n + n log
2
n) = O(n log
2
n).
Finalmente:
O(n) + O(n log n) + O(n) = O(n log n).
Una prueba del algoritmo 2 para w = a
13
b
13
es:
x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x a x x x x x x x x x x x x b x x x x x
x x x a x x x a x x x a x x x x b x x x b x x x b x
x a x a x a x a x a x a x x b x b x b x b x b x b x
a a a a a a a a a a a a a b b b b b b b b b b b b b
Resumen:
Algoritmo 1: O(n
2
)
Algoritmo 2: O(n log n)