Está en la página 1de 44

Instituto Tecnolgico de Ciudad Madero Dra.

Laura Cruz Reyes



Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos


Captulo 3 Complejidad de algoritmos recursivos


3.1 Definicin de funcin de recurrencia

Una recurrencia es una ecuacin o una desigualdad que describe una funcin en trminos de
su propio valor sobre entradas ms pequeas. Por ejemplo, el clculo del Factorial de un
nmero se puede describir con la ecuacin de recurrencia F(n).

( )
( )

=
>
=
0 1
0 1
n if
n if n nF
n F

La solucin del Factorial de 4 se puede obtener siguiendo las reglas de la ecuacin de
recurrencia.

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.


complejidad de los casos base si corresponde a los casos base
( )
complejidad de los casos progresivos si corresponde a los casos progresivos
n
T n
n



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)

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos

Si la operacin bsica es el nmero de multiplicaciones, entonces la recurrencia que mide el
desempeo de algoritmo Factorial se obtiene identificando sus casos y escribiendo las
reglas que determinan cada caso y las funciones de desempeo correspondientes. En el caso
base (n=0) no se realiza ninguna multiplicacin y en el caso progresivo (n>0) se realiza una
multiplicacin ms las multiplicaciones que el algoritmo ejecuta al ser llamado recursivamente
con un valor de n-1, este ltimo calculo se denota con T(n-1).


0 si 0 (caso base)
( )
1 ( 1) si 0 (caso progresivo)
n
T n
T n n
=
=

+ >



Antes se expandi la recurrencia F(n) para determinar el factorial de 4, ahora se expande la
recurrencia T(n) para calcular el nmero de multiplicaciones.

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.


3.2.1 Recurrencia de peor caso del algoritmo de bsqueda secuencial recursivo

Una versin ineficiente del algoritmo de bsqueda secuencial es su implementacin recursiva. A
pesar de sus limitaciones, esta versin es sencilla y simplifica la introduccin de los casos de un
problema al anlisis de algoritmos recursivos.

Algoritmo busquedaSecRec(E,p,u,k)
Entradas: Arreglo E, e ndices p y u que delimitan el subarreglo a
ordenar contenido en E[p,...,u].
Salidas: E[p,...,u] en orden ascendente.
1 si p>u entonces //caso base de fracaso
2 respuesta = -1
3 sino si (E[p]=k) entonces //caso base de xito
4 respuesta p
5 sino
6 respuesta busquedaSecRec(E,p+1,u,k)//caso progresivo
7 devolver respuesta

El peor desempeo del algoritmo busquedaSecRec sucede cuando la bsqueda fracasa.
Este comportamiento se puede identificar fcilmente en el algoritmo. Primero la recursividad se
activa varias veces porque la llave k no ha sido encontrada (caso progresivo). Finalmente el
algoritmo se detiene cuando no existen ms datos para analizar (caso base de fracaso). A
continuacin se detalla el anlisis del peor caso.
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos

a) Caso base de fracaso: p>u

En el paso 1, cuando todos los elementos de E ya han sido analizados, el ndice p rebasa el
valor del ndice u.




0 1 2 3 4 5


u p


En estas condiciones el algoritmo se detiene porque no tuvo xito, as que el nmero de
comparaciones es cero porque no se tienen elementos en el segmento de bsqueda ya que
p>u. Es importante notar que la condicin si p>u equivale a la condicin si n=0.

W(n)
paso 1
= 0, si n=0

b) Caso progresivo (invocacin de recursividad): pu y E[p]k

Despus que en el paso 1 se encontr que pu, en el paso 3 se realiza una comparacin no
exitosa ya que E[p]k. En este paso el subarreglo s tiene elementos ya que pu. De igual
manera la condicin si pu equivale a la condicin si n>0.

W(n)
paso 3
= 1, n>0

En el paso 6 se ejecuta una invocacin recursiva con un subarreglo disminuido en una
unidad; en este paso el subarreglo tambin tiene elementos.

W(n)
paso 6
= W(n-1), n>0

c) Recurrencia del peor caso

Considerando todos los casos involucrados (caso base de fracaso y caso progresivo), la
recurrencia del peor caso queda como sigue:

( )
0 si 0
1 ( 1) si 0
n
W n
W n n
=
=

+ >



Intuitivamente se puede observar que en cada llamada recursiva se realiza una
comparacin. Dado que se realizan n invocaciones al algoritmo, la solucin de la recurrencia
es n.

( ) 1 1 1 1 ... 1 ( ) W n n n = + + + + + = =

E
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
3.2.2 Recurrencia de peor caso del algoritmo de bsqueda binaria

Un algoritmo muy popular es el de bsqueda binaria. La aplicacin de este algoritmo
requiere un ordenamiento previo de los datos.

Algoritmo bsquedaBinaria (E,p,u,k)
Entradas: Arreglo E, e ndices p y u que delimitan el subarreglo a
ordenar contenido en E[p,...,u].
Salidas: E[p,...,u] en orden ascendente.

1 si (p>u)entonces //caso base de fracaso
2 devolver -1
3 medio (p + u)/2
4 si k = E(medio) entonces //caso base de xito
5 ndice medio
6 sino si (k < E[medio]) entonces
7 ndice bsquedaBinaria(E,p,medio1,k) //caso progresivo
8 sino
9 ndice bsquedaBinaria(E,medio+1,u,k) //caso progresivo
10 devolver ndice

El peor desempeo del algoritmo bsquedaBinaria sucede cuando la bsqueda fracasa.
Primero la recursividad se activa varias veces porque la llave k no ha sido encontrada en la
posicin media (caso recursivo). Finalmente el algoritmo se detiene cuando no existen ms
datos para analizar (caso base de fracaso).

a) Caso base de fracaso : p > u

Cuando todos los elementos de E ya han sido analizados, el valor de p rebasa al de u; as
que el nmero de elementos del segmento de bsquedas es cero.

W(n)
paso 1
= 0, si n=0

b) Caso progresivo (invocacin de recursividad): pu y E[medio]k

En el paso 5 del algoritmo se realiza una comparacin no exitosa.

W(n)
paso 5
= 1, si n>0

En el paso 7 se realiza una comparacin para ubicar la siguiente bsqueda.

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.

W(n)
paso 8 o

paso 9
= W(n/2), si n>0


Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
c) Recurrencia del peor caso

La siguiente recurrencia expresa el nmero de comparaciones de clave en el peor caso:
( )
0 si 0
2 si n 0
2
n
W n
n
W
=

=

+ >






3.3 Ecuaciones de recurrencia comunes

Muchos algoritmos clsicos han sido diseados en base a dos tcnicas que permiten plantear la
solucin de un problema en trminos de varios subproblemas de menor dimensin.


3.3.1 Algoritmos basados en divide-y-vencers

Usando la tcnica de divide-y-vencers, si un problema es demasiado grande para resolverlo
de una vez, se descompone en varias partes ms fciles de resolver. Con ms formalidad, dado
un problema a resolver planteado en trminos de una entrada de tamao n, la tcnica de divide
la entrada en b subproblemas, 1<b< n. Estos subproblemas se resuelven independientemente y
despus se combinan sus soluciones parciales para obtener la solucin del problema original.

En la funcin de recurrencia para divide-y-vencers, n es el tamao del problema principal,
b son los subproblemas (1<b< n), cada uno de tamao n/c (1<c< n). Para dividir el problema en
subproblemas y combinar las soluciones de los subproblemas existe cierto costo no recursivo
que se expresan en f(n).

T(n) = b T( n/c ) + f(n)

Costo de dividir en subproblemas y combinar las soluciones
Costo de resolver un subproblema obtenido por divisin

El algoritmo de ordenamiento mergeSort es un ejemplo de la aplicacin de la tcnica de
divide-y-venceras.

Algoritmo mergeSort (E, p, u)
Entradas: Arreglo E, e ndices p y u que delimitan el subarreglo a
ordenar contenido en E[p,...,u].
Salidas: E[p,...,u] en orden ascendente.
1 si (p < u) entonces //caso progresivo
2 m (p + u)/2
3 mergeSort(E, p, m)
4 mergeSort(E, m + 1, u)
5 fusionar(E, p, m, u)

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.

