Documente Academic
Documente Profesional
Documente Cultură
AVANZADOS
ANLISIS DE TIEMPOS
UPC 2010
Agenda
Presentacin del Curso.
Introduccin a los Algoritmos.
Introduccin a la notacin asinttica.
Anlisis de tiempos con notacin O, ,
Notacin Big O.
Otras notaciones
Ejercicios
4 Prcticas.
2 Tareas Acadmicas (Individual).
Trabajo Parcial (Individual).
Trabajo Final (Grupo 2 personas).
Participacin constante.
Delegado.
Toma de Asistencia.
Logro de la Clase
Conocer los conceptos para analizar los
algoritmos en trminos de eficiencia.
Casos de Anlisis
Anlisis de Algoritmos
Qu se debe tomar en cuenta?
Operaciones de comparacin
Operaciones aritmticas
Asignaciones
Otras operaciones (impresiones, lectura,
etc.)
Ejercicios
Calcula el valor de 264. Intente
encontrar el menor nmero de
multiplicaciones.
Suponga que en un pas extrao existen
cinco tipos distintos de monedas con
denominaciones de 15, 13, 29, 41, y 67
(todos en centavos). Encuentre una
combinacin de estas monedas que le
permitan pagar 18 dlares y 8 centavos
(1808 centavos). Asuma que cuenta con
suficientes monedas de cada tipo en su
Notaciones
Notaci Smbolo
n
Big O
O(f(n))
Resume Explicacin
n
Peor
Nos permite evaluar en trminos
Caso
de cotas superiores (upper
bounds). Representa lo mximo
que demorara un algoritmo.
Big
Omega
(f(n))
Mejor
caso
Big
Theta
(f(n))
Tight
Bounds
Reglas Big O
Regla 1: Ciclos for.
for i 1 to n do
print i
print hola
Tiempo = 2n O(n) Lineal
Regla 2: Ciclos for anidados.
for i 1 to n do
for j 1 to n do
print hola
Tiempo =1 * n * n O(n2) Cuadrtico
Reglas Big O
Regla 3: Condicionales, (Tiempo de la mayor condicin)
o If cond then
S1
Else
S2
Tiempo = MAX(S1, S2)
If a>b then
for i 1 to n
print i
Else
print a
Reglas Big O
Regla 4: Proposiciones consecutivas. Sumar
for i 1 to n do
print i
for i 1 to n do
for j 1 to n do
print i * j
Tiempo = n + 2n2 O(n2)
Reglas Big O
Regla 5: Tiempos logartmicos. Se
divide el nmero de elementos por una
constante de manera sucesiva.
Propiedades Big O
g(n) = O(g(n))
cO(g(n)) = O(g(n)), donde c es una
constante
O(g(n))+O(g(n)) = O(g(n))
O(g(n))O(h(n)) = O(g(n)h(n))
h(n)O(g(n)) = O(h(n)g(n))
O(g(n))+O(h(n)) = O del mayor
O(g(n))-O(g(n)) = O(g(n))
Ejemplo Grfico
Tenemos 2 funciones:
h(n) = n3 - 12n2 + 20n + 110
k(n) = n3 + n2 + 5n + 5
Otras Notaciones
Notaci Smbolo
n
Little o
o(f(n))
Resume Explicacin
n
Mayor al En el peor de los casos, el tiempo
Peor
que demore el algoritmo ser
caso.
siempre menor a o(f(n)).
Little
(f(n))
Resumen de Notaciones
f(n)
f(n)
f(n)
f(n)
f(n)
=
=
=
=
=
o(g(n)) a < b
O(g(n)) a b
(g(n)) a = b
(g(n)) a b
(g(n)) a > b
Tasas de crecimiento
Funcin
Nombre
Constante
log(n)
Logartmica
log2(n)
Logartmica cuadrada
Lineal
n log(n)
N log N
n2
Cuadrtica
n3
Cbica
na , a>3
Polinmica de grado a
2n
Exponencial
n!
Factorial
Tasas de crecimiento
Tasas de crecimiento
Tasas de crecimiento
Para n = 50
Tipo de Funcin
Logartmica O(log n)
Logartmica cuadrada
2
O(log
n)
Lineal O(n)
Lineartmica O( N log n)
Cuadrtica O(n2)
Cbica O(n3)
Exponencial O(2n)
Factorial O(n!)
# de
Instrucciones
(Aprox.)
6
32
50
282
2,500
125,000
1.13
x 1015
3.04 x 1064
Ejercicios
Analizar O(n) para:
Ejercicio 1:
sum 0
for i 1 to n do
sum sum +1
Ejercicio 2:
sum 0
for i 1 to n do
for j 1 to i do
sum sum +1
Ejercicios
Analizar O(n) para:
Ejercicio 3:
sum 0
for i 1 to n do
for j 1 to i * 2 do
sum sum +1
Ejercicio 4:
sum 0
for i 1 to n do
for j 1 to 5 do
sum sum +1
Ejercicios
Analizar O(n) para:
Ejercicio 5:
sum 0
if (a > b)
for i 1 to n do
sum sum +1
else
for i 1 to n do
for j 1 to i do
sum sum +1
Ejercicios
Implementar in algoritmo de bsqueda binaria y luego
realizar el anlisis asinttico O(n)
Bibliografa
Cormen, Thomas H. and Others. Introduction to Algorithms,
Second Edition. 2001.
Jeffrey J. McConnell. Analysis of Algorithms: An Active Learning
Approach. 2001
Weiss, Mark Allen. Estructura de Datos y Algoritmos. 1995.