Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 /...

37
Tema 3.2: Eficiencia de algoritmos recursivos Dise˜ no y An´ alisis de Algoritmos

Transcript of Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 /...

Page 1: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos

Diseno y Analisis de Algoritmos

Page 2: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Contenidos

Contenidos

1 Introduccion

2 Expansion de recurrencias

3 Metodo general para resolucion de relaciones de recurrencia

URJC DAA 2 / 37

Page 3: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Introduccion

Analisis de algoritmos recursivos

La matematica necesaria para analizar algoritmos recursivos son lasrelaciones de recurrencia, tambien llamadas ecuaciones endiferencias o simplemente recurrencias

Las recurrencias son expresiones matematicas recursivas

T (n) =

3 si n = 05 + T (n − 1) si n > 0

La resolucion de recurrencias consiste en proporcionar formulas norecursivas equivalentes

T (n) = 5n + 3

Veremos dos formas de resolverlas:

Expansion de recurrencias

Resolucion de relaciones de recurrencia

URJC DAA 3 / 37

Page 4: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Funcion potencia - version 1

1 int pot1(int b, int e)

2

3 if(e==0)

4 return 1;

5 else

6 return b*pot1(b,e-1);

7

T (n) =

3 si n = 05 + T (n − 1) si n > 0

n esta relacionado con el tamano del problema, que en este caso es elexponente e de la funcion

Podemos pensar en el caso base se realizan 3 operaciones, y 5 en elrecursivo (ademas del tiempo que llevarıa realizar otra llamada conparametro n − 1)

URJC DAA 4 / 37

Page 5: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Resolucion por expansion de recurrencias

T (n) = 5 + T (n − 1)

= 5 + 5 + T (n − 2) = 5 · 2 + T (n − 2)

= 5 + 5 + 5 + T (n − 3) = 5 · 3 + T (n − 3)...

= 5i + T (n − i)

¿Cuando se llega al caso base T (0)?

Cuando i = n

Sustituyendo:

T (n) = 5n + T (0) = 5n + 3 ∈ Θ(n)

Tiene sentido, ya que decrementamos n en cada llamada recursivaURJC DAA 5 / 37

Page 6: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Funcion potencia - version 2

1 int pot2(int b, int e)

2

3 if(e==0)

4 return 1;

5 else if (e%2==0)

6 return pot2(b*b,e/2);

7 else

8 return b*pot2(b*b,e/2);

9

T (n) =

3 si n = 08 + T (n/2) si n > 0 y n es par9 + T ((n − 1)/2) si n > 0 y n es impar

La funcion es difıcil de analizar

Pero podemos suponer que n = 2x es una potencia de dos

Esto es valido ya que estamos analizando complejidad asintotica

URJC DAA 6 / 37

Page 7: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Resolucion por expansion de recurrencias

Asumimos que n = 2x es una potencia de dos (por tanto, par):

T (n) = 8 + T (n/2)

= 8 + 8 + T (n/4) = 8 · 2 + T (n/22)

= 8 + 8 + 8 + T (n/8) = 8 · 3 + T (n/23)...

= 8i + T (n/2i )

¿Cuando se llega al caso base T (0)?

i →∞Pero eso no tiene sentido

El parametro de la funcion T es entero

URJC DAA 7 / 37

Page 8: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Resolucion por expansion de recurrencias

¿Cuando se llega al caso T (1)?

Cuando n/2i = 1, es decir, cuando i = log2 n

Sustituyendo:

T (n) = 8 log2 n + T (1) = 8 log2 n + 9 + T (0) = 8 log2 n + 9 + 3 =

= 8 log2 n + 12 ∈ Θ(log n)

Tiene sentido, ya que dividimos n por 2 en cada llamada recursiva

URJC DAA 8 / 37

Page 9: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Soluciones generales a relaciones de recurrencia

T (n) =

a si n = 0b + T (n − 1) si n > 0

T (n) = bn + a ∈ Θ(n)