paso implicito
( ) 0 W n = , si n=1
Nmero de subproblemas
(factor de ramificacin)
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
Cuando el arreglo es de tamao mayor de n, el nmero de comparaciones se puede derivar
aplicando la frmula para los algoritmos de tipo divide-y-venceras.

( )
( ) 2 ( 1)
2
n
W n W n

= +

, si n>1





Reuniendo en una sola expresin los casos base y recursivo, la complejidad del algoritmo
mergeSort en el peor caso es como sigue.

( )
0 si 0
2 ( 1) si n 0
2
n
W n
n
W n
=

=

+ >





3.3.2 Algoritmos basados en recorta-y-vencers

El problema principal de tamao n se puede recortar a b subproblemas (1<b< n), cada uno de
tamao n-c (1<c< n), con costo no recursivo f(n) debido a la tarea de recortar y combinar.

T(n) = b T(n-c) + f(n)

Costo de recortar en subproblemas y combinar soluciones
Costo de resolver un problema obtenido por recorte

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 c
max
) + f(n)
Cota inferior expresada con (n): utilizando T(n) b T(n c
min
) + 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
(n)) de un algoritmo recursivo.

Paso 1. Determinar una funcin T(n) que represente el nmero de operaciones bsicas
efectuadas por el algoritmo para el tamao base y para los casos definidos por recursividad
Nmero de subproblemas
(factor de ramificacin)
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 ).
Comparaciones para ordenar por
separado las parte derecha e izquierda
que son de tamao n/2 (b=2, c=2).
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
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 n
i
al tamao del
problema en el nivel de recurrencia i.

1
si corresponde al caso base
( )
( ) ( ) si corresponde al caso progresivo
i
i
i i i
c n
T n
bT n f n n
+

=

+



Paso 2. Evaluar la funcin T(n) del caso progresivo con un conjunto pequeo de valores
consecutivos de n.

T(n
0
) = f(n
0
)

+ bT(n
1
)
T(n
1
) = f(n
1
)

+ bT(n
2
)
T(n
2
) = f(n
2
)

+ bT(n
3
)
T(n
3
) = f(n
3
)

+ bT(n
4
)
T(n
4
) = f(n
4
)

+ bT(n
4
)

Paso 3. Sustituir los resultados del punto anterior en cada expresin antecesora.

T(n
0
) = f(n
0
)

+ bf(n
1
)

+b
2
f(n
2
)

+ b
3
f(n
3
)

+ b
4
T(n
4
)

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 tamao de problema
del trmino que detiene la
referenciado por recursividad m


=





Paso 7. Sustituir m en la expresin de sumatoria obtenida en el paso 5.

Paso 8. Resolver la sumatoria con una expresin equivalente o aproximada cuya nica variable
independiente es n. Para esta tarea puede ser de gran ayuda utilizar programas
computacionales como Derive.


3.4.2 Ejemplos de recurrencias resueltas con el mtodo iterativo

La siguiente recurrencia se utilizar para ilustrar el mtodo iterativo.

( )
2 1
2
1 1
n
T n n
T n
n

+ >


Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
Primero se generan cuatro recurrencias para tamaos de problema consecutivos.

( )
( ) ( )
( ) ( )
( ) ( )
( ) 2
2
2
2 4
2
2
4 8
4
2
8 16
8
n
T n n T
n
n n
T T
n
n n
T T
n
n n
T T
= +
= +
= +
= +


Enseguida se usan las recurrencias de anteriores para hacer la expansin de la recurrencia
original.

( )
( )
( )
( )
( )
( )
( )
1 2 3 4
1 2 3 4
( ) 2 2 2
2 4
2 2 2 2 2 2
2 4 8
2 2 2 2 2 2 2 2 2 2
2 4 8 16
2 2 2 2
2 2 2 2
n n
T n n T
n n n
T n n T
n n n n
T n n T
n n n n
T n n T
= + +
= + + +
= + + + +
= + + + +


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.

[ ]
1 2 3
1 2 3 1
( ) 2 2 2 ... trmino trmino
2 2 2
m m
n n n
T n n


= + + + + + +




Se forma una sumatoria cuyo patrn de regularidad es
( )
2 / 2
i i
n con i= 0m-1. Posterior a
esta sumatoria sigue el trmino de paro, cuyo coeficiente y tamao de problema siguen un
patrn similar con i=m.

( ) ( )
( ) ( )
1 2 3 1
1 2 3 1 1
1
1 1
0
( ) 2 2 2 ... 2 2
2 2 2 2 2
( ) 2 2
2 2
m m
m m
m
i m
m m
i
n n n n n
T n n T
n n
T n T


=

= + + + + + +


= +



La sumatoria se simplifica al considerar que el ltimo termino corresponde al caso base con
n=1 y T(1)=1.

( ) ( )
( )
1 1 1
1
0 0 0
( ) 2 2 2 1 2
2 2
m m m
i m m m
i m
i i i
n n
T n T n T n

= = =
= + = + = +



Encontramos el valor de m igualando las dos condiciones de paro.
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos

( )
2 2
2
(1)
2
1
2
2
log (2 ) log ( )
log ( )
m
m
m
m
n
T T
n
n
n
m n
=
=
=
=
=


La solucin de la recurrencia indica que el algoritmo tiene un crecimiento n-logartmico.

2
log ( ) 1
log
0
log2
( ) 2
( ) log log ( log )
n
n
i
T n n
T n n n n n n n n n

=
= +
= + = + =



Enseguida, un segundo ejemplo para clarificar el mtodo iterativo.

( )
3 n 1
4
(1) 1
n
T n
T n
n

+ >



Primero se generan recurrencias para diferentes tamaos de problema.

( )
( ) ( )
( ) ( )
( ) ( )
( ) 3
4
3
4 16
4
3
16 64
16
3
64 256
64
n
T n n T
n
n n
T T
n
n n
T T
n
n n
T T

= +


= +


= +


= +



Enseguida se usan las recurrencias anteriores para hacer la expansin de la recurrencia
original.

( )
( )
( )
( )
( ) 3
4
3
( ) 9
16
4
3 9
( ) 27
64
4 16
3 9 27
( ) 81
256
4 16 64
n
T n n T
n
n
T n n T
n n
n
T n n T
n n n
n
T n n T

= +


= + +


= + + +


= + + + +


Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
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.

[ ]
3 9 27
( ) ... trmino referenciado por
4 16 64
n n n
T n n m

= + + + + +




Antes de la ltima llamada recursiva se forma una sumatoria cuyo patrn de regularidad
(trmino general) es 3 / 4
i i
n

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.

( )
( )
1
1
1
0
3 9 27
( ) ...+ 3 3
4 4
4 16 64
( ) 3 3
4 4
m m
m m
m
i m
i m
i
n n n
n n
T n n T
n n
T n T

=



= + + + + +







= +



El ltimo trmino de la sumatoria se simplifica ya que ste corresponde al caso base con n=1
y T(1)=(1).

( )
1
0
( ) 3 3 1
4
m
i m
i
i
n
T n T

=

= +



Usando el lmite
4 4
m m
n n



, encontramos el valor de m que hace referencia al ltimo
trmino de la sumatoria.

( ) ( ) ( ) ( )
4 4
4
, como (1), entonces (1)
4 4 4 4
1
4
4
log (4 ) log ( )
log ( )
m m m m
m
m
m
n n n n
T T T T T T
n
n
n
m n

=



El valor de m se sustituye en la recurrencia expandida.

( )
( )
( )
4
4
4
4
4
4
log ( ) 1
log ( )
0
log ( ) 1
log ( )
0
log ( ) 1
log (3)
0
( ) 3 3 1
4
( ) 3 3
4
( ) 3
4
n
n i
i
i
n
n i
i
i
n
i
i
i
n
T n
n
T n
n
T n n

=

+



+



