Recurrencias Fundamentos de análisis y diseño de algoritmos.

42
Recurrencias Fundamentos de análisis y diseño de algoritmos

Transcript of Recurrencias Fundamentos de análisis y diseño de algoritmos.

Page 1: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Fundamentos de análisis y diseño de algoritmos

Page 2: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Método de iteración

Método maestro*

Método de sustitución

Page 3: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Método de iteración

Expandir la recurrencia y expresarla como una suma de términos que dependen de n y de las condiciones iniciales

Page 4: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

T(n) = n + 3T(n/4), T(1)= (1)

Expandir la recurrencia 2 veces

Page 5: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

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

n + 3 ( n/4 + 3T(n/16))

n + 3 ( n/4 + 3(n/16 + 3T(n/64) ))

n + 3*n/4 + 32*n/16 + 33T(n/64)

Page 6: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

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

n + 3 ( n/4 + 3T(n/16))

n + 3 ( n/4 + 3(n/16 + 3T(n/64) ))

n + 3*n/4 + 32*n/16 + 33T(n/64)

¿Cuándo se detienen las iteraciones?

Page 7: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

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

n + 3 ( n/4 + 3T(n/16))

n + 3 ( n/4 + 3(n/16 + 3T(n/64) ))

n + 3*n/4 + 32*n/16 + 33T(n/64)

¿Cuándo se detienen las iteraciones?

Cuando se llega a T(1)

Page 8: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

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

n + 3 ( n/4 + 3T(n/16))

n + 3 ( n/4 + 3(n/16 + 3T(n/64) ))

n + 3*n/4 + 32*n/42 + 33T(n/43)

¿Cuándo se detienen las iteraciones?

Cuando se llega a T(1), esto es, cuando (n/4i)=1

Page 9: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

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

n + 3 ( n/4 + 3T(n/16))

n + 3 ( n/4 + 3(n/16 + 3T(n/64) ))

n + 3*n/4 + 32*n/42 + 33n/43 + … + 3log4nT(1)

¿Cuándo se detienen las iteraciones?

Cuando se llega a T(1), esto es, cuando (n/4i)=1

Page 10: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

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

n + 3 ( n/4 + 3T(n/16))

n + 3 ( n/4 + 3(n/16 + 3T(n/64) ))

n + 3*n/4 + 32*n/42 + 33(n/43) + … + 3log4n(1)

Después de iterar, se debe tratar de expresar como una sumatoria con forma cerrada conocida

Page 11: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

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

n + 3 ( n/4 + 3T(n/16))

n + 3 ( n/4 + 3(n/16 + 3T(n/64) ))

n + 3*n/4 + 32*n/42 + 33(n/43) + … + 3log4n(1)

n + 3n/4 + 32n/42 + 33n/43 + … + 3log4n(1)

Page 12: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

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

n + 3 ( n/4 + 3T(n/16))

n + 3 ( n/4 + 3(n/16 + 3T(n/64) ))

n + 3*n/4 + 32*n/42 + 33(n/43) + … + 3log4n(1)

n + 3n/4 + 32n/42 + 33n/43 + … + 3log4n(1)

=

=

= O(n)

)1(3)4/3(4 4log

0

log

n

i

nin

)())4/3(1(4*1)4/3(

1)4/3( 3log1)(log3log1)(log

444

4

nnnn nn

Page 13: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Resuelva por el método de iteración

T(n) = 2T(n/2) + 1, T(1)= (1)

Page 14: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Resuelva por el método de iteración

T(n) = 2T(n/2) + 1, T(1)= (1)

T(n) = 2T(n/2) + n, T(1)= (1)

Page 15: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Resuelva por el método de iteración

T(n) = 2T(n/2) + 1, T(1)= (1)

T(n) = 2T(n/2) + n, T(1)= (1)

T(n) = T(n/2) + 1, T(1)= (1)

Page 16: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Resuelva por el método de iteración

T(n) = 2T(n/2) + 1, T(1)= (1)

T(n) = 2T(n/2) + n, T(1)= (1)

T(n) = T(n/2) + 1, T(1)= (1)

T(n) = T(n/2) + n, T(1)= (1)

Page 17: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Iteración con árboles de recursión

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

Page 18: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

T(n/2) T(n/2)

Page 19: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4) T(n/4)

. . .

Page 20: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/4)2

T(n/8) T(n/8)

