Projeto e Análise de Algoritmos Recorrências Teorema Mestre · –O teorema mestre fornece um...
Transcript of Projeto e Análise de Algoritmos Recorrências Teorema Mestre · –O teorema mestre fornece um...
Projeto e Análise de Algoritmos
Recorrências
Teorema Mestre
Prof. Humberto Brandão
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:
• 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