+


Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
El lmite superior de la sumatoria de T(n) se puede sustituir por infinito para utilizar una serie
geomtrica infinita.
0
1
1
i
i
r
r

=
=

con r = 3/4

( )
( )
( )
4
4
4
log (3)
0
log (3)
log (3)
( ) (3/ 4)
1
( )
1 3/ 4
( ) 4
( ) ( )
i
i
T n n n
T n n n
T n n n
T n O n

=
+

+


+
=



Un lmite superior ms ajustado para T(n) se obtiene con una serie geomtrica finita.

( )
1
0
( 1) /( 1)
k
i k
i
ar a r r
+
=
=

.

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.

0
3 9 27
(3/ 4) ... 4
4 16 64
i
i
n n n
n n n

=
= + + + + =




3.5 Solucin de recurrencias mediante el mtodo de rbol de recursin

Los rboles de recursin son una herramienta visual para analizar el costo de procedimientos
recursivos asociados a una estructura de rbol, por ejemplo los algoritmos de divide-y-venceras.

3.5.1 Descripcin del mtodo de rbol de recursin

Se construye el rbol para organizar por niveles las operaciones algebraicas necesarias para
resolver la recurrencia. Cada nodo del rbol tiene una estructura de dos componentes: la
funcin de costos y el costo no-recursivo.











Los nodos nodos
intermedios se
expanden con los
casos progresivo
Funcin de costo Costo no-recursivo
Los nodos
hoja son los
casos base.


Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
3.5.2 Ejemplos de recurrencias resueltas con el mtodo de rbol de recursin

El siguiente ejemplo ilustra el mtodo de solucin de recurrencias basado en rbol de recursin.

2
2 ( / 2) 1
( )
0 1
T n n n
T n
n
+ >
=

=



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.














Un anlisis visual del rbol revela que en cada nivel el nmero de subproblemas aumenta en
potencias de dos.

( ) ( ) ( ) ( )
0 1 2
2 2 2 ... 2
m


En cada nivel el tamao de los problemas disminuye en potencias de dos.

0 1 2
1 1 1 1
...
2 2 2 2
m
n n n n






En cada nivel la complejidad algortmica total incrementa en potencias de dos. Es importante
observar que en el ltimo nivel se tienen 2
m
nodos y cada nodo es de tamao (1/2
m
)n.

( )
2 2 2
0 1 2
1 1 1 1
... 2
2 2 2 2
m
m
n n n T n






Usando el patrn de complejidad y las condiciones de terminacin, la recurrencia se expresa
como una sumatoria.

2 2 2 2
1
1
2 2 2 2 2
1
0
1 1 1 1
( ) ... 2
2 4 2 2
1 1 1 1
( ) ... 0 0
2 4 2 2
m
m m
m
m i
i
T n n n n n T n
T n n n n n n

=

= + + + + +



= + + + + + = +




T(n) n
2
T(n/2) (n/2)
2
T(n/2) (n/2)
2
T(n/4) (n/4)
2
T(n/4) (n/4)
2
T(n/4) (n/4)
2
T(n/4) (n/4)
2
T
nivel0
= n
2

T
nivel1
= 2(n/2)
2
=n
2
/2
T
nivel2
= 4(n/4)
2
=n
2
/4
log
2
(n)
T(1) 0 T
nivelm
= 0
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
El valor de m se determina igualando las dos expresiones del caso base.

1
(1)
2
1
1; 2 ; log 2 log
2
log
m
m m
m
T n T
n n n
m n

=


= = =
=


Para la solucin de T(n) se usa la serie geomtrica con r=1/2.

( )
1
0
( 1) /( 1)
k
i k
i
ar a r r
+
=
=


k
k
i
i
2
1
2
2
1
0
=

=


La solucin de la recurrencia T(n) revela que el algoritmo tiene una velocidad de crecimiento
cuadrtica

(log ) 1
2 2 2 2
(log ) 1
0
1 1 2
( ) 2 2 2 2
2 2
n
i n
i
T n n n n n n
n

=

= = = =



2
( ) ( ) T n n =

Con un segundo ejemplo se ilustra el mtodo de rbol de recursin.



( / 3) (2 / 3) 1
( )
0 1
T n T n n n
T n
n
+ + >
=

=



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) n
T(n/3) (n/3) T(2n/3) (2n/3)
T(n/9) (n/9) T(2n/9) (2n/9) T(2n/9) (2n/9) T(4n/9) (4n/9)
T
nivel0
= n
T
nivel1
= (n/3)+ (2n/3)=n
T
nivel2
= (n/9)++ (4n/9) =n
log
3/2
(n)
T(1) 0 T
nivelm
= 0
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
En cada nivel el nmero de subproblemas aumenta en potencias de dos.

( ) ( ) ( ) ( )
0 1 2
2 2 2 ... 2
m


En cada nivel el tamao ms grande de problema disminuye por un factor de (2/3)
i
.

0 1 2 1
2 2 2 2 2
...
3 3 3 3 3
m m
n n n n n







En cada nivel la complejidad algortmica permanece constante.

( ) ( ) ( ) ( )
2
... 2
3
m
m
n n n T n










Usando el patrn de complejidad y las condiciones de terminacin, la recurrencia se expresa
como una sumatoria. Dado que esta sumatoria corresponde a la trayectoria ms larga
(subproblemas mayores), se obtiene una cota superior de las trayectorias restantes.

( )
1
0
2
( ) ... 2
3
( ) ( ) 0
m
m
m
i
T n n n n n T n
T n n

=


+ + + + +





+



El valor de m se determina igualando las dos expresiones que representan la condicin de
paro.

3/ 2 3/ 2
3/ 2
2
(1)
3
2
1
3
3
2
3
log log
2
log
m
m
m
m
T n T
n
n
n
m n

=



=



=



=


=


Para la solucin de T(n) se usa una diferencia de lmites.

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
3/ 2
3/ 2
1
0
log ( ) 1
0
log ( ) 1
0
3/ 2
3/ 2
( ) ( )
( ) ( )
( ) (1)
( ) (log ( ) 1 1)
( ) log ( )
( ) ( log )
m
i
n
i
n
i
T n n
T n n
T n n
T n n n
T n n n
T n O n n




Con un tercer ejemplo se ilustra el mtodo de rbol de recursin.



2 ( / 2) 1
( )
0 1
T n n n
T n
n
+ >
=

=



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.
















En cada nivel el nmero de subproblemas aumenta en potencias de dos.

( ) ( ) ( ) ( )
0 1 2
2 2 2 ... 2
m


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.

0 1 2
1 1 1 1
...
2 2 2 2
m
n n n n





T(n) n
T(n/2) (n/2) T(n/2) (n/2)
T(n/4) (n/4) T(n/4) (n/4) T(n/4) (n/4) T(n/4) (n/4)
T
nivel0
= n
T
nivel1
= (n/2)+ (n/2)=n
T
nivel2
= (n/4)++ (n/4) =n
log
2
(n)
T(1) 0
T
nivelm
= 0
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
En cada nivel la complejidad algortmica permanece constante.

( ) ( ) ( ) ( )
1
... 2
2
m
m
n n n T n






Usando el patrn de complejidad y las condiciones de terminacin, la recurrencia se expresa
como una sumatoria.

( )
1
0
1
( ) ... 2 ( ) 0
2
m
m
m
i
T n n n n n T n n

=

= + + + + + = +





El valor de m se determina igualando las dos expresiones que representan la condicin de
paro.

( )
2 2
2
1
2
1
2
2
log 2 log
log
m
m
m
m
n
T
n
n
n
m n

=


=
=
=
=


Para la solucin de T(n) se usa una diferencia de lmites.

2 2
log ( ) 1 log ( ) 1 1
0 0 0
2
( ) ... 0
( ) ( ) ( ) ( ) ( ) (1)
( ) log ( )
( ) ( log )
n n m
i i i
T n n n n n
T n n T n n T n n
T n n n
T n n n

= = =
= + + + + +
= = = = =
=
=




3.6 Solucin de recurrencias mediante el mtodo maestro

