Escolar Documentos
Profissional Documentos
Cultura Documentos
2o . Semestre de 2012
de Recorrencias
Resolucao Mergesort
M ERGESORT(A, p, r )
de recorrencia
Relacoes expressam a complexidade de 1 se p < r
algoritmos recursivos como, por exemplo, os algoritmos de 2 q (p + r )/2
entao
e conquista.
divisao 3 M ERGESORT(A, p, q)
E preciso saber resolver as recorrencias
para que 4 M ERGESORT(A, q + 1, r )
possamos efetivamente determinar a complexidade dos 5 I NTERCALA(A, p, q, r )
algoritmos recursivos.
Qual e a complexidade de M ERGESORT?
Seja T (n) := o consumo de tempo maximo
(pior caso) em
de n = r p + 1
funcao
M ERGESORT(A, p, r ) M ERGESORT(A, p, r )
1 se p < r 1 se p < r
2 q (p + r )/2
entao 2 q (p + r )/2
entao
3 M ERGESORT(A, p, q) 3 M ERGESORT(A, p, q)
4 M ERGESORT(A, q + 1, r ) 4 M ERGESORT(A, q + 1, r )
5 I NTERCALA(A, p, q, r ) 5 I NTERCALA(A, p, q, r )
de recorrencias
Resolucao de recorrencias
Resolucao
Queremos resolver a recorrencia
Alguns metodos de recorrencias:
para resolucao
T (1) = 1
substituicao
T (n) = T (n/2) + T (n/2) + an + b para n 2.
iteracao
arvore
de recorrencia
Resolver uma recorrencia significa encontrar uma
formula fechada para T (n). Veremos tambem um resultado bem geral que permite resolver
varias
recorrencias: Master theorem.
e necessario
Nao exata.
achar uma solucao
f (n) tal que
Basta encontrar uma funcao
T (n) (f (n)).
Considere a recorrencia:
basica:
Ideia adivinhe qual e a solucao
e T (1) = 1
que ela funciona!
prove por inducao T (n) = T (n/2) + T (n/2) + n para n 2.
Metodo poderoso mas nem sempre aplicavel
(obviamente).
Chuto que T (n) O(n lg n).
Com pratica
e experiencia de usar!
fica mais facil
Mais precisamente, chuto que T (n) 3n lg n.
(Lembre que lg n = log2 n.)
Exemplo Exemplo
Mostramos que a recorrencia ha nenhuma receita generica
Nao de
para adivinhar solucoes
recorrencias.
A experiencia e o fator mais importante.
T (1) = 1 Felizmente, ha varias
ideias que podem ajudar.
T (n) = T (n/2) + T (n/2) + n para n 2.
Considere a recorrencia
satisfaz T (n) O(n lg n).
T (1) = 1
Mas quem garante que T (n) nao
e menor? T (n) = 2T (n/2) + n para n 2.
O melhor e mostrar que T (n) (n lg n).
Ela e quase identica
a` anterior e podemos chutar que
Resta entao mostrar que T (n) (n lg n). A prova e similar.
T (n) (n lg n). Isto de fato e verdade. (Exerccio ou consulte
(Exerccio!)
o CLRS)
(Humm, falhou. . . )
E agora? Sera que erramos o chute? Sera que T (n) (n2 )?
C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende
MC458 Projeto e Analise de Algoritmos I v. 2.2 C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende
MC458 Projeto e Analise de Algoritmos I v. 2.2
Truques e sutilezas
Metodo
da iteracao
onde a ultima
desigualdade vale se b 1.
(Yeeeessss!)
Metodo
da iteracao
Metodo
da iteracao
Considere a recorrencia
Como n/4i n/4i temos que
T (n) = b para n 3,
T (n) = 3T (n/4) + n para n 4. T (n) n + 3n/4 + 9n/16 + 27n/64 + + 3j b
T (n) n + 3n/4 + 9n/16 + 27n/64 + + d.3log4 n
Iterando a recorrencia obtemos
n.(1 + 3/4 + 9/16 + 27/64 + ) + dnlog4 3
T (n) = n + 3T (n/4) i
X 3
= n + 3(n/4 + 3T (n/16)) =n + dnlog4 3
4
i=0
= n + 3(n/4 + 3(n/16 + 3T (n/64)))
= 4n + dnlog4 3
= n + 3n/4 + 9n/16 + 27T (n/64).
1
pois 3log4 n = nlog4 3 e i
P
i=0 q = 1q para 0 < q < 1.
Certo, mas quando devo parar?
O i-esimo
termo da serie e 3i n/4i . Ela termina quando Como log4 3 < 1 segue que nlog4 3 o(n) e logo, T (n) O(n).
i
n/4 3, ou seja, i log4 n.
T (n) = b para n 3,
T (n) = 3T (n/4) + n para n 4.
As contas ficam mais simples se supormos que a
recorrencia esta definida apenas para potencias
de um Chuto que T (n) cn.
numero,
por exemplo, n = 4i .
Note, entretanto, que a recorrencia deve ser provada para
T (n) = 3T (n/4) + n
todo natural suficientemente grande.
3cn/4 + n
Muitas vezes, e possvel depois de iterar a recorrencia,
e usar o metodo
adivinhar a solucao
da substituicao! 3c(n/4) + n
cn
onde a ultima
desigualdade vale se c 4.
(Yeeessss!)
Arvore
de recorrencia
Arvore
de recorrencia
Considere a recorrencia
Permite visualizar melhor o que acontece quando a T (n) = (1) para n = 1, 2, 3,
recorrencia e iterada. T (n) = 3T (n/4) + cn2 para n 4,
E mais facil
organizar as contas.
para recorrencias
Util de algoritmos de onde c > 0 e uma constante.
divisao-e-conquista.
T (n) = (1) para indicar
Costuma-se (CLRS) usar a notacao
que T (n) e uma constante.
Simplificacao
Vamos supor que a recorrencia esta definida apenas para
potencias de 4
Depois
Isto permite descobrir mais facilmente a solucao.
usamos o metodo para formalizar.
da substituicao
Arvore
de recorrencia
Arvore
de recorrencia
Logo,
2 3
3 2
2 3 2 3
T (n) = cn + cn + cn + cn2 + +
O numero
de nveis e log4 n + 1. 16 16 16
log4 n1
3
No nvel i o tempo gasto (sem contar as chamadas + cn2 + (nlog4 3 )
16
recursivas) e (3/16)i cn2 .
log4 n1
3 i 2
X
No ultimo
nvel ha 3log4 n = nlog4 3 folhas. Como = cn + (nlog4 3 )
16
T (1) = (1) o tempo gasto e (nlog4 3 ). i=0
3 i 2
X 3 2
cn + (nlog4 3 ) = cn + (nlog4 3 ),
16 16
i=0
e T (n) O(n2 ).
Arvore
de recorrencia
Arvore
de recorrencia
Recorrencia do Mergesort assintotica
Cuidados com a notacao
Podemos escrever a recorrencia de tempo do Mergesort da assintotica
A notacao e muito versatil
e expressiva. Entretanto,
seguinte forma deve-se tomar alguns cuidados.
Considere a recorrencia
T (1) = (1)
T (n) = T (n/2) + T (n/2) + (n) para n 2. T (1) = 1
T (n) = 2T (n/2) + n para n 2.
da recorrencia
A solucao e T (n) = (n lg n).
A prova e essencialmente a mesma do primeiro exemplo. similar a recorrencia
E do Mergesort!
(Exerccio!) Mas eu vou provar que T (n) = O(n)!
Teorema Master
Exemplos de Recorrencias
se aplica:
Exemplos onde o Teorema Master nao
T (n) = T (n 1) + n
T (n) = T (n a) + T (a) + n, (a 1 inteiro)
T (n) = T (n) + T ((1 )n) + n, (0 < < 1)
T (n) = T (n 1) + log n
T (n) = 2T ( n2 ) + n log n