recurrencias fundamentos de análisis y diseño de algoritmos
TRANSCRIPT
Recurrencias
Fundamentos de análisis y diseño de algoritmos
Método de iteración
Método maestro*
Método de sustitución
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
Recurrencias
T(n) = n + 3T(n/4), T(1)= (1)
Expandir la recurrencia 2 veces
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)
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?
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)
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
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
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
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)
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
Recurrencias
Resuelva por el método de iteración
T(n) = 2T(n/2) + 1, T(1)= (1)
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)
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)
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)
Recurrencias
Iteración con árboles de recursión
T(n) = 2T(n/2) + n2
Recurrencias
n2
T(n/2) T(n/2)
Recurrencias
n2
(n/2)2 (n/2)2
T(n/4) T(n/4) T(n/4) T(n/4)
. . .
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)
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)
???
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)
???
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
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
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
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
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
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
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
Recurrencias
Resuelva construyendo el árbol
T(n) = 2T(n/2) + 1, T(1)= (1)
T(n) = 2T(n/2) + n, T(1)= (1)
Recurrencias
Resuelva la recurrencia T(n) = T(n/3) + T(2n/3) + n
Indique una cota superior y una inferior
Recurrencias
Resuelva la recurrencia T(n) = T(n/3) + T(2n/3) + 1
Indique una cota superior y una inferior
Recurrencias
Resuelva la recurrencia T(n) = T(3n/4) + T(n/4) + n
Indique una cota superior y una inferior
Recurrencias
Método maestro
Permite resolver recurrencias de la forma:
T(n) = aT(n/b) + f(n), donde a1, b>1
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
RecurrenciasDado T(n) = 9T(n/3) + n
Es ?
Es ?
29log3 nn Vs nnf )(
)()( log abnOnf
)( 2 nOn
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
RecurrenciasT(n) = T(2n/3) + 1
Es ?
Es ?
No existe
101log 2/3 nn Vs 1)( nf
)()( log abnOnf
)(1 0 nO
0
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
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
RecurrenciasResuelva
T(n) =4T(n/2) + n
T(n) =4T(n/2) + n2
T(n) =4T(n/2) + n3
Recurrencias
Método de sustitución
Suponer la forma de la solución y probar por inducción matemática