SlideShare a Scribd company logo
1 of 102
Download to read offline
An´alise de Algoritmos
Solução de recorrências
– p. 1/44
Recorrências
Uma recorrência é uma expressão que dá o valor
de uma função em termos dos valores "anteriores"
da mesma função.
– p. 2/44
Recorrências
Uma recorrência é uma expressão que dá o valor
de uma função em termos dos valores "anteriores"
da mesma função.
Para analisar o consumo de tempo de um
algoritmo recursivo é necessário resolver uma
recorrência.
– p. 2/44
Recorrências
O exemplo clássico de recorrência, provavelmente
o mais famoso, é a fórmula de Fibonacci:
F(n) =



0 se n = 0
1 se n = 1
F(n − 1) + F(n − 2) se n ≥ 2
– p. 3/44
Recorrências
O exemplo clássico de recorrência, provavelmente
o mais famoso, é a fórmula de Fibonacci:
F(n) =



0 se n = 0
1 se n = 1
F(n − 1) + F(n − 2) se n ≥ 2
Uma “fórmula fechada” para F(n) é dada por:
F(n) =
1
√
5
1 +
√
5
2
n
−
1
√
5
1 −
√
5
2
n
– p. 3/44
Recorrências
Um outro exemplo clássico de recorrência é:
F(n) =



1 se n = 0
n.F(n − 1) se n ≥ 1
– p. 4/44
Recorrências
Um outro exemplo clássico de recorrência é:
F(n) =