T (n) =

a si n = 1b + T (n − 1) si n > 1

T (n) = b(n − 1) + a ∈ Θ(n)

URJC DAA 9 / 37

Page 10: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Soluciones generales a relaciones de recurrencia

T (n) =

a si n = 1b + T (n/2) si n > 1

T (n) = b log2 n + a ∈ Θ(log n)

T (n) =

a si n = 0b + T (n/2) si n > 0

T (n) = b log2 n + b + a ∈ Θ(log n)

URJC DAA 10 / 37

Page 11: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Soluciones generales a relaciones de recurrencia

T (n) =

a si n = 0bn + c + T (n − 1) si n > 0

T (n) = bn + c + T (n − 1)

= bn + c + b(n − 1) + c + T (n − 2) = 2bn − b + 2c + T (n − 2)

= 2bn − b + 2c + b(n − 2) + c + T (n − 3) =

= 3bn − b(1 + 2) + 3c + T (n − 3) =

= 3bn − b(1 + 2) + 3c + b(n − 3) + c + T (n − 4) =

= 4bn − b(1 + 2 + 3) + 4c + T (n − 4) =

...

= ibn − bi−1∑j=1

j + ic + T (n − i) = ibn + ic − bi(i − 1)

2+ T (n − i)

URJC DAA 11 / 37

Page 12: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Soluciones generales a relaciones de recurrencia

Se alcanza T (0) para i = n

Sustituyendo:

T (n) = bn2 − b

2n(n − 1) + cn + a

T (n) =b

2n2 +

(c +

b

2

)n + a ∈ Θ(n2)

Tiene sentido, ya que hacemos n + (n − 1) + (n − 2) + · · ·+ 1operaciones

URJC DAA 12 / 37

Page 13: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Soluciones generales a relaciones de recurrencia

T (n) =

a si n = 0bn + c + 2T (n/2) si n > 0

T (n) = bn + c + 2T (n/2)

= bn + c + 2(bn

2+ c + 2T (n/4)

)= bn + c + 2

[bn

2+ c + 2

(bn

4+ c + 2T (n/8)

)]= 3bn + c(1 + 2 + 4) + 23T (n/23) = 3bn + c(23 − 1) + 23T (n/23)

...

= ibn + c(2i − 1) + 2iT (n/2i )

URJC DAA 13 / 37

Page 14: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Soluciones generales a relaciones de recurrencia

Se alcanza T (1) para n/2i = 1, es decir, cuando i = log2 n

Sustituyendo:

T (n) = bn log2 n + c(n − 1) + nT (1)

= bn log2 n + c(n − 1) + n(b + c + 2T (0))

= bn log2 n + cn − c + nb + nc + 2na

T (n) = bn log2 n + (2c + b + 2a)n − c ∈ Θ(n log n)

URJC DAA 14 / 37

Page 15: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Soluciones generales a relaciones de recurrencia

Tiene sentido, ya que hacemos n operaciones 1 + log2 n veces

n

n/2 n/2

n/4 n/4 n/4 n/4

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

n

1 + log2 n

URJC DAA 15 / 37

Page 16: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Teorema maestro - version simple

Formula util para algoritmos “divide y venceras”:

T (n) =

c si n = 1

aT (n/b) + cnk si n > 1

=⇒ T (n) =

Θ(nk) si a

bk< 1

Θ(nk log n) si abk

= 1

Θ(nlogb a) si abk> 1

URJC DAA 16 / 37

Page 17: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Teorema maestro - demostracion

T (n) = aT (n/b) + cnk

= a

[aT( n

b2

)+ c

(nb

)k]+ cnk = a2T

( n

b2

)+ cnk

(1 +

a

bk

)= a2

[aT( n

b3

)+ c

( n

b2

)k]+ cnk

( n

b2

)= a3T

( n

b3

)+ cnk

(1 +

a

bk+

a2

b2k

)...

= aiT( n

bi

)+ cnk

