102
An´ alise de Algoritmos Solução de recorrências – p. 1/44

Análise de Algoritmos - Solução de Recorrências

Embed Size (px)

Citation preview

Page 1: Análise de Algoritmos - Solução de Recorrências

Analise de Algoritmos

Solução de recorrências

–p. 1/44

Page 2: Análise de Algoritmos - Solução de Recorrências

Recorrências

Uma recorrência é uma expressão que dá o valorde uma função em termos dos valores "anteriores"da mesma função.

– p. 2/44

Page 3: Análise de Algoritmos - Solução de Recorrências

Recorrências

Uma recorrência é uma expressão que dá o valorde uma função em termos dos valores "anteriores"da mesma função.

Para analisar o consumo de tempo de umalgoritmo recursivo é necessário resolver umarecorrência.

– p. 2/44

Page 4: Análise de Algoritmos - Solução de Recorrências

Recorrências

O exemplo clássico de recorrência, provavelmenteo mais famoso, é a fórmula de Fibonacci:

F (n) =

!"""#

"""$

0 se n = 0

1 se n = 1

F (n! 1) + F (n! 2) se n " 2

– p. 3/44

Page 5: Análise de Algoritmos - Solução de Recorrências

Recorrências

O exemplo clássico de recorrência, provavelmenteo mais famoso, é a fórmula de Fibonacci:

F (n) =

!"""#

"""$

0 se n = 0

1 se n = 1

F (n! 1) + F (n! 2) se n " 2

Uma “fórmula fechada” para F (n) é dada por:

F (n) =1#5

%1 +

#5

2

&n

! 1#5

%1!

#5

2

&n

– p. 3/44

Page 6: Análise de Algoritmos - Solução de Recorrências

Recorrências

Um outro exemplo clássico de recorrência é:

F (n) =

!#

$1 se n = 0

n.F (n! 1) se n " 1

– p. 4/44

Page 7: Análise de Algoritmos - Solução de Recorrências

Recorrências

Um outro exemplo clássico de recorrência é:

F (n) =

!#

$1 se n = 0

n.F (n! 1) se n " 1

Uma fórmula fechada para F (n) é dada por:

F (n) = n.F (n! 1)

= n.(n! 1).F (n! 2) = · · · == n.(n! 1).(n! 2) . . . 2.1.1

= n!– p. 4/44

Page 8: Análise de Algoritmos - Solução de Recorrências

Recorrências

Resolver uma recorrência é encontrar uma“fórmula fechada” que dê o valor da funçãodiretamente em termos do seu argumento.

– p. 5/44

Page 9: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Vamos analisar novamente o consumo de tempodo algoritmo da busca binária.

– p. 6/44

Page 10: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Vamos analisar novamente o consumo de tempodo algoritmo da busca binária. Em cada iteração,o algoritmo descarta metade do vetor.

– p. 6/44

Page 11: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Vamos analisar novamente o consumo de tempodo algoritmo da busca binária. Em cada iteração,o algoritmo descarta metade do vetor. Sedenotamos por T (n) o número máximo deiterações realizadas pela busca binária sobre umvetor com n elementos,

– p. 6/44

Page 12: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Vamos analisar novamente o consumo de tempodo algoritmo da busca binária. Em cada iteração,o algoritmo descarta metade do vetor. Sedenotamos por T (n) o número máximo deiterações realizadas pela busca binária sobre umvetor com n elementos, a função T (n) pode serexpressa pela seguinte recorrência:

T (n) = T ('n2

() + 1, T (1) = 1

– p. 6/44

Page 13: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Para obter uma solução, supomos inicialmente quen = 2k.

– p. 7/44

Page 14: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Para obter uma solução, supomos inicialmente quen = 2k.

T (n) = T)n2

*+ 1

=)T) n

22

*+ 1

*+ 1 = T

) n

22

*+ 2

=)T) n

23

*+ 1

*+ 2 = T

) n

