Algoritmos - CAP1
Complejidad de algoritmos
Complejidad de algoritmos
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
42 TÉCNICAS DE DISEÑO DE ALGORITMOS
k) T(n) = 2T(n/4) + n 1/2 si n>4, n potencia de 4.
Haciendo el cambio n = 2 k (o, lo que es igual, k = logn) obtenemos
T(2 k ) = 2T(2 k–2 ) + 2 k/2 .
Llamando t k = T(2 k ), la ecuación final es
t k = 2t k–2 + 2 k/2 ,
ecuación en recurrencia no homogénea de la forma
t k – 2t k–2 = (
2 ) k
cuya ecuación característica asociada es (x 2 –2)(x–
(x+ 2 )(x– 2 ) 2 = 0. Por tanto,
2 ) = 0, o lo que es igual,
t k = c 1 (– 2 ) k + c 2 ( 2 ) k + c 3 k( 2 ) k .
Necesitamos ahora deshacer los cambios hechos. Primero t k = T(2 k ), con lo que
T(2 k ) = c 1 (– 2 ) k + c 2 ( 2 ) k + c 3 k( 2 ) k
después n = 2 k (k = logn), y por tanto obtenemos:
T(n) =
n (c 1 (–1) logn + c 2 + c 3 logn).
Si n es múltiplo de 4 entonces logn es par, y por tanto (–1) logn vale siempre 1.
Esto nos permite afirmar, llamando c 0 = c 1 + c 2 , que
T(n) =
n (c 0 + c 3 logn).
De esta ecuación no conocemos condiciones iniciales para calcular todas las
constantes, pero sí es posible intentar fijar alguna de ellas. Para eso, basta sustituir
la expresión que hemos encontrado para T(n) en la ecuación original:
n (c 0 + c 3 logn) = 2( n /2 (c 0 + c 3 logn – 2c 3 )) + n .
Igualando los coeficientes de n , n logn y los términos independientes
obtenemos c 3 =1/2, de donde
T(n) = n (c 0 + 1/2logn) ∈Θ( n logn).
Este problema también podría haberse solucionado mediante otro cambio,
n = 4 k (o, lo que es igual, k = log 4 n) obteniendo la ecuación
T(4 k ) = 2T(4 k–1 ) + 4 k/2 .
Esta nos lleva, tras llamar t k = T(4 k ), a la ecuación final