i−1∑j=0

( a

bk

)jSe alcanza T (1) = c cuando: i = logb n

= calogb n + cnk

logb n−1∑j=0

( a

bk

)j= cnk

( a

bk

)logb n

+ cnk

logb n−1∑j=0

( a

bk

)j

URJC DAA 17 / 37

Page 18: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Teorema maestro - demostracion (logaritmos)

La ultima igualdad se debe a:

cnk( a

bk

)logb n= cnk

alogb n

bk logb n= cnk

alogb n

nk= calogb n

Mas adelante tambien necesitaremos:

nlogba = alogbn

Ya que:logb n

logba = logb alogbn = logb a · logb n

Finalmente:

T (n) = cnklogb n∑j=0

( a

bk

)jY tendremos 3 casos segun los valores de a, b y k

URJC DAA 18 / 37

Page 19: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Teorema maestro - demostracion

T (n) = cnklogb n∑j=0

( a

bk

)j1 a < bk ⇒ T (n) ∈ Θ(nk)

∞∑i=0

r i =1

1− r= constante (no diverge), para r < 1

2 a = bk ⇒ T (n) ∈ Θ(nk log n)

T (n) = cnk(logb n + 1)

URJC DAA 19 / 37

Page 20: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Teorema maestro - demostracion

T (n) = cnklogb n∑j=0

( a

bk

)j3 a > bk ⇒ T (n) ∈ Θ(nlogb a)

T (n) = cnk(

abk

)logb n+1 − 1(abk

)− 1

=cnk

(abk

)alogb n

nk− cnk

K1

=K2a

logb n − cnk

K1=

K2nlogb a − cnk

K1

Como a > bk ⇒ logb a > k ⇒ T (n) ∈ Θ(nlogb a)

URJC DAA 20 / 37

Page 21: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Teorema maestro - version completa

Dada una recurrencia del tipo:

T (n) = aT (n/b) + f (n)

donde a > 0, b > 0, y f (n) es una funcion asintoticamente positiva,entonces se puede aplicar el teorema maestro en estos tres casos:

URJC DAA 21 / 37

Page 22: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Expansion de recurrencias

Teorema maestro - version completa

1 Si f (n) = O(nlogba−ε) para alguna constante ε > 0, entonces:

T (n) ∈ Θ(nlogba)

2 Si f (n) = Θ(nlogbalogkn) con1 k ≥ 0, entonces:

T (n) ∈ Θ(nlogbalogk+1n)

3 Si f (n) = Ω(nlogba+ε) con ε > 0, y f (n) satisface la condicion deregularidad (af (n/b) ≤ cf (n) para alguna constante c < 1 y paratodo n lo suficientemente grande), entonces:

T (n) ∈ Θ(f (n))

1k suele ser 0URJC DAA 22 / 37

Page 23: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Metodo general para resolucion de relaciones derecurrencia

No siempre se puede aplicar la expansion de recurrencias

Para muchas recurrencias no se conoce la forma de resolverlas

Sucede como con las integrales o ecuaciones diferenciales: sabemoscomo resolver un subconjunto de estas, pero no todas

Ahora veremos un metodo general con el que vamos a ampliar elconjunto de recurrencias que podemos resolver

Expansión derecurrencias

Método generalde resolución

de recurrencias

Recurrencias

URJC DAA 23 / 37

Page 24: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Recurrencias homogeneas

Dada la siguiente recurrencia homogenea (aparece un 0 en la partederecha):

a0T (n) + a1T (n − 1) + · · · + akT (n − k) = 0

Buscamos soluciones del tipo:

T (n) = C1P1(n)rn1 + · · · + CkPk(n)rnk =k∑

i=1

CiPi (n)rni

Realizando el cambio xz−n+k = T (z) obtenemos la ecuacioncaracterıstica asociada:

a0xk + a1x

k−1 + · · · + ak−1x + ak = 0

URJC DAA 24 / 37