1 se n = 0
n.F(n − 1) se n ≥ 1
Uma fórmula fechada para F(n) é dada por:
F(n) = n.F(n − 1)
= n.(n − 1).F(n − 2) = · · · =
= n.(n − 1).(n − 2) . . . 2.1.1
= n!
– p. 4/44
Recorrências
Resolver uma recorrência é encontrar uma
“fórmula fechada” que dê o valor da função
diretamente em termos do seu argumento.
– p. 5/44
Recorrências - busca binária
Vamos analisar novamente o consumo de tempo
do algoritmo da busca binária.
– p. 6/44
Recorrências - busca binária
Vamos analisar novamente o consumo de tempo
do algoritmo da busca binária. Em cada iteração,
o algoritmo descarta metade do vetor.
– p. 6/44
Recorrências - busca binária
Vamos analisar novamente o consumo de tempo
do algoritmo da busca binária. Em cada iteração,
o algoritmo descarta metade do vetor. Se
denotamos por T(n) o número máximo de
iterações realizadas pela busca binária sobre um
vetor com n elementos,
– p. 6/44
Recorrências - busca binária
Vamos analisar novamente o consumo de tempo
do algoritmo da busca binária. Em cada iteração,
o algoritmo descarta metade do vetor. Se
denotamos por T(n) o número máximo de
iterações realizadas pela busca binária sobre um
vetor com n elementos, a função T(n) pode ser
expressa pela seguinte recorrência:
T(n) = T(
n
2
) + 1, T(1) = 1
– p. 6/44
Recorrências - busca binária
Para obter uma solução, supomos inicialmente que
n = 2k
.
– p. 7/44
Recorrências - busca binária
Para obter uma solução, supomos inicialmente que
n = 2k
.
T(n) = T
n
2
+ 1
= T
n
22
+ 1 + 1 = T
n
22
+ 2
= T
n
23
+ 1 + 2 = T
n
23
+ 3
= · · ·
= T
n
2k
+ k = k + 1 = log n + 1
– p. 7/44
Recorrências - busca binária
Podemos agora tentar mostrar que
T(n) ≤ log n + 1, ∀n ≥ 1, por indução em n.
– p. 8/44
Recorrências - busca binária
Podemos agora tentar mostrar que
T(n) ≤ log n + 1, ∀n ≥ 1, por indução em n.
Para n = 1, T(1) = 1 = log 1 + 1
– p. 8/44
Recorrências - busca binária
Podemos agora tentar mostrar que
T(n) ≤ log n + 1, ∀n ≥ 1, por indução em n.
Para n = 1, T(1) = 1 = log 1 + 1
Para n > 1, temos
– p. 8/44
Recorrências - busca binária
Podemos agora tentar mostrar que
T(n) ≤ log n + 1, ∀n ≥ 1, por indução em n.
Para n = 1, T(1) = 1 = log 1 + 1
Para n > 1, temos
T(n) = T(
n
2
) + 1
≤ (log(
n
2
) + 1) + 1
≤ log
n
2
+ 2 = (log n − 1) + 2
= log n + 1
– p. 8/44
Recorrências - Exemplo
Consideremos a recorrência
T(n) = 2T(
n
2
) + n − 1, T(1) = 1
– p. 9/44
Recorrências - Exemplo
Consideremos a recorrência
T(n) = 2T(
n
2
) + n − 1, T(1) = 1
Podemos conjecturar que T(n) ≤ n2
e tentar provar
por indução em n.
– p. 9/44
Recorrências - Exemplo
Consideremos a recorrência
T(n) = 2T(
n
2
) + n − 1, T(1) = 1
Podemos conjecturar que T(n) ≤ n2
e tentar provar
por indução em n.
T(1) = 1 ≤ 12
– p. 9/44
Recorrências - Exemplo
Consideremos a recorrência
T(n) = 2T(
n
2
) + n − 1, T(1) = 1
Podemos conjecturar que T(n) ≤ n2
e tentar provar
por indução em n.
T(1) = 1 ≤ 12
T(2) = 2T(1) + 1 = 3 < 22
– p. 9/44
Recorrências - Exemplo
Para n ≥ 3, temos
– p. 10/44
Recorrências - Exemplo
Para n ≥ 3, temos
T(n) = 2T(
n
2
) + n − 1
≤ 2
n
2
2
+ n − 1
≤ 2
n
2
2
+ n − 1
≤
n2
2
+ n − 1
≤
n2
2
+
n2
2
= n2
, ∀n > 0
– p. 10/44
Recorrências - Exemplo
Será n2
uma boa estimativa para T(n)?
– p. 11/44
Recorrências - Exemplo
Será n2
uma boa estimativa para T(n)?
Será que conseguimos provar que T(n) ≤ cn, para
alguma constante c > 0 e n ≥ n0?
– p. 11/44
Recorrências - Exemplo
Será n2
uma boa estimativa para T(n)?
Será que conseguimos provar que T(n) ≤ cn, para
alguma constante c > 0 e n ≥ n0? Vamos tentar.
– p. 11/44
Recorrências - Exemplo
T(n) = 2T(
n
2
) + n − 1
≤ 2c
n
2
+ n − 1
≤ 2c
n
2
+ n − 1
≤ cn + n − 1 cn
Para qualquer c > 0.
– p. 12/44
Recorrências - Exemplo
T(n) = 2T(
n
2
) + n − 1
≤ 2c
n
2
+ n − 1
≤ 2c
n
2
+ n − 1
≤ cn + n − 1 cn
Para qualquer c > 0. Logo,
T(n) cn
– p. 12/44
Recorrências - Exemplo
E que tal T(n) ≤ n log2 n + 1?
– p. 13/44
Recorrências - Exemplo
E que tal T(n) ≤ n log2 n + 1?
T(1) = 1 = 1 log 1 + 1
– p. 13/44
Recorrências - Exemplo
E que tal T(n) ≤ n log2 n + 1?
T(1) = 1 = 1 log 1 + 1
T(2) = 2T(1) + 1 = 3 = 2 log 2 + 1
– p. 13/44
Recorrências - Exemplo
E que tal T(n) ≤ n log2 n + 1?
T(1) = 1 = 1 log 1 + 1
T(2) = 2T(1) + 1 = 3 = 2 log 2 + 1
Vamos então tentar mostrar que
T(n) ≤ n log2 n + 1
para n ≥ 1.
– p. 13/44
Recorrências - Exemplo
T(n) = 2T(
n
2
) + n − 1
≤ 2(
n
2
log
n
2
+ 1) + n − 1
≤ 2(
n
2
log
n
2
+ 1) + n − 1
= n(log n − 1) + n + 1 = n log n + 1
– p. 14/44
Recorrências - Exemplo
T(n) = 2T(
n
2
) + n − 1
≤ 2(
n
2
log
n
2
+ 1) + n − 1
≤ 2(
n
2
log
n
2
+ 1) + n − 1
= n(log n − 1) + n + 1 = n log n + 1
Portanto,
T(n) ≤ n log n + 1
para n ≥ 1.
– p. 14/44
Recorrências
Os exemplos anteriores mostram que a solução de
uma recorrência pode ser obtida:
1. Desenvolvendo (ou “desenrolando”) a
recorrência.
2. Estimando a solução e provando o resultado
por indução.
Estas duas formas conjuntas recebem o nome de
método da substituição.
– p. 15/44
Recorrências - Exemplo
Consideremos a recorrência
T(n) = T(
n
2
) + T(
n
2
) + 1, T(1) = 1
– p. 16/44
Recorrências - Exemplo
Consideremos a recorrência
T(n) = T(
n
2
) + T(
n
2
) + 1, T(1) = 1
Podemos conjecturar que T(n) ≤ cn e tentar provar
por indução em n.
– p. 16/44
Recorrências - Exemplo
Consideremos a recorrência
T(n) = T(
n
2
) + T(
n
2
) + 1, T(1) = 1
Podemos conjecturar que T(n) ≤ cn e tentar provar
por indução em n. É comum partimos logo para
analisar o caso geral, pois a base geralmente pode
ser acertada.
– p. 16/44
Recorrências - Exemplo
T(n) = T(
n
2
) + T(
n
2
) + 1
≤ c
n
2
+ c
n
2
+ 1
= cn + 1
O que não implica que T(n) ≤ cn.
– p. 17/44
Recorrências - Exemplo
T(n) = T(
n
2
) + T(
n
2
) + 1
≤ c
n
2
+ c
n
2
+ 1
= cn + 1
O que não implica que T(n) ≤ cn.
Importante: precisamos provar a forma exata da
hipótese indutiva.
– p. 17/44
Recorrências - Exemplo
Uma forma de contornar este problema é subtrair
um termo de ordem menor. Por exemplo, tomemos
agora T(n) ≤ cn − 1.
– p. 18/44
Recorrências - Exemplo
Uma forma de contornar este problema é subtrair
um termo de ordem menor. Por exemplo, tomemos
agora T(n) ≤ cn − 1.
T(n) = T(
n
2
) + T(
n
2
) + 1
≤ (c
n
2
− 1) + (c
n
2
− 1) + 1
≤ cn − 1
para qualquer c positivo.
– p. 18/44
Recorrências - Exemplo
Uma forma de contornar este problema é subtrair
um termo de ordem menor. Por exemplo, tomemos
agora T(n) ≤ cn − 1.
T(n) = T(
n
2
) + T(
n
2
) + 1
≤ (c
n
2
− 1) + (c
n
2
− 1) + 1
≤ cn − 1
para qualquer c positivo. Tomando c = 2, temos
T(1) = 1 ≤ 2(1) − 1. Logo, T(n) ≤ 2n − 1.
– p. 18/44
Recorrências - Exercícios
1. Resolva a recorrência T(n) = T( n
2 ) + 7n + 2,
T(1) = 1.
2. Mostre que a solução de T(n) = T(n − 1) + n é O(n2).
3. Mostre que a solução de T(n) = T( n
2 ) + 1 é O(log n).
4. Mostre que a solução de T(n) = 2T( n
2 + 17) + n é
O(n log n).
5. Resolva a recorrência T(n) = 3T( n
2 ) + n, T(1) = 1.
6. Resolva a recorrência T(n) = 3T( n
3 ) + 1, T(1) = 1.
7. Mostre que a solução de T(n) = 3T n
2 + n é O(nlog2 3).
8. Mostre que a solução de T(n) = 4T n
2 + n é O(n2).
– p. 19/44
An´alise de Algoritmos
Identidades úteis
– p. 20/44
Identidades úteis
Apresentamos a seguir algumas igualdades e
desigualdades que são úteis na análise algoritmos.
– p. 21/44
Identidades úteis
Apresentamos a seguir algumas igualdades e
desigualdades que são úteis na análise algoritmos.
S´erie aritm´etica: Se ai = ai−1 + c, onde c é uma
constante, então
a1 + a2 + a3 + · · · + an =
n(an + a1)
2
– p. 21/44
Série geométrica
Se ai = cai−1, onde c = 1 é uma constante, então
a1 + a2 + a3 + · · · + an =
a1(cn − 1)
c − 1
Se 0 < c < 1, então
∞
i=1
ai =
a1
1 − c
– p. 22/44
Soma de quadrados
n
i=1
i2
=
n(n + 1)(2n + 1)
6
– p. 23/44
Logaritmos
logb a =
logc a
logc b
aloga x
= x
– p. 24/44
Aproximação de Stirling
n! =
√
2πn
n
e
n
(1 + O(
1
n
))
Em particular, a aproximação de Stirling implica
que
log(n!) = Θ(n log n)
– p. 25/44
An´alise de Algoritmos
Árvore de recursão
– p. 26/44
Árvore de recursão
Árvore de recursão é um método muito útil para
estimar a solução de uma recorrência. Uma vez
obtida a solução, utilizamos o método anterior para
prová-la formalmente.
A idéia da árvore de recursão é tentar representar
o desenvolvimento da recorrência por um diagrama
(geralmente uma árvore) onde cada nó representa
um subproblema, e somar os custos por nível.
– p. 27/44
Exemplo 1
Consideremos a recorrência T(n) = 2T n
2 + n
– p. 28/44
Exemplo 2
T(n) = T n
3 + T 2n
3 + n
– p. 29/44
Exemplo 3
T(n) = 3T n
2 + n2
– p. 30/44
Exercícios
Use árvore de recursão para determinar um limite superior
para as recorrências abaixo, e depois prove o resultado
usando indução ou substituição.
1. T(n) = T(n/4) + T(n/2) + n2
2. T(n) = 3T n
4 + n
3. T(n) = 4T n
2 + 2 + n
4. T(n) = T(n − a) + T(a) + cn
– p. 31/44
An´alise de Algoritmos
Método mestre
– p. 32/44
Método mestre
O método mestre fornece uma receita para a
solução de recorrências da forma
T(n) = aT(n/b) + f(n)
onde a ≥ 1 e b > 1 são constantes e f(n) é uma
função assintóticamente positiva.
– p. 33/44
Método mestre
Considere a recorrência
T(n) = aT(n/b) + f(n)
onde a ≥ 1 e b > 1 são constantes, f(n) é uma
função assintóticamente positiva, e n/b pode ser
n/b ou n/b . Então
1. Se f(n) = O(nlogb a−
) para alguma constante
> 0 então T(n) = Θ(nlogb a
)
– p. 34/44
Método mestre
Considere a recorrência
T(n) = aT(n/b) + f(n)
onde a ≥ 1 e b > 1 são constantes, f(n) é uma
função assintóticamente positiva, e n/b pode ser
n/b ou n/b . Então
1. Se f(n) = O(nlogb a−
) para alguma constante
> 0 então T(n) = Θ(nlogb a
)
2. Se f(n) = Θ(nlogb a
) então T(n) = Θ(nlogb a
log n)
– p. 34/44
Método mestre
3. Se f(n) = Ω(nlogb a+
) para alguma constante
> 0, e se af(n/b) ≤ cf(n) para alguma
constante c < 1 e n suficientemente grande,
então T(n) = Θ(f(n))
– p. 35/44
Método mestre
T(n) = aT(n/b) + f(n)
T(n) Se
Θ(nlogb a
) f(n) = O(nlogb a−
)
Θ(nlogb a
log n) f(n) = Θ(nlogb a
)
Θ(f(n)) f(n) = Ω(nlogb a+
)
e af(n/b) ≤ cf(n), c < 1
– p. 36/44
Método mestre - Exemplo 1
T(n) = 9T(n/3) + n
– p. 37/44
Método mestre - Exemplo 1
T(n) = 9T(n/3) + n
a = 9, b = 3 e f(n) = n
– p. 37/44
Método mestre - Exemplo 1
T(n) = 9T(n/3) + n
a = 9, b = 3 e f(n) = n
nlogb a
= nlog3 9
= n2
– p. 37/44
Método mestre - Exemplo 1
T(n) = 9T(n/3) + n
a = 9, b = 3 e f(n) = n
nlogb a
= nlog3 9
= n2
Logo, f(n) = O(nlogb a−
), onde = 1
– p. 37/44
Método mestre - Exemplo 1
T(n) = 9T(n/3) + n
a = 9, b = 3 e f(n) = n
nlogb a
= nlog3 9
= n2
Logo, f(n) = O(nlogb a−
), onde = 1
Pelo Caso 1, T(n) = Θ(n2
).
– p. 37/44
Método mestre - Exemplo 2
T(n) = T(2n/3) + 1
– p. 38/44
Método mestre - Exemplo 2
T(n) = T(2n/3) + 1
a = 1, b = 3/2 e f(n) = 1
– p. 38/44
Método mestre - Exemplo 2
T(n) = T(2n/3) + 1
a = 1, b = 3/2 e f(n) = 1
nlogb a
= nlog3/2 1
= n0
= 1
– p. 38/44
Método mestre - Exemplo 2
T(n) = T(2n/3) + 1
a = 1, b = 3/2 e f(n) = 1
nlogb a
= nlog3/2 1
= n0
= 1
Logo, f(n) = 1 = Θ(nlogb a
)
– p. 38/44
Método mestre - Exemplo 2
T(n) = T(2n/3) + 1
a = 1, b = 3/2 e f(n) = 1
nlogb a
= nlog3/2 1
= n0
= 1
Logo, f(n) = 1 = Θ(nlogb a
)
Pelo Caso 2, T(n) = Θ(log n).
– p. 38/44
Método mestre - Exemplo 3
T(n) = 3T(n/4) + n log n
– p. 39/44
Método mestre - Exemplo 3
T(n) = 3T(n/4) + n log n
a = 3, b = 4 e f(n) = n log n
– p. 39/44
Método mestre - Exemplo 3
T(n) = 3T(n/4) + n log n
a = 3, b = 4 e f(n) = n log n
nlogb a
= nlog4 3
– p. 39/44
Método mestre - Exemplo 3
T(n) = 3T(n/4) + n log n
a = 3, b = 4 e f(n) = n log n
nlogb a
= nlog4 3
Logo, f(n) = n log n = Ω(nlog4 3+
)
– p. 39/44
Método mestre - Exemplo 3
T(n) = 3T(n/4) + n log n
a = 3, b = 4 e f(n) = n log n
nlogb a
= nlog4 3
Logo, f(n) = n log n = Ω(nlog4 3+
)
af(n/b) = 3(n/4) log(n/4) ≤ (3/4)n log n
– p. 39/44
Método mestre - Exemplo 3
T(n) = 3T(n/4) + n log n
a = 3, b = 4 e f(n) = n log n
nlogb a
= nlog4 3
Logo, f(n) = n log n = Ω(nlog4 3+
)
af(n/b) = 3(n/4) log(n/4) ≤ (3/4)n log n
Pelo Caso 3, T(n) = Θ(n log n).
– p. 39/44
Método mestre - Exemplo 4
T(n) = 2T(n/2) + n log n
– p. 40/44
Método mestre - Exemplo 4
T(n) = 2T(n/2) + n log n
a = 2, b = 2 e f(n) = n log n
– p. 40/44
Método mestre - Exemplo 4
T(n) = 2T(n/2) + n log n
a = 2, b = 2 e f(n) = n log n
nlogb a
= nlog2 2
= n
– p. 40/44
Método mestre - Exemplo 4
T(n) = 2T(n/2) + n log n
a = 2, b = 2 e f(n) = n log n
nlogb a
= nlog2 2
= n
Caso 3
– p. 40/44
Método mestre - Exemplo 4
T(n) = 2T(n/2) + n log n
a = 2, b = 2 e f(n) = n log n
nlogb a
= nlog2 2
= n
Caso 3
Mas, f(n) = n log n = Ω(nlog2 2+
)
– p. 40/44
Método mestre - Exemplo 4
T(n) = 2T(n/2) + n log n
a = 2, b = 2 e f(n) = n log n
nlogb a
= nlog2 2
= n
Caso 3
Mas, f(n) = n log n = Ω(nlog2 2+
)
Portanto, o método mestre não se aplica.
– p. 40/44
Método mestre - Exemplo 5
T(n) = 2T(n/2) + cn
– p. 41/44
Método mestre - Exemplo 5
T(n) = 2T(n/2) + cn
a = 2, b = 2 e f(n) = cn
– p. 41/44
Método mestre - Exemplo 5
T(n) = 2T(n/2) + cn
a = 2, b = 2 e f(n) = cn
nlogb a
= nlog2 2
= n
– p. 41/44
Método mestre - Exemplo 5
T(n) = 2T(n/2) + cn
a = 2, b = 2 e f(n) = cn
nlogb a
= nlog2 2
= n
Logo, f(n) = cn = Θ(n) = Θ(nlogb a
)
– p. 41/44
Método mestre - Exemplo 5
T(n) = 2T(n/2) + cn
a = 2, b = 2 e f(n) = cn
nlogb a
= nlog2 2
= n
Logo, f(n) = cn = Θ(n) = Θ(nlogb a
)
Pelo Caso 2, T(n) = Θ(n log n).
– p. 41/44
Método mestre - Exemplo 6
T(n) = 8T(n/2) + cn2
– p. 42/44
Método mestre - Exemplo 6
T(n) = 8T(n/2) + cn2
a = 8, b = 2 e f(n) = cn2
– p. 42/44
Método mestre - Exemplo 6
T(n) = 8T(n/2) + cn2
a = 8, b = 2 e f(n) = cn2
nlogb a
= nlog2 8
= n3
– p. 42/44
Método mestre - Exemplo 6
T(n) = 8T(n/2) + cn2
a = 8, b = 2 e f(n) = cn2
nlogb a
= nlog2 8
= n3
Logo, f(n) = cn2
= O(nlogb a−
), onde = 1
– p. 42/44
Método mestre - Exemplo 6
T(n) = 8T(n/2) + cn2
a = 8, b = 2 e f(n) = cn2
nlogb a
= nlog2 8
= n3
Logo, f(n) = cn2
= O(nlogb a−
), onde = 1
Pelo Caso 1, T(n) = Θ(n3
).
– p. 42/44
Método mestre - Exemplo 7
T(n) = 7T(n/2) + cn2
– p. 43/44
Método mestre - Exemplo 7
T(n) = 7T(n/2) + cn2
a = 7, b = 2 e f(n) = cn2
– p. 43/44
Método mestre - Exemplo 7
T(n) = 7T(n/2) + cn2
a = 7, b = 2 e f(n) = cn2
nlogb a
= nlog2 7
– p. 43/44
Método mestre - Exemplo 7
T(n) = 7T(n/2) + cn2
a = 7, b = 2 e f(n) = cn2
nlogb a
= nlog2 7
Logo, f(n) = cn2
= O(nlogb a−
), onde > 0
– p. 43/44
Método mestre - Exemplo 7
T(n) = 7T(n/2) + cn2
a = 7, b = 2 e f(n) = cn2
nlogb a
= nlog2 7
Logo, f(n) = cn2
= O(nlogb a−
), onde > 0
Pelo Caso 1, T(n) = Θ(nlog2 7
).
– p. 43/44
Método mestre - Exercícios
1. T(n) = 2T(n/4) + 1
2. T(n) = 2T(n/4) +
√
n
3. T(n) = 2T(n/4) + n
4. T(n) = 2T(n/4) + n2
5. T(n) = T(n/2) + 1
6. T(n) = 4T(n/2) + n
7. T(n) = 4T(n/2) + n2
8. T(n) = 4T(n/2) + n3
– p. 44/44

