Está en la página 1de 32

ALGORITMOS

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

Presentacin del Curso


Temtica del Curso.
Esquema de evaluacin.

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.

Introduccin a los algoritmos


Qu es un algoritmo?
Ejemplos

Por qu es importante la eficiencia en


los algoritmos?
Consideraciones a la hora de disear un
algoritmo?
Memoria.
Tiempo de Ejecucin.

Pasos para disear un


algoritmo

Casos de Anlisis

Anlisis de Algoritmos
Qu se debe tomar en cuenta?

Operaciones de comparacin
Operaciones aritmticas
Asignaciones
Otras operaciones (impresiones, lectura,
etc.)

Siempre asumimos que el nmero de


datos es grande.
Para el anlisis utilizamos Notacin
Asinttica

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

Nos permite evaluar en trminos


de cotas inferiores (lower bounds).
Representa lo mnimo que
demorara un algoritmo.

Big
Theta

(f(n))

Tight
Bounds

Representa cotas exactas (tight


bounds). Es decir, sin importar la
entrada, el algoritmo siempre
crecer de la misma forma.
(f(n)) = (f(n)) (f(n))

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

Tiempo = MAX(n, 1) O(n)

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.

Reglas para transformar una funcin en


Notacin Asinttica

Ejemplo: Hallar el promedio de los nmeros en el


array A.
Sum 0
n length(A)
for i 1 to n do
sum sum + A[i]
Prom sum / n
Tiempo muy detallado = 1 + 2 + (2n) + 2
Tiempo asinttico = O(n)

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

En los grficos, se muestra el


crecimiento de ambas funciones.

Con valores del 0 al 5

Con valores del 0 al 15

Con valores del 0 al 100

Con valores del 0 al 1000

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

Menor al En el mejor de los casos, el tiempo


Mejor
que algoritmo nunca ser mayor a
caso.
(f(n)).

(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

o(n) > O(n) (g(n)) (g(n))>


(g(n))

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.