Professional Documents
Culture Documents
j =1
tj +c5
n1
j =1
(tj 1) +
+c6
n1
j =1
(tj 1) +c8(n 1)
= (c1 +c2 +c3 +c8)n (c2 +c3 +c8) +(c4 +c5 +c6)
n1
j =1
tj (c5 +c6)
n1
j =1
1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
para analizar el O() se tiene:
T(n) = d
1
n d
2
+d
3
n1
j =1
t
j
d
4
n1
j =1
1
d
1
n +d
3
n1
j =1
t
j
d
1
n +d
3
n1
j =1
n
= d
1
n +d
3
n(n 1)
d
1
n +d
4
n
2
luego T(n) O(n
2
).
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
para analizar el () se tiene:
T(n) = d
1
n d
2
+d
3
n1
j =1
t
j
d
4
n1
j =1
1
d
1
n d
2
+d
3
n1
j =1
j d
4
(n 1)
= d
1
n d
2
+d
3
(n 1)n/2d
4
(n 1)
d
3
2
n
2
+d
1
n (
d
3
2
+d
4
)n (d
2
+d
4
) (n
2
)
recordemos que T(n) es el tiempo de ejecucin en el peor caso
para instancias de tamao n
luego T(n) (n
2
) y por lo tanto tambin T(n) (n
2
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
NMERO DE FIBONACCI
Algoritmo: algoritmo iterativo simple
para analizar el O() se tiene:
T
FIB2
(n) = b +
n
k=1
(c
1
+c
2
+c
3
) +d fn
luego T
FIB2
(n) O(n)
para analizar el () se tiene:
T
FIB2
(n) = b +
n
k=1
(c
1
+c
2
+c
3
) +d
n
k=1
(c
1
+c
2
+c
3
) n
luego T
FIB2
(n) (n), y por lo tanto tambin T
FIB2
(n) (n)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Notacin Asinttica Condicional
muchos algoritmos son ms fciles de analizar si se restringe la
atencin a instancias cuyos tamaos satisfacen determinadas
condiciones
O(g(n) [ P(n)) = f (n) : c R
+
n
0
N, tal que
f (n) cg(n)para todo n n
0
siempre que P(n)
anlogamente, se denen (g(n) [ P(n)) notacin omega
condicional, y (g(n) [ P(n)) notacin condicional
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
por ejemplo, t (n) (n
2
[ n = 2
k
) signica que si n es potencia
de 2 entonces t (n) (n
2
)
nada se est armando sobre t (n) si n no es potencia de 2
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
NMERO DE FIBONACCI
Algoritmo: algoritmo iterativo complejo
T
FIB3
(n) = c1+
logn
k=1
c2+
logn
k=1
c3
si n = 2
k
entonces
T
FIB3
(n) = c1+
logn
k=1
c3 d logn
y entonces T
FIB3
(n) O(logn [ n = 2
k
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
si n = 2
k
1 entonces
T
FIB3
(n) = c1+
logn
k=1
(c2+c3) elogn
y entonces T
FIB3
(n) O(logn [ n = 2
k
1)
analizando que este ltimo caso es el peor de los casos posible
se puede concluir que T
FIB3
(n) O(logn)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Regla de las Funciones de Crecimiento Suave
sirve para extender lo analizado condicionalmete a todos los
tamaos de entrada
Teorema
Sea f : N R
+
una funcin de crecimiento suave, y t : N R
+
una funcin eventualmente no decreciente. Luego siempre que
t (n) (f (n) [ n = b
k
) para algn entero b 2, entonces
t (n) (f (n))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Denicin
una funcin f (n) : N R
+
es eventualmente no decreciente si
existe n
0
N tal que para todo n n
0
vale f (n) f (n +1)
Denicin
una funcin f (n) : N R
+
es de crecimiento suave si existe
b N, b 2 tal que f (n) es eventualmente no decreciente y
f (bn) O(f (n))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
la mayora de las funciones que se encuentran son de
crecimiento suave: logn, n, nlogn, n
2
, o cualquier polinomio con
coeciente principal positivo
funciones tales como n
logn
, 2
n
o n! no son de crecimiento suave
reglas anlogas tambin son vlidas para O() y ()
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Ejemplo
si t (n) es
t (n) =
a si n = 1
4t (,n/2|) +bn sino
entonces es fcil probar (usando los mtodos de resolucin de
recurrencias que se vern) que t (n) = (a+b)n
2
bn si n = 2
k
,
ie t (n) (n
2
[ n = 2
k
)
luego, como n
2
es una funcin de crecimiento suave y t (n) es
eventualmente no decreciente (porqu?) se puede aplicar la
regla de las funciones de crecimiento suave y concluir que
t (n) (n
2
) para todo n
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
es necesario un manejo udo de las siguientes estructuras de
datos:
Arreglos y Matrices
Listas simplemente enlazadas, Pilas y Colas
Grafos, implementados mediante matriz o lista de adyacencia
rboles
Tablas Asociativas (Hash)
Colas con Prioridad (Heaps), implementados por rboles binarios
completos
Conjuntos Disjuntos
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
ORDENAR UN ARREGLO
Algoritmo: Heapsort (ordenamiento por construccin de un heap)
FUNCTION Heapsort(A)
Construir Heap(A)
FOR i ::= n DOWNTO 2
A[1] <=> A[i]
A.tamao- -
A.heapify(1)
ENDFOR
costo veces
(n) 1
c
1
n
i =2
1
c
2
n
i =2
1
c
3
n
i =2
1
(logn)
n
i =2
1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
calculando el tiempo de ejecucin se tiene:
T(n) = (n) +
n
i =2
(c
1
+c
2
+c
3
+(logn)) =
= (n) +(nlogn) (nlogn)
es fundamental en este ejemplo usar la implementacin ms
eciente para las operaciones de la estructura de datos
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
Secuencia
Algoritmo A
P1
P2
sea t
A
(n) la cantidad de recursos a analizar.
si P1 insume (f
1
(n)) recursos y P2 insume (f
2
(n)) recursos,
entonces
t
A
(n) = (f
1
(n)) +(f
2
(n)) = (f
1
(n) +f
2
(n)) =
= (max(f
1
(n), f
2
(n)))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
Condicional
Algoritmo A
IF (X)
P1
ELSE
P2
ENDIF
el tiempo en el peor de los casos es
t
A
(n) = t
X
(n) +max(t
P1
(n), t
P2
(n)) =
= O(max(t
X
(n), t
P1
(n), t
P2
(n)))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
y tambin
t
A
(n) c +max((f
1
(n)), (f
2
(n))) =
= (max(c, f
1
(n), f
2
(n)))
si el O() y el () coinciden, entonces se puede denir el ()
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
Ciclo FOR
Algoritmo B
FOR i ::= 1 TO m
P(i)
ENDFOR
sean c
1
, c
2
, c
3
los costos de las operaciones elementales
si P(i ) insume t recursos (no depende de i ni de n) entonces
t
B
(n) = c
1
+(m+1)c
3
+mt +mc
2
=
= (c
2
+c
3
+t )m+(c
1
+c
3
) (mt )
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
si P(i ) insume t (i ) recursos (dependiendo de i , del tamao n de
la instancia, o de cada instancia en particular) entonces
t
B
(n) =
m
i =1
t (i )
para obtener el O() o el () de esta funcin se pueden usar las
distintas propiedades vistas para obtener la notacin asinttica
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
ORDENAR UN ARREGLO
Algoritmo: Ordenamiento por Seleccin
FOR i ::= 1 TO n-1
ind ::= i; min ::= A[i]
FOR j ::= i+1 TO n
IF (A[j]<min)
min ::= A[j]
ind ::= j
ENDIF
ENDFOR
A[ind] ::= A[i]; A[i] ::= min
ENDFOR
costo veces
a n
b n 1
c
n1
i =1
n+1
j =i +1
1
c
n1
i =1
n
j =i +1
1
c
n1
i =1
n
j =i +1
1
c
n1
i =1
n
j =i +1
1
b n 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
calculando la cantidad de recursos se tiene
t
C
(n) = a+
n1
i =1
(a+b +(n i )c) = a+
n1
i =1
(a+b +cn) c
n1
i =1
i =
= a+(n 1)(a+b +cn) cn(n 1)/2
= a+
cn
2
2
+(a+b
c
2
)n (a+b) (n
2
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
NMERO DE FIBONACCI
Algoritmo: primer algoritmo iterativo (sumas y restas son operaciones
elementales)
Function FIB2(n)
i ::= 1; j ::= 0
FOR k ::= 1 TO n
j ::= i+j
i ::= j-i
ENDFOR
RETURN j
costo veces
b 1
c
1
n+1
k=1
1
c
2
n
i =1
1
c
3
n
i =1
1
d 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
calculando el tiempo de ejecucin se tiene
T
FIB2
(n) = b +c
1
+
n
k=1
(c
1
+c
2
+c
3
) +d =
= (b +d) +(c
1
+c
2
+c
3
)n (n)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
si la suma y la resta no son operaciones elementales (operan
sobre nmeros muy grandes) entonces
Function FIB2(n)
i ::= 1; j ::= 0
FOR k ::= 1 TO n
j ::= i+j
i ::= j-i
ENDFOR
RETURN j
costo veces
b 1
c
1
n
k=1
1
c
2
tama no(j )
n
i =1
1
c
3
tama no(j )
n
i =1
1
d 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
resultando
T
FIB2
(n) = b +
n
k=1
(c
1
+(c
2
+c
3
) tama no(j )) +d =
(b +d) +
n
k=1
(c
1
+(c
2
+c
3
) tama no(F
k
))
(b +d) +nc
1
+
n
k=1
dk por tama no(F
k
) (k)
= (b +d) +nc
1
+d
n(n +1)
2
=
= (b +d) +nc
1
+
d
2
n
2
+
d
2
n O(n
2
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
Ciclos WHILE y REPEAT
no es tan fcil para los casos de ciclos repeat o while, no se
sabe cuntas veces sern ejecutados.
algunas de las tcnicas a aplicar pueden ser:
1
encontrar una funcin en las variables involucradas cuyo valor
decrezca en cada iteracin, y que sea siempre positiva
2
tratar la iteracin como si fuese un procedimiento recursivo, y
aplicar el mtodo para recursividad
3
elegir como cota del cuerpo del bucle el tiempo de ejecucin de
una de sus sentencias, la cual se denomina barmetro. Luego se
debe contar cuntas veces se ejecuta el barmetro
ningn mtodo es aplicable para todos los casos, y solo a travs
de la experiencia se puede detectar cul usar
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
MXIMO COMN DIVISOR
Algoritmo: Algoritmo de Euclides
Function EUCLIDES(m,n)
WHILE m>0
temp ::= m
m ::= n mod m
n ::= temp
ENDWHILE
RETURN n
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
se puede observar las propiedades:
n
i
= m
i 1
, m
i
= n
i 1
mod m
i 1
siempre que i 1
n
i
m
i
siempre que i > 1
para todo n, m tal que n m vale n mod m < n/2
n
i
= m
i 1
= n
i 2
mod m
i 2
< n
i 2
/2 si i > 2
luego, en dos iteraciones n
0
se reduce a menos de la mitad; en
cuatro a menos del cuarto; etc. Como m
i
> 0 entonces no puede
haber ms de 2log
2
n
0
iteraciones. Y T(n) O(logn).
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
ORDENAR UN ARREGLO
Algoritmo: Ordenamiento por Cubculos (enteros hasta s)
array U[1..s] ::= 0
FOR i ::= 1 TO n
k ::= T[i]; U[k]++
ENDFOR
i ::= 0
FOR k ::= 1 TO s
WHILE U[k] != 0
T[i++] ::= k; U[k]- -
ENDWHILE
ENDFOR
(n)
(1)
barmetro
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
el barmetro se ejecuta U[k]
0
+1 veces por cada k
luego el tiempo total es:
s
k=1
(U[k]
0
+1)(1)
y vale
T(n) = (n) +(1) +
s
k=1
(U[k]
0
+1)(1) =
= (n) +
s
k=1
U[k]
0
(1) +
s
k=1
(1)
= (n) +(n) +(s) (max(n, s))
el problema de este algoritmo es el lmite mximo de los
nmeros a utilizar, y el espacio de memoria auxiliar
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
una simple inspeccin del algoritmo da origen a una recurrencia,
que simula el ujo de control del algoritmo
function F(n)
IF (x)
P1(n)
ELSE
P2(n)
F(m); % con m<n
ENDIF
t (n) O(max(t
P1
(n), t
P2
(n) +t (m)))
luego se debe aplicar algn mtodo para resolver la recurrencia
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
ELEMENTO MAYOR
Function MAXIMO(T)
IF n=1
RETURN T[1]
ELSE
x ::= MAXIMO(T[1..n-1])
IF (x>T[n])
RETURN x
ELSE
RETURN T[n]
ENDIF
ENDIF
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
genera la siguiente recurrencia:
T(n) =
a si n = 1.
b +T(n 1) si n > 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
NMERO DE FIBONACCI
Algoritmo: algoritmo recursivo
function FIB1(n)
IF n<2
RETURN n
ELSE
RETURN (FIB1(n-1)+FIB1(n-2))
ENDIF
que genera la recurrencia
T
FIB1
(n) =
a si n < 2
T
FIB1
(n 1) +T
FIB1
(n 2) +b si n 2
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
veremos dos tcnicas bsicas y una auxiliar que se aplican a
diferentes clases de recurrencias:
Tcnicas de
Resolucin de
Recurrencias
5 si n = 0
9T(n/3) +n si n ,= 0
es importante identicar:
la cantidad de llamadas recursivas
el cociente en el que se divide el tamao de las instancias
la sobrecarga extra a las llamadas recursivas
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Teorema
Sean a 1, b > 1 constantes, f (n) una funcin y T(n) una
recurrencia denida sobre los enteros no negativos de la forma
T(n) = aT(n/b) +f (n), donde n/b puede interpretarse como n/b| o
,n/b| Entonces valen:
1
si f (n) O(n
log
b
a
) para algn > 0 entonces
T(n) (n
log
b
a
).
2
si f (n) (n
log
b
a
) entonces T(n) (n
log
b
a
lgn).
3
si f (n) (n
log
b
a+
) para algn > 0, y satisface
af (n/b) cf (n) para alguna constante c < 1, entonces
T(n) (f (n)).
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplos:
1
si T(n) = 9T(n/3) +n entonces a = 9, b = 3, se aplica el caso 1
con = 1 y T(n) (n
2
)
2
si T(n) = T(2n/3) +1 entonces a = 1, b = 3/2, se aplica el
caso 2 y T(n) = (lgn)
3
si T(n) = 3T(n/4) +nlgn entonces a = 3, b = 4,
f (n) (n
log
4
3+0,2
) y 3(n/4)lg(n/4) 3/4nlgn, por lo que se
aplica el caso 3 y T(n) (nlgn)
4
si T(n) = 2T(n/2) +nlgn, no se puede aplicar el caso 3 porque
f (n) = nlgn , (n
1+
) para cualquier > 0
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Mtodo de la Ecuacin Caracterstica
se aplica a ciertas recurrencias lineales con coecientes
constantes como:
T(n) =
5 si n = 0
10 si n = 1
5T(n 1) +8T(n 2) +2n si n > 1
en general, para recurrencias de la forma:
T(n) = a
1
T(n 1) +a
2
T(n 2) + +a
k
T(n k) +b
n
p(n)
donde a
i
, 1 i k, b son constantes y p(n) es un polinomio en
n de grado s
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplos:
en t (n) = 2t (n 1) +3
n
, a
1
= 2, b = 3, p(n) = 1,
s = 0
en t (n) = t (n 1) +t (n 2) +n, a
1
= 1, a
2
= 1,
b = 1, p(n) = n, s = 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
para resolver la recurrencia
T(n) = a
1
T(n 1) +a
2
T(n 2) + +a
k
T(n k) +b
n
p(n):
1
encontrar las races no nulas de la ecuacin caracterstica:
(x
k
a
1
x
k1
a
2
x
k2
a
k
)(x b)
s+1
= 0
Races: r
i
, 1 i l k, cada una con multiplicidad m
i
.
2
las soluciones son de la forma de combinaciones lineales de
estas races de acuerdo a su multiplicidad
T(n) =
l
i =1
mi
j =1
c
ij
n
j 1
r
n
i
3
si se necesita, se encuentran valores para las constantes
c
ij
, 1 i l , 0 j m
i
1 y d
i
, 0 i s 1 segn la
recurrencia original y las condiciones iniciales (valores de la
recurencia para n = 0, 1, . . .)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplo:
T(n) =
0 si n=0
2T(n 1) +1 si n > 0
1
si b = 1 y p(n) = 1 de grado 0, la ecuacin caracterstica
(x 2)(x 1)
0+1
= 0, con r
1
= 2, m
1
= 1 y r
2
= 1, m
2
= 1
2
la solucin general es de la forma T(n) = c
11
2
n
+c
21
1
n
.
3
a partir de las condiciones iniciales se encuentra:
c
11
+c
21
= 0 de n = 0
2c
11
+c
21
= 1 de n = 1
de donde c
11
= 1 y c
21
= 1.
4
la solucin es T(n) = 2
n
1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplo:
T(n) =
n si n=0,1,2
5T(n 1) 8T(n 2) +4T(n 3) si n > 2
1
si b = 0 y p(n) = 1, la ecuacin caracterstica es
x
3
5x
2
+8x 4 = 0, con r
1
= 1, m
1
= 1 y r
2
= 2, m
2
= 2
2
la solucin general es de la forma T(n) = c
11
1
n
+c
21
2
n
+c
22
n2
n
.
3
a partir de las condiciones iniciales se obtienen:
c
11
+c
21
= 0 de n = 0
c
11
+2c
21
+2c
22
= 1 de n = 1
c
11
+4c
21
+8c
22
= 2 de n = 2
de donde c
11
= 2, c
21
= 2 y c
22
= 1/2
4
la solucin es entonces la funcin T(n) = 2
n+1
n2
n1
2
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplo: nmero de Fibonacci
F(n) =
n si n=0,1
F(n 1) +F(n 2) si n 2
1
si b = 0 y p(n) = 1, la ecuacin caracterstica es x
2
x 1 = 0,
con races =
1+
5
2
y
=
1
5
2
2
la solucin general es F(n) = c
11
n
+c
21
n
.
3
a partir de las condiciones iniciales se obtienen:
c
11
+c
21
= 0 de n = 0
c
11
+c
21
= 1 de n = 1
cuyas soluciones son c
11
= 1/
5 y c
21
= 1/
5
4
la solucin es F(n) =
1
5
(
n
n
).
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Cambio de Variable
por ejemplo para la recurrencia
T(n) =
a si n=1
2T(n/2) +nlog
2
n sino
No se puede aplicar el teorema maestro, ni la ecuacin
caracterstica
se dene una nueva recurrencia S(i ) = T(2
i
), con el objetivo de
llevarla a una forma en la que se pueda resolver siguiendo algn
mtodo anterior
el caso general queda
S(i ) = T(2
i
) = 2T(2
i
/2) +2
i
i = 2T(2
i 1
) +i 2
i
= 2S(i 1) +i 2
i
con b = 2 y p(i ) = i de grado 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
la ecuacin caracterstica de esta recurrencia es
(x 2)(x 2)
1+1
= 0 con raz 2 de grado 3
la solucin es entonces S(i ) = c
11
2
i
+c
12
i 2
i
+c
13
i
2
2
i
volviendo a la variable original queda
T(n) = c
11
n +c
12
(log
2
n)n +c
13
(log
2
n)
2
n.
se pueden obtener los valores de las constantes sustituyendo
esta solucin en la recurrencia original:
T(n) 2T(n/2) = nlog
2
n = (c
12
c
13
)n +2c
13
n(log
2
n)
de donde c
12
= c
13
y 2c
12
= 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
por lo tanto T(n) (nlog
2
n [ n es potencia de 2)
si se puede probar que T(n) es eventualmente no decreciente,
por la regla de las funciones de crecimiento suave se puede
extender el resultado a todos los n (dado que nlog
2
n es de
crecimiento suave). En este caso T(n) (nlog
2
n)
Pablo R. Fillottrani Algoritmos y Complejidad