More Related Content

What's hot

Resumo dos testes de convergência
Resumo dos testes de convergênciaResumo dos testes de convergência
Resumo dos testes de convergência
Pedro Neto
 
Aula 8 inducao matematica
Aula 8   inducao matematicaAula 8   inducao matematica
Aula 8 inducao matematica
wab030
 
Ajuste de Curvas - @professorenan
Ajuste de Curvas - @professorenanAjuste de Curvas - @professorenan
Ajuste de Curvas - @professorenan
Renan Gustavo
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em C
Caique Silva
 
Transações distribuídas
Transações distribuídasTransações distribuídas
Transações distribuídas
Rafaella Coelho
 

What's hot (20)

Resumo dos testes de convergência
Resumo dos testes de convergênciaResumo dos testes de convergência
Resumo dos testes de convergência
 
Aula 5 autovetores e autovalores
Aula 5   autovetores e autovaloresAula 5   autovetores e autovalores
Aula 5 autovetores e autovalores
 
Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
 
Teoria Lista Exercicios 1.0
Teoria Lista Exercicios 1.0Teoria Lista Exercicios 1.0
Teoria Lista Exercicios 1.0
 
Análise de arredondamento em ponto flutuante
Análise de arredondamento em ponto flutuanteAnálise de arredondamento em ponto flutuante
Análise de arredondamento em ponto flutuante
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetição
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Aula 8 inducao matematica
Aula 8   inducao matematicaAula 8   inducao matematica
Aula 8 inducao matematica
 