El mtodo maestro es una receta para resolver recurrencias derivadas de aplicar la tcnica de
divide-y-vencers.

T(n) = b T( n/c ) + f(n)


3.6.1 Descripcin del mtodo maestro

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.

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
/ / / 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

si
log
( ) ( )
c
b
f n n

= para alguna constante > 0

entonces
log
( ) ( )
c
b
T n n =

Caso 2: La complejidad es constante en cada nivel

si
log
( ) ( )
c
b
f n n =
entonces
log
( ) ( lg )
c
b
T n n n =

Caso 3: La complejidad es una serie geomtrica decreciente

si
log
( ) ( )
c
b
f n n
+
= para alguna constante > 0, y

si bf(n/c)cf(n) para alguna constante c<1 y para n suficientemente grande,
entonces ( ) ( ( )) T n f n =

La segunda condicin prueba que bf(n/c), la complejidad del nivel 1, disminuye o se
mantiene con respecto a cf(n), que es la complejidad del nivel 0.


3.6.2 Interpretacin del mtodo maestro

En los tres casos se compara f(n), que es el primer trmino de la sumatoria expandida de la
recurrencia original, con n
log
c
b
, que es el ltimo:

log
Recurrencia
( ) ( / ) ( )
Sumatoria
( ) ( ) ( / ) ...
c
b
T n bT n c f n
T n f n b f n c n
= +
= + + +


a) En el caso 1 la funcin f(n) es polinomialmente ms pequea que n
log
c
b
. Esto es, f(n) es
asintticamente ms pequea por un factor de n

. Esto sucede en las series geomtricas


crecientes.
b) En el caso 2 la funcin f(n)

es asintticamente equivalente a n
log
c
b
, esto sucede en las series
constantes.
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
c) En el caso 3 la funcin f(n) es polinomialmente ms grande que n
log
c
b
por un factor de n

.
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
que h(n) por un factor n

.


( ) ( ) n g n h n



En el caso 1:
log
log
log
( ) , ( ) ( )
( )
( )
c
c
c
b
b
b
h n n g n f n
n f n n
f n n


= =



En el caso 3:
log
log
log
( ) ( ), ( )
( )
( )
c
c
c
b
b
b
h n f n g n n
n n f n
f n n

+
= =



Las recurrencias en las que f(n) es superior o inferior por un factor que no es polinomial, no
deben ser resueltas con el mtodo maestro.


3.6.3 Ejemplos de recurrencias resueltas con el mtodo maestro

El siguiente ejemplo ilustra el primer caso correspondiente a una serie geomtrica creciente.

9 ( / 3) 1
( )
1 1
T n n n
T n
n
+ >
=

=



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:

3
log log 9 2
( )
( )
c
b
f n n
g n n n n

=
= = =


Se demuestra que f(n) = O(g(n)):

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
2
2 1
2 1
log
( )
lim lim
( )
1
lim 1 si 1
1
lim 0 si 0> 1
( ) ( ) para 0
c
x x
x
x
b
f n n
g n n
n
n n
n
n n
n f n



=




= = =



= = <


= >


Por lo anterior, entonces el ltimo trmino de la recurrencia es el dominante,

3
log log 9 2
( ) ( ) ( ) ( )
c
b
n n n T n = = =

Alternativamente se puede resolver la recurrencia mediante la construccin del rbol de
recursin.















Se obtiene el patrn del tamao de problema: n/3
i


0 1 2 1
1 1 1 1 1
...
3 3 3 3 3
m m
n n n n n






En la profundidad i=m del rbol el tamao del problema es 1
( )
3 3
3
1
3
3
log 2 log
log
m
m
m
n
n
n
m n
=
=
=
=


Se obtiene el patrn de complejidad 3
i
n, que da lugar a una serie creciente donde el ltimo
trmino n
2
es el dominante.

T(n) n
T(n/3) (n/3) T(n/3) (n/3)
T(n/9) (n/9) T(n/9) (n/9) T(n/9) (n/9) T(n/9) (n/9)
T
nivel0
= n
T
nivel1
= (n/3)+ +(n/3)=9n/3=3n
T
nivel2
= (n/9)++ (n/9) =81n/3=9n
log
3
(n)
T(1) 1
T
nivelm
= 1++1=3
m
n=3
log
3
n
n=n
2
.
. .
. . . .
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
3
3
1
(log ) 1
(log ) 1
0
( ) 3 9 ... 3 0
( ) 3 9 ... 3
( ) (3 )
m
n
n
i
i
T n n n n n
T n n n n n
T n n

=
= + + + + +
= + + + +
=


Usando la serie
( )
1
0
( 1) /( 1)
k
i k
i
ar a r r
+
=
=

, se resuelve la recurrencia.

3
log ( ) 2
2
(3 1) ( 1)
( )
3 1 2 2
( ) ( )
n
n n n n
T n n
T n n

= = ==


=


El siguiente ejemplo ilustra el segundo caso correspondiente a una serie constante.


(2 / 3) 1 1
( )
0 1
T n n
T n
n
+ >
=

=



De la frmula general de divide-y-vencers:

T(n) = b T( n/c ) + f(n),

b=1, c=3/2, f(n) =1,

Para determinar que la recurrencia corresponde al caso 2 del Teorema Maestro, sea,

3/ 2
log log 1 0
( ) 1
( ) 1
c
b
f n
g n n n n
=
= = = =


Se demuestra que f(n) = (g(n)):

log
( ) 1
lim lim 1
( ) 1
( ) ( )
c
x x
b
f n
g n
n f n



= =



=


Como
log
( ) ( )
c
b
n f n = , entonces todos los lgn trminos de la recurrencia son iguales al
ltimo trmino,

3/ 2
log log 1
( ) ( lg ) ( lg ) (lg )
c
b
n n T n n n n = = =


Alternativamente se puede resolver la recurrencia mediante la construccin del rbol de
recursin.
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
















Se obtiene el patrn del tamao de problema: (2/3)
i
n.

0 1 2 1
2 2 2 1 2
... 1
3 3 3 3 3
m m
n n n n n


=




En la profundidad i=m del rbol, el tamao del problema es 1.

3/ 2 3/ 2
3/ 2
2
1
3
3
2
3
log log
2
log
m
m
m
n
n
n
m n

=



=



=


=


Se obtiene como patrn de complejidad una constante que prevalece hasta la profundidad del
rbol.

3/ 2
log
0
( ) 1 1 1 ... 1
( ) 1
n
i
T n
T n
=
= + + + +
=


3/ 2
( ) log ( ) 1
( ) (lg )
T n n
T n n
= +
=


El siguiente ejemplo ilustra el tercer caso correspondiente a una serie geomtrica decreciente.

3 ( / 4) lg 0
( )
0 0
T n n n n
T n
n
+ >
=

=


T(n) 1
T(2n/3) 1
T(4n/9) 1
T
nivel0
= 1
T
nivel1
= 1
T
nivel2
= 1
log
3/2
(n)
T
nivelm
= 1 T(1) 1
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos

De la frmula general de divide-y-venceras:

T(n) = b T( n/c ) + f(n),
b=3, c=4, f(n) =nlgn.

Para determinar que la recurrencia corresponde al caso 3 del Teorema Maestro, sea

4
log log 3
( ) lg
( )
c
b
f n n n
g n n n
+ +
=
= =


Se demuestra que f(n) = (g(n))

4
log 3
0.793
0.793
log
( ) lg
lim lim
( )
lg
lim limlg si 0.207
lg
lim si 0< 0.207
( ) ( ) para 0
c
x x
x x
x
b
f n n n
g n n
n n
n
n n
n n
n n
n f n

+


=




= = =



=


= >


Adems, se demuestra que bf(n/c)cf(n) para alguna constante c<1 y para n
suficientemente grande

3
3 lg lg si
4 4 4
3 3
lg lg
4 4 4
( / ) ( ) para 1
n n
c n n c
n
n n n
bf n c c f n c

=

<


Por lo anterior,

( ) ( ( )) ( lg ) n T n f n 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

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
Se conjetura que la solucin de T(n) pertenece a algn orden de O(f(n)).

