You are on page 1of 45

Fundamentos de anlisis y

diseo de algoritmos
Recurrencias

Mtodo de iteracin

Mtodo maestro*
Mtodo de sustitucin

Recurrencias
Mtodo de iteracin

Expandir la recurrencia y expresarla como una suma de


trminos 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 )
Cundo 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 )
Cundo 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 )
Cundo 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 + + 3log4nT(1)
Cundo 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)
Despus 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)
= n

log4 n
i 0

(3 / 4)i 3log4 n (1)

(3 / 4) (log4 n ) 1 1
= n
(3 / 4) 1

= O(n)

n log4 3

n * 4(1 (3 / 4) (log4 n ) 1 )

(n log4 3 )

Recurrencias
Resuelva por el mtodo de iteracin

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

(1)

Recurrencias
Resuelva por el mtodo de iteracin

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

(1)

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

(1)

Recurrencias
Resuelva por el mtodo de iteracin

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 mtodo de iteracin

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)

Demuestre que T(n) = T( n/2 ) + n, es

(nlogn)

Recurrencias
Iteracin con rboles de recursin

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/4)2

(n/2)2

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

...
T(n/8)

T(n/8)

T(n/4)

Recurrencias
n2
(n/2)2

(n/2)2

???

(n/4)2

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

...
T(n/8)

T(n/8)

T(n/4)

Recurrencias
n2
(n/2)2

(n/2)2

???

(n/4)2

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

...
T(n/8)

T(n/8)

T(n/4)
(n/2i)2=1
(n/2i)=1

n=2i
log n=i

Recurrencias
n2

n2
(n/2)2

(n/2)2

lg n

(n/4)2

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

...
T(n/8)

T(n/8)

T(n/4)

Recurrencias
n2

n2
(n/2)2

(n/2)2

lg n

(n/4)2

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

...
T(n/8)

T(n/8)

T(n/4)

n2/2

Recurrencias
n2

n2
(n/2)2

(n/2)2

n2/2

lg n

(n/4)2

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

...
T(n/8)

T(n/8)

T(n/4)

n2/4

Recurrencias
n2

n2
(n/2)2

(n/2)2

n2/2

lg n

(n/4)2

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

n2/4

T(n/4)

...
T(n/8)

T(n/8)

Total=

n2
0 i
2

lg n
i

n2 *

lg n
i 0

1
2

Recurrencias
Total

Total

n2
0 i
2

lg n
i

n2 *

(1 / 2) (lg n 1) 1
n *
1/ 2 1
2

lg n
i 0

1
2

(n 2 )

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
Mtodo maestro

Permite resolver recurrencias de la forma:


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

Recurrencias
Dado T(n) = aT(n/b) + f(n), donde a 1, b>1, se puede acotar
asintticamente como sigue:

1. T (n)
Si f (n)

(nlogb a )

O(nlogb a )

2. T (n)

(nlogb a lg n)

Si f (n)

(nlogb a )

3. T (n)

( f (n))

Si f (n)

(nlogb a )

para algun c<1

para algn

para algn

para algn

y si af(n/b) cf(n)

Recurrencias
Dado T(n) = 9T(n/3) + n

log3 9

Es f (n)
Es n

Vs

O(nlogb a ) ?

O( n 2 ) ?

f (n) n

Recurrencias
Dado T(n) = 9T(n/3) + n

log3 9

Es f (n)

f (n) n

Vs

O(nlogb a ) ?

Es n

O( n 2 ) ?

Si
que:

se cumple que n

T (n)

(n )

O(n), por lo tanto, se cumple

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

nlog3 / 2 1
Es f (n)

n0 1

O(nlogb a ) ?

Es 1 O(n0 ) ?
No existe

Vs

f (n) 1

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

nlog3 / 2 1
Es

f (n)

Es

n0 1

Vs

f (n) 1

(nlogb a ) ?

(1)

Si, por lo tanto, se cumple que:

T (n)

(1* lg n)

(lg n)

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

nlog4 3
Es f (n)
Es

n0.793

Vs

f (n) n lg n

O(nlogb a ) ?

f (n)

Es f (n)

(nlogb a ) ?
(nlogb a ) ?

Si, y adems, af(n/b) cf(n)

3(n/4)lg(n/4)

cnlgn

3(n/4)lgn - 3(n/4)*2
(3/4)nlgn

cnlgn

cnlgn c=3/4 y se concluye que T (n)

(n lg n)

Recurrencias
T(n) =2T(n/2) + nlgn

Muestre que no se puede resolver por el mtodo maestro

Recurrencias
Resuelva

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

Recurrencias
Mtodo de sustitucin

Suponer la forma de la solucin y probar por induccin


matemtica

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

Suponer que la solucin es de la forma T(n)=O(nlgn)


Probar que T(n) cnlgn.
Se supone que se cumple para n/2 y se prueba para n

Hipotesis inductiva: T( n/2 )

c n/2 lg ( n/2 )

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

Probar que T(n) cnlgn.


Hiptesis inductiva: T( n/2 )

c n/2 lg ( n/2 )

Paso inductivo:
T(n)

2(c n/2 lg ( n/2 )) + n

cn lg (n/2) + n
= cn lg (n) cn + n, para c 1, haga c=1
cn lg n

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

Probar que T(n) cnlgn.


Paso base: si c=1, probar que T(1)=1 se cumple
T(1)

1*1lg 1 ?

0?

No, se debe escoger otro valor para c

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

Probar que T(n) cnlgn.


Paso base: si c=2, probar que T(1)=1 se cumple
T(1)

2*1lg 1 ?

0?

No, se puede variar k.


Para esto, se calcula T(2) y se toma como valor inicial

Recurrencias
Probar que T(n) cnlgn.

T(2)=2T(0)+2=4
Paso base: si c=1, probar que T(2)=4 se cumple
T(2)
4

1*2lg 2 ?
2?

No, se puede variar c.

Recurrencias
Probar que T(n) cnlgn.

T(2)=2T(0)+2=4
Paso base: si c=3, probar que T(2)=4 se cumple
T(2)
4

3*2lg 2 ?
6?

Si, se termina la demostracin