Tabela completa de derivadas e integrais
Tabela completa de derivadas e integraisTabela completa de derivadas e integrais
Tabela completa de derivadas e integrais
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de Concorrência
 
Tabela De Pares De Transformadas De Laplace
Tabela De Pares De Transformadas De LaplaceTabela De Pares De Transformadas De Laplace
Tabela De Pares De Transformadas De Laplace
 
Aula 02 - Escolha caso
Aula 02 - Escolha casoAula 02 - Escolha caso
Aula 02 - Escolha caso
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
Ajuste de Curvas - @professorenan
Ajuste de Curvas - @professorenanAjuste de Curvas - @professorenan
Ajuste de Curvas - @professorenan
 
Análise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoAnálise de Algoritmos - Método Guloso
Análise de Algoritmos - Método Guloso
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em C
 
Busca em largura (breadth first search)
Busca em largura (breadth first search)Busca em largura (breadth first search)
Busca em largura (breadth first search)
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Transações distribuídas
Transações distribuídasTransações distribuídas
Transações distribuídas
 

Similar to Análise de Algoritmos - Solução de Recorrências

Modelagem matematica aplicada a engenharia quimica
Modelagem matematica aplicada a engenharia quimicaModelagem matematica aplicada a engenharia quimica
Modelagem matematica aplicada a engenharia quimica
Vinicius Chacon
 
Dinâmica não-markoviana: uma abordagem via equação de Langevin
Dinâmica não-markoviana: uma abordagem via equação de LangevinDinâmica não-markoviana: uma abordagem via equação de Langevin
Dinâmica não-markoviana: uma abordagem via equação de Langevin
Leandro da Silva
 
Efeitos de memória em teoria de campos
Efeitos de memória em teoria de camposEfeitos de memória em teoria de campos
Efeitos de memória em teoria de campos
Leandro da Silva
 
Gerando triângulos pitagóricos
Gerando triângulos pitagóricosGerando triângulos pitagóricos
Gerando triângulos pitagóricos
Sandro de Macedo
 
Base trigonometria 001
Base trigonometria  001Base trigonometria  001
Base trigonometria 001
trigono_metria
 
matematica para o ensino medio I
 matematica para o ensino medio I matematica para o ensino medio I