Paso2: Prueba inductiva

a) Hiptesis: La funcin adivinada se establece como hiptesis inductiva

T(n) cf(n) para una c>0

b) Caso Base: Para n pequea se prueba T(n) cf(n).

La hiptesis inductiva se prueba con el tamao de problema ms pequeo. Como la
solucin adivinada se expresa en notacin asinttica slo basta encontrar una n
0
, tal que la
hiptesis inductiva se cumpla para cualquier n > n
0
. El valor de n
0
se substituye en la
recurrencia para encontrar su solucin con n pequea. La prueba es correcta si la hiptesis
y la recurrencia coinciden en alguna constante c.

c) Caso General: Suponiendo T(n) cf(n) verdadera demostrar que T(n-1) cf(n-1)
La hiptesis inductiva se prueba con un valor de problema grande. Para ello se asume que
dicha hiptesis es vlida con el tamao anterior k
f-1
al del ms grande que es k
f
. Esta se
substituye en la recurrencia evaluada en k
f
, y se considera correcta si alcanza la forma
exacta de la hiptesis inductiva.


3.7.2 Ejemplos de recurrencias resueltas con el mtodo de sustitucin

El siguiente ejemplo ilustra el mtodo de sustitucin.

2 ( / 2 ) 1
( )
1 1
T n n n
T n
n
+ >


=

=



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) c(nlgn) para una c>0.

b) Para probar que la hiptesis inductiva es vlida con un tamao de problema grande k
f
=n,
primero se asume que esta hiptesis es valida con un valor k
f-1
=n/2 anterior al de k
f
.

La hiptesis inductiva de la solucin adivinada es:

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos

( ) ( log )
( ) ( log )
T n O n n
T n c n n
=



La hiptesis inductiva para k
f-1
=n/2 queda:


( )
/ 2 / 2 lg / 2 T n c n n



La recurrencia original para k
f
=n es:

( ) 2 ( / 2 ) T n T n n = +



La hiptesis inductiva que es valida en k
f-1
se sustituye en la recurrencia especificada en el
tamao de problema ms grande k
f
. La recurrencia original, con la sustitucin de la hiptesis
inductiva, queda

( )
( )
( )
( )
2 / 2 lg / 2
lg( / 2)
lg lg 2
lg
T n c n n n
cn n n T n
cn n cn n T n
cn n cn n T n
+

+
+
+


Para c=1 se encuentra la forma exacta de la hiptesis inductiva:

( )
( )
(1) lg (1)
lg
n n n n T n
n n T n
+



c) Se busca un valor pequeo de n para el cual la hiptesis inductiva es vlida.

Para n
0
=1, que es el tamao de problema ms pequeo, la hiptesis inductiva queda:

( )
( )
lg
(1) lg(1) 0 1
cn n T n
c T

=


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 n
0
=1 la hiptesis inductiva no se cumple.
Para n
0
=2, la hiptesis inductiva queda:

( )
( )
lg
(2) lg(2) 2 2
cn n T n
c c T

=


El valor de n
0
=2 se sustituye en la recurrencia:
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos

( )
( )
( ) 2 ( / 2 )
2 ( 2/ 2 ) 2 2
2(1) 2 4 2
T n T n n
T T
T
= +

= +

= + =


Para c =2 la hiptesis inductiva corresponde con la recurrencia.

( )
( )
2 2
2(2) 4 2
c T
T

=


Cuando n
0
=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 ( ) ( log ) T n O n n = .


3.7.3 Consejos para una buena adivinacin

a) Usar la solucin de una recurrencia similar a la recurrencia con solucin conocida.

Recurrencia con solucin conocida

( ) 2 ( / 2 )
c
T n T n n = +


T(n)
c
= O(nlgn)

Recurrencia con solucin desconocida

( ) 2 ( / 2 ) 32
c
T n T n 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

( ) 2 ( / 2 ) T n T n n = +



Probar como lmite inferior el costo no recursivo

( ) ( ) T n n =



Probar como lmite superior una potencia del costo no recursivo

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
( ) ( ) 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:

( ) 2 ( / 2 ) 2 ( / 2 ) 1 T n T n T n = + +



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 k
f-1
= n/2


( ) / 2 / 2 1
( ) 1
T n cn cn
T n cn
+ +
+


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:

( ) ( ) , con 0 T n c n b b

Sustituyendo en la recurrencia la hiptesis inductiva evaluada en k
f-1
= n/2 se tiene:


( ) / 2 / 2 1
( ) 2 1
T n cn b cn b
T n cn b
+ +
+


Para b=1 la recurrencia y la hiptesis coinciden

Recurrencia

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
( ) 2(1) 1
( ) 1
T n cn
T n cn
+


Hiptesis

( )
( ) 1
T n cn b
T n cn




d) Cambio de variables.

Mediante una manipulacin algebraica hacer que una recurrencia desconocida sea similar a
una conocida

Por ejemplo:
( ) 2 ( ) lg T n T n n = + .

Para eliminar el logaritmo se introduciendo una nueva variable m=lgn.
/ 2
2
(2 ) 2 ( 2 )
(2 ) 2 (2 )
m
m m
m m
n
T T m
T T m
=
= +
= +


La recurrencia original T se renombra con S, cuyo tamao de problema es m.

( ) (2 )
m
S m T =

( ) 2 ( / 2) S m S m m = +

La nueva recurrencia S es similar a otra recurrencia de solucin conocida.

( ) 2 ( / 2) T n T n n = +

( ) ( log ) T n O n n =

Por lo tanto, S tiene la misma solucin que la recurrencia conocida.

( ) ( log ) S m O m m =

Se restablecen los valores originales para obtener la solucin de la recurrencia original.

2
( ) (2 ) ( )
( ) ( lg ) (lg (lg(lg )))
( ) (log lg )
m
T n T S m
T n O m m O n n
T n O n n
= =
= =
=
,



Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
3.8 Ejercicios resueltos

En los siguientes ejercicios, para la funcin de recurrencia dada, se aplican los mtodos de
solucin indicados. Posteriormente se determine el orden asinttico de la funcin. Finalmente la
solucin la solucin se comprueba utilizando la herramienta Derive.

3.8.1. Utilice el mtodo maestro y al rbol de recurrencia para resolver la funcin T(n)
definida para todas las potencias de 2.




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.








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
i
Tamao
del
problema
Complejidad
(de un
subproblema)
No. de
suproblemas
Complejidad
(de todo el nivel)
0 n n-1 1 1(n-1) = n-1
1 n/2 n/2 -1 2 2(n/2 -1) = n-2
2 n/4 n/4 -1 4 4(n/4 -1) = n-4



9i
2
i
n
1
2
i
n

2
i

2
i
n



m
2
m
n
=1
(1) 0
2
m
n
T T

= =


2
m

2 2 (1) 2 (0)
2
m m m
m
n
T T

= =



Patrn de Complejidad: n-2
i

n-1 T(n)
(n/2)-1 T(n/2) (n/2)-1 T(n/2)
(n/4)-1 T(n/4) (n/4)-1 T(n/4) (n/4)-1 T(n/4) (n/4)-1 T(n/4)
Complejidad
n-1


n-2


n-4
.
.
n-2
i

( ) ( ) -1 2 / 2
(1) 0
T n n T n
T
= +
=
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
1 1 1
0 0 0
( ) ( 2 ) 2 (1) ( 2 ) 2 (0) ( 2 )
m m m
i m i m i
i i i
T n n T n n

= = =
= + = + =



Para i = m, que es el tamao de problema ms pequeo, y aplicando: ; log
L
b
b x x L = =


(1)
2
1
2
2
lg
m
m
m
n
T T
n
n
m n

=


=
=
=


Logrando con ello establecer el lmite al cual llegar i, es decir, la profundidad del rbol

Utilizando la serie geomtrica 1 2 2
1
0
=
+
=

k
k
i
i


