O Teorema Mestre da Complexidade
O Teorema Mestre da Complexidade
Luís Fernando Schultz Xavier da Silveira
Departamento de Informática e Estatística - INE - CTC - UFSC
23 de abril de 2010
O Teorema Mestre da Complexidade
Conteúdo
1 Enunciado
2 DemonstraçãoPreliminaresPeso das FolhasO Primeiro Caso do Teorema MestreO Segundo Caso do Teorema MestreTrabalho no Nó RaizO Terceiro Caso do Teorema Mestre
O Teorema Mestre da Complexidade
Enunciado
Enunciado
TeoremaSeja T : N→ R+
∗ uma função satisfazendo
“T(n) = aT(n
b
)+ f (n)”
para valores a, b ∈N, a > 1 e b > 2, e uma função f : N→ R+∗ .
Então
T ∈
Θ(nlogb a) , ∃ε > 0 : f ∈ O
(nlogb a−ε
)Θ(nlogb a log n
), f ∈ Θ
(nlogb a)
Θ(f ),∃w ∈ (0; 1), x0 ∈N : ∀n > x0,
“af(n
b
)6 f (n)”
O Teorema Mestre da Complexidade
Enunciado
Tecnicalidades
Rigorosamente falando, o enunciado do teorema anterior está
informal, pois ele não trata do “caso base” de T e a divisãonb
pode não ser um número inteiro.
Por outro lado, o enunciado completo não caberia em um slide:-). Vamos então preencher essas lacunas aos poucos.
O Teorema Mestre da Complexidade
Enunciado
Tecnicalidades
Rigorosamente falando, o enunciado do teorema anterior está
informal, pois ele não trata do “caso base” de T e a divisãonb
pode não ser um número inteiro.Por outro lado, o enunciado completo não caberia em um slide:-). Vamos então preencher essas lacunas aos poucos.
O Teorema Mestre da Complexidade
Enunciado
Tecnicalidades
PorT(n) = aT
(nb
)+ f (n),
entendemos que existe um número n0 ∈ N e que, para todon > n0, existem números kn[0], kn[1], . . . , kn[a− 1] ∈N, tais que
∀i, 0 6 i < a, 0 6 kn[i] 6⌈n
b
⌉−⌊n
b
⌋e
T(n) =a−1
∑i=0
T(⌊n
b
⌋+ kn[i]
)+ f (n).
Como isso não altera a definição, assumiremos n0 > 1.
O Teorema Mestre da Complexidade
Enunciado
Tecnicalidades
PorT(n) = aT
(nb
)+ f (n),
entendemos que existe um número n0 ∈ N e que, para todon > n0, existem números kn[0], kn[1], . . . , kn[a− 1] ∈N, tais que
∀i, 0 6 i < a, 0 6 kn[i] 6⌈n
b
⌉−⌊n
b
⌋e
T(n) =a−1
∑i=0
T(⌊n
b
⌋+ kn[i]
)+ f (n).
Como isso não altera a definição, assumiremos n0 > 1.
O Teorema Mestre da Complexidade
Enunciado
Tecnicalidades
Por∃x0 ∈N, w ∈ (0; 1) : ∀n > x0, af
(nb
)6 wf (n),
entendemos que existem x0 ∈ N, w ∈ (0; 1) tais que, para todon > maxn0, x0,
a−1
∑i=0
f(⌊n
b
⌋+ kn[i]
)6 wf (n).
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
DefiniçãoSeja n ∈N \ 0 e b ∈N, b > 2. Definimos
πb(n) = maxk∈N
bk : bk 6 n
como a maior potência de b menor ou igual a n.
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
LemaSeja n ∈N \ 0 e b ∈N, b > 2. Então πb(bn) = bπb(n).
Demonstração.Claramente bπb(n) é uma potência de b satisfazendobπb(n) 6 bn, pois πb(n) 6 n.Porém, como bπb(n) > n, por definição, temos b2πb(n) > bn, ecomo b2πb(n) é a menor potência de b maior que bπb(n), oresultado segue.
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
LemaSeja n ∈N \ 0 e b ∈N, b > 2. Então πb(bn) = bπb(n).
Demonstração.Claramente bπb(n) é uma potência de b satisfazendobπb(n) 6 bn, pois πb(n) 6 n.Porém, como bπb(n) > n, por definição, temos b2πb(n) > bn, ecomo b2πb(n) é a menor potência de b maior que bπb(n), oresultado segue.
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
LemaSeja n > b > 2. Então
πb
(⌊nb
⌋)=
πb(n)b
.
Demonstração.Note que
πb
(⌊nb
⌋)=
πb(n)b
⇐⇒ bπb
(⌊nb
⌋)= πb(n)
⇐⇒ πb
(b⌊n
b
⌋)= πb(n).
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
LemaSeja n > b > 2. Então
πb
(⌊nb
⌋)=
πb(n)b
.
Demonstração.Note que
πb
(⌊nb
⌋)=
πb(n)b
⇐⇒ bπb
(⌊nb
⌋)= πb(n)
⇐⇒ πb
(b⌊n
b
⌋)= πb(n).
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
Demonstração.
Basta então mostrar que, ∀k ∈N, bk 6 b⌊n
b
⌋⇐⇒ bk 6 n.
De fato,
bk 6 b⌊n
b
⌋=⇒ bk−1 6
⌊nb
⌋6
nb
=⇒ bk 6 n.
Similarmente, como bk ou é 1 ou é um múltiplo de b e n > b,temos
bk 6 n =⇒ bk 6 n− (n mod b) = b⌊n
b
⌋.
Com isso a demonstração está concluída.
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
DefiniçãoSeja n ∈N \ 0 e b ∈N, b > 2. Definimos
π′b(n) = mink∈N
bk : bk > n
como a menor potência de b maior ou igual a n.
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
LemaSeja n ∈N \ 0 e b ∈N, b > 2. Então π′b(bn) = bπ′b(n).
Seja n > b > 2. Então
π′b
(⌈nb
⌉)=
π′b(n)b
.
Demonstração.Totalmente análoga à dos resultados para π.
O Teorema Mestre da Complexidade
Demonstração
Preliminares
Arredondamento para Potências
LemaSeja n ∈N \ 0 e b ∈N, b > 2. Então π′b(bn) = bπ′b(n).
Seja n > b > 2. Então
π′b
(⌈nb
⌉)=
π′b(n)b
.
Demonstração.Totalmente análoga à dos resultados para π.
O Teorema Mestre da Complexidade
Demonstração
Peso das Folhas
Peso das Folhas
Lema (Peso das Folhas)
T ∈ Ω(nlogb a).
Demonstração.Seja n′0 = bn0 e seja
c = minn06n<n′0
T(n)
πb(n)logb a
.
Vamos então provar por indução que, para todo n > n0,
T(n) > cπb(n)logb a.
O Teorema Mestre da Complexidade
Demonstração
Peso das Folhas
Peso das Folhas
Lema (Peso das Folhas)
T ∈ Ω(nlogb a).
Demonstração.Seja n′0 = bn0 e seja
c = minn06n<n′0
T(n)
πb(n)logb a
.
Vamos então provar por indução que, para todo n > n0,
T(n) > cπb(n)logb a.
O Teorema Mestre da Complexidade
Demonstração
Peso das Folhas
Peso das Folhas
Demonstração.Para a base da indução, considere n0 6 n < n′0. Então
T(n) = T(n) ·(
πb(n)logb a
πb(n)logb a
)=(
T(n)πb(n)logb a
)πb(n)logb a
> cπb(n)logb a.
O Teorema Mestre da Complexidade
Demonstração
Peso das Folhas
Peso das Folhas
Demonstração.Para o passo indutivo, considere n′0 6 n. Então
T(n) =a−1
∑i=0
T(⌊n
b
⌋+ kn[i]
)+ f (n)
>a−1
∑i=0
T(⌊n
b
⌋+ kn[i]
)>
a−1
∑i=0
cπb
(⌊nb
⌋+ kn[i]
)logb a
>a−1
∑i=0
cπb
(⌊nb
⌋)logb a
O Teorema Mestre da Complexidade
Demonstração
Peso das Folhas
Peso das Folhas
Demonstração.
T(n) >a−1
∑i=0
cπb
(⌊nb
⌋)logb a
= acπb
(⌊nb
⌋)logb a
= ac(
πb(n)b
)logb a
=acπb(n)logb a
blogb a =acπb(n)logb a
a= cπb(n)logb a.
O Teorema Mestre da Complexidade
Demonstração
Peso das Folhas
Peso das Folhas
Demonstração.Segue que
T ∈ Ω(
πb(n)logb a)
.
Mas como πb(n) 6 n < bπb(n),
Θ(
πb(n)logb a)
= Θ(
nlogb a)
e segue queT ∈ Ω
(nlogb a
).
O Teorema Mestre da Complexidade
Demonstração
O Primeiro Caso do Teorema Mestre
O Primeiro Caso do Teorema Mestre
Com o que já temos até agora é possível demonstrar o primeirocaso do Teorema Mestre.
Lema (Primeiro Caso do Teorema Mestre)Se existe ε > 0 tal que
f ∈ O(
nlogb a−ε)
,
entãoT ∈ Θ
(nlogb a
).
O Teorema Mestre da Complexidade
Demonstração
O Primeiro Caso do Teorema Mestre
O Primeiro Caso do Teorema Mestre
Demonstração.
Como f ∈ O(nlogb a−ε), existem x0, q ∈ N tais que, para todon > x0,
f (n) 6 qπb(n)logb a−ε.
Defina m0 = maxx0, n0, m′0 = bm0 e
c = maxm06n<m′0
T(n) + q
( 1bε−1
)πb(n)logb a−ε
π′b(n)logb a
.
Vamos provar por indução que, para n > m0,
T(n) 6 cπ′b(n)logb a − q(
1bε − 1
)πb(n)logb a−ε ∈ O(nlogb a).
O Teorema Mestre da Complexidade
Demonstração
O Primeiro Caso do Teorema Mestre
O Primeiro Caso do Teorema Mestre
Demonstração.Para a base da indução, assuma m0 6 n < m′0. Então
T(n) = T(n) + q( 1
bε−1
)πb(n)logb a−ε − q
( 1bε−1
)πb(n)logb a−ε
=(
T(n)+q( 1bε−1 )πb(n)logb a−ε
π′b(n)logb a
)π′b(n)logb a − q
( 1bε−1
)πb(n)logb a−ε
6 cπ′b(n)logb a − q(
1bε − 1
)πb(n)logb a−ε.
O Teorema Mestre da Complexidade
Demonstração
O Primeiro Caso do Teorema Mestre
O Primeiro Caso do Teorema Mestre
Demonstração.Para o passo indutivo, assuma n > m′0. Logo
T(n)=∑a−1i=0 T(b n
b c+kn[i])+f (n)
6∑a−1i=0
(cπ′b(b n
b c+kn[i])logb a−q( 1bε−1 )πb(b n
b c+kn[i])logb a−ε)+qπb(n)logb a−ε
6∑a−1i=0
(cπ′b(d n
b e)logb a−q( 1
bε−1 )πb(b nb c)
logb a−ε)+qπb(n)logb a−ε
6acπ′b(d nb e)
logb a−aq( 1bε−1 )πb(b n
b c)logb a−ε
+qπb(n)logb a−ε
6ac(
π′b(n)b
)logb a−aq( 1
bε−1 )(
πb(n)b
)logb a−ε+qπb(n)logb a−ε
6acπ′b(n)logb a
blogb a −aq( 1bε−1 )
πb(n)logb a−ε
blogb a−ε +qπb(n)logb a−ε
6acπ′b(n)logb a
blogb a −aq( 1bε−1 )
πb(n)logb a−ε
blogb ab−ε+qπb(n)logb a−ε
O Teorema Mestre da Complexidade
Demonstração
O Primeiro Caso do Teorema Mestre
O Primeiro Caso do Teorema Mestre
Demonstração.
T(n)6acπ′b(n)logb a
blogb a −aq( 1bε−1 )
πb(n)logb a−ε
blogb ab−ε+qπb(n)logb a−ε
6acπ′b(n)logb a
a −aq( 1bε−1 )
bεπb(n)logb a−ε
a +qπb(n)logb a−ε
6cπ′b(n)logb a−q( 1bε−1 )bεπb(n)logb a−ε+qπb(n)logb a−ε
6cπ′b(n)logb a−q(( 1bε−1 )bε−1)πb(n)logb a−ε
6cπ′b(n)logb a−q( bε
bε−1−bε−1bε−1 )πb(n)logb a−ε
6cπ′b(n)logb a−q( 1bε−1 )πb(n)logb a−ε.
O Teorema Mestre da Complexidade
Demonstração
O Primeiro Caso do Teorema Mestre
O Primeiro Caso do Teorema Mestre
Demonstração.Com isso, segue que
T ∈ O(nlogb a).
Pelo lema do peso das folhas,
T ∈ Ω(nlogb a).
PortantoT ∈ Θ(nlogb a).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
LemaSe
f ∈ Θ(nlogb a),
entãoT ∈ Θ(nlogb a log n).
Demonstração.Iremos mostrar que
T ∈ O(nlogb a log n)
e queT ∈ Ω(nlogb a log n).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
LemaSe
f ∈ Θ(nlogb a),
entãoT ∈ Θ(nlogb a log n).
Demonstração.Iremos mostrar que
T ∈ O(nlogb a log n)
e queT ∈ Ω(nlogb a log n).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.
A fim de mostrar que T ∈ O(nlogb a log n), observe que, comof ∈ O(nlogb a), existem constantes x0, q ∈ N tais que, para todon > x0, f (n) 6 qnlogb a.Assim sendo, defina m0 = maxn0, x0, m′0 = bm0 e
c = maxm06n<m′0
T(n)
π′b(n)logb a logb π′b(n), q
.
Vamos provar, por indução, que, para todo n > m0,
T(n) 6 cπ′b(n)logb a logb π′b(n).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.Para a base da indução, assuma que m0 6 n < m′0. Então
T(n) = T(n) ·(
π′b(n)logb a logb π′b(n)π′b(n)logb a logb π′b(n)
)
=
(T(n)
π′b(n)logb a logb π′b(n)
)π′b(n)logb a logb π′b(n)
6 cπ′b(n)logb a logb π′b(n).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.Para o passo indutivo, suponha n > m′0. Então
T(n) = ∑a−1i=0 T
(⌊nb
⌋+ kn[i]
)+ f (n)
6 ∑a−1i=0 cπ′b
(⌊nb
⌋+ kn[i]
)logb a logb π′b(⌊n
b
⌋+ kn[i]
)+ f (n)
6 ∑a−1i=0 cπ′b
(⌈nb
⌉)logb a logb π′b(⌈n
b
⌉)+ f (n)
6 ac(
π′b(n)b
)logb alogb
(π′b(n)
b
)+ qnlogb a
= acπ′b(n)logb a
blogb a (logb π′b(n)− 1) + qnlogb a
= acπ′b(n)logb a
a (logb π′b(n)− 1) + qnlogb a
= cπ′b(n)logb a(logb π′b(n)− 1) + qnlogb a
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.
T(n) = cπ′b(n)logb a(logb π′b(n)− 1) + qnlogb a
= cπ′b(n)logb a logb π′b(n)− cπ′b(n)logb a + qnlogb a
6 cπ′b(n)logb a logb π′b(n)− cπ′b(n)logb a + qπ′b(n)logb a
= cπ′b(n)logb a logb π′b(n) + (q− c)π′b(n)logb a
6 cπ′b(n)logb a logb π′b(n).
Portanto T ∈ O(nlogb a log n).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.
A fim de mostrar que T ∈ Ω(nlogb a log n), observe que, comof ∈ Ω(nlogb a), existem constantes x0, q ∈ N tais que, para todon > x0, f (n) > qπb(n)logb a.Assim sendo, defina m0 = maxn0, x0, m′0 = bm0 e
c = minm06n<m′0
T(n)
πb(n)logb a logb πb(n), q
.
Vamos provar por indução que, para todo n > m0,
T(n) > cπb(n)logb a logb πb(n).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.Para a base da indução, suponha m0 6 n < m′0. Então
T(n) = T(n) ·(
πb(n)logb a logb πb(n)πb(n)logb a logb πb(n)
)
=
(T(n)
πb(n)logb a logb πb(n)
)πb(n)logb a logb πb(n)
> cπb(n)logb a logb πb(n).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.Para a prova do passo indutivo, assuma n > m′0. Então
T(n) =a−1
∑i=0
T(⌊n
b
⌋+ kn[i]
)+ f (n)
>a−1
∑i=0
cπb
(⌊nb
⌋+ kn[i]
)logb alogb πb
(⌊nb
⌋+ kn[i]
)+ f (n)
>a−1
∑i=0
cπb
(⌊nb
⌋)logb alogb πb
(⌊nb
⌋)+ qπb(n)logb a
= acπb
(⌊nb
⌋)logb alogb πb
(⌊nb
⌋)+ qπb(n)logb a
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.
T(n) = acπb
(⌊nb
⌋)logb alogb πb
(⌊nb
⌋)+ qπb(n)logb a
= ac(
πb(n)b
)logb alogb
(πb(n)
b
)+ qπb(n)logb a
=acπb(n)logb a
blogb a
(logb πb(n)− 1
)+ qπb(n)logb a
= cπb(n)logb a (logb πb(n)− 1)+ qπb(n)logb a
= πb(n)logb a (c logb πb(n) + (q− c))
> cπb(n)logb a logb πb(n).
Portanto T ∈ Ω(nlogb a log n).
O Teorema Mestre da Complexidade
Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Demonstração.Temos que
T ∈ O(nlogb a log n)
e queT ∈ Ω(nlogb a log n),
e portantoT ∈ Θ(nlogb a log n).
O Teorema Mestre da Complexidade
Demonstração
Trabalho no Nó Raiz
Trabalho no Nó Raiz
Lema (Trabalho no Nó Raiz)T ∈ Ω(f ).
Demonstração.Para n > n0,
T(n) =a−1
∑i=0
T(⌊n
b
⌋+ kn[i]
)+ f (n) > f (n).
O Teorema Mestre da Complexidade
Demonstração
Trabalho no Nó Raiz
Trabalho no Nó Raiz
Lema (Trabalho no Nó Raiz)T ∈ Ω(f ).
Demonstração.Para n > n0,
T(n) =a−1
∑i=0
T(⌊n
b
⌋+ kn[i]
)+ f (n) > f (n).
O Teorema Mestre da Complexidade
Demonstração
O Terceiro Caso do Teorema Mestre
O Terceiro Caso do Teorema Mestre
Lema (O Terceiro Caso do Teorema Mestre)Se existem w ∈ (0; 1), x0 ∈N tais que, para todo n > maxx0, n0,
a−1
∑i=0
f(⌊n
b
⌋+ kn[i]
)6 wf (n),
entãoT ∈ Θ(f ).
O Teorema Mestre da Complexidade
Demonstração
O Terceiro Caso do Teorema Mestre
O Terceiro Caso do Teorema Mestre
Demonstração.Seja m0 = maxn0, x0, m′0 = bm0 e
c = maxm06n<m′0
T(n)f (n)
,1
1−w
.
Vamos provar por indução que
T(n) 6 cf (n)
para todo n > m0.
O Teorema Mestre da Complexidade
Demonstração
O Terceiro Caso do Teorema Mestre
O Terceiro Caso do Teorema Mestre
Demonstração.Para o caso base, considere m0 6 n < m′0. Então
T(n) = T(n) ·(
f (n)f (n)
)=(
T(n)f (n)
)f (n)
6 cf (n).
O Teorema Mestre da Complexidade
Demonstração
O Terceiro Caso do Teorema Mestre
O Terceiro Caso do Teorema Mestre
Demonstração.Para o passo indutivo, considere n > m′0. Segue que
T(n) =a−1
∑i=0
T(⌊n
b
⌋+ kn[i]
)+ f (n)
6a−1
∑i=0
cf(⌊n
b
⌋+ kn[i]
)+ f (n)
6 cwf (n) + f (n)= (cw + 1)f (n)6 cf (n).
O Teorema Mestre da Complexidade
Demonstração
O Terceiro Caso do Teorema Mestre
O Terceiro Caso do Teorema Mestre
Demonstração.Então temos que
T ∈ O(f ).
Pelo lema do trabalho no nó raiz, temos que
T ∈ Ω(f ).
LogoT ∈ Θ(f ).