matematica para o ensino medio I
Jailson Nascimento
 
Aula 9 inducao matematica ii
Aula 9   inducao matematica iiAula 9   inducao matematica ii
Aula 9 inducao matematica ii
wab030
 

Similar to Análise de Algoritmos - Solução de Recorrências (20)

Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdf
 
Modelagem matematica aplicada a engenharia quimica
Modelagem matematica aplicada a engenharia quimicaModelagem matematica aplicada a engenharia quimica
Modelagem matematica aplicada a engenharia quimica
 
Equação de Recorrência - I (Otimização)
Equação de Recorrência - I (Otimização)Equação de Recorrência - I (Otimização)
Equação de Recorrência - I (Otimização)
 
03 inducao i
03 inducao i03 inducao i
03 inducao i
 
Dinâmica não-markoviana: uma abordagem via equação de Langevin
Dinâmica não-markoviana: uma abordagem via equação de LangevinDinâmica não-markoviana: uma abordagem via equação de Langevin
Dinâmica não-markoviana: uma abordagem via equação de Langevin
 
Efeitos de memória em teoria de campos
Efeitos de memória em teoria de camposEfeitos de memória em teoria de campos
Efeitos de memória em teoria de campos
 
Gerando triângulos pitagóricos
Gerando triângulos pitagóricosGerando triângulos pitagóricos
Gerando triângulos pitagóricos
 
03-Notacoes O omega teta Complexidade e Corretude.pdf
03-Notacoes O omega teta Complexidade e Corretude.pdf03-Notacoes O omega teta Complexidade e Corretude.pdf
03-Notacoes O omega teta Complexidade e Corretude.pdf
 
Tnotas
TnotasTnotas
Tnotas
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Base trigonometria 001
Base trigonometria  001Base trigonometria  001
Base trigonometria 001
 
Números complexos
Números complexosNúmeros complexos
Números complexos
 
Teoria do números - Classificações especiais
Teoria do números - Classificações especiaisTeoria do números - Classificações especiais
Teoria do números - Classificações especiais
 
O teorema de cramér lundberg via martingais
O teorema de cramér lundberg via martingaisO teorema de cramér lundberg via martingais
O teorema de cramér lundberg via martingais
 
Lista 05
Lista 05Lista 05
Lista 05
 
matematica para o ensino medio I
 matematica para o ensino medio I matematica para o ensino medio I
matematica para o ensino medio I
 
Aula 1 a 15 vol1
Aula 1 a 15 vol1Aula 1 a 15 vol1
Aula 1 a 15 vol1
 
MMC1 (clase1).pdfmmmmmmmmmmmmmmmmmmmmmmmm
MMC1 (clase1).pdfmmmmmmmmmmmmmmmmmmmmmmmmMMC1 (clase1).pdfmmmmmmmmmmmmmmmmmmmmmmmm
MMC1 (clase1).pdfmmmmmmmmmmmmmmmmmmmmmmmm
 
Aula 9 inducao matematica ii
Aula 9   inducao matematica iiAula 9   inducao matematica ii
Aula 9 inducao matematica ii
 
Dinâmica estocástica em neurociência teórica II
Dinâmica estocástica em neurociência teórica IIDinâmica estocástica em neurociência teórica II
Dinâmica estocástica em neurociência teórica II
 

Recently uploaded

PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 

Recently uploaded (20)

About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Aula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.pptAula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.ppt
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 

