22
Projeto e Análise de Algoritmos Recorrências Teorema Mestre Prof. Humberto Brandão [email protected] Universidade Federal de Alfenas Laboratório de Pesquisa e Desenvolvimento (LP&D) Instituto de Ciências Exatas (ICEx) versão da aula: 0.3

Projeto e Análise de Algoritmos Recorrências Teorema Mestre · –O teorema mestre fornece um “livro de receitas”para resolver algumas equações de recorrência. ... d d d

Embed Size (px)

Citation preview

Projeto e Análise de Algoritmos

Recorrências

Teorema Mestre

Prof. Humberto Brandão

[email protected]

Universidade Federal de Alfenas

Laboratório de Pesquisa e Desenvolvimento (LP&D)

Instituto de Ciências Exatas (ICEx)

versão da aula: 0.3

Última aula...

• Recorrências...

1)1(

2)1()2(

...

4)4()3(

3)3()2(

2)2()1(

1)1()(

nT

nTT

nTnT

nTnT

nTnT

nTnT

)(2

)(

2)(

2

2

2)(

2

)1()(

)1()2(...4321)(

22

2

22

1

1

1

nnn

nT

nnnT

nnnn

nnnT

nnn

niinT

nnnT

n

i

n

i

Métodos gerais para resolver recorrências

Método de substituição

Método de Árvore de Recursão

Teorema Mestre

Método geral para resolver recorrências

• Método da Substituição: estabelecemos um limite hipotético e depois empregamos a indução matemática para provar que nossa suposição era correta.

Método geral para resolver recorrências

• Método da Substituição: estabelecemos um limite hipotético e depois empregamos a indução matemática para provar que nossa suposição era correta.

• Método de Árvore de Recursão: converte a recorrência em uma árvore cujos nós representam os custos envolvidos em diversos níveis da recursão.

• Mais detalhes em Cormen (2002).

Método geral para resolver recorrências

• Teorema mestre:

– O teorema mestre fornece um “livro de receitas” para resolver algumas equações de recorrência.

Método geral para resolver recorrências

• Teorema mestre:

– O teorema mestre fornece um “livro de receitas” para resolver algumas equações de recorrência.

– Resolve recorrências no formato

• onde a >= 1 e b > 1 são constantes e f(n) é uma função assintoticamente positiva podem ser resolvidas usando o Teorema Mestre.

f(n)n/baTT(n)

Método geral para resolver recorrências

• Teorema mestre: f(n)n/baTT(n)

Método geral para resolver recorrências

• Teorema mestre:

• Se para alguma constante > 0, então

f(n)n/baTT(n)

abnnf

log)(

)()(log abnnT

abnnf

log)(

)()(log abnnT

Método geral para resolver recorrências

• Teorema mestre:

• Se para alguma constante > 0, então

• Se então

f(n)n/baTT(n)

abnnf

log)(

)()(log abnnT

abnnflog

)(

)log()(log

nnnTab

abnnf

log)(

)()(log abnnT

abnnflog

)(

)log()(log

nnnTab

Método geral para resolver recorrências

• Teorema mestre:

• Se para alguma constante > 0, então

• Se então

• Se para alguma constante > 0,

e se para alguma constante c < 1 e para todo nsuficientemente grande, então

f(n)n/baTT(n)

abnnf

log)(

)()(log abnnT

abnnflog

)(

)log()(log

nnnTab

abnnf

log)(

)()/( ncfbnaf

))(()( nfnT

abnnf

log)(

)()(log abnnT

abnnflog

)(

)log()(log

nnnTab

Método geral para resolver recorrências

• Teorema mestre:

– Exemplo 01

– Qual caso do Teorema mestre?

f(n)n/baTT(n)

nnf

b

a

nnTT(n)

)(

3

9

3/9

Método geral para resolver recorrências

• Teorema mestre:

– Exemplo 01

• Aplicando o caso 1 do teorema mestre:

– Se para alguma constante > 0, então

f(n)n/baTT(n)

nnf

b

a

nnTT(n)

)(

3

9

3/9

abnnf

log)(

)()(log abnnT

Método geral para resolver recorrências

• Teorema mestre:

– Exemplo 01

• Aplicando o caso 1 do teorema mestre:

– Se para alguma constante > 0, então

f(n)n/baTT(n)

nnf

b

a

nnTT(n)

)(

3

9

3/9

abnnf

log)(

)()(log abnnT

)()( 2

999,1

nnT

nn

Método geral para resolver recorrências

• Teorema mestre:

– Exemplo 02

– Qual caso do Teorema mestre?

f(n)n/baTT(n)

nnf

b

a

nnTT(n)

)(

4

2

4/2

Método geral para resolver recorrências

• Teorema mestre:

– Exemplo 02

• Aplicando o caso 2 do teorema mestre:

– Se então

f(n)n/baTT(n)

abnnflog

)(

)log()(log

nnnTab

nnf

b

a

nnTT(n)

)(

4

2

4/2

Método geral para resolver recorrências

• Teorema mestre:

– Exemplo 02

• Aplicando o caso 2 do teorema mestre:

– Se então

f(n)n/baTT(n)

abnnflog

)(

)log()(log

nnnTab

2/12log4 nnn

)log()( nnnT

nnf

b

a

nnTT(n)

)(

4

2

4/2

Método geral para resolver recorrências

• Teorema mestre:

– Exemplo 03

– Qual caso do Teorema mestre?

nnnf

b

a

nnnTT(n)

log)(

4

3

log4/3

Método geral para resolver recorrências

• Teorema mestre:

– Exemplo 03

• Aplicando o caso 3 do teorema mestre:

– Se para alguma constante > 0,

e se para alguma constante c < 1 e para todo nsuficientemente grande, então

nnnf

b

a

nnnTT(n)

log)(

4

3

log4/3

abnnf

log)(

)()/( ncfbnaf

))(()( nfnT

)(log 7925,0lognnnn

ab

Método geral para resolver recorrências

• Aplicando o caso 3 do teorema mestre:

– Precisamos mostrar também que a condição de regularidade é válida para f(n).

– ...e se para alguma constante c < 1 e para todo n suficientemente grande, então

)()/( ncfbnaf

))(()( nfnT

4/3

log2log4

3

log4

34loglog

4

3

log4

3)4/log()4/(3

)()4/(3

)()/(

cpara

ncnnn

nnnn

nnnn

ncfnf

ncfbnaf

nnnf

b

a

nnnTT(n)

log)(

4

3

log4/3

)log()(

Portanto,

nnnT

Exercícios

• No site!!!

Bibliografia

• CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; (2002). Algoritmos – Teoria e Prática. Tradução da 2ª edição americana. Rio de Janeiro. Editora Campus.

• TAMASSIA, ROBERTO; GOODRICH, MICHAEL T. (2004). Projeto de Algoritmos - Fundamentos, Análise e Exemplos da Internet.