Algoritmos - CAP1
Complejidad de algoritmos
Complejidad de algoritmos
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
38 TÉCNICAS DE DISEÑO DE ALGORITMOS
t k = 2t k–1 + k,
ecuación en recurrencia no homogénea que puede ser expresada como
t k – 2t k–1 = k
y cuya ecuación característica asociada es (x–2)(x–1) 2 = 0. Por tanto,
t k = c 1 2 k + c 2 + c 3 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 + c 3 k
y después n = 2 k (k = logn), y por tanto
T(n) = c 1 n + c 2 + 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 en recurrencia
original, y obtenemos:
c 1 n + c 2 + c 3 logn = 2(c 1 n/2 + c 2 + c 3 logn – c 3 ) + logn.
Igualando los coeficientes de logn y los términos independientes obtenemos que
c 3 =–1 y c 2 =–2, de donde
T(n) = c 1 n – 2 – logn.
Esta función será de orden de complejidad Θ(n) si c 1 es distinto de cero, o bien
T(n) ∈Θ(logn) si c 1 = 0.
Para ver cuándo c 1 vale cero estudiaremos los valores de las condiciones
iniciales que le hacen tomar ese valor, en este caso T(1). Por un lado, utilizando la
ecuación original, tenemos que para n = 2:
T(2) = 2T(1) + 1.
Por otro lado, basándonos en la ecuación que hemos obtenido
T(2) = 2c 1 – 2 – 1.
Igualando ambas ecuaciones, obtenemos que c 1 = T(1) + 2. Por tanto,
⎧Θ(log
n)
T ( n)
∈ ⎨
⎩Θ(
n)
si T (1) = −2
si T (1) ≠ −2
g) T(n) = 2T(n 1/2 ) + logn con n=2 2k ; T(2)=1.
Haciendo el cambio n = 2 2k (k = loglogn) obtenemos la ecuación
T(2 2k ) = 2T(2 2k–1 ) + log2 2k .