Análise de Algoritmos - Solução de Recorrências

  • 1. An´alise de Algoritmos Solução de recorrências – p. 1/44
  • 2. Recorrências Uma recorrência é uma expressão que dá o valor de uma função em termos dos valores "anteriores" da mesma função. – p. 2/44
  • 3. Recorrências Uma recorrência é uma expressão que dá o valor de uma função em termos dos valores "anteriores" da mesma função. Para analisar o consumo de tempo de um algoritmo recursivo é necessário resolver uma recorrência. – p. 2/44
  • 4. Recorrências O exemplo clássico de recorrência, provavelmente o mais famoso, é a fórmula de Fibonacci: F(n) =    0 se n = 0 1 se n = 1 F(n − 1) + F(n − 2) se n ≥ 2 – p. 3/44
  • 5. Recorrências O exemplo clássico de recorrência, provavelmente o mais famoso, é a fórmula de Fibonacci: F(n) =    0 se n = 0 1 se n = 1 F(n − 1) + F(n − 2) se n ≥ 2 Uma “fórmula fechada” para F(n) é dada por: F(n) = 1 √ 5 1 + √ 5 2 n − 1 √ 5 1 − √ 5 2 n – p. 3/44
  • 6. Recorrências Um outro exemplo clássico de recorrência é: F(n) =    1 se n = 0 n.F(n − 1) se n ≥ 1 – p. 4/44
  • 7. Recorrências Um outro exemplo clássico de recorrência é: F(n) =    1 se n = 0 n.F(n − 1) se n ≥ 1 Uma fórmula fechada para F(n) é dada por: F(n) = n.F(n − 1) = n.(n − 1).F(n − 2) = · · · = = n.(n − 1).(n − 2) . . . 2.1.1 = n! – p. 4/44
  • 8. Recorrências Resolver uma recorrência é encontrar uma “fórmula fechada” que dê o valor da função diretamente em termos do seu argumento. – p. 5/44
  • 9. Recorrências - busca binária Vamos analisar novamente o consumo de tempo do algoritmo da busca binária. – p. 6/44
  • 10. Recorrências - busca binária Vamos analisar novamente o consumo de tempo do algoritmo da busca binária. Em cada iteração, o algoritmo descarta metade do vetor. – p. 6/44
  • 11. Recorrências - busca binária Vamos analisar novamente o consumo de tempo do algoritmo da busca binária. Em cada iteração, o algoritmo descarta metade do vetor. Se denotamos por T(n) o número máximo de iterações realizadas pela busca binária sobre um vetor com n elementos, – p. 6/44
  • 12. Recorrências - busca binária Vamos analisar novamente o consumo de tempo do algoritmo da busca binária. Em cada iteração, o algoritmo descarta metade do vetor. Se denotamos por T(n) o número máximo de iterações realizadas pela busca binária sobre um vetor com n elementos, a função T(n) pode ser expressa pela seguinte recorrência: T(n) = T( n 2 ) + 1, T(1) = 1 – p. 6/44
  • 13. Recorrências - busca binária Para obter uma solução, supomos inicialmente que n = 2k . – p. 7/44
  • 14. Recorrências - busca binária Para obter uma solução, supomos inicialmente que n = 2k . T(n) = T n 2 + 1 = T n 22 + 1 + 1 = T n 22 + 2 = T n 23 + 1 + 2 = T n 23 + 3 = · · · = T n 2k + k = k + 1 = log n + 1 – p. 7/44
  • 15. Recorrências - busca binária Podemos agora tentar mostrar que T(n) ≤ log n + 1, ∀n ≥ 1, por indução em n. – p. 8/44
  • 16. Recorrências - busca binária Podemos agora tentar mostrar que T(n) ≤ log n + 1, ∀n ≥ 1, por indução em n. Para n = 1, T(1) = 1 = log 1 + 1 – p. 8/44
  • 17. Recorrências - busca binária Podemos agora tentar mostrar que T(n) ≤ log n + 1, ∀n ≥ 1, por indução em n. Para n = 1, T(1) = 1 = log 1 + 1 Para n > 1, temos – p. 8/44
  • 18. Recorrências - busca binária Podemos agora tentar mostrar que T(n) ≤ log n + 1, ∀n ≥ 1, por indução em n. Para n = 1, T(1) = 1 = log 1 + 1 Para n > 1, temos T(n) = T( n 2 ) + 1 ≤ (log( n 2 ) + 1) + 1 ≤ log n 2 + 2 = (log n − 1) + 2 = log n + 1 – p. 8/44
  • 19. Recorrências - Exemplo Consideremos a recorrência T(n) = 2T( n 2 ) + n − 1, T(1) = 1 – p. 9/44
  • 20. Recorrências - Exemplo Consideremos a recorrência T(n) = 2T( n 2 ) + n − 1, T(1) = 1 Podemos conjecturar que T(n) ≤ n2 e tentar provar por indução em n. – p. 9/44
  • 21. Recorrências - Exemplo Consideremos a recorrência T(n) = 2T( n 2 ) + n − 1, T(1) = 1 Podemos conjecturar que T(n) ≤ n2 e tentar provar por indução em n. T(1) = 1 ≤ 12 – p. 9/44
  • 22. Recorrências - Exemplo Consideremos a recorrência T(n) = 2T( n 2 ) + n − 1, T(1) = 1 Podemos conjecturar que T(n) ≤ n2 e tentar provar por indução em n. T(1) = 1 ≤ 12 T(2) = 2T(1) + 1 = 3 < 22 – p. 9/44
  • 23. Recorrências - Exemplo Para n ≥ 3, temos – p. 10/44
  • 24. Recorrências - Exemplo Para n ≥ 3, temos T(n) = 2T( n 2 ) + n − 1 ≤ 2 n 2 2 + n − 1 ≤ 2 n 2 2 + n − 1 ≤ n2 2 + n − 1 ≤ n2 2 + n2 2 = n2 , ∀n > 0 – p. 10/44
  • 25. Recorrências - Exemplo Será n2 uma boa estimativa para T(n)? – p. 11/44
  • 26. Recorrências - Exemplo Será n2 uma boa estimativa para T(n)? Será que conseguimos provar que T(n) ≤ cn, para alguma constante c > 0 e n ≥ n0? – p. 11/44
  • 27. Recorrências - Exemplo Será n2 uma boa estimativa para T(n)? Será que conseguimos provar que T(n) ≤ cn, para alguma constante c > 0 e n ≥ n0? Vamos tentar. – p. 11/44
  • 28. Recorrências - Exemplo T(n) = 2T( n 2 ) + n − 1 ≤ 2c n 2 + n − 1 ≤ 2c n 2 + n − 1 ≤ cn + n − 1 cn Para qualquer c > 0. – p. 12/44
  • 29. Recorrências - Exemplo T(n) = 2T( n 2 ) + n − 1 ≤ 2c n 2 + n − 1 ≤ 2c n 2 + n − 1 ≤ cn + n − 1 cn Para qualquer c > 0. Logo, T(n) cn – p. 12/44
  • 30. Recorrências - Exemplo E que tal T(n) ≤ n log2 n + 1? – p. 13/44
  • 31. Recorrências - Exemplo E que tal T(n) ≤ n log2 n + 1? T(1) = 1 = 1 log 1 + 1 – p. 13/44
  • 32. Recorrências - Exemplo E que tal T(n) ≤ n log2 n + 1? T(1) = 1 = 1 log 1 + 1 T(2) = 2T(1) + 1 = 3 = 2 log 2 + 1 – p. 13/44
  • 33. Recorrências - Exemplo E que tal T(n) ≤ n log2 n + 1? T(1) = 1 = 1 log 1 + 1 T(2) = 2T(1) + 1 = 3 = 2 log 2 + 1 Vamos então tentar mostrar que T(n) ≤ n log2 n + 1 para n ≥ 1. – p. 13/44
  • 34. Recorrências - Exemplo T(n) = 2T( n 2 ) + n − 1 ≤ 2( n 2 log n 2 + 1) + n − 1 ≤ 2( n 2 log n 2 + 1) + n − 1 = n(log n − 1) + n + 1 = n log n + 1 – p. 14/44
  • 35. Recorrências - Exemplo T(n) = 2T( n 2 ) + n − 1 ≤ 2( n 2 log n 2 + 1) + n − 1 ≤ 2( n 2 log n 2 + 1) + n − 1 = n(log n − 1) + n + 1 = n log n + 1 Portanto, T(n) ≤ n log n + 1 para n ≥ 1. – p. 14/44
  • 36. Recorrências Os exemplos anteriores mostram que a solução de uma recorrência pode ser obtida: 1. Desenvolvendo (ou “desenrolando”) a recorrência. 2. Estimando a solução e provando o resultado por indução. Estas duas formas conjuntas recebem o nome de método da substituição. – p. 15/44
  • 37. Recorrências - Exemplo Consideremos a recorrência T(n) = T( n 2 ) + T( n 2 ) + 1, T(1) = 1 – p. 16/44
  • 38. Recorrências - Exemplo Consideremos a recorrência T(n) = T( n 2 ) + T( n 2 ) + 1, T(1) = 1 Podemos conjecturar que T(n) ≤ cn e tentar provar por indução em n. – p. 16/44
  • 39. Recorrências - Exemplo Consideremos a recorrência T(n) = T( n 2 ) + T( n 2 ) + 1, T(1) = 1 Podemos conjecturar que T(n) ≤ cn e tentar provar por indução em n. É comum partimos logo para analisar o caso geral, pois a base geralmente pode ser acertada. – p. 16/44
  • 40. Recorrências - Exemplo T(n) = T( n 2 ) + T( n 2 ) + 1 ≤ c n 2 + c n 2 + 1 = cn + 1 O que não implica que T(n) ≤ cn. – p. 17/44
  • 41. Recorrências - Exemplo T(n) = T( n 2 ) + T( n 2 ) + 1 ≤ c n 2 + c n 2 + 1 = cn + 1 O que não implica que T(n) ≤ cn. Importante: precisamos provar a forma exata da hipótese indutiva. – p. 17/44
  • 42. Recorrências - Exemplo Uma forma de contornar este problema é subtrair um termo de ordem menor. Por exemplo, tomemos agora T(n) ≤ cn − 1. – p. 18/44
  • 43. Recorrências - Exemplo Uma forma de contornar este problema é subtrair um termo de ordem menor. Por exemplo, tomemos agora T(n) ≤ cn − 1. T(n) = T( n 2 ) + T( n 2 ) + 1 ≤ (c n 2 − 1) + (c n 2 − 1) + 1 ≤ cn − 1 para qualquer c positivo. – p. 18/44
  • 44. Recorrências - Exemplo Uma forma de contornar este problema é subtrair um termo de ordem menor. Por exemplo, tomemos agora T(n) ≤ cn − 1. T(n) = T( n 2 ) + T( n 2 ) + 1 ≤ (c n 2 − 1) + (c n 2 − 1) + 1 ≤ cn − 1 para qualquer c positivo. Tomando c = 2, temos T(1) = 1 ≤ 2(1) − 1. Logo, T(n) ≤ 2n − 1. – p. 18/44
  • 45. Recorrências - Exercícios 1. Resolva a recorrência T(n) = T( n 2 ) + 7n + 2, T(1) = 1. 2. Mostre que a solução de T(n) = T(n − 1) + n é O(n2). 3. Mostre que a solução de T(n) = T( n 2 ) + 1 é O(log n). 4. Mostre que a solução de T(n) = 2T( n 2 + 17) + n é O(n log n). 5. Resolva a recorrência T(n) = 3T( n 2 ) + n, T(1) = 1. 6. Resolva a recorrência T(n) = 3T( n 3 ) + 1, T(1) = 1. 7. Mostre que a solução de T(n) = 3T n 2 + n é O(nlog2 3). 8. Mostre que a solução de T(n) = 4T n 2 + n é O(n2). – p. 19/44
  • 46. An´alise de Algoritmos Identidades úteis – p. 20/44
  • 47. Identidades úteis Apresentamos a seguir algumas igualdades e desigualdades que são úteis na análise algoritmos. – p. 21/44
  • 48. Identidades úteis Apresentamos a seguir algumas igualdades e desigualdades que são úteis na análise algoritmos. S´erie aritm´etica: Se ai = ai−1 + c, onde c é uma constante, então a1 + a2 + a3 + · · · + an = n(an + a1) 2 – p. 21/44
  • 49. Série geométrica Se ai = cai−1, onde c = 1 é uma constante, então a1 + a2 + a3 + · · · + an = a1(cn − 1) c − 1 Se 0 < c < 1, então ∞ i=1 ai = a1 1 − c – p. 22/44
  • 50. Soma de quadrados n i=1 i2 = n(n + 1)(2n + 1) 6 – p. 23/44
  • 51. Logaritmos logb a = logc a logc b aloga x = x – p. 24/44
  • 52. Aproximação de Stirling n! = √ 2πn n e n (1 + O( 1 n )) Em particular, a aproximação de Stirling implica que log(n!) = Θ(n log n) – p. 25/44
  • 53. An´alise de Algoritmos Árvore de recursão – p. 26/44
  • 54. Árvore de recursão Árvore de recursão é um método muito útil para estimar a solução de uma recorrência. Uma vez obtida a solução, utilizamos o método anterior para prová-la formalmente. A idéia da árvore de recursão é tentar representar o desenvolvimento da recorrência por um diagrama (geralmente uma árvore) onde cada nó representa um subproblema, e somar os custos por nível. – p. 27/44
  • 55. Exemplo 1 Consideremos a recorrência T(n) = 2T n 2 + n – p. 28/44
  • 56. Exemplo 2 T(n) = T n 3 + T 2n 3 + n – p. 29/44
  • 57. Exemplo 3 T(n) = 3T n 2 + n2 – p. 30/44
  • 58. Exercícios Use árvore de recursão para determinar um limite superior para as recorrências abaixo, e depois prove o resultado usando indução ou substituição. 1. T(n) = T(n/4) + T(n/2) + n2 2. T(n) = 3T n 4 + n 3. T(n) = 4T n 2 + 2 + n 4. T(n) = T(n − a) + T(a) + cn – p. 31/44
  • 59. An´alise de Algoritmos Método mestre – p. 32/44
  • 60. Método mestre O método mestre fornece uma receita para a solução de recorrências da forma T(n) = aT(n/b) + f(n) onde a ≥ 1 e b > 1 são constantes e f(n) é uma função assintóticamente positiva. – p. 33/44
  • 61. Método mestre Considere a recorrência T(n) = aT(n/b) + f(n) onde a ≥ 1 e b > 1 são constantes, f(n) é uma função assintóticamente positiva, e n/b pode ser n/b ou n/b . Então 1. Se f(n) = O(nlogb a− ) para alguma constante > 0 então T(n) = Θ(nlogb a ) – p. 34/44
  • 62. Método mestre Considere a recorrência T(n) = aT(n/b) + f(n) onde a ≥ 1 e b > 1 são constantes, f(n) é uma função assintóticamente positiva, e n/b pode ser n/b ou n/b . Então 1. Se f(n) = O(nlogb a− ) para alguma constante > 0 então T(n) = Θ(nlogb a ) 2. Se f(n) = Θ(nlogb a ) então T(n) = Θ(nlogb a log n) – p. 34/44
  • 63. Método mestre 3. Se f(n) = Ω(nlogb a+ ) para alguma constante > 0, e se af(n/b) ≤ cf(n) para alguma constante c < 1 e n suficientemente grande, então T(n) = Θ(f(n)) – p. 35/44
  • 64. Método mestre T(n) = aT(n/b) + f(n) T(n) Se Θ(nlogb a ) f(n) = O(nlogb a− ) Θ(nlogb a log n) f(n) = Θ(nlogb a ) Θ(f(n)) f(n) = Ω(nlogb a+ ) e af(n/b) ≤ cf(n), c < 1 – p. 36/44
  • 65. Método mestre - Exemplo 1 T(n) = 9T(n/3) + n – p. 37/44
  • 66. Método mestre - Exemplo 1 T(n) = 9T(n/3) + n a = 9, b = 3 e f(n) = n – p. 37/44
  • 67. Método mestre - Exemplo 1 T(n) = 9T(n/3) + n a = 9, b = 3 e f(n) = n nlogb a = nlog3 9 = n2 – p. 37/44
  • 68. Método mestre - Exemplo 1 T(n) = 9T(n/3) + n a = 9, b = 3 e f(n) = n nlogb a = nlog3 9 = n2 Logo, f(n) = O(nlogb a− ), onde = 1 – p. 37/44
  • 69. Método mestre - Exemplo 1 T(n) = 9T(n/3) + n a = 9, b = 3 e f(n) = n nlogb a = nlog3 9 = n2 Logo, f(n) = O(nlogb a− ), onde = 1 Pelo Caso 1, T(n) = Θ(n2 ). – p. 37/44
  • 70. Método mestre - Exemplo 2 T(n) = T(2n/3) + 1 – p. 38/44
  • 71. Método mestre - Exemplo 2 T(n) = T(2n/3) + 1 a = 1, b = 3/2 e f(n) = 1 – p. 38/44
  • 72. Método mestre - Exemplo 2 T(n) = T(2n/3) + 1 a = 1, b = 3/2 e f(n) = 1 nlogb a = nlog3/2 1 = n0 = 1 – p. 38/44
  • 73. Método mestre - Exemplo 2 T(n) = T(2n/3) + 1 a = 1, b = 3/2 e f(n) = 1 nlogb a = nlog3/2 1 = n0 = 1 Logo, f(n) = 1 = Θ(nlogb a ) – p. 38/44
  • 74. Método mestre - Exemplo 2 T(n) = T(2n/3) + 1 a = 1, b = 3/2 e f(n) = 1 nlogb a = nlog3/2 1 = n0 = 1 Logo, f(n) = 1 = Θ(nlogb a ) Pelo Caso 2, T(n) = Θ(log n). – p. 38/44
  • 75. Método mestre - Exemplo 3 T(n) = 3T(n/4) + n log n – p. 39/44
  • 76. Método mestre - Exemplo 3 T(n) = 3T(n/4) + n log n a = 3, b = 4 e f(n) = n log n – p. 39/44
  • 77. Método mestre - Exemplo 3 T(n) = 3T(n/4) + n log n a = 3, b = 4 e f(n) = n log n nlogb a = nlog4 3 – p. 39/44
  • 78. Método mestre - Exemplo 3 T(n) = 3T(n/4) + n log n a = 3, b = 4 e f(n) = n log n nlogb a = nlog4 3 Logo, f(n) = n log n = Ω(nlog4 3+ ) – p. 39/44
  • 79. Método mestre - Exemplo 3 T(n) = 3T(n/4) + n log n a = 3, b = 4 e f(n) = n log n nlogb a = nlog4 3 Logo, f(n) = n log n = Ω(nlog4 3+ ) af(n/b) = 3(n/4) log(n/4) ≤ (3/4)n log n – p. 39/44
  • 80. Método mestre - Exemplo 3 T(n) = 3T(n/4) + n log n a = 3, b = 4 e f(n) = n log n nlogb a = nlog4 3 Logo, f(n) = n log n = Ω(nlog4 3+ ) af(n/b) = 3(n/4) log(n/4) ≤ (3/4)n log n Pelo Caso 3, T(n) = Θ(n log n). – p. 39/44
  • 81. Método mestre - Exemplo 4 T(n) = 2T(n/2) + n log n – p. 40/44
  • 82. Método mestre - Exemplo 4 T(n) = 2T(n/2) + n log n a = 2, b = 2 e f(n) = n log n – p. 40/44
  • 83. Método mestre - Exemplo 4 T(n) = 2T(n/2) + n log n a = 2, b = 2 e f(n) = n log n nlogb a = nlog2 2 = n – p. 40/44
  • 84. Método mestre - Exemplo 4 T(n) = 2T(n/2) + n log n a = 2, b = 2 e f(n) = n log n nlogb a = nlog2 2 = n Caso 3 – p. 40/44
  • 85. Método mestre - Exemplo 4 T(n) = 2T(n/2) + n log n a = 2, b = 2 e f(n) = n log n nlogb a = nlog2 2 = n Caso 3 Mas, f(n) = n log n = Ω(nlog2 2+ ) – p. 40/44
  • 86. Método mestre - Exemplo 4 T(n) = 2T(n/2) + n log n a = 2, b = 2 e f(n) = n log n nlogb a = nlog2 2 = n Caso 3 Mas, f(n) = n log n = Ω(nlog2 2+ ) Portanto, o método mestre não se aplica. – p. 40/44
  • 87. Método mestre - Exemplo 5 T(n) = 2T(n/2) + cn – p. 41/44
  • 88. Método mestre - Exemplo 5 T(n) = 2T(n/2) + cn a = 2, b = 2 e f(n) = cn – p. 41/44
  • 89. Método mestre - Exemplo 5 T(n) = 2T(n/2) + cn a = 2, b = 2 e f(n) = cn nlogb a = nlog2 2 = n – p. 41/44
  • 90. Método mestre - Exemplo 5 T(n) = 2T(n/2) + cn a = 2, b = 2 e f(n) = cn nlogb a = nlog2 2 = n Logo, f(n) = cn = Θ(n) = Θ(nlogb a ) – p. 41/44
  • 91. Método mestre - Exemplo 5 T(n) = 2T(n/2) + cn a = 2, b = 2 e f(n) = cn nlogb a = nlog2 2 = n Logo, f(n) = cn = Θ(n) = Θ(nlogb a ) Pelo Caso 2, T(n) = Θ(n log n). – p. 41/44
  • 92. Método mestre - Exemplo 6 T(n) = 8T(n/2) + cn2 – p. 42/44
  • 93. Método mestre - Exemplo 6 T(n) = 8T(n/2) + cn2 a = 8, b = 2 e f(n) = cn2 – p. 42/44
  • 94. Método mestre - Exemplo 6 T(n) = 8T(n/2) + cn2 a = 8, b = 2 e f(n) = cn2 nlogb a = nlog2 8 = n3 – p. 42/44
  • 95. Método mestre - Exemplo 6 T(n) = 8T(n/2) + cn2 a = 8, b = 2 e f(n) = cn2 nlogb a = nlog2 8 = n3 Logo, f(n) = cn2 = O(nlogb a− ), onde = 1 – p. 42/44
  • 96. Método mestre - Exemplo 6 T(n) = 8T(n/2) + cn2 a = 8, b = 2 e f(n) = cn2 nlogb a = nlog2 8 = n3 Logo, f(n) = cn2 = O(nlogb a− ), onde = 1 Pelo Caso 1, T(n) = Θ(n3 ). – p. 42/44
  • 97. Método mestre - Exemplo 7 T(n) = 7T(n/2) + cn2 – p. 43/44
  • 98. Método mestre - Exemplo 7 T(n) = 7T(n/2) + cn2 a = 7, b = 2 e f(n) = cn2 – p. 43/44
  • 99. Método mestre - Exemplo 7 T(n) = 7T(n/2) + cn2 a = 7, b = 2 e f(n) = cn2 nlogb a = nlog2 7 – p. 43/44
  • 100. Método mestre - Exemplo 7 T(n) = 7T(n/2) + cn2 a = 7, b = 2 e f(n) = cn2 nlogb a = nlog2 7 Logo, f(n) = cn2 = O(nlogb a− ), onde > 0 – p. 43/44
  • 101. Método mestre - Exemplo 7 T(n) = 7T(n/2) + cn2 a = 7, b = 2 e f(n) = cn2 nlogb a = nlog2 7 Logo, f(n) = cn2 = O(nlogb a− ), onde > 0 Pelo Caso 1, T(n) = Θ(nlog2 7 ). – p. 43/44
  • 102. Método mestre - Exercícios 1. T(n) = 2T(n/4) + 1 2. T(n) = 2T(n/4) + √ n 3. T(n) = 2T(n/4) + n 4. T(n) = 2T(n/4) + n2 5. T(n) = T(n/2) + 1 6. T(n) = 4T(n/2) + n 7. T(n) = 4T(n/2) + n2 8. T(n) = 4T(n/2) + n3 – p. 44/44