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.
14 TÉCNICAS DE DISEÑO DE ALGORITMOS
a 0
T(n) + a 1
T(n −1) +... + a k
T(n − k) = b 1 n p 1
(n) +b 2 n p 2
(n) +... + b s n p s
(n)
donde como en el caso anterior, los coeficientes a i y b i son números reales y p j (n)
son polinomios en n de grado d j . En este caso también existe una forma general de
la solución, en donde se demuestra que la ecuación característica es:
(a 0
x k + a 1
x k−1 + a 2
x k −2 + ... + a k
)(x − b 1
) d 1 +1 (x − b 2
) d 2 +1 ...(x − b s
) d s +1 = 0 .
Como ejemplo, supongamos la ecuación
T(n) = 2T(n–1) + n + 2 n , n≥1,
con la condición inicial T(0) = 1. En este caso tenemos que b 1 = 1, p 1 (n) = n,
b 2 = 2 y p 2 (n) = 1, por lo que su ecuación característica es (x–2) 2 (x–1) 2 = 0, lo que
da lugar a la expresión final de T(n):
T(n) = –2 – n + 2 n+1 + n2 n ∈Θ(n2 n ).
1.4.3 Cambio de Variable
Esta técnica se aplica cuando n es potencia de un número real a, esto es, n = a k . Sea
por ejemplo, para el caso a = 2, la ecuación T(n) = 4T(n/2) + n, donde n es una
potencia de 2 (n > 3), T(1) = 1, y T(2) = 6.
Si n = 2 k podemos escribir la ecuación como:
T(2 k ) = 4T(2 k–1 ) + 2 k .
Haciendo el cambio de variable t k = T(2 k ) obtenemos la ecuación
t k = 4t k–1 + 2 k
que corresponde a una de las ecuaciones estudiadas anteriormente, cuya solución
viene dada por la expresión
t k = c 1 (2 k ) 2 + c 2 2 k .
Deshaciendo el cambio que realizamos al principio obtenemos que
T(n) = c 1 n 2 + c 2 n.
Calculando entonces las constantes a partir de las condiciones iniciales:
T(n) = 2n 2 – n ∈Θ(n 2 ).
1.4.4 Recurrencias No Lineales
En este caso, la ecuación que relaciona T(n) con el resto de los términos no es
lineal. Para resolverla intentaremos convertirla en una ecuación lineal como las que
hemos estudiado hasta el momento.
Por ejemplo, sea la ecuación T(n) = nT 2 (n/2) para n potencia de 2, n > 1, con la
condición inicial T(1) = 1/3. Llamando t k = T(2 k ), la ecuación queda como