11.08.2023 Views

Algoritmos - CAP1

Complejidad de algoritmos

Complejidad de algoritmos

SHOW MORE
SHOW LESS

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 .

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

Saved successfully!

Ooh no, something went wrong!