O Teorema Mestre da Complexidade
Luís Fernando Schultz Xavier da Silveira
Departamento de Informática e Estatística - INE - CTC - UFSC
O Teorema Mestre da Complexidade
Conteúdo
1 Enunciado
2 Demonstração Preliminares Peso das Folhas
O Primeiro Caso do Teorema Mestre O Segundo Caso do Teorema Mestre Trabalho no Nó Raiz
Teorema
Seja T :N→R+
∗ uma função satisfazendo
“T(n) =aTn b
+f(n)”
para valores a, b∈N, a>1 e b>2, e uma função f :N→R+ ∗. Então T∈ Θ nlogba , ∃ ε>0 : f ∈ O nlogba−ε
Θ nlogbalog n , f ∈ Θ nlogba
Θ(f), ∃w∈ (0; 1), x0 ∈N :∀n>x0, “afn b 6f(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ão n b 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.
Rigorosamente falando, o enunciado do teorema anterior está informal, pois ele não trata do “caso base” de T e a divisão n b 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
Por T(n) =aTn b +f(n),entendemos que existe um número n0 ∈ N e que, para todo
n>n0, existem números kn[0], kn[1], . . . , kn[a−1] ∈N, tais que
∀i, 06i<a, 06kn[i] 6 ln b m −jn b k e T(n) = a−1
∑
i=0 Tjn b k +kn[i] +f(n).Por
T(n) =aTn b
+f(n),
entendemos que existe um número n0 ∈ N e que, para todo
n>n0, existem números kn[0], kn[1], . . . , kn[a−1] ∈N, tais que
∀i, 06i<a, 06kn[i] 6 ln b m −jn b k e T(n) = a−1
∑
i=0 Tjn b k +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 n b 6wf(n),entendemos que existem x0 ∈N, w∈ (0; 1)tais que, para todo
n>max{n0, x0}, a−1
∑
i=0 fjn b k +kn[i] 6wf(n).Definição Seja n∈N\ {0}e b∈ N, b>2. Definimos πb(n) =max k∈N n bk : bk6no como a maior potência de b menor ou igual a n.
O Teorema Mestre da Complexidade Demonstração
Preliminares
Arredondamento para Potências
Lema
Seja 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 satisfazendo
bπb(n) 6bn, pois πb(n) 6n.
Porém, como bπb(n) >n, por definição, temos b2πb(n) >bn, e
como b2π
b(n)é a menor potência de b maior que bπb(n), o
Lema
Seja 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 satisfazendo
bπb(n) 6bn, pois πb(n) 6n.
Porém, como bπb(n) >n, por definição, temos b2πb(n) >bn, e
como b2π
b(n)é a menor potência de b maior que bπb(n), o
O Teorema Mestre da Complexidade Demonstração
Preliminares
Arredondamento para Potências
Lema Seja n>b>2. Então πb jn b k = πb(n) b . Demonstração. Note que πb jn b k = πb(n) b ⇐⇒ bπb jn b k =πb(n) ⇐⇒ πb bjn b k = πb(n).Lema Seja n>b>2. Então πb jn b k = πb(n) b . Demonstração. Note que πb jn b k = πb(n) b ⇐⇒ bπb jn b k =πb(n) ⇐⇒ πb bjn b k = πb(n).
O Teorema Mestre da Complexidade Demonstração
Preliminares
Arredondamento para Potências
Demonstração.Basta então mostrar que,∀k∈N, bk 6bjn b k ⇐⇒ bk 6n. De fato, bk6bjn b k =⇒bk−1 6jn b k 6 n b =⇒bk 6n.
Similarmente, como bkou é 1 ou é um múltiplo de b e n>b, temos
bk 6n=⇒bk 6n− (n mod b) =bjn b k
. Com isso a demonstração está concluída.
Definição Seja n∈N\ {0}e b∈ N, b>2. Definimos π0b(n) =min k∈N n bk : bk >no como a menor potência de b maior ou igual a n.
O Teorema Mestre da Complexidade Demonstração
Preliminares
Arredondamento para Potências
Lema Seja n∈N\ {0}e b∈N, b>2. Então π0b(bn) =bπ0b(n). Seja n>b>2. Então π0b ln b m = π 0 b(n) b . Demonstração.
Lema Seja n∈N\ {0}e b∈N, b>2. Então π0b(bn) =bπ0b(n). Seja n>b>2. Então π0b ln b m = π 0 b(n) b . Demonstração.
O Teorema Mestre da Complexidade Demonstração
Peso das Folhas
Peso das Folhas
Lema (Peso das Folhas)
T∈Ω nlogba. Demonstração. Seja n00 =bn0 e seja c= min n06n<n00 T(n) πb(n)logba .
Vamos então provar por indução que, para todo n>n0,
Lema (Peso das Folhas) T∈Ω nlogba. Demonstração. Seja n00 =bn0 e seja c= min n06n<n00 T(n) πb(n)logba .
Vamos então provar por indução que, para todo n>n0,
O Teorema Mestre da Complexidade Demonstração
Peso das Folhas
Peso das Folhas
Demonstração.
Para a base da indução, considere n0 6n<n00. Então
T(n) =T(n) · πb(n)logba πb(n)logba = T(n) πb(n)logba πb(n)logba >cπb(n)logba.
Demonstração.
Para o passo indutivo, considere n00 6n. Então T(n) = a−1
∑
i=0 Tjn b k +kn[i] +f(n) > a−1∑
i=0 Tjn b k +kn[i] > a−1∑
i=0 cπb jn b k +kn[i] logba > a−1∑
i=0 cπb jn b klogbaO Teorema Mestre da Complexidade Demonstração
Peso das Folhas
Peso das Folhas
Demonstração. T(n) > a−1∑
i=0 cπb jn b klogba =acπb jn b klogba =ac πb(n) b logba = acπb(n) logba blogba = acπb(n)logba a =cπb(n)logba.Demonstração. Segue que T∈ Ωπb(n)logba . Mas como πb(n) 6n<bπb(n), Θπb(n)logba = Θnlogba e segue que T∈ Ωnlogba .
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 primeiro caso do Teorema Mestre.
Lema (Primeiro Caso do Teorema Mestre)
Se existe ε>0 tal que
f ∈ Onlogba−ε , então T∈Θnlogba .
Demonstração.
Como f ∈ O(nlogba−ε), existem x
0, q ∈ N tais que, para todo
n>x0, f(n) 6qπb(n)logba−ε. Defina m0 =max{x0, n0}, m00=bm0 e c= max m06n<m00 ( T(n) +q bε1−1 πb(n)logba−ε π0b(n)logba ) . Vamos provar por indução que, para n>m0,
T(n) 6cπb0(n)logba−q 1 bε−1 πb(n)logba−ε ∈ O(nlogba).
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 m06n<m00. Então
T(n) =T(n) +q bε1−1 πb(n)logba−ε−q bε1−1 πb(n)logba−ε = T(n)+q( 1 bε−1)πb(n)logb a−ε π0b(n)logb a π0b(n)logba−q 1 bε−1 πb(n)logba−ε 6cπ0b(n)logba−q 1 bε−1 πb(n)logba−ε.
Demonstração.
Para o passo indutivo, assuma n>m00. Logo
T(n)=∑ai=−01T(bnbc+kn[i])+f(n) 6∑a−1 i=0 cπb0(bnbc+kn[i])logb a−q(bε1−1)πb(b n bc+kn[i])logb a −ε +qπb(n)logb a−ε 6∑a−1 i=0 cπ0 b(dnbe)logb a−q(bε1−1)πb(bnbc)logb a −ε +qπb(n)logb a−ε 6acπ0b(dn be) logb a−aq( 1 bε−1)πb(bnbc) logb a−ε +qπb(n)logb a−ε 6ac π0b(n) b logb a −aq( 1 bε−1) πb(n) b logb a−ε +qπb(n)logb a−ε 6acπ 0 b(n)logb a blogba −aq( 1 bε−1)πb (n)logb a−ε blogba−ε +qπb(n) logb a−ε 6acπ 0 b(n)logb a blogba −aq( 1 bε−1)πb (n)logb a−ε blogbab−ε +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π 0 b(n)logb a blogba −aq( 1 bε−1)πb (n)logb a−ε blogbab−ε +qπb(n) logb a−ε 6acπ 0 b(n)logb a a −aq(bε1−1)bε πb (n)logb a−ε a +qπb(n)logb a−ε 6cπb0(n)logb a−q( 1 bε−1)bεπb(n)logb a−ε+qπb(n)logb a−ε 6cπb0(n)logb a−q(( 1 bε−1)bε−1)πb(n)logb a −ε 6cπb0(n)logb a−q( bε bε−1− bε−1 bε−1)πb(n)logb a −ε 6cπb0(n)logb a−q( 1 bε−1)πb(n)logb a−ε.
Demonstração.
Com isso, segue que
T∈ O(nlogba).
Pelo lema do peso das folhas,
T∈ Ω(nlogba).
Portanto
O Teorema Mestre da Complexidade Demonstração
O Segundo Caso do Teorema Mestre
O Segundo Caso do Teorema Mestre
Lema Se f ∈Θ(nlogba), então T∈Θ(nlogbalog n). Demonstração.Iremos mostrar que
T∈ O(nlogbalog n)
e que
Lema Se f ∈Θ(nlogba), então T∈Θ(nlogbalog n). Demonstração.
Iremos mostrar que
T∈ O(nlogbalog n)
e que
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(nlogbalog n), observe que, como
f ∈ O(nlogba), existem constantes x0, q ∈ N tais que, para todo
n>x0, f(n) 6qnlogba.
Assim sendo, defina m0 =max{n0, x0}, m00=bm0 e
c= max m06n<m00 ( T(n) π0b(n)logbalog bπ0b(n) , q ) . Vamos provar, por indução, que, para todo n>m0,
T(n) 6cπ0b(n)logbalog
bπ
0
Demonstração.
Para a base da indução, assuma que m06n<m00. Então
T(n) =T(n) · π 0 b(n)logbalogbπ0b(n) πb0(n)logbalog bπ0b(n) ! = T(n) πb0(n)logbalog bπb0(n) ! πb0(n)logbalog bπ 0 b(n) 6cπ0b(n)logbalog bπ0b(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>m00. Então T(n) =∑ai=−01T n b +kn[i] +f(n) 6∑a−1 i=0cπb0 n b +kn[i] logba logbπ0b nb+kn[i] +f(n) 6∑ai=−01cπb0 n b logba logbπb0 nb+f(n) 6acπ0b(n) b logba logbπ0b(n) b +qnlogba = acπb0(n)logb a
blogb a (logbπ0b(n) −1) +qnlogba
= acπb0(n)logb a
a (logbπ0b(n) −1) +qnlogba
=cπb0(n)logba(log
Demonstração. T(n) =cπ0b(n)logba(log bπb0(n) −1) +qnlogba =cπ0b(n)logbalog bπ 0 b(n) −cπb0(n)logba+qnlogba 6cπb0(n)logbalog bπ 0 b(n) −cπ0b(n)logba+qπb0(n)logba =cπ0b(n)logbalog bπ 0 b(n) + (q−c)πb0(n)logba 6cπb0(n)logbalog bπ 0 b(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 ∈ Ω(nlogbalog n), observe que, como
f ∈ Ω(nlogba), existem constantes x0, q ∈ N tais que, para todo
n>x0, f(n) >qπb(n)logba.
Assim sendo, defina m0 =max{n0, x0}, m00=bm0 e
c= min m06n<m00 ( T(n) πb(n)logbalog bπb(n) , q ) . Vamos provar por indução que, para todo n>m0,
Demonstração.
Para a base da indução, suponha m0 6n<m00. Então
T(n) =T(n) · πb(n) logbalog bπb(n) πb(n)logbalogbπb(n) ! = T(n) πb(n)logbalogbπb(n) ! πb(n)logbalogbπb(n) >cπb(n)logbalogbπ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>m00. Então T(n) = a−1
∑
i=0 Tjn b k +kn[i] +f(n) > a−1∑
i=0 cπbjn b k +kn[i] logba logbπb jn b k +kn[i] +f(n) > a−1∑
i=0 cπbjn b klogba logbπb jn b k +qπb(n)logba =acπb jn b klogba logbπb jn b k +qπb(n)logbaT(n) =acπb jn b klogba logbπb jn b k +qπb(n)logba =acπb(n) b logba logbπb(n) b +qπb(n)logba = acπb(n) logba blogba logbπb (n) −1 +qπb(n)logba =cπb(n)logba logbπb(n) −1 +qπb(n)logba =πb(n)logba c logbπb(n) + (q−c) >cπb(n)logbalogbπb(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(nlogbalog n) e que T ∈Ω(nlogbalog n), e portanto T∈Θ(nlogbalog n).
O Teorema Mestre da Complexidade Demonstração
Trabalho no Nó Raiz
Trabalho no Nó Raiz
Lema (Trabalho no Nó Raiz)
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 Tjn b k +kn[i] +f(n) >f(n).Lema (O Terceiro Caso do Teorema Mestre)
Se existem w∈ (0; 1), x0∈ N tais que, para todo n>max{x0, n0}, a−1
∑
i=0 fjn b k +kn[i] 6wf(n), então T ∈Θ(f).O Teorema Mestre da Complexidade Demonstração
O Terceiro Caso do Teorema Mestre
O Terceiro Caso do Teorema Mestre
Demonstração. Seja m0=max{n0, x0}, m00 =bm0 e c= max m06n<m00 T(n) f(n), 1 1−w . Vamos provar por indução queT(n) 6cf(n) para todo n>m0.
Demonstração.
Para o caso base, considere m06n<m00. Então
T(n) =T(n) · f(n) f(n) = T(n) f(n) f(n) 6cf(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>m00. Segue que T(n) = a−1
∑
i=0 Tjn b k +kn[i] +f(n) 6 a−1∑
i=0 cfjn b k +kn[i] +f(n) 6cwf(n) +f(n) = (cw+1)f(n) 6cf(n).Demonstração.
Então temos que
T∈ O(f).
Pelo lema do trabalho no nó raiz, temos que T∈ Ω(f).
Logo