Page 25: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Primer caso: raıces distintas

Si todas las raıces del polinomio de la ecuacion caracterıstica sondistintas:

T (n) = C1rn1 + · · · + Ck r

nk =

k∑i=1

Ci rni

Las constantes ri van a ser las raıces de la ecuacion caracterıstica

Pi (n) = 1, para todo i

Las constantes Ci se hallan a partir de las condiciones iniciales,resolviendo un sistema de ecuaciones

URJC DAA 25 / 37

Page 26: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Ejemplo: Numeros de Fibonacci

T (n) =

0 si n = 01 si n = 1T (n − 1) + T (n − 2) si n > 1

La ecuacion caracterıstica es x2 − x − 1 = 0, cuyas raıces son:

r1 =1 +√

5

2r2 =

1−√

5

2

Por tanto, al ser distintas, la solucion tiene la forma:

T (n) = C1rn1 + C2r

n2 = C1

(1 +√

5

2

)n

+ C2

(1−√

5

2

)n

URJC DAA 26 / 37

Page 27: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Ejemplo: Numeros de Fibonacci

El siguiente paso consiste en hallar las constantes, a partir de lascondiciones iniciales (casos base de la recurrencia):

C1 + C2 = 0 = T (0)

C1

(1+√5

2

)+ C2

(1−√5

2

)= 1 = T (1)

Resolviendo el sistema obtenemos:

C1 =1√5

C2 = − 1√5

Finalmente:

T (n) =1√5

(1 +√

5

2

)n

− 1√5

(1−√

5

2

)n

URJC DAA 27 / 37

Page 28: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Ejemplo: Numeros de Fibonacci

El segundo termino tiende a 0 segun n→∞, por tanto:

T (n) ∈ Θ

((1 +√

5

2

)n)

El orden es exponencial

El arbol de recursion es binario, pero esta podado

Para un arbol de recursion binario completo el orden es 2n

En este caso la base del exponente es (1 +√

5)/2 ≈ 1,618 < 2

7

6

5 4

3

2

1 0

1

2

1 0

3

2

1 0

1

4

3

2

1 0

1

2

1 0

5

3

2

1 0

1

4

3

2

1 0

1

2

1 0

URJC DAA 28 / 37

Page 29: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Segundo caso: raıces con multiplicidad mayor que 1

En general, el polinomio asociado a la ecuacion caracterıstica puedetener raıces con multiplicidad 1 o mayor que 1

(x − r1)m1 · (x − r2)m2 · · · (x − rk)mk = 0

En este caso general, la solucion tiene la forma:

T (n) =

m1∑i=1

C1ini−1rn1 +

m2∑i=1

C2ini−1rn2 + · · · +

mk∑i=1

Ckini−1rnk

URJC DAA 29 / 37

Page 30: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Segundo caso: raıces con multiplicidad mayor que 1

Ejemplo:

T (n) = 5T (n − 1)− 8T (n − 2) + 4T (n − 3)

Ecuacion caracterıstica:

x3 − 5x2 + 8x − 4 = (x − 2)2(x − 1) = 0

El 2 es una raız doble, por tanto:

T (n) = C12n + C2n2n + C31n

URJC DAA 30 / 37

Page 31: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Recurrencias no homogeneas - una primera idea

La parte de la derecha ya no es 0

T (n)− 2T (n − 1) = 3n (a)

La convertimos en homogenea:

T (n + 1)− 2T (n) = 3n+1 (1)3T (n)− 6T (n − 1) = 3n+1 (2)

T (n + 1)− 5T (n) + 6T (n − 1) = 0 (1)− (2)

En (1) se incrementa n en (a), en (2) se multiplica (a) por 3

Con T (0) = 0 y T (1) = 3

T (n) = 3 · 3n − 3 · 2n ∈ Θ(3n)

URJC DAA 31 / 37

Page 32: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Recurrencias no homogeneas - caso simple

