Você está na página 1de 8

Recorrencias

(continuacao)
Fernando Lobo
Algoritmos e Estrutura de Dados II
1 / 15
Teorema Mestre

Serve para resolver grande parte das recorrencias da forma:


T(n) = aT
_
n
b
_
+ f (n)
onde a 1, b > 1, f (n) > 0, n > n
0
.

Existem 3 casos. Compara-se


n
log
b
a
com f (n)
2 / 15
Teorema Mestre

Caso 1: f (n) = O
_
n
log
b
a
_
para um > 0
(f(n) e polinomiamente inferior a n
log
b
a
)
Solu cao:
T(n) = (n
log
b
a
)
Intuitivamente: custo e dominado pelas folhas da arvore de
recorrencia.

Caso 2: f (n) =
_
n
log
b
a
_
Solu cao:
T(n) = (n
log
b
a
lg n)
Intuitivamente: custo e identico em cada nvel da arvore de
recorrencia.
3 / 15
Teorema Mestre: Caso 1
Caso 1: f (n) = O
_
n
log
b
a
_
para um > 0
(f (n) e polinomiamente inferior a n
log
b
a
)
Solucao:
T(n) = (n
log
b
a
)
Intuitivamente: custo e dominado pelas folhas da arvore de
recorrencia.
4 / 15
Teorema Mestre: Caso 2
Caso 2: f (n) =
_
n
log
b
a
_
Solucao:
T(n) = (n
log
b
a
lg n)
Intuitivamente: custo e identico em cada nvel da arvore de
recorrencia.
5 / 15
Teorema Mestre: Caso 3
Caso 3:

f (n) =
_
n
log
b
a+
_
para um > 0
(f (n) e polinomiamente superior a n
log
b
a
)

af (
n
b
) cf (n) para um c < 1 e para todo n > n
0
(Chama-se a isto Condicao de Regularidade)
Solucao:
T(n) = (f (n))
Intuitivamente: custo e dominado pela raz da arvore de
recorrencia.
A condi cao de regularidade e sempre verdadeira quando f (n) = n
k
.
6 / 15
Teorema Mestre
Exemplo 1
T(n) = 4T(
n
2
) + n
a b f (n)
Comparar n
log
b
a
com f (n)
n
log
2
4
= n
2
n
Caso 1: f (n) = n = O(n
2
) para = 1 , logo
T(n) = (n
2
)
7 / 15
Teorema Mestre
Exemplo 2
T(n) = 4T(
n
2
) + n
2
n
log
b
a
= n
log
2
4
= n
2
n
2
Caso 2: f (n) = n
2
= (n
2
), logo
T(n) = (n
2
lg n)
f(n)
8 / 15
Teorema Mestre
Exemplo 3
T(n) = 4T(
n
2
) + n
3
n
log
b
a
= n
log
2
4
= n
2
n
3
Caso 3:

f (n) = n
3
= (n
2+
) para = 1

Condi cao de Regularidade:


4
_
n
2
_
3
cn
3

4n
3
8
cn
3

1
2
n
3
cn
3
,basta escolher c
1
2

Nao era necessario mostrar a Condicao de Regularidade porque


f (n) e polinomial.
Logo,
T(n) = (n
3
)
f(n)
9 / 15
Teorema Mestre
Exemplo 4
T(n) = 4T(
n
2
) +
n
2
lg n
n
log
b
a
= n
log
2
4
= n
2 n
2
lg n
O Teorema Mestre nao e aplicavel!
f(n)
10 / 15
Teorema Mestre (intuicao)

A demonstracao formal esta no livro [CLRS].

Este formato de T(n) aparece em problemas de D&C:


T(n) =
_
(1) , se n = 1
aT(
n
b
) + f (n) , se n > 1 onde a 1, b > 1
n umero de
subproblemas
tamanho
de cada
subproblema
trabalho nao
recursivo

T(n) = f (n)
T
_
n
b
_
T
_
n
b
_
. . T
_
n
b
_
a vezes
11 / 15
Teorema Mestre (intuicao)
Iterando:
T(n) = f (n)
f
_
n
b
_
T
_
n
b
2
_
. . .
. . . . . . f
_
n
b
_
. . . T
_
n
b
2
_
a vezes
a vezes a vezes
12 / 15
Teorema Mestre (intuicao)
Iterando mais vezes:
T(n) = f (n)
f
_
n
b
_
f
_
n
b
2
_
. . .
. . . . . . f
_
n
b
_
. . . f
_
n
b
2
_
. . . . . . . . . . . . . . . . . . . . . . . .
T(1) T(1) T(1) . . . . . . . . . . T(1) T(1) T(1)
h = log
b
n
f(n)
a
af (
n
b
)
a a
a
2
f (
n
b
2
)
a
h
(1)

Total
13 / 15

A altura da arvore e h = log


b
n

No ultimo nvel temos a


h
subproblemas de tamanho 1.
a
h
(1) = a
log
b
n
(1)
= n
log
b
a
(1)
= (n
log
b
a
)
Soma nvel por nvel:
Total = f (n) + af
_
n
b
_
+ a
2
f
_
n
b
2
_
+ . . + a
h1
f
_
n
b
h1
_
. .
+ (n
log
b
a
)
T(n) =
log
b
n1

i =0
a
i
f
_
n
b
i
_
+ (n
log
b
a
)
14 / 15
Se f (n) e polinomial, i.e., f (n) = n
k
para algum k xo, resulta:
T(n) =
log
b
n1

i =0
a
i
_
n
b
i
_
k
+ (n
log
b
a
)
= n
k

log
b
n1

i =0
_
a
b
k
_
i
. .
p.g.com log
b
n parcelas e r =
a
b
k
+ (n
log
b
a
)
Daqui obtemos:

Se r > 1
log
b
a > k T(n) = (n
log
b
a
) (Caso 1)

Se r = 1
log
b
a = k T(n) = (n
k
log
b
n) (Caso 2)

Se r < 1
log
b
a < k T(n) = (n
k
) (Caso 3)
15 / 15