lg -1 lg -1 lg -1
0 0 0
lg -1 lg -1
(lg -1) 1 lg
0 0
( ) ( - 2 ) - 2
( ) 1- 2 (lg ) - (2 -1) (lg ) - 2 1
( ) lg - 1
n n n
i i
i i i
n n
i n n
i i
T n n n
T n n n n n n
T n n n n
= = =
+
= =
= =
= = = +
= +




b) Determinacin del orden asinttico
( ) ( lg ) T n n n =

c) Comprobacin con Derive

GEOMETRIC1 es una funcin que resuelve ecuaciones de recurrencia linear-geomtrica obtenidas
de algoritmos de los tipos divide-y-vencers. La Funcin T(n) se debe transformar para adquirir la
forma esperada por GEOMETRIC1.

( )
( )
0 0
0 0
( ) 1 2 / 2 , (1) 0
(2 ) 2 2 1
( ) ( ) ( ) ( )
2, , 2, ( ) 2 1, 1, 0 ( )
GEOMETRIC1( , ( ), ( ), , , )
T n n T n T
T n T n n
y kx p x y x q x
k x n q x n x y p x
k p x q x x x y
= + =
= +
= +
= = = = = =

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos


3.8.2. Utilice el mtodo maestro para resolver la funcin W definida por la ecuacin de recurrencia
y caso base siguientes:
( )
( ) 2 / 2
(1) 0
W n W n n
W
= +

=


a) Aplicacin de mtodos de solucin de recurrencias









Observando el rbol de recurrencia se puede notar que el patrn de complejidad se mantiene
constante, correspondiendo al caso 2 del mtodo maestro.

De la formula general de divide-y-vencers se tiene:

( ) ( / ) ( ) T n bT n c f n = +

2, 2, ( ) b c f n n = = =


Demostrar que
log
( ) ( )
c
b
f n n = , requiere identificar las funciones f(n) y g(n)
2
lg 2
( )
( )
f n n
g n n n
=
= =


Como ( ) ( ) f n g n = , se demuestra que
log
( ) ( )
c
b
f n n =

Del teorema maestro se obtiene la forma asinttica de la solucin


2
log log 2
( ) ( lg ) ( lg ) ( lg )
c
b
W n n n n n n n = = =



n W(n)
(1/2)n W(n/2) (1/2)n W(n/2)
(1/4) n W(n/4) (1/4)n W(n/4) (1/4)n W(n/4) (1/4)n W(n/4)
Complejidad
n


n


n
#1: GEOMETRIC1(2, 2, 2n - 1, n, 1, 0)

nLN(n)
#2: - n + 1
LN(2)
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
b) Comprobacin con Derive

( )
( )
( ) 2 / 2 , (1) 0
(2 ) 2 2
( ) ( ) ( ) ( )
2, , ( ) 2, ( ) 2
GEOMETRIC1( , ( ), ( ), , 0, 0)
W n W n n W
W n W n n
y kx p x y x q x
k x n p x q x n
k p x q x x x y
= + =

= +
= +
= = = =


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:
( ) ( / 2) lg , (1) 1 T n T n n T = + =

a) Aplicacin de mtodos de solucin de recurrencias

Del anlisis del rbol de recurrencia se observa que la complejidad no es constante y no es una serie
geomtrica decreciente, por lo que no posible aplicar el Teorema maestro para resolver la
recurrencia.








Nivel
i
Tamao del
problema
Complejidad
(de un subproblema)
No. de
subproblemas
Complejidad
(de todo el nivel)
0 n lg n 1 lg n
1 n/2 lg(n/2) 1 (lg(n/2))
2 n/4 lg(n/4) 1 (lg(n/4))

1

i n/2
i
lg(n/2
i
) 1 lg(n/2
i
)

1

m n/2
m
=1 T(n/2
m
)=T(1)=1 1 T(n/2
m
)= T(1)=1
Complejidad
lgn


lg(n/2)


lg(n/4)
.
.
.
lg(n/2
i
)
lgn T(n)
lg(n/2)
T(n/2)
lg(n/4)
T(n/4)
#1: GEOMETRIC1(2, 2, 2n, n, 1, 0)

nLN(n)
#2:
LN(2)
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
Patrn de complejidad: lg
2
i
n




Para i=m, que es el tamao de problema ms pequeo, y aplicando: ; log
L
b
b x x L = =


( / 2 ) (1)
1
2
2
lg
m
m
m
T n T
n
n
m n
=
=
=
=


Logrando con ello establecer el lmite al cual llegar i, es decir la profundidad del rbol

( )
lg 1
0
lg 1 lg 1 lg 1 lg 1
0 0 0 0
2
2
2 2 2
( ) lg 2 (1)
( ) lg lg 2 1 lg 1 1
lg (lg 1) (lg ) lg
( ) lg (lg ) 1 (lg ) 1
2 2
2(lg ) (lg ) lg (lg ) lg
( ) 1 1
2 2
n
i
i
n n n n
i
i i i i
T n n T
T n n n i
n n n n
T n n n n
n n n n n
T n

=

= = = =
= +
= + = +

= + = +
+ +
= + = +




b) Determinacin del orden asinttico
2
( ) ((lg ) ) T n n =

c) Comprobacin con Derive

( )
( ) ( / 2) lg , (1) 1
(2 ) lg 2
( ) ( ) ( ) ( )
2, , ( ) 1, ( ) lg 2
GEOMETRIC1( , ( ), ( ), , 0, 0)
T n T n n T
T n T n n
y kx p x y x q x
k x n p x q x n
k p x q x x x y
= + =
= +
= +
= = = =


#1: GEOMETRIC1(2, 1, LOG(2n, 2), n, 1, 1)

2
LN(n) LN(n)
#2: + + 1
2 2LN(2)
2LN(2)
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
n T(n)
(1/2)n
T(n/2)
(1/4)n
T(n/4)
3.8.4. Utilice el mtodo maestro para resolver la funcin T definida por la ecuacin de recurrencia
y caso base siguientes: ( ) ( / 2) , (1) 1 T n T n n T = + =
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.









Nivel
i
Tamao del
problema
Complejidad
(de un subproblema)
Complejidad
(de todo el nivel)
0 n n n
1 n/2 n/2 n/2
2 n/4 n/4 n/4


De la formula general ( ) ( / ) ( ) T n bT n c f n = + se tiene se tiene 1, 2, ( ) b c f n n = = = .


Demostrar que
log
( ) ( ) para 0
c
b
f n n

+
= > , requiere identificar las funciones ( ) f n y ( ) g n
2
log log 1 0
( )
( ) ( ) ( )
c
b
f n n
g n n n n n
+ + +
=
= = = =


Como ( / ) ' ( ) f n c c g n se demuestra que ( ) ( ) para 1 y 1 f n n c

= = =

El Teorema Maestro tambin pide demostrar que ( / ) ' ( ) bf n c c f n para ' 1 c < .
( / ) / 2 bf n c n

2
( )
3
bf n n = para
2
'
3
c =
Como existe una ' 1 c < , 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 =

Complejidad
n

(1/2)n

(1/4)n

(1/2
i
)n
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
n T(n)
(1/2) n T (n/2) (1/2) n T(n/2)
(1/4) n
T(n/4)
(1/4)n
T(n/4)
(1/4) n
T(n/4)
(1/4) n
T(n/4)
b) Comprobacin con Derive



3.8.5. Utilice el mtodo maestro para resolver la funcin T definida por la ecuacin de recurrencia
y caso base siguientes: ( ) 2 ( / 2) , (1) 1 T n T n n T = + =
a) Aplicacin de mtodos de solucin de recurrencias







Nivel
i
Tamao del
problema
Complejidad
(de un subproblema)
Complejidad
(de todo el nivel)
0 n n n = n
1 n/2 n/2 2(n/2) = n
2 n/4 n/4 4(n/4) = n


Observando el rbol de recurrencia se puede notar que el patrn de complejidad se mantiene
constante, correspondiendo al caso 2 del mtodo maestro.

De la formula general de divide-y-vencers ( ) ( / ) ( ) T n bT n c f n = + se tiene
2, 2, ( ) b c f n n = = =

