Professional Documents
Culture Documents
nF (n 1) if n > 0
F (n ) =
1
if n = 0
F(4) = 4F(3)
F(3) = 3F(2)
F(2) = 2F(1)
F(1) = 1F(0)
F(0) = 1
F(4) = 43211 = 24
Una recurrencia es lineal, si cada llamada recursiva genera cuando mucho otra llamada
recursiva, en caso contrario es no-lineal.
3.2 Deduccin de recurrencias a partir de algoritmos
Los recursos empleados por algoritmos recursivos (por ejemplo, el nmero de comparaciones
de clave y el nmero de multiplicaciones) se pueden describir con la recurrencia T(n), la cual
tiene una estructura inductiva: a) complejidad de los casos base y b) complejidad de los casos
progresivos. Los casos base detienen la recursividad, mientras los casos progresivos la
reactivan.
Siguiendo con el ejemplo del Factorial, ahora se analiza el desempeo del algoritmo
recursivo correspondiente.
Algoritmo Factorial (n)
Entradas: un nmero entero n
Salidas: un nmero entero correspondiente al factorial de n
1 si n = 0 entonces
//caso base
2
Factorial 1
3 sino
// caso progresivo
4
Factorial n*Factorial(n-1)
0
T ( n) =
1 + T (n 1)
si n = 0 (caso base)
si n > 0 (caso progresivo)
T(4) = 1 + T(3)=4
T(3) = 1 + T(2)=3
T(2) = 1 + T(1)=2
T(1) = 1 + T(0)=1
T(0) = 0
T(4) = 1 + 1 +1 +1 = 4
Se puede observar que para calcular el factorial de 4, el algoritmo realiza cuatro
multiplicaciones: Factorial(4)=43211. Este nmero de multiplicaciones coincide con
el obtenido por la recurrencia T(4)=4.
0 1 2 3 4 5
W(n)paso 1 = 0,
si n=0
W(n)paso 3 = 1,
n>0
W(n)paso 6 = W(n-1),
n>0
0
W (n) =
1 + W (n 1)
si n = 0
si n > 0
delimitan
el
subarreglo
si (p>u)entonces
//caso base de fracaso
devolver -1
medio (p + u)/2
si k = E(medio) entonces
//caso base de xito
ndice medio
sino si (k < E[medio]) entonces
ndice bsquedaBinaria(E,p,medio1,k) //caso progresivo
sino
ndice bsquedaBinaria(E,medio+1,u,k) //caso progresivo
devolver ndice
W(n)paso 1 = 0,
si n=0
W(n)paso 5 = 1,
si n>0
W(n)paso 7 = 1, si n>0
En las lneas 8 y 9 las invocaciones recursivas se realizan con subarreglos de diferentes
tamaos. Cuando n es par: el segmento izquierdo es n/2 y el derecho es (n/2)-1. Cuando n
es impar: los segmentos izquierdo y derecho son (n-1)/2. El mayor de cada tipo de tamao
es n/2 y (n-1)/2. Ambos tamaos mximos quedan expresados con n/2.
si n>0
W (n) =
n
2 + W 2
si n = 0
si n > 0
El caso base del algoritmo mergeSort no est explicito en el algoritmo, pero sucede
cuando p u, e implica que no se realizan comparaciones cuando el arreglo es de tamao 1.
si n=1
W (n) = 2W n + (n 1) ,
2
Comparaciones para ordenar por
separado las parte derecha e izquierda
que son de tamao n/2 (b=2, c=2).
si n>1
Comparaciones para fusionar dos subarreglos
ordenados de tamao n/2. En el peor caso se toma
alternadamente un elemento de cada subarreglo,
requiriendose n-1 comparaciones ( f(n) = n-1 ).
Reuniendo en una sola expresin los casos base y recursivo, la complejidad del algoritmo
mergeSort en el peor caso es como sigue.
si n = 0
0
W (n) =
n
2W 2 + (n 1) si n > 0
Si los subproblemas son de distinto tamao se pueden obtener lmites asintticos que
acotan el desempeo.
Cota superior expresada con O(n): utilizando T(n) b T(n cmax) + f(n)
Cota inferior expresada con (n): utilizando T(n) b T(n cmin) + f(n)
3.4 Solucin de recurrencias mediante el mtodo iterativo
Este mtodo convierte la funcin de recurrencia en una sumatoria que posteriormente se evala
para obtener un lmite de la funcin. De manera general el mtodo iterativo consiste en: a)
Expansin de la recurrencia para identificar patrones de regularidad y expresarlos como sumas
de trminos dependientes slo de n y las condiciones iniciales y, b) Evaluacin de la sumatoria.
3.4.1 Pasos del mtodo iterativo
La siguiente secuencia detallada de pasos permite determinar la complejidad (O(n), (n), o
fuera de la base. Para simplificar la explicacin del mtodo usaremos la siguiente estructura de
recurrencia que genera en cada nivel b problemas y denotaremos con ni al tamao del
problema en el nivel de recurrencia i.
c
T (ni ) =
bT (ni +1 ) + f (ni )
Paso 2. Evaluar la funcin T(n) del caso progresivo con un conjunto pequeo de valores
consecutivos de n.
T(n0) = f(n0) + bT(n1)
T(n1) = f(n1) + bT(n2)
T(n2) = f(n2) + bT(n3)
T(n3) = f(n3) + bT(n4)
T(n4) = f(n4) + bT(n4)
Paso 3. Sustituir los resultados del punto anterior en cada expresin antecesora.
T(n0) = f(n0) + bf(n1) +b2 f(n2) + b3f(n3) + b4 T(n4)
Paso 4. Identificar un patrn con el cual pueda generalizarse la representacin de los trminos
del desarrollo.
Paso 5. Expresar en notacin de sumatorias el patrn identificado, destacando dos partes en la
expresin: un conjunto de trminos inductivos y un trmino llamado de base o de paro,
referenciado por m.
Paso 6. Determinar un valor de m para el cual se satisfaga o al menos se aproxime a la igualdad
tamao de problema
del trmino
referenciado por m
tamao de problema
que detiene la
=
recursividad
n
+ n n >1
2T
T ( n ) = 2
1
n =1
( 2)
n
T ( n ) = + 2T ( n )
2
4
2
n
T ( n ) = + 2T ( n )
4
8
4
n
T ( n ) = + 2T ( n )
8
16
8
T (n) = n + 2T n
( )
T (n) = n + 2 n + 2 2T n
2
4
T ( n ) = n + 2 n + 2 2 n + 2 2 2T n
2
4
8
T ( n ) = n + 2 n + 2 2 n + 2 2 2 n + 2 2 2 2T n
2
4
8
16
T ( n ) = n + 21 n
21
+ 22 n
22
( )
+ 23 n
23
( )
( 2)
+ 24 T n
Dado que se desconoce en cuntos trminos la funcin T(n) debe ser expandida para
alcanzar el caso base, se usar el ndice m para hacer referencia al trmino correspondiente a
la condicin de paro.
esta sumatoria sigue el trmino de paro, cuyo coeficiente y tamao de problema siguen un
patrn similar con i=m.
T (n) = n + 21 n 1 + 22 n 2 + 23 n 3 + ... + 2m 1 n m 1 + 2m T n m 1
2
2
2
2
2
m 1
T ( n ) = 2i n
i =0
2m 1
)+2 T (n2 )
m
m 1
La sumatoria se simplifica al considerar que el ltimo termino corresponde al caso base con
n=1 y T(1)=1.
m 1
( 2)
T ( n ) = 2i n
i =0
+ 2m T n
m 1
m 1
m 1
i =0
i =0
= n + 2m T (1) = n + 2m
( 2 ) = T (1)
T n
=1
2m
2m = n
n
T ( n) =
log 2 ( n ) 1
n + 2log n
i =0
n
+ n n >1
3T
T ( n ) = 4
n =1
(1)
T (n) = n + 3T n
4
n
T n = + 3T n
4
16
4
n
T n = + 3T n
16 16
64
n
T n =
+ 3T n
64 64
256
(
(
(
)
)
(
(
T (n) = n + 3T n
4
3n
T (n) = n + + 9T n
16
4
)
)
3n 9n
+
+ 27T n
64
4 16
3n 9n 27 n
+
+ 81T n
T ( n) = n + +
256
4 16 64
T ( n) = n +
Dado que se desconoce en cuntos trminos la funcin T(n) debe ser expandida para
alcanzar el caso base, se usar el ndice m para hacer referencia al trmino correspondiente a
la condicin de paro.
3n 9n 27 n
T ( n) = n + +
+
+ ... + [ trmino referenciado por m ]
4 16 64
Antes de la ltima llamada recursiva se forma una sumatoria cuyo patrn de regularidad
(trmino general) es 3i n / 4i con i= 0m-1. Despus sigue el trmino asociado a la
condicin de paro, cuyo coeficiente y tamao de problema siguen un patrn similar con i=m.
3n 9n 27 n
T ( n) = n + + +
+ ...+ 3m 1 n m 1 + 3m T n m
4
4
4 16 64
m 1
T (n) = 3i n i + 3m T n m
4
4
i =0
El ltimo trmino de la sumatoria se simplifica ya que ste corresponde al caso base con n=1
y T(1)=(1).
m 1
T (n) = 3i n i + 3m T (1)
4
i =0
Usando el lmite n
trmino de la sumatoria.
) ( )
( )
T ( n)
log 4 ( n ) 1
3i n i + 3log 4 ( n ) (1)
4
log 4 ( n ) 1
3i n i + ( 3log4 ( n ) )
4
log 4 ( n ) 1
3i n i + ( n log4 (3) )
4
i =0
T ( n)
i =0
T ( n)
i =0
El lmite superior de la sumatoria de T(n) se puede sustituir por infinito para utilizar una serie
geomtrica infinita.
i =0
=1
con r = 3/4
1 r
1
log 4 (3)
T ( n) n
)
+ (n
1 3 / 4
T (n) 4n + ( n log4 (3) )
T ( n) = O ( n)
Un lmite superior ms ajustado para T(n) se obtiene con una serie geomtrica finita.
k
ar
i =0
= a ( (r k +1 1) /(r 1) ) .
Con las series geomtricas decrecientes, la suma total es a lo ms un factor constante mayor
que el primer trmino. Por lo tanto en la solucin prevalece el primer trmino n que es menor
que 4n por un factor de 4.
n (3 / 4)i = n +
i =0
3n 9n 27 n
+ +
+ ... = 4n
4 16 64
Los nodos
hoja son los
casos base.
Funcin de costo
Costo no-recursivo
2T (n / 2) + n 2
T ( n) =
0
n >1
n =1
n2
T(n)
log2(n)
T(n/2)
T(n/4)
(n/4)2
(n/2)2
T(n/4)
T(n/2)
(n/4)2
T(n/4)
(n/4)2
Tnivel1= 2(n/2)2=n2/2
(n/2)2
T(n/4)
Tnivel2= 4(n/4)2=n2/4
(n/4)2
T(1)
Tnivelm= 0
Un anlisis visual del rbol revela que en cada nivel el nmero de subproblemas aumenta en
potencias de dos.
( 2 ) ( 2 ) ( 2 ) ... ( 2 )
0
1 1 1
1
0 n 1 n 2 n ... m n
2 2 2
2
En cada nivel la complejidad algortmica total incrementa en potencias de dos. Es importante
m
m
observar que en el ltimo nivel se tienen 2 nodos y cada nodo es de tamao (1/2 )n.
1 2 1 2 1 2
1
m
0 n 1 n 2 n ... ( 2 ) T m
2
2
2
1
1
1
1
T (n) = n 2 + n 2 + n 2 + ... + m 1 n 2 + 2m T m n
2
4
2
2
m 1
1
1
1
1
T (n) = n 2 + n 2 + n 2 + ... + m 1 n 2 + 0 = n 2 i + 0
2
4
2
i =0 2
1
T m n = T (1)
2
1
n = 1; 2m = n; log 2m = log n
m
2
m = log n
Para la solucin de T(n) se usa la serie geomtrica con r=1/2.
k
ar
i =0
2
i =0
= a ( (r k +1 1) /(r 1) )
= 2
1
2k
La solucin de la recurrencia T(n) revela que el algoritmo tiene una velocidad de crecimiento
cuadrtica
T ( n) = n 2
(log n ) 1
i =0
1
1
2
= n 2 2 (log n ) 1 = n 2 2 = 2n 2 2n
i
2
2
n
T ( n ) = ( n 2 )
Con un segundo ejemplo se ilustra el mtodo de rbol de recursin.
T (n / 3) + T (2n / 3) + n n > 1
T ( n) =
n =1
0
Primero se construye el rbol de recurrencia determinando para cada nodo la funcin de
costos y el costo no recursivo. Para cada nivel se calcula el costo total.
T(n)
Tnivel0= n
log3/2(n)
T(n/3)
T(n/9)
(n/9)
(n/3)
T(2n/9)
T(2n/3)
(2n/9)
T(2n/9)
(2n/9)
(2n/3)
T(4n/9)
(4n/9)
T(1)
Tnivelm= 0
( 2 ) ( 2 ) ( 2 ) ... ( 2 )
0
2
2
2
2
n n n ...
3
3
3
3
m 1
2
n n
3
2 m
n
3
( n ) ( n ) ( n ) ... ( 2m ) T
2 m
T (n) n + n + n + ... + n + ( 2m ) T n
3
m 1
T ( n) ( n) + 0
i =0
2
T n = T (1)
3
m
2
n =1
3
m
3
=n
2
m
3
log 3/ 2 = log 3/ 2 n
2
m = log 3/ 2 n
Para la solucin de T(n) se usa una diferencia de lmites.
T ( n) ( n)
i =0
T ( n)
log3 / 2 ( n ) 1
( n)
i =0
T ( n) n
log3 / 2 ( n ) 1
(1)
i =0
2T (n / 2) + n n > 1
T ( n) =
n =1
0
Primero se construye el rbol de recurrencia determinando para cada nodo la funcin de
costos y el costo no recursivo acordes al nivel de recursividad que le corresponda. Para cada
nivel se calcula el costo total.
T(n)
Tnivel0= n
log2(n)
T(n/2)
T(n/4)
(n/4)
(n/2)
T(n/4)
T(n/2)
(n/4)
(n/4)
T(n/4)
(n/2)
T(n/4)
(n/4)
T(1) 0
Tnivelm= 0
( 2 ) ( 2 ) ( 2 ) ... ( 2 )
0
Estableciendo el supuesto que en todos los niveles del rbol n es par, en cada nivel el tamao
del problema disminuye en potencias de dos.
1
0
2
1 1
n 1 n 2
2 2
1
n ... m
( n ) ( n ) ( n ) ... ( 2m ) T
1
n
m
2
1
T (n) = n + n + n + ... + n + ( 2m ) T m
2
m 1
n = (n) + 0
i =0
n
T m =1
2
n
=1
2m
2m = n
log 2 ( 2m ) = log 2 n
m = log 2 n
Para la solucin de T(n) se usa una diferencia de lmites.
T (n) = n + n + n + ... + n + 0
m 1
log 2 ( n ) 1
i =0
i =0
T ( n) = ( n) = T ( n) =
( n) = T ( n) = n
log 2 ( n ) 1
(1)
i =0
3.6.1
En la aplicacin del mtodo se puede omitir el piso y techo del tamao del problema ya que no
afecta a la solucin de la recurrencia porque sta se expresa con funciones asintticas.
n / c n / c n / c
La solucin de una recurrencia est sujeta al caso que le corresponda. Se pueden probar
cada uno de los casos, o usar el rbol de recursividad para identificar la serie que mejor lo
describe.
Caso 1: La complejidad es una serie geomtrica creciente
logc b
log c b
entonces T ( n) = ( n
log c b
lg n)
Recurrencia
T (n) = bT ( n / c ) + f (n)
Sumatoria
T (n) = f (n) + b f ( n / c ) + ... + n logc b
log b
Esto es, f(n) es asintticamente ms grande por un factor de n . esto sucede en las series
geometricas decrecientes.
La superioridad de una funcin h(n) sobre otra g(n) se dice que es polinomial, si es
significativa. Esto es, existe una constante >0 tal que g(n) es asintticamente ms pequea
n g ( n) h( n)
En el caso 1:
9T (n / 3) + n n > 1
T ( n) =
n =1
1
De la frmula general de divide-y-vencers:
T(n) = b T( n/c ) + f(n)
b=9, c=3, f(n) =n,
Para determinar que la recurrencia corresponde al caso 1 del Teorema Maestro, sea:
f ( n) = n
g (n) = n logc b = n log3 9 = n 2
Se demuestra que f(n) = O(g(n)):
f ( n)
n
lim
= lim
x g ( n)
x n 2
1
n
lim 2 = 1 = 1 si = 1
x n
n
1
n
lim 2 = 1 = 0 si 0> < 1
x n
n
f (n) = (n logc b ) para > 0
Por lo anterior, entonces el ltimo trmino de la recurrencia es el dominante,
Tnivel0= n
log3(n)
.
(n/3)
T(n/3)
T(n/3)
.
(n/9)
T(n/9)
.
(n/9)
T(n/9)
(n/3)
T(n/9)
(n/9)
(n/9)
T(n/9)
.
T(1) 1
m 1
1
1
1
1
1
n n n ... n n
3
3
3
3
3
En la profundidad i=m del rbol el tamao del problema es 1
n
=1
3m
3m = n
log 3 ( 2m ) = log 3 n
m = log 3 n
i
Se obtiene el patrn de complejidad 3 n, que da lugar a una serie creciente donde el ltimo
2
trmino n es el dominante.
T (n) = n + 3n + 9n + ... + 3m 1 n + 0
T (n) = n + 3n + 9n + ... + 3(log3 n ) 1 n
T ( n) = n
(log3 n ) 1
(3i )
i =0
k
Usando la serie
ar
i =0
(3log3 ( n ) 1) n(n 1)
n2 n
T ( n) = n
==
=
3 1
2
2
T ( n ) = ( n 2 )
El siguiente ejemplo ilustra el segundo caso correspondiente a una serie constante.
T (2n / 3) + 1 n > 1
T ( n) =
n =1
0
De la frmula general de divide-y-vencers:
f ( n) = 1
g (n) = n logc b = n log3 / 2 1 = n 0 = 1
Se demuestra que f(n) = (g(n)):
f ( n)
1
lim
= lim
=1
x g ( n)
x 1
f (n) = (n logc b )
Como f ( n) = ( n
ltimo trmino,
log c b
T(n)
Tnivel0= 1
T(2n/3)
Tnivel1= 1
T(4n/9)
Tnivel2= 1
T(1)
Tnivelm= 1
log3/2(n)
2
2
2
1
n n n ...
3
3
3
3
m 1
2
n n =1
3
2
n =1
3
m
3
=n
2
m
3
log 3/ 2 = log 3/ 2 n
2
m = log 3/ 2 n
Se obtiene como patrn de complejidad una constante que prevalece hasta la profundidad del
rbol.
T (n) = 1 + 1 + 1 + ... + 1
T ( n) =
log3 / 2 n
1
i =0
3T (n / 4) + n lg n n > 0
T ( n) =
n=0
0
f (n) = n lg n
g (n) = n logc b + = n log 4 3+
Se demuestra que f(n) = (g(n))
f ( n)
n lg n
lim
= lim
x g ( n)
x n log 4 3+
n lg n
lim 0.793 = lim lg n =
x n
n x
si = 0.207
n lg n
lim 0.793 = si 0< 0.207
x n
n
3
n n
3 lg cn lg n si c=
4
4 4
3
n 3
n lg n lg n
4
4 4
bf (n / c) c f (n) para c< 1
Por lo anterior,
T (n) = ( f (n)) = (n lg n)
3.7 Solucin de recurrencias mediante el mtodo de substitucin
Se usa cuando las ecuaciones son no lineales. Mediante induccin matemtica se prueba que
una solucin adivinada para T(n) es correcta en condiciones lmite.
3.7.1 Pasos del mtodo de substitucin
Paso1: Adivinacin
2T ( n / 2 ) + n n > 1
T ( n) =
n =1
1
Paso 1: Adivinacin
Sea T(n) = O(nlgn) la solucin adivinada
Paso 2: Prueba inductiva
a) Como hiptesis inductiva se establece la funcin
T ( n / 2 ) c n / 2 lg n / 2
La recurrencia original para kf =n es:
T (n) = 2T ( n / 2 ) + n
La hiptesis inductiva que es valida en kf-1 se sustituye en la recurrencia especificada en el
tamao de problema ms grande kf. La recurrencia original, con la sustitucin de la hiptesis
inductiva, queda
T ( n ) 2c n / 2 lg n / 2 + n
T ( n ) cn lg(n / 2) + n
T ( n ) cn lg n cn lg 2 + n
T ( n ) cn lg n cn + n
Para c=1 se encuentra la forma exacta de la hiptesis inductiva:
T ( n ) (1)n lg n (1)n + n
T ( n ) n lg n
c) Se busca un valor pequeo de n para el cual la hiptesis inductiva es vlida.
Para n0 =1, que es el tamao de problema ms pequeo, la hiptesis inductiva queda:
T ( n ) cn lg n
T (1) c(1) lg(1) = 0
La hiptesis es inconsistente con el caso base de la recurrencia ya que no existe una c que
pueda obtener su condicin lmite T(1)=1.
Cuando n0=1 la hiptesis inductiva no se cumple.
Para n0 =2, la hiptesis inductiva queda:
T ( n ) cn lg n
T ( 2 ) c(2) lg(2) = 2c
El valor de n0 =2 se sustituye en la recurrencia:
T (n) = 2T ( n / 2 ) + n
T ( 2 ) = 2T ( 2 / 2 ) + 2
T ( 2 ) = 2(1) + 2 = 4
T ( 2 ) 2c
T ( 2 ) 2(2) = 4
Cuando n0=2 la hiptesis inductiva se cumple.
Dado que se encontr la forma exacta de la hiptesis con n grande y no se lleg a
inconsistencias con n pequea, queda demostrado que T ( n) = O (n log n) .
T (n)c = 2T ( n / 2 ) + n
T(n)c = O(nlgn)
Recurrencia con solucin desconocida
T (n)c = 2T ( n / 2 ) + 32 + n
Probar la solucin
T(n) c = O(nlgn)
b) Probar lmites superiores e inferiores holgados y despus reducirlos hasta que converjan.
Para la recurrencia
T (n) = 2T ( n / 2 ) + n
Probar como lmite inferior el costo no recursivo
T (n) = ( n )
Probar como lmite superior una potencia del costo no recursivo
T (n) = ( n )
Reducir el lmite superior y elevar el lmite inferior hasta que converjan en el correcto
T(n) = (nlgn)
c) Convertir una suposicin inductiva dbil en una fuerte, restando el trmino de ms bajo
orden.
Suposicin inductiva dbil
Recurrencia a resolver:
T (n) = 2T ( n / 2 ) + 2T ( n / 2 ) + 1
Adivinacin de la frmula de la solucin:
T ( n) = O ( n)
Hiptesis inductiva: existe una c>0 que haga cierto que,
T ( n) c( n)
Sustitucin en la recurrencia de la hiptesis inductiva evaluada en kf-1 = n/2
T (n) cn / 2 + cn / 2 + 1
T (n) cn + 1
La hiptesis inductiva se rechaza ya que no existe una c que haga cierta la hiptesis en la
recurrencia ya que para toda c>1, cn cn+1
Suposicin inductiva fuerte
El trmino de ms bajo orden de la recurrencia es 1, el cual se resta de la hiptesis
inductiva como una constante, quedando:
T (n) cn / 2 b + cn / 2 b + 1
T (n) cn 2b + 1
Para b=1 la recurrencia y la hiptesis coinciden
Recurrencia
T (n) cn 2(1) + 1
T (n) cn 1
Hiptesis
T (n) cn b
T (n) cn 1
d) Cambio de variables.
Mediante una manipulacin algebraica hacer que una recurrencia desconocida sea similar a
una conocida
Por ejemplo:
T (n) = 2T ( n ) + lg n .
Para eliminar el logaritmo se introduciendo una nueva variable m=lgn.
n = 2m
T (2m ) = 2T ( 2m ) + m
T (2m ) = 2T (2m / 2 ) + m
La recurrencia original T se renombra con S, cuyo tamao de problema es m.
S (m) = T (2m )
S (m) = 2S (m / 2) + m
La nueva recurrencia S es similar a otra recurrencia de solucin conocida.
T (n) = 2T (n / 2) + n
T (n) = n -1 + 2T ( n / 2 )
T (1) = 0
a) Aplicacin de mtodos de solucin de recurrencias
Mediante un anlisis del rbol de recurrencia se observa que la complejidad en los
diferentes niveles del rbol no es constante y tampoco es una serie geomtrica. Por lo
anterior el teorema maestro no se puede utilizar para resolver la recurrencia.
Complejidad
T(n)
T(n/2)
T(n/4)
n-1
n-1
(n/2)-1
(n/4)-1
T(n/4)
T(n/2)
(n/4)-1
T(n/4)
(n/4)-1
(n/2)-1
T(n/4)
n-2
(n/4)-1
n-4
.
.
n-2i
Para facilitar la identificacin de patrones, se elabora una tabla que resume la evolucin
del tamao del problema, la complejidad de un nodo y la complejidad de un nivel.
Nivel Tamao
i
del
problema
0
n
1
n/2
2
n/4
#
#
9i
n
2i
#
#
m
n
=1
2m
Complejidad
(de un
subproblema)
n-1
n/2 -1
n/4 -1
#
n
1
2i
#
n
T m = T (1) = 0
2
No. de
Complejidad
suproblemas (de todo el nivel)
1
2
4
#
2i
#
2m
1(n-1) = n-1
2(n/2 -1) = n-2
4(n/4 -1) = n-4
#
n 2i
#
n
2m T m
2
m
m
= 2 T (1) = 2 (0)
m 1
m 1
i =0
i =0
i =0
T ( n) = ( n 2i ) + 2 m T (1) = (n 2i ) + 2m (0) = ( n 2i )
Logrando con ello establecer el lmite al cual llegar i, es decir, la profundidad del rbol
Utilizando la serie geomtrica
= 2 k +1 1
i =0
T ( n) =
lg n -1
lg n -1
lg n -1
i =0
i =0
( n - 2i ) = n - 2 i
i =0
lg n -1
lg n -1
i =0
i =0
T (n) = n 1 + 2T ( n / 2 ) , T (1) = 0
T (2n) = 2T ( n ) + 2n 1
y (kx) = p ( x) y ( x) + q ( x)
k = 2, x = n,
p ( x) = 2, q ( x) = 2n 1, x0 = 1,
y0 = 0
#1: GEOMETRIC1(2, 2, 2n - 1, n, 1, 0)
nLN(n)
- n + 1
LN(2)
#2:
3.8.2. Utilice el mtodo maestro para resolver la funcin W definida por la ecuacin de recurrencia
y caso base siguientes:
W (n) = 2W ( n / 2 ) + n
W (1) = 0
W(n)
W(n/2)
W(n/4)
(1/4)n
Complejidad
n
(1/2)n
W(n/2)
(1/4)n
W(n/4)
W(n/4)
(1/2)n
(1/4)n
W(n/4)
(1/4) n
g (n) = n lg 2 2 = n
GEOMETRIC1(2, 2, 2n, n, 1, 0)
nLN(n)
LN(2)
#2:
3.8.3. Utilice el mtodo maestro y el rbol de recurrencia para resolver la funcin T definida por la
ecuacin de recurrencia y caso base siguientes:
T ( n) = T ( n / 2) + lg n,
T (1) = 1
T(n)
lgn
Complejidad
lgn
T(n/2)
lg(n/2)
lg(n/2)
T(n/4)
lg(n/4)
lg(n/4)
.
.
.
lg(n/2i)
Nivel
i
0
1
2
#
i
#
m
Tamao del
problema
n
n/2
n/4
#
n/2i
#
n/2m=1
Complejidad
(de un subproblema)
lg n
lg(n/2)
lg(n/4)
#
lg(n/2i)
#
T(n/2m)=T(1)=1
No. de
subproblemas
1
1
1
1
1
1
1
Complejidad
(de todo el nivel)
lg n
(lg(n/2))
(lg(n/4))
#
lg(n/2i)
#
T(n/2m)= T(1)=1
n
Patrn de complejidad: lg i
2
T (n / 2m ) = T (1)
n
=1
2m
2m = n
m = lg n
Logrando con ello establecer el lmite al cual llegar i, es decir la profundidad del rbol
T ( n) =
lg n 1
lg ( n 2 ) + T (1)
i
i =0
T ( n) =
lg n 1
lg n 1
lg n lg 2
i =0
i =0
lg n 1
lg n 1
i =0
i =0
+ 1 = lg n 1
i +1
lg n(lg n 1)
(lg n) 2 lg n
2
T (n) = lg n(lg n)
+ 1 = (lg n)
+1
2
2
2(lg n) 2 (lg n) 2 + lg n
(lg n) 2 + lg n
T ( n) =
+1 =
+1
2
2
#2:
3.8.4. Utilice el mtodo maestro para resolver la funcin T definida por la ecuacin de recurrencia
y caso base siguientes: T (n) = T (n / 2) + n, T (1) = 1
a) Aplicacin de mtodos de solucin de recurrencias
Del anlisis del rbol de recurrencia se observa que la complejidad es una serie geomtrica
decreciente, por lo que es recomendable aplicar el caso 3 del Teorema maestro.
T(n)
Complejidad
n
T(n/2)
(1/2)n
(1/2)n
T(n/4)
(1/4)n
(1/4)n
#
(1/2i)n
Nivel
i
0
1
2
#
Tamao del
problema
n
n/2
n/4
#
Complejidad
(de un subproblema)
n
n/2
n/4
#
Complejidad
(de todo el nivel)
n
n/2
n/4
#
log c b +
El Teorema Maestro tambin pide demostrar que bf ( n / c ) c ' f ( n ) para c ' < 1 .
bf ( n / c ) n / 2
bf ( n) = 2 n para c ' = 2
3
3
Como existe una c ' < 1 , se demuestra que bf ( n / c ) c ' f ( n )
Cuando las demostraciones son exitosas, el teorema maestro seala que T (n) = ( f ( n ) ) .
Por tanto, la forma asinttica de la solucin queda:
T ( n ) = ( n )
GEOMETRIC1(2, 1, 2n, n, 1, 1)
#2:
2n - 1
3.8.5. Utilice el mtodo maestro para resolver la funcin T definida por la ecuacin de recurrencia
y caso base siguientes: T ( n) = 2T (n / 2) + n, T (1) = 1
a) Aplicacin de mtodos de solucin de recurrencias
T(n)
T(n/2)
T(n/4)
(1/4)n
T (n/2)
(1/2) n
T(n/4)
Complejidad
n
(1/4) n
T(n/4)
(1/2) n
(1/4) n
T(n/4)
(1/4) n
n
.
.
Nivel
i
0
1
2
#
Tamao del
problema
n
n/2
n/4
#
Complejidad
(de un subproblema)
n
n/2
n/4
#
Complejidad
(de todo el nivel)
n
=n
2(n/2) = n
4(n/4) = n
#
GEOMETRIC1(2, 2, 2n, n, 1, 1)
nLN(n)
+ n
LN(2)
#2:
3.8.6. Utilice el mtodo maestro y el rbol de recurrencia para resolver la funcin T definida por la
ecuacin de recurrencia y caso base siguientes:
T ( n) = 2T ( n / 2) + n lg n, T (1) = 1
T(n)
T(n/2)
(1/2) n lg n/2
T(n/2)
T(n/4)
(n/4) lg (n /4)
Complejidad
n lg n
n lg n
(n/2) lg (n/2)
n lg (n/4)
(n/4) lg (n/4)
T(n /4)
n lg (n/2)
(n /4) lg (n/4)
.
.
.
.
n lg (n/2i)
Nivel
i
Tamao del
problema
0
1
2
n
n/2
n/4
#
i
#
m
#
n/2i
#
n/2
Complejidad
(de un
subproblema)
n lg n
(n/2)lg(n/2)
(n/4)lg(n/4)
#
(n/2i)lg(n/2i)
#
m
T(n/2 )=T(1)=1
No. de
subproblemas
Complejidad
(de todo el nivel)
2
4
8
1(n lg n)
= n lg(n)
2((n/2) lg(n/2)) = n lg(n/2)
4((n/4) lg(n/4)) = n lg(n/4)
#
n lg(n/2i)
#
m
m
2 T(n/2 )= 2m T(1)
2i
2m
n
Patrn de complejidad: n lg i
2
T (n / 2m ) = T (1)
n
=1
2m
2m = n
m = lg n
Logrando con ello establecer el lmite al cual llegar i, es decir, la profundidad del rbol
m 1
n
T ( n) = n lg i
2
i =0
m
+ 2 T (1) =
lg n 1
n log n
+ 2 T (1)
i
n lg 2
i =0
lg n 1
lg n 1
lg n 1
lg n 1
lg n 1
lg n 1
i =0
i =0
i =0
i =0
i=0
i =1
T ( n) = n lg n n lg 2i + n = n lg n 1 n i + n = n lg n 1 n i + n
lg n(lg n 1)
+n
2
1
1
T ( n) = n lg 2 n n lg 2 n + n lg n + n
2
2
1
1
T ( n) = n lg 2 n + n lg n + n
2
2
T ( n) = n lg n(lg n) n
T ( n ) = ( n log 2 n )
#1:
#2:
3.8.7. Utilice el mtodo maestro y el rbol de recurrencia para resolver la funcin T definida por la
ecuacin de recurrencia y caso base siguientes:
T (n) = 2T (n / 2) + n 2 , T (1) = 1
T(n)
T (n/2)
T(n/4)
(1/16)n2
(1/4) n2
T(n/4)
Complejidad
n2
n2
T(n/2)
(1/16)n2
T(n/4)
(1/16)n2
(1/4) n2
T(n/4)
(1/2) n2
(1/16)n2
(1/4) n2
.
.
(1/2i) n2
1/4
Nivel
i
Tamao del
problema
0
1
2
3
n
n/2
n/4
n/8
Complejidad
(de un
subproblema)
n2
(n/2)2
(n/4)2
(n/8)2
#
Complejidad
(de todo el nivel)
1 n2
2 (n/2)2
4 (n/4)2
8 (n/8)2
= (1/1) n2
= (1/2) n2
= (1/4) n2
= (1/8) n2
#
f (n) = n 2
f ( n) = n 2
g ( n) = ( n log c b + ) = ( n1+ )
1+
Como f ( n ) c g ( n ) , se demuestra que f ( n) = ( n ) para = 1 y c= 1
( c ) ( 2)
c ' f (n) = ( 2 ) n
3
bf n
=2 n
=n
para c ' = 2
#1:
#2:
GEOMETRIC1(2, 2, 4n ^2 , n, 1, 1)
2
2n - n
T(n-1)
T(n-2)
T(n-2)
T(n-1)
Complejidad
2
T(n-1)
T(n-2)
Tamao del
problema
n-1
n-2
n-3
#
n-i
#
n-m
T(n-2)
T(n-2)
T(n-2)
T(n-2)
Complejidad
(de un subproblema)
2
2
2
#
2
#
T(n-m)=T(1)=1
T(n-2)
No. de
subproblemas
3
9
27
3i
3m
2(3)
T(n-2)
Nivel
i
0
1
2
#
i
#
m
T(n)
2(9)
.
.
.
2(3i)
Complejidad
(de todo el nivel)
3(2)
9(2)
27(2)
#
3i (2)
#
m
m
3 T(n-m)=3 T(1) =3m(1)
T ( n) = 2 3i + 3m (1)
i =0
Logrando con ello establecer el lmite al cual llegar i, es decir, la profundidad del rbol
n2
3n 2+1 1 n 1
3n 1 1 n 1
T (n) = 2 3i + 3n 1T (1) = 2
+
=
3
2
+3
3
1
2
i =0
T (n) = 3n 1 1 + 3n 1 = 2 ( 3n 1 ) 1 = (3n )
LIN1_DIFFERENCE(3, 2, n, 1, 1)
#2:
23
n - 1
- 1
Expansin con T ( n 2)
T (n) = 15 3i + 3m T (n m)
i =0
( n 1) 1
3i + 3n 1T (1)
i =0
n2
T (n) = 15 3i + 3n 1T (1)
i =0
3n 1 1
n 1
T (n) = (15)
+ (3 )(8)
2
n 1
T (n) = 3 ( 8 15 2 ) + 15 2
T ( n) =
3n 1 + 15
2
#2:
LIN1_DIFFERENCE(3, -15, n, 1, 8)
n - 1
3
15
+
2
2
= T ( n 1) + n 1
T ( n 1) = T ( n 2) + n 2
T ( n 2) = T ( n 3) + n 3
T ( n ) = ( n i ) + T ( n m)
i =1
n 1
T ( n) = ( n i ) + T (1) = ( n i ) + 2
i =1
i =1
n 1
n 1
i =1
i =1
T ( n) = ( n) (i ) + 2 = n(n 1)
T ( n) = n 2 n
( n 1)( n)
+2
2
n2 n
n2 n
+ +2=
+2
2 2
2 2
#1:
LIN1_DIFFERENCE(1, n, n, 1, 2)
2
n
n
- + 2
2
2
#2:
3.9.2
Use el rbol de recurrencia para resolver las recurrencias de los ejercicios 3.8.2 y 3.8.4,
3.8.5, 3.8.7
3.9.3
3.9.4
T (n) = 1..................................n = 1
6..................................n = 2
3.9.5
( n k )
T (n) = (n k log n)
log c b
( n )
si b < c k
si b = c k
si b > c k
Bibliografa