23

*+ 3

= · · ·

= T) n

2k

*+ k = k + 1 = log n+ 1

– p. 7/44

Page 15: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Podemos agora tentar mostrar queT (n) $ log n+ 1, %n " 1, por indução em n.

– p. 8/44

Page 16: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Podemos agora tentar mostrar queT (n) $ log n+ 1, %n " 1, por indução em n.

Para n = 1, T (1) = 1 = log 1 + 1

– p. 8/44

Page 17: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Podemos agora tentar mostrar queT (n) $ log n+ 1, %n " 1, por indução em n.

Para n = 1, T (1) = 1 = log 1 + 1

Para n > 1, temos

– p. 8/44

Page 18: Análise de Algoritmos - Solução de Recorrências

Recorrências - busca binária

Podemos agora tentar mostrar queT (n) $ log n+ 1, %n " 1, por indução em n.

Para n = 1, T (1) = 1 = log 1 + 1

Para n > 1, temos

T (n) = T ('n2

() + 1

$ (log('n2

() + 1) + 1

$ log)n2

*+ 2 = (log n! 1) + 2

= log n+ 1

– p. 8/44

Page 19: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Consideremos a recorrência

T (n) = 2T ('n2

() + n! 1, T (1) = 1

– p. 9/44

Page 20: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Consideremos a recorrência

T (n) = 2T ('n2

() + n! 1, T (1) = 1

Podemos conjecturar que T (n) $ n2 e tentar provarpor indução em n.

– p. 9/44

Page 21: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Consideremos a recorrência

T (n) = 2T ('n2

() + n! 1, T (1) = 1

Podemos conjecturar que T (n) $ n2 e tentar provarpor indução em n.

T (1) = 1 $ 12

– p. 9/44

Page 22: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Consideremos a recorrência

T (n) = 2T ('n2

() + n! 1, T (1) = 1

Podemos conjecturar que T (n) $ n2 e tentar provarpor indução em n.

T (1) = 1 $ 12

T (2) = 2T (1) + 1 = 3 < 22

– p. 9/44

Page 23: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Para n " 3, temos

– p. 10/44

Page 24: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Para n " 3, temos

T (n) = 2T ('n2

() + n! 1

$ 2'n2

(2+ n! 1

$ 2)n2

*2+ n! 1

$ n2

2+ n! 1

$ n2

2+

n2

2= n2, %n > 0

– p. 10/44

Page 25: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Será n2 uma boa estimativa para T (n)?

–p. 11/44

Page 26: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Será n2 uma boa estimativa para T (n)?Será que conseguimos provar que T (n) $ cn, paraalguma constante c > 0 e n " n0?

–p. 11/44

Page 27: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Será n2 uma boa estimativa para T (n)?Será que conseguimos provar que T (n) $ cn, paraalguma constante c > 0 e n " n0? Vamos tentar.

– p. 11/44

Page 28: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

T (n) = 2T ('n2

() + n! 1

$ 2c'n2

(+ n! 1

$ 2c)n2

*+ n! 1

$ cn+ n! 1 ! cn

Para qualquer c > 0.

– p. 12/44

Page 29: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

T (n) = 2T ('n2

() + n! 1

$ 2c'n2

(+ n! 1

$ 2c)n2

*+ n! 1

$ cn+ n! 1 ! cn

Para qualquer c > 0. Logo,

T (n) ! cn

– p. 12/44

Page 30: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

E que tal T (n) $ n log2 n+ 1?

–p. 13/44

Page 31: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

E que tal T (n) $ n log2 n+ 1?

T (1) = 1 = 1 log 1 + 1

– p. 13/44

Page 32: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

E que tal T (n) $ n log2 n+ 1?

T (1) = 1 = 1 log 1 + 1

T (2) = 2T (1) + 1 = 3 = 2 log 2 + 1

– p. 13/44

Page 33: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

E que tal T (n) $ n log2 n+ 1?

T (1) = 1 = 1 log 1 + 1

T (2) = 2T (1) + 1 = 3 = 2 log 2 + 1

Vamos então tentar mostrar que

T (n) $ n log2 n+ 1

para n " 1.

– p. 13/44

Page 34: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

T (n) = 2T ('n2

() + n! 1

$ 2('n2

(log

'n2

(+ 1) + n! 1

$ 2()n2

*log

)n2

*+ 1) + n! 1

= n(log n! 1) + n+ 1 = n log n+ 1

– p. 14/44

Page 35: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

T (n) = 2T ('n2

() + n! 1

$ 2('n2

(log

'n2

(+ 1) + n! 1

$ 2()n2

*log

)n2

*+ 1) + n! 1

= n(log n! 1) + n+ 1 = n log n+ 1

Portanto,T (n) $ n log n+ 1

para n " 1.– p. 14/44

Page 36: Análise de Algoritmos - Solução de Recorrências

Recorrências

Os exemplos anteriores mostram que a solução deuma recorrência pode ser obtida:

1. Desenvolvendo (ou “desenrolando”) arecorrência.

2. Estimando a solução e provando o resultadopor indução.

Estas duas formas conjuntas recebem o nome demétodo da substituição.

– p. 15/44

Page 37: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Consideremos a recorrência

T (n) = T ('n2

() + T (

+n2

,) + 1, T (1) = 1

– p. 16/44

Page 38: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Consideremos a recorrência

T (n) = T ('n2

() + T (

+n2

,) + 1, T (1) = 1

Podemos conjecturar que T (n) $ cn e tentar provarpor indução em n.

– p. 16/44

Page 39: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Consideremos a recorrência

T (n) = T ('n2

() + T (

+n2

,) + 1, T (1) = 1

Podemos conjecturar que T (n) $ cn e tentar provarpor indução em n. É comum partimos logo paraanalisar o caso geral, pois a base geralmente podeser acertada.

– p. 16/44

Page 40: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

T (n) = T ('n2

() + T (

+n2

,) + 1

$ c'n2

(+ c

+n2

,+ 1

= cn+ 1

O que não implica que T (n) $ cn.

– p. 17/44

Page 41: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

T (n) = T ('n2

() + T (

+n2

,) + 1

$ c'n2

(+ c

+n2

,+ 1

= cn+ 1

O que não implica que T (n) $ cn.Importante: precisamos provar a forma exata dahipótese indutiva.

– p. 17/44

Page 42: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Uma forma de contornar este problema é subtrairum termo de ordem menor. Por exemplo, tomemosagora T (n) $ cn! 1.

– p. 18/44

Page 43: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Uma forma de contornar este problema é subtrairum termo de ordem menor. Por exemplo, tomemosagora T (n) $ cn! 1.

T (n) = T ('n2

() + T (

+n2

,) + 1

$ (c'n2

(! 1) + (c

+n2

,! 1) + 1

$ cn! 1

para qualquer c positivo.

– p. 18/44

Page 44: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exemplo

Uma forma de contornar este problema é subtrairum termo de ordem menor. Por exemplo, tomemosagora T (n) $ cn! 1.

T (n) = T ('n2

() + T (

+n2

,) + 1

$ (c'n2

(! 1) + (c

+n2

,! 1) + 1

$ cn! 1

para qualquer c positivo. Tomando c = 2, temosT (1) = 1 $ 2(1)! 1. Logo, T (n) $ 2n! 1.

– p. 18/44

Page 45: Análise de Algoritmos - Solução de Recorrências

Recorrências - Exercícios

1. Resolva a recorrência T (n) = T (-n2

.) + 7n+ 2,

T (1) = 1.2. Mostre que a solução de T (n) = T (n! 1) + n é O(n2).3. Mostre que a solução de T (n) = T (

/n2

0) + 1 é O(log n).

4. Mostre que a solução de T (n) = 2T (-n2

.+ 17) + n é

O(n log n).5. Resolva a recorrência T (n) = 3T (

-n2

.) + n, T (1) = 1.

6. Resolva a recorrência T (n) = 3T (-n3

.) + 1, T (1) = 1.

7. Mostre que a solução de T (n) = 3T1n2

2+ n é O(nlog2 3).

8. Mostre que a solução de T (n) = 4T1n2

2+ n é O(n2).

– p. 19/44

Page 46: Análise de Algoritmos - Solução de Recorrências

Analise de Algoritmos

Identidades úteis

– p. 20/44

Page 47: Análise de Algoritmos - Solução de Recorrências

Identidades úteis

Apresentamos a seguir algumas igualdades edesigualdades que são úteis na análise algoritmos.

– p. 21/44

Page 48: Análise de Algoritmos - Solução de Recorrências

Identidades úteis

Apresentamos a seguir algumas igualdades edesigualdades que são úteis na análise algoritmos.

Serie aritmetica: Se ai = ai!1 + c, onde c é umaconstante, então

a1 + a2 + a3 + · · ·+ an =n(an + a1)

2

– p. 21/44

Page 49: Análise de Algoritmos - Solução de Recorrências

Série geométrica

Se ai = cai!1, onde c &= 1 é uma constante, então

a1 + a2 + a3 + · · ·+ an =a1(cn ! 1)

c! 1

Se 0 < c < 1, então'3

i=1

ai =a1

1! c

– p. 22/44

Page 50: Análise de Algoritmos - Solução de Recorrências

Soma de quadrados

n3

i=1

i2 =n(n+ 1)(2n + 1)

6

– p. 23/44

Page 51: Análise de Algoritmos - Solução de Recorrências

Logaritmos

logb a =logc a

logc b

aloga x = x

– p. 24/44

Page 52: Análise de Algoritmos - Solução de Recorrências

Aproximação de Stirling

n! =#2!n

)ne

*n(1 +O(

1

n))

Em particular, a aproximação de Stirling implicaque

log(n!) = !(n log n)

– p. 25/44

Page 53: Análise de Algoritmos - Solução de Recorrências

Analise de Algoritmos

Árvore de recursão

–p. 26/44

Page 54: Análise de Algoritmos - Solução de Recorrências

Árvore de recursão

Árvore de recursão é um método muito útil paraestimar a solução de uma recorrência. Uma vezobtida a solução, utilizamos o método anterior paraprová-la formalmente.A idéia da árvore de recursão é tentar representaro desenvolvimento da recorrência por um diagrama(geralmente uma árvore) onde cada nó representaum subproblema, e somar os custos por nível.

– p. 27/44

Page 55: Análise de Algoritmos - Solução de Recorrências

Exemplo 1

Consideremos a recorrência T (n) = 2T1(n2)

2+ n

– p. 28/44

Page 56: Análise de Algoritmos - Solução de Recorrências

Exemplo 2

T (n) = T1(n3)

2+ T

1(2n3 )

2+ n

– p. 29/44

Page 57: Análise de Algoritmos - Solução de Recorrências

Exemplo 3

T (n) = 3T1(n2)

2+ n2

– p. 30/44

Page 58: Análise de Algoritmos - Solução de Recorrências

ExercíciosUse árvore de recursão para determinar um limite superiorpara as recorrências abaixo, e depois prove o resultadousando indução ou substituição.1. T (n) = T (n/4) + T (n/2) + n2

2. T (n) = 3T1(n4 )

2+ n

3. T (n) = 4T1n2 + 2

2+ n

4. T (n) = T (n! a) + T (a) + cn

– p. 31/44

Page 59: Análise de Algoritmos - Solução de Recorrências

Analise de Algoritmos

Método mestre

–p. 32/44

Page 60: Análise de Algoritmos - Solução de Recorrências

Método mestre

O método mestre fornece uma receita para asolução de recorrências da forma

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

onde a " 1 e b > 1 são constantes e f(n) é umafunção assintóticamente positiva.

– p. 33/44

Page 61: Análise de Algoritmos - Solução de Recorrências

Método mestre

Considere a recorrência

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

onde a " 1 e b > 1 são constantes, f(n) é umafunção assintóticamente positiva, e n/b pode ser(n/b) ou *n/b+. Então

1. Se f(n) = O(nlogb a!!) para alguma constante" > 0 então T (n) = !(nlogb a)

– p. 34/44

Page 62: Análise de Algoritmos - Solução de Recorrências

Método mestre

Considere a recorrência

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

onde a " 1 e b > 1 são constantes, f(n) é umafunção assintóticamente positiva, e n/b pode ser(n/b) ou *n/b+. Então

1. Se f(n) = O(nlogb a!!) para alguma constante" > 0 então T (n) = !(nlogb a)

2. Se f(n) = !(nlogb a) então T (n) = !(nlogb a log n)

– p. 34/44

Page 63: Análise de Algoritmos - Solução de Recorrências

Método mestre

3. Se f(n) = "(nlogb a+!) para alguma constante" > 0, e se af(n/b) $ cf(n) para algumaconstante c < 1 e n suficientemente grande,então T (n) = !(f(n))

– p. 35/44

Page 64: Análise de Algoritmos - Solução de Recorrências

Método mestre

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

T (n) Se

!(nlogb a) f(n) = O(nlogb a!!)

!(nlogb a log n) f(n) = !(nlogb a)

!(f(n)) f(n) = "(nlogb a+!)

e af(n/b) $ cf(n), c < 1

– p. 36/44

Page 65: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 1

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

– p. 37/44

Page 66: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 1

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

a = 9, b = 3 e f(n) = n

– p. 37/44

Page 67: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 1

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

a = 9, b = 3 e f(n) = n

nlogb a = nlog3 9 = n2

– p. 37/44

Page 68: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 1

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

a = 9, b = 3 e f(n) = n

nlogb a = nlog3 9 = n2

Logo, f(n) = O(nlogb a!!), onde " = 1

– p. 37/44

Page 69: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 1

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

a = 9, b = 3 e f(n) = n

nlogb a = nlog3 9 = n2

Logo, f(n) = O(nlogb a!!), onde " = 1

Pelo Caso 1, T (n) = !(n2).

– p. 37/44

Page 70: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 2

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

– p. 38/44

Page 71: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 2

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

a = 1, b = 3/2 e f(n) = 1

– p. 38/44

Page 72: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 2

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

a = 1, b = 3/2 e f(n) = 1

nlogb a = nlog3/2 1 = n0 = 1

– p. 38/44

Page 73: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 2

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

a = 1, b = 3/2 e f(n) = 1

nlogb a = nlog3/2 1 = n0 = 1

Logo, f(n) = 1 = !(nlogb a)

– p. 38/44

Page 74: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 2

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

a = 1, b = 3/2 e f(n) = 1

nlogb a = nlog3/2 1 = n0 = 1

Logo, f(n) = 1 = !(nlogb a)

Pelo Caso 2, T (n) = !(log n).

– p. 38/44

Page 75: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 3

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

– p. 39/44

Page 76: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 3

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

a = 3, b = 4 e f(n) = n log n

– p. 39/44

Page 77: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 3

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

a = 3, b = 4 e f(n) = n log n

nlogb a = nlog4 3

– p. 39/44

Page 78: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 3

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

a = 3, b = 4 e f(n) = n log n

nlogb a = nlog4 3

Logo, f(n) = n log n = "(nlog4 3+!)

– p. 39/44

Page 79: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 3

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

a = 3, b = 4 e f(n) = n log n

nlogb a = nlog4 3

Logo, f(n) = n log n = "(nlog4 3+!)

af(n/b) = 3(n/4) log(n/4) $ (3/4)n log n

– p. 39/44

Page 80: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 3

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

a = 3, b = 4 e f(n) = n log n

nlogb a = nlog4 3

Logo, f(n) = n log n = "(nlog4 3+!)

af(n/b) = 3(n/4) log(n/4) $ (3/4)n log n

Pelo Caso 3, T (n) = !(n log n).

– p. 39/44

Page 81: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 4

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

– p. 40/44

Page 82: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 4

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

a = 2, b = 2 e f(n) = n log n

– p. 40/44

Page 83: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 4

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

a = 2, b = 2 e f(n) = n log n

nlogb a = nlog2 2 = n

– p. 40/44

Page 84: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 4

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

a = 2, b = 2 e f(n) = n log n

nlogb a = nlog2 2 = n

Caso 3

–p. 40/44

Page 85: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 4

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

a = 2, b = 2 e f(n) = n log n

nlogb a = nlog2 2 = n

Caso 3

Mas, f(n) = n log n &= "(nlog2 2+!)

– p. 40/44

Page 86: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 4

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

a = 2, b = 2 e f(n) = n log n

nlogb a = nlog2 2 = n

Caso 3

Mas, f(n) = n log n &= "(nlog2 2+!)

Portanto, o método mestre não se aplica.

– p. 40/44

Page 87: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 5

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

– p. 41/44

Page 88: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 5

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

a = 2, b = 2 e f(n) = cn

– p. 41/44

Page 89: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 5

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

a = 2, b = 2 e f(n) = cn

nlogb a = nlog2 2 = n

– p. 41/44

Page 90: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 5

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

a = 2, b = 2 e f(n) = cn

nlogb a = nlog2 2 = n

Logo, f(n) = cn = !(n) = !(nlogb a)

– p. 41/44

Page 91: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 5

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

a = 2, b = 2 e f(n) = cn

nlogb a = nlog2 2 = n

Logo, f(n) = cn = !(n) = !(nlogb a)

Pelo Caso 2, T (n) = !(n log n).

– p. 41/44

Page 92: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 6

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

– p. 42/44

Page 93: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 6

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

a = 8, b = 2 e f(n) = cn2

– p. 42/44

Page 94: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 6

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

a = 8, b = 2 e f(n) = cn2

nlogb a = nlog2 8 = n3

– p. 42/44

Page 95: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 6

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

a = 8, b = 2 e f(n) = cn2

nlogb a = nlog2 8 = n3

Logo, f(n) = cn2 = O(nlogb a!!), onde " = 1

– p. 42/44

Page 96: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 6

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

a = 8, b = 2 e f(n) = cn2

nlogb a = nlog2 8 = n3

Logo, f(n) = cn2 = O(nlogb a!!), onde " = 1

Pelo Caso 1, T (n) = !(n3).

– p. 42/44

Page 97: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 7

T (n) = 7T (n/2) + cn2

– p. 43/44

Page 98: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 7

T (n) = 7T (n/2) + cn2

a = 7, b = 2 e f(n) = cn2

– p. 43/44

Page 99: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 7

T (n) = 7T (n/2) + cn2

a = 7, b = 2 e f(n) = cn2

nlogb a = nlog2 7

– p. 43/44

Page 100: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 7

T (n) = 7T (n/2) + cn2

a = 7, b = 2 e f(n) = cn2

nlogb a = nlog2 7

Logo, f(n) = cn2 = O(nlogb a!!), onde " > 0

– p. 43/44

Page 101: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exemplo 7

T (n) = 7T (n/2) + cn2

a = 7, b = 2 e f(n) = cn2

nlogb a = nlog2 7

Logo, f(n) = cn2 = O(nlogb a!!), onde " > 0

Pelo Caso 1, T (n) = !(nlog2 7).

– p. 43/44

Page 102: Análise de Algoritmos - Solução de Recorrências

Método mestre - Exercícios

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

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

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

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

5. T (n) = T (n/2) + 1

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

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

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

– p. 44/44