Demostrar que
log
( ) ( )
c
b
f n n = , requiere identificar las funciones f(n) y g(n)
2
lg 2
( ) , ( ) f n n g n n n = = =
Complejidad
n

n

n
.
.
n
( )
( ) ( / 2) , (1) 1
(2 ) 2
( ) ( ) ( ) ( )
2, , ( ) 1, ( ) 2
GEOMETRIC1( , ( ), ( ), , 0, 0)
T n T n n T
T n T n n
y kx p x y x q x
k x n p x q x n
k p x q x x x y
= + =
= +
= +
= = = =
#1: GEOMETRIC1(2, 1, 2n, n, 1, 1)

#2: 2n - 1

Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
Como ( ) ( ) f n g n = ,se demuestra que
log
( ) ( )
c
b
f n n =

Del teorema maestro se obtiene la forma asinttica de la solucin

2
log log 2
( ) ( lg ) ( lg ) ( lg )
c
b
W n n n n n n n = = =

b) Comprobacin con Derive

( )
( ) 2 ( / 2) , (1) 1
(2 ) 2 2
( ) ( ) ( ) ( )
2, , ( ) 2, ( ) 2
GEOMETRIC1( , , , , 0, 0)
T n T n n T
T n T n n
y kx p x y x q x
k x n p x q x n
k p q x x y
= + =
= +
= +
= = = =



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:
( ) 2 ( / 2) lg , (1) 1 T n T n n n T = + =

a) Aplicacin de mtodos de solucin de recurrencias

Del anlisis del rbol de recurrencia se observa que la complejidad no se mantiene constante y no es
una serie geomtrica decreciente, por lo que no es posible utilizar el Teorema maestro para la
solucin de la recurrencia














n lg n T(n)
(n/2) lg (n/2)
T(n/2) (1/2) n lg n/2 T(n/2)
(n /4) lg (n/4)
T(n /4)
(n/4) n lg (n/4)
T(n/4)
(n/4) lg (n /4)
T(n/4)
(n/4) lg (n/4)
T(n/4)
Complejidad
n lg n


n lg (n/2)



n lg (n/4)
.
.
.
.
n lg (n/2
i
)


#1: GEOMETRIC1(2, 2, 2n, n, 1, 1)

nLN(n)
#2: + n
LN(2)
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos

Nivel
i
Tamao del
problema
Complejidad
(de un
subproblema)
No. de
subproblemas
Complejidad
(de todo el nivel)
0 n n lg n 2 1(n lg n) = n lg(n)
1 n/2 (n/2)lg(n/2) 4 2((n/2) lg(n/2)) = n lg(n/2)
2 n/4 (n/4)lg(n/4) 8 4((n/4) lg(n/4)) = n lg(n/4)



i

n/2
i
(n/2
i
)lg(n/2
i
) 2
i

n lg(n/2
i
)



m

n/2
m

T(
n/2
m
)=T(1)=1 2
m

2
m

T(n/2
m
)= 2
m
T(1)

Patrn de complejidad: lg
2
i
n
n





Para i m = , que es el tamao de problema ms pequeo, y aplicando: ; log
L
b
b x x L = =
( / 2 ) (1)
1
2
2
lg
m
m
m
T n T
n
n
m n
=
=
=
=


Logrando con ello establecer el lmite al cual llegar i, es decir, la profundidad del rbol

lg 1 1
log
0 0
lg 1 lg 1 lg 1 lg 1 lg 1 lg 1
0 0 0 0 0 1
2
( ) lg 2 (1) lg 2 (1)
2 2
( ) lg lg 2 lg 1 lg 1
lg (lg 1)
( ) lg (lg )
2
1
( ) lg l
2
n m
m n
i i
i i
n n n n n n
i
i i i i i i
n n
T n n T n T
T n n n n n n n n i n n n n i n
n n
T n n n n n n
T n n n n

= =

= = = = = =

= + = +


= + = + = +

= +
=


2
2
1
g lg
2
1 1
( ) lg lg
2 2
n n n n
T n n n n n n
+ +
= + +


b) Determinacin del orden asinttico




( ) ( )
2
log T n n n =
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
1/4
c) Comprobacin con Derive

( )
( ) 2 ( / 2) lg , (1) 1
(2 ) 2 2 (lg 2 )
( ) ( ) ( ) ( )
2, , ( ) 2, ( ) 2 lg 2
GEOMETRIC1( , ( ), ( ), , 0, 0)
T n T n n n T
T n T n n n
y kx p x y x q x
k x n p x q x n n
k p x q x x x y
= + =
= +
= +
= = = =




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:
2
( ) 2 ( / 2) , (1) 1 T n T n n T = + =

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 para la solucin de la recurrencia se utilizar el caso 3 del Teorema
Maestro.

















n
2
T(n)
(1/4) n
2
T(n/2)
(1/4) n
2
T (n/2)
(1/16)n
2
T(n/4)
(1/16)n
2
T(n/4)
(1/16)n
2
T(n/4)
(1/16)n
2
T(n/4)
Complejidad
n
2


(1/2) n
2



(1/4) n
2
.
.
(1/2
i
) n
2

#1: GEOMETRIC1(2, 2, 2nLOG(2n, 2), n, 1, 1)

2
nLN(n) nLN(n)
#2: + + n
2 2LN(2)
2LN(2)
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
Nivel
i
Tamao del
problema
Complejidad
(de un
subproblema)
Complejidad
(de todo el nivel)
0 n n
2
1 n
2
= (1/1) n
2

1 n/2 (n/2)
2
2 (n/2)
2
= (1/2) n
2

2 n/4 (n/4)
2
4 (n/4)
2
= (1/4) n
2

3 n/8 (n/8)
2
8 (n/8)
2
= (1/8) n
2



De la formula general ( ) ( / ) ( ) T n bT n c f n = + se tiene
2
2, 2, ( ) b c f n n = = =

Demostrar que
log
( ) ( ) para 0
c
b
f n n

+
= > , requiere identificar las funciones ( ) f n y ( ) g n
2
log 1
( )
( ) ( ) ( )
c
b
f n n
g n n n
+ +
=
= =


Como ( ) ( ) f n c g n , se demuestra que
1
( ) ( ) para 1 y 1 f n n c

+
= = =

El Teorema Maestro tambin pide demostrar que ( ) ( ) bf n c f n para ' 1 c < .

( ) ( )
2
2
2
2 2
n n n
bf
c
= =
( )
( )
2
2
'
3
c f n n = para
2
'
3
c =

Como existe una ' 1 c < , se demuestra que ( ) ( ) bf n 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:

( ) ( )
2
T n n =

b) Comprobacin con Derive

( )
2
2
2
( ) 2 ( / 2) , (1) 1
(2 ) 2 4
( ) ( ) ( ) ( )
2, , ( ) 2, ( ) 4
GEOMETRIC1( , ( ), ( ), , 0, 0)
T n T n n T
T n T n n
y kx p x y x q x
k x n p x q x n
k p x q x x x y
= + =
= +
= +
= = = =



Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos

3.8.8. Utilice el mtodo de rbol de recurrencia para resolver la funcin:
T( 1 ) = 1, T( n ) = 3T( n - 1 ) + 2

a) Aplicacin de mtodos de solucin de recurrencias















Nivel
i
Tamao del
problema
Complejidad
(de un subproblema)
No. de
subproblemas
Complejidad
(de todo el nivel)
0 n-1 2 3 3(2)
1 n-2 2 9 9(2)
2 n-3 2 27 27(2)



i

n-i 2 3
i

3
i
(2)



m

n-m
T(
n-m)=T(1)=1 3
m

3
m
T(n-m)=3
m
T(1) =3
m
(1)

Patrn de Complejidad: 2(3 )
i

( )
1
0
( ) 2 3 3 1
m
i m
i
T n

=
= +



Para i=m, que es el tamao de problema ms pequeo, y aplicando: ; log
L
b
b x x L = =
T(n-m)=T(1)
n-m=1
m = n 1
2 T(n)
2 T(n-1) 2 T(n-1)
2 T(n-2) 2 T(n-2) 2 T(n-2) 2 T(n-2)
Complejidad
2