Recurrencia, con un solo termino a la derecha donde d es el ordendel polinomio P(n)

a0T (n) + a1T (n − 1) + · · · + akT (n − k) = bnPd(n)

Ecuacion caracterıstica:

(a0xk + a1x

k−1 + · · ·+ ak)(x − b)d+1 = 0

Ejemplo:

T (n)− 2T (n − 1) = n b = 1 P(n) = n d = 1

(x−2)(x−1)2 = 0 =⇒ T (n) = C12n+C21n+C3n1n ∈ Θ(2n)

URJC DAA 32 / 37

Page 33: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Recurrencias no homogeneas - caso general

Recurrencia general:

a0T (n) +a1T (n−1) + · · · +akT (n−k) = bn1Pd11 (n) + · · ·+bnsP

dss (n)

Ecuacion caracterıstica:

(a0xk + a1x

k−1 + · · ·+ ak)(x − b1)d1+1 · · · (x − bs)ds+1 = 0

URJC DAA 33 / 37

Page 34: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Recurrencias no homogeneas - caso general

Ejemplo:

T (n) = 2T (n − 1) + n + 2n con T (0) = 1

Ecuacion caracterıstica:

(x − 2)(x − 1)2(x − 2) = (x − 2)2(x − 1)2 = 0

Solucion (sin hallar las constantes):

T (n) = C12n + C2n2n + C31n + C4n1n

URJC DAA 34 / 37

Page 35: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Recurrencias no homogeneas - caso general

Dado T (0) = 1, y usando T (n) = 2T (n − 1) + n + 2n tenemos quehallar T (1), T (2) y T (3), para formar un sistema de 4 ecuaciones y 4incognitas (las constantes):

T (1) = 5 T (2) = 16 T (3) = 43

C1 + C3 = 1 = T (0)2C1 + 2C2 + C3 + C4 = 5 = T (1)

4C1 + 8C2 + C3 + 2C4 = 16 = T (2)8C1 + 24C2 + C3 + 3C4 = 43 = T (3)

Solucion final (C1 = 3, C2 = 1, C3 = −2 y C4 = −1):

T (n) = 3 · 2n + n2n − 2− n ∈ Θ(n2n)

URJC DAA 35 / 37

Page 36: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Metodo de cambio de variable

Recurrencia: T (n) = 4T (n/2) + n T (1) = 1 T (2) = 6

Cambio: n = 2k ⇒ T (2k) = 4T (2k−1) + 2k

T (n) = T (2k) = t(k) ⇒ t(k) = 4t(k − 1) + 2k Nueva recurrencia

Ecuacion caracterıstica: (x − 4)(x − 2) = 0

t(k) = C1(4k) + C2(2k) = C1(2k)2 + C2(2k)

Deshaciendo el cambio: T (n) = C1n2 + C2n

Hallando las constantes: T (n) = 2n2 − n ∈ θ(n2)

URJC DAA 36 / 37

Page 37: Diseno~ y An alisis de Algoritmos · Y tendremos3casos segun los valores de a, b y k URJC DAA 18 / 37. Tema 3.2: E ciencia de algoritmos recursivos Expansi on de recurrencias Teorema

Tema 3.2: Eficiencia de algoritmos recursivos Metodo general para resolucion de relaciones de recurrencia

Expansion de recurrencias (mismo ejemplo)

T (n) = T (n) = 4T (n/2) + n

= 4[4T(n

4

)+

n

2

]+ n = 42T

( n

22

)+ 2n + n

= 4[4[4T(n

8

)+

n

4

]+

n

2

]+ n = 43T

( n

23

)+ 4n + 2n + n

= 4iT( n

2i

)+ n

i−1∑j=0

2j = 4iT( n

2i

)+ n(2i − 1)

El caso base T (1) se alcanza cuando n = 2i , n2 = (2i )2 = (22)i = 4i .Sustituyendo:

T (n) = n2 + n(n − 1) = 2n2 − n

URJC DAA 37 / 37