11.08.2023 Views

Algoritmos - CAP1

Complejidad de algoritmos

Complejidad de algoritmos

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!