2(3)





2(9)
.
.
.
2(3
i
)
2 T(n-1)
2 T(n-2) 2 T(n-2)
2 T(n-2) 2 T(n-2) 2 T(n-2)

#1: GEOMETRIC1(2, 2, 4n ^2 , n, 1, 1)
2
#2: 2n - n
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
Logrando con ello establecer el lmite al cual llegar i, es decir, la profundidad del rbol

( )
2 1 1 2
1 1 1
0
1 1 1
3 1 3 1
( ) 2 3 3 (1) 2 3 2 3
3 1 2
( ) 3 1 3 2 3 1 (3 )
n n n
i n n n
i
n n n n
T n T
T n
+

=


= + = + = +


= + = =



b) Comprobacin con Derive

LIN1_DIFFERENCE es una funcin que resuelve ecuaciones de recurrencia de primer orden
obtenidas de algoritmos de los tipos recorta-y-vencers. La Funcin T(n) se debe transformar para
adquirir la forma esperada por LIN1_DIFFERENCE.

( )
( ) 3 ( -1 ) 2, (1) 1
( 1) 3 2
( 1) ( ) ( ) ( )
, ( ) 3, ( ) 2
LIN1_DIFFERENCE( ( ), ( ), , 0, 0)
T n T n T
T n T n
y x p x y x q x
x n p x q x
p x q x x x y
= + =
+ = +
+ = +
= = =



3.8.9. Utilice el mtodo de expansin para resolver la siguiente recurrencia:
T(1)=8, T(n)=3T(n-1)-15
a) Aplicacin de mtodos de solucin de recurrencias

La ecuacin inductiva se expresa con diferentes tamaos de problema
( ) 3 ( 1) 15
( 1) 3 ( 2) 15
( 2) 3 ( 3) 15
T n T n
T n T n
T n T n
=
=
=


La ecuacin inductiva se expande

Expansin con ( ) T n
( ) 3 ( 1) 15 T n T n =

Expansin con ( 1) T n
( )
2
( ) 3 3 ( 2) 15 15 (3)(3) ( 2) 3(15) 15 15 3(15) 3 ( 2) T n T n T n T n = = = +
#1: LIN1_DIFFERENCE(3, 2, n, 1, 1)

n - 1
#2: 23 - 1
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
Expansin con ( 2) T n
( ) ( )
2 3
( ) (3)(3) 3 ( 2) 15 (3)15 15 15 3(15) 3 (15) 3 ( 3) T n T n T n = = +

La ecuacin inductiva se expresa con sumatorias
1
0
( ) 15 3 3 ( )
m
i m
i
T n T n m

=
= +



En el caso base, (1) 8 T = , por lo tanto 1 n m = y 1 m n =

( 1) 1
1
0
( ) 15 3 3 (1)
n
i n
i
T n T

=
= +


2
1
0
( ) 15 3 3 (1)
n
i n
i
T n T

=
= +


1
1
3 1
( ) (15) (3 )(8)
2
n
n
T n


= +



( )
1
15 15
2 2
( ) 3 8
n
T n

= +
1
3 15
( )
2
n
T n

+
=

b) Comprobacin con Derive

( )
( ) 3 ( -1) -15, (1) 8
( 1) 3 15
( 1) ( ) ( ) ( )
, ( ) 3, ( ) 15
LIN1_DIFFERENCE( ( ), ( ), , 0, 0)
T n T n T
T n T n
y x p x y x q x
x n p x q x
p x q x x x y
= =
+ =
+ = +
= = =



3.8.10. Utilice el mtodo de expansin para resolver la siguiente recurrencia:
(1) 2 T = , ( ) ( 1) 1 T n T n n = +



#1: LIN1_DIFFERENCE(3, -15, n, 1, 8)

n - 1
3 15
#2: +
2 2
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
a) Aplicacin de mtodos de solucin de recurrencias

La ecuacin inductiva se expresa con diferentes tamaos de problema

( ) ( 1) 1
( 1) ( 2) 2
( 2) ( 3) 3
T n T n n
T n T n n
T n T n n
= +
= +
= +


La ecuacin inductiva se expande

Expansin con ( ) T n
( ) 1 ( 1) T n n T n = +

Expansin con ( 1) T n
( ) 1 ( ( 2) 2) ( 1) ( 2) ( 2) T n n T n n n n T n = + + = + +

Expansin con ( 2) T n
( ) ( 1) ( 2) ( ( 3) 3) ( 1) ( 2) ( 3) ( 3) T n n n T n n n n n T n = + + + = + + +

La ecuacin inductiva se expresa con sumatorias

1
( ) ( ) ( )
m
i
T n n i T n m
=
= +


En el caso base, (1) 2 T = , por lo tanto 1 n m = y 1 m n =

1 1
1 1
1 1
1 1
2 2
2
( ) ( ) (1) ( ) 2
( 1)( )
( ) ( ) ( ) 2 ( 1) 2
2
( ) 2 2
2 2 2 2
n n
i i
n n
i i
T n n i T n i
n n
T n n i n n
n n n n
T n n n

= =

= =
= + = +

= + = +
= + + = +




b) Comprobacin con Derive

( )
( ) ( 1) 1, (1) 2
( 1)
( 1) ( ) ( ) ( )
, ( ) 1, ( )
LIN1_DIFFERENCE( ( ), ( ), , 0, 0)
T n T n n T
T n T n n
y x p x y x q x
x n p x q x n
p x q x x x y
= + =
+ = +
+ = +
= = =


Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos


3.9 Ejercicios propuestos

3.9.1 Usando la notacin vista en el curso de Anlisis y Diseo de Algoritmos II, escriba la
definicin de cada tipo de funcin de recurrencia de la lista de abajo. Para cada tipo de
funcin, tambin presente un ejemplo y su solucin con alguno de los mtodos vistos en el
curso de anlisis y diseo de Algoritmos I.

a) Recurrencia homognea lineal de primer-orden con coeficientes constantes
b) Recurrencia homognea lineal de segundo-orden con coeficientes constantes
c) Recurrencia no-homognea de primer-orden
d) Recurrencia no-homognea de segundo-orden
e) Recurrencia no-lineal

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 Resuelva las siguientes recurrencias usando el mtodo maestro, rbol de recurrencia y
expansin. Verifique la solucin con la herramienta Derive.

2
..........
.....................
3 ( / 2) 2
( )
1 1 .............
T n n n n
T n
n
+ +
=

=



3.9.4 Resuelva las siguientes recurrencias usando el mtodo maestro, rbol de recurrencia y
expansin. Verifique la solucin con la herramienta Derive.

..........
..................................
...................
( 2) 3
............
4 3
( ) 1 1
6 2 ...
T n n n
T n n
n
+ +

= =



3.9.5 Encuentre un ejemplo de recurrencia de solucin conocida en el que las siguientes reglas
maestras obtienen la misma solucin que las reglas utilizadas en los ejercicios resueltos.

Para recurrencias con la forma general ( ) ( )
k
T n bT n c an = + , la solucin de la recurrencia
se obtiene con las siguientes reglas:

#1: LIN1_DIFFERENCE(1, n, n, 1, 2)

2
n n
#2: - + 2
2 2
Instituto Tecnolgico de Ciudad Madero Dra. Laura Cruz Reyes

Unidad I COMPLEJ IDAD DE ALGORITMOS Captulo 3 Complejidad de algoritmos recursivos
log
( ) si
( ) ( log ) si
( ) si
c
k k
k k
b k
n b c
T n n n b c
n b c
<

= =

>





Bibliografa


1. CormenT.H., LeisersonC.E., RivestR.L: Introduction to Algorithms, MIT Press 1990.
2. Sara Basse, Allen Van Gelder. Algoritmos Computacionales: Introduccin al anlisis y
diseo. Tercera Edicin. AddisonWesley. 2002.
3. Ian Parberry, William Gasarch. Problems on Algorithms. Prentice Hall, 1994

También podría gustarte