Page 21: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/4)2

T(n/8) T(n/8)

???

Page 22: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/22)2

T(n/23) T(n/23)

???

Page 23: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/22)2

T(n/23) T(n/23)

???

(n/2i)=1

n=2i

log2n=i

Page 24: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/22)2

T(n/23) T(n/23)

log2n

(n/2i)=1

n=2i

log2n=i

Page 25: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/4)2

T(n/8) T(n/8)

log2n

n2

Page 26: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/4)2

T(n/8) T(n/8)

log2n

n2

n2/2

Page 27: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/4)2

T(n/8) T(n/8)

log2n

n2

n2/2

n2/4

Page 28: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n2

(n/2)2 (n/2)2

T(n/4) T(n/4) T(n/4)

. . .

(n/4)2

T(n/8) T(n/8)

log2n

n2

n2/2

n2/4

Total=

n

i

in

i in

n 22 log

0

2log

0

2

2

1*

2

Page 29: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

n

i

in

i in

nTotal 22 log

0

2log

0

2

2

1*

2

)(12/1

1)2/1(* 2

)1(log2

2

nnTotaln

Page 30: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Resuelva construyendo el árbol

T(n) = 2T(n/2) + 1, T(1)= (1)

T(n) = 2T(n/2) + n, T(1)= (1)

Page 31: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Resuelva la recurrencia T(n) = T(n/3) + T(2n/3) + n

Indique una cota superior y una inferior

Page 32: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Resuelva la recurrencia T(n) = T(n/3) + T(2n/3) + 1

Indique una cota superior y una inferior

Page 33: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Resuelva la recurrencia T(n) = T(3n/4) + T(n/4) + n

Indique una cota superior y una inferior

Page 34: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Método maestro

Permite resolver recurrencias de la forma:

T(n) = aT(n/b) + f(n), donde a1, b>1

Page 35: Recurrencias Fundamentos de análisis y diseño de algoritmos.

RecurrenciasDado T(n) = aT(n/b) + f(n), donde a1, b>1, se puede acotar asintóticamente como sigue:

1.

Si para algún real

2.

Si para algún real

3.

Si para algún y si af(n/b)cf(n)

para algun c<1

)()( log abnnT

)()( log abnOnf 0

)log()( 2log nnnT ab

)()( log abnnf 0

))(()( nfnT

)()( log abnnf 0

Page 36: Recurrencias Fundamentos de análisis y diseño de algoritmos.

RecurrenciasDado T(n) = 9T(n/3) + n

Es ?

Es ?

29log3 nn Vs nnf )(

)()( log abnOnf

)( 2 nOn

Page 37: Recurrencias Fundamentos de análisis y diseño de algoritmos.

RecurrenciasDado T(n) = 9T(n/3) + n

Es ?

Es ?

Si se cumple que , por lo tanto, se cumple que:

29log3 nn Vs nnf )(

)()( log abnOnf

)( 2 nOn

1 )(nOn

)()( 2nnT

Page 38: Recurrencias Fundamentos de análisis y diseño de algoritmos.

RecurrenciasT(n) = T(2n/3) + 1

Es ?

Es ?

No existe

101log 2/3 nn Vs 1)( nf

)()( log abnOnf

)(1 0 nO

0

Page 39: Recurrencias Fundamentos de análisis y diseño de algoritmos.

RecurrenciasT(n) = T(2n/3) + 1

Es ?

Es ?

Si, por lo tanto, se cumple que:

101log 2/3 nn Vs 1)( nf

)1(1

)()( log abnnf

)(log)log*1()( 22 nnnT

Page 40: Recurrencias Fundamentos de análisis y diseño de algoritmos.

RecurrenciasT(n) =3 T(n/4) + nlog2n

Es ?

Es ?

Es ?

Si, y además, af(n/b)cf(n)

3(n/4)log2(n/4) cnlog2n

c=3/4 y se concluye que

793.03log4 nn Vs nnnf 2log)(

)()( log abnnf )()( log abnOnf

)()( log abnnf

)log()( 2 nnnT

Page 41: Recurrencias Fundamentos de análisis y diseño de algoritmos.

RecurrenciasResuelva

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

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

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

Page 42: Recurrencias Fundamentos de análisis y diseño de algoritmos.

Recurrencias

Método de sustitución

Suponer la forma de la solución y probar por inducción matemática