![Page 1: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/1.jpg)
Análise de Algoritmos
Essas transparências foram adaptadas das transparênciasdo Prof. Paulo Feofiloff e do Prof. José Coelho de Pina.
Algoritmos – p. 1
![Page 2: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/2.jpg)
Resolução de recorrências
Substitua a notação assintótica por função da classe.
Restrinja-se a n potência de algo, se necessário.
Estipule que na base o valor é 1.
Use expansão ou árvore de recorrência paradeterminar um “chute” de solução.
Confira se o chute está correto.
Algoritmos – p. 2
![Page 3: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/3.jpg)
Resolução de recorrências
Substitua a notação assintótica por função da classe.
Restrinja-se a n potência de algo, se necessário.
Estipule que na base o valor é 1.
Use expansão ou árvore de recorrência paradeterminar um “chute” de solução.
Confira se o chute está correto.
Exemplos:
T (n) = T (⌊n/2⌋) + Θ(1)
T (n) = T (n− 1) + Θ(n)
T (n) = 3T (⌊n/2⌋) + Θ(n)
T (n) = 2T (⌊n/2⌋) + Θ(n2)
Algoritmos – p. 2
![Page 4: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/4.jpg)
Resolução de recorrênciasRecorrência do Mergesort:
T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) + Θ(n)
Algoritmos – p. 3
![Page 5: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/5.jpg)
Resolução de recorrênciasRecorrência do Mergesort:
T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) + Θ(n)
Versão simplificada:T (1) = 1 e T (n) = 2T (n/2) + n para n ≥ 2 potência de 2.
Algoritmos – p. 3
![Page 6: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/6.jpg)
Resolução de recorrênciasRecorrência do Mergesort:
T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) + Θ(n)
Versão simplificada:T (1) = 1 e T (n) = 2T (n/2) + n para n ≥ 2 potência de 2.
Expansão:
T (n) = 2T (n/2) + n
= 2(
2T (n/22) + n/2)
+ n = 22T (n/22) + 2n
= 22(
2T (n/23) + n/22)
+ 2n = 23T (n/23) + 3n
= 23(
2T (n/24) + n/23)
+ 3n = 24T (n/24) + 4n
= . . . = 2kT (n/2k) + kn para k = lg n
= nT (1) + (lg n)n = n+ n lg n = Θ(n lg n)
Algoritmos – p. 3
![Page 7: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/7.jpg)
Resolução de recorrências
T (n) = T (⌊n/2⌋) + Θ(1)
Algoritmos – p. 4
![Page 8: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/8.jpg)
Resolução de recorrências
T (n) = T (⌊n/2⌋) + Θ(1)
Versão simplificada:T (1) = 1 e T (n) = T (n/2) + 1 para n ≥ 2 potência de 2.
Algoritmos – p. 4
![Page 9: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/9.jpg)
Resolução de recorrências
T (n) = T (⌊n/2⌋) + Θ(1)
Versão simplificada:T (1) = 1 e T (n) = T (n/2) + 1 para n ≥ 2 potência de 2.
Expansão:
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/24) + 1)
+ 3 = T (n/24) + 4
= . . . = T (n/2k) + k para k = lg n
= T (1) + lg n = 1 + lg n = Θ(lg n)
Algoritmos – p. 4
![Page 10: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/10.jpg)
Resolução de recorrências
T (n) = T (n− 1) + Θ(n)
Algoritmos – p. 5
![Page 11: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/11.jpg)
Resolução de recorrências
T (n) = T (n− 1) + Θ(n)
Versão simplificada:T (1) = 1 e T (n) = T (n− 1) + n para n ≥ 2.
Algoritmos – p. 5
![Page 12: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/12.jpg)
Resolução de recorrências
T (n) = T (n− 1) + Θ(n)
Versão simplificada:T (1) = 1 e T (n) = T (n− 1) + n para n ≥ 2.
Expansão:
T (n) = T (n− 1) + n
= T (n− 2) + (n− 1) + n
= T (n− 3) + (n− 2) + (n− 1) + n
= T (n− 4) + (n− 3) + (n− 2) + (n− 1) + n
= . . . = T (1) + 2 + 3 + · · · + (n− 2) + (n− 1) + n
= 1 + 2 + · · · + (n− 1) + (n− 2) + n =(n+ 1)n
2= Θ(n2)
Algoritmos – p. 5
![Page 13: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/13.jpg)
Resolução de recorrênciasExpansão:
T (n) = T (n− 1) + n
= T (n− 2) + (n− 1) + n
= T (n− 3) + (n− 2) + (n− 1) + n
= . . . = T (1) + 2 + 3 + · · · + (n− 2) + (n− 1) + n
= 1 + 2 + · · · + (n− 1) + (n− 2) + n =(n+ 1)n
2= Θ(n2)
Algoritmos – p. 6
![Page 14: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/14.jpg)
Resolução de recorrênciasExpansão:
T (n) = T (n− 1) + n
= T (n− 2) + (n− 1) + n
= T (n− 3) + (n− 2) + (n− 1) + n
= . . . = T (1) + 2 + 3 + · · · + (n− 2) + (n− 1) + n
= 1 + 2 + · · · + (n− 1) + (n− 2) + n =(n+ 1)n
2= Θ(n2)
Note que não temos restrição no n neste caso.
Só faça a conta quandoos termos que saem da recorrência são o mesmo(como o n na recorrência do Mergesort, e o 1 na anterior).
Algoritmos – p. 6
![Page 15: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/15.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
Versão simplificada:T (1) = 1T (n) = 3T (n/2) + n para n ≥ 2 potência de 2.
Algoritmos – p. 7
![Page 16: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/16.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
Versão simplificada:T (1) = 1T (n) = 3T (n/2) + n para n ≥ 2 potência de 2.
Expansão:
T (n) = 3T(n
2
)
+ n
= 3(
3T( n
22)
+n
2
)
+ n = 32T( n
22)
+3
2n+ n
= 32(
3T( n
23)
+n
22)
+3
2n+ n = 33T
( n
23)
+(3
2
)2n+
3
2n+ n
Algoritmos – p. 7
![Page 17: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/17.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
Versão simplificada:T (1) = 1T (n) = 3T (n/2) + n para n ≥ 2 potência de 2.
Expansão:
T (n) = 3T(n
2
)
+ n
= 3(
3T( n
22)
+n
2
)
+ n = 32T( n
22)
+3
2n+ n
= 32(
3T( n
23)
+n
22)
+3
2n+ n = 33T
( n
23)
+(3
2
)2n+
3
2n+ n
= 33(
3T( n
24)
+n
23)
+(3
2
)2n+
3
2n+ n (3)
= 34T( n
24)
+(3
2
)3n+
(3
2
)2n+
3
2n+ n
Algoritmos – p. 7
![Page 18: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/18.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
Expansão:
T (n) = 3T (n
2) + n = 32T (
n
22) +
3
2n+ n
= 33T (n
23) + (
3
2)2n+
3
2n+ n
= 34T (n
24) + (
3
2)3n+ (
3
2)2n+
3
2n+ n
= . . . = 3kT (n
2k) + (
3
2)k−1n+ · · · +
3
2n+ n para k = lg n
3lg n T (1) +(
lgn−1∑
i=0
3
2
)
n
3lg n +((3
2)lgn − 132− 1
)
n = 3lg n + 2(
(3
2)lg n − 1
)
n
Algoritmos – p. 8
![Page 19: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/19.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
Expansão:
T (n) = 3T (n
2) + n = 32T (
n
22) +
3
2n+ n
= 33T (n
23) + (
3
2)2n+
3
2n+ n
= 34T (n
24) + (
3
2)3n+ (
3
2)2n+
3
2n+ n
= . . . = 3kT (n
2k) + (
3
2)k−1n+ · · · +
3
2n+ n para k = lg n
= 3lg n T (1) +(
lg n−1∑
i=0
3
2
)
n
= 3lg n +((3
2)lg n − 132− 1
)
n = 3lg n + 2((3
2
)lg n− 1
)
n
Algoritmos – p. 8
![Page 20: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/20.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
T (n) = 3T (n
2) + n = 32T (
n
22) +
3
2n+ n
= . . . = 3kT (n
2k) + (
3
2)k−1n+ · · · +
3
2n+ n para k = lg n
= 3lg n T (1) +(
lg n−1∑
i=0
3
2
)
n = 3lgn +((3
2)lg n − 132− 1
)
n
= 3lg n + 2(
(3
2)lgn − 1
)
n
= 3lg n + 2(3lg n
n− 1
)
n
= 3lg n + 2(
3lgn − n)
Algoritmos – p. 9
![Page 21: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/21.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
T (n) = 3T (n
2) + n = 32T (
n
22) +
3
2n+ n
= . . . = 3kT (n
2k) + (
3
2)k−1n+ · · · +
3
2n+ n para k = lg n
= 3lg n T (1) +(
lg n−1∑
i=0
3
2
)
n = 3lgn +((3
2)lg n − 132− 1
)
n
= 3lg n + 2(
(3
2)lgn − 1
)
n
= 3lg n + 2(3lg n
n− 1
)
n
= 3lg n + 2(
3lgn − n)
= 3lg n + 23lg n − 2n
Algoritmos – p. 9
![Page 22: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/22.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
T (n) = 3T (n
2) + n = 32T (
n
22) +
3
2n+ n
= . . . = 3kT (n
2k) + (
3
2)k−1n+ · · · +
3
2n+ n para k = lg n
= 3lg n T (1) +(
lg n−1∑
i=0
3
2
)
n = 3lgn +((3
2)lg n − 132− 1
)
n
= 3lg n + 2(
(3
2)lgn − 1
)
n = 3lg n + 2(3lgn
n− 1
)
n
= 3lg n + 2(
3lgn − n)
= 3lg n + 23lg n − 2n
= 33lg n − 2n
Algoritmos – p. 9
![Page 23: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/23.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
T (n) = 3lg n T (1) +(
lgn−1∑
i=0
3
2
)
n = 3lg n +((3
2)lgn − 132− 1
)
n
= 3lg n + 2(
(3
2)lg n − 1
)
n = 3lgn + 2(3lg n
n− 1
)
n
= 3lg n + 2(
3lg n − n)
= 3lg n + 23lg n − 2n
= 33lg n − 2n
Algoritmos – p. 9
![Page 24: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/24.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
T (n) = 3lg n T (1) +(
lgn−1∑
i=0
3
2
)
n = 3lg n +((3
2)lgn − 132− 1
)
n
= 3lg n + 2(
(3
2)lg n − 1
)
n = 3lgn + 2(3lg n
n− 1
)
n
= 3lg n + 2(
3lg n − n)
= 3lg n + 23lg n − 2n
= 33lg n − 2n
= 3(
2lg 3)lg n− 2n
Algoritmos – p. 9
![Page 25: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/25.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
T (n) = 3lg n T (1) +(
lgn−1∑
i=0
3
2
)
n = 3lg n +((3
2)lgn − 132− 1
)
n
= 3lg n + 2(
(3
2)lg n − 1
)
n = 3lgn + 2(3lg n
n− 1
)
n
= 3lg n + 2(
3lg n − n)
= 3lg n + 23lg n − 2n
= 33lg n − 2n
= 3(
2lg n)lg 3− 2n
= 3nlg 3 − 2n
Algoritmos – p. 9
![Page 26: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/26.jpg)
T (n) = 3T (⌊n/2⌋) + Θ(n)
T (n) = 3lg n T (1) +(
lgn−1∑
i=0
3
2
)
n = 3lg n +((3
2)lgn − 132− 1
)
n
= 3lg n + 2(
(3
2)lg n − 1
)
n = 3lgn + 2(3lg n
n− 1
)
n
= 3lg n + 2(
3lg n − n)
= 3lg n + 23lg n − 2n
= 33lg n − 2n
= 3(
2lg n)lg 3− 2n
= 3nlg 3 − 2n
= Θ(nlg 3)
Algoritmos – p. 9
![Page 27: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/27.jpg)
Segmento de soma máximaUm segmento de um vetor A[1 . . n] é qualquer subvetor daforma A[e . . d].
Problema: Dado um vetor A[1 . . n] de números inteiros,determinar um segmento A[e . . d] de soma máxima.
Entra:1 n
A 31 −41 59 26 −53 58 97 −93 −23 84
Algoritmos – p. 10
![Page 28: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/28.jpg)
Segmento de soma máximaUm segmento de um vetor A[1 . . n] é qualquer subvetor daforma A[e . . d].
Problema: Dado um vetor A[1 . . n] de números inteiros,determinar um segmento A[e . . d] de soma máxima.
Entra:1 n
A 31 −41 59 26 −53 58 97 −93 −23 84
Sai:1 3 7 n
A 31 −41 59 26 −53 58 97 −93 −23 84
A[e . . d] = A[3 . . 7] é segmento de soma máxima.A[3 . . 7] tem soma 187.
Algoritmos – p. 10
![Page 29: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/29.jpg)
Algoritmo café-com-leite
Determina um segmento de soma máxima de A[1 . . n].
SEG-MAX-3 (A, n)1 somamax ← 02 e← 0 d← −1 ✄ A[e . . d] é vazio3 para i← 1 até n faça4 para f ← i até n faça5 soma ← 06 para k ← i até f faça7 soma ← soma + A[k]8 se soma > somamax então9 somamax ← soma e← i d← f
10 devolva e, d e somamax
Algoritmos – p. 11
![Page 30: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/30.jpg)
Consumo de tempoSe a execução de cada linha de código consome 1 unidadede tempo o consumo total é:linha todas as execuções da linha1-2 = 2 = Θ(1)
3 = n+ 1 = Θ(n)
4 = (n+ 1) + n+ (n− 1) + · · · + 2 = Θ(n2)
5 = n+ (n− 1) + · · · + 1 = Θ(n2)
6 = (2 + · · · + (n+ 1)) + (2 + · · · + n) + · · · + 2 = Θ(n3)
7 = (1 + · · · + n) + (1 + · · · + (n− 1)) + · · · + 1 = Θ(n3)
8 = n+ (n− 1) + (n− 2) + · · · + 1 = Θ(n2)
9 ≤ n+ (n− 1) + (n− 2) + · · · + 1 = O(n2)
10 = 1 = Θ(1)
total = Θ(2n3 + 3n2 + n+ 2) + O(n2) = Θ(n3)
Algoritmos – p. 12
![Page 31: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/31.jpg)
Algoritmo arroz-com-feijão
Determina um segmento de soma máxima de A[1 . . n].
SEG-MAX-2 (A, n)1 somamax ← 02 e← 0 d← −1 ✄ A[e . . d] é vazio3 para i← 1 até n faça4 soma ← 05 para f ← i até n faça6 soma ← soma + A[f ]7 se soma > somamax então8 somamax ← soma e← i d← f9 devolva e, d e somamax
Algoritmos – p. 13
![Page 32: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/32.jpg)
Consumo de tempo
Se a execução de cada linha de código consome 1 unidadede tempo o consumo total é:
linha todas as execuções da linha1-2 = 2 = Θ(1)
3 = n+ 1 = Θ(n)
4 = n = Θ(n)
5 = (n+ 1) + n+ · · · + 2 = Θ(n2)
6 = n+ (n− 1) + · · · + 1 = Θ(n2)
7 = n+ (n− 1) + · · · + 1 = Θ(n2)
8 ≤ n+ (n− 1) + · · · + 1 = O(n2)
9 = 1 = Θ(1)
total = Θ(3n2 + 2n+ 2) + O(n2) = Θ(n2)
Algoritmos – p. 14
![Page 33: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/33.jpg)
Solução de divisão-e-conquista
q
q
q
q
ee de
ed dd
em dmp
p
p
p
r
r
r
r
Algoritmos – p. 15
![Page 34: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/34.jpg)
Algoritmo de divisão-e-conquistaDetermina soma máxima de um seg. de A[p . . r].
SEG-MAX-DC (A, p, r)1 se p = r então devolva max(0, A[p])2 q ← ⌊(p+ r)/2⌋3 maxesq ← SEG-MAX-DC(A, p, q)4 maxdir ← SEG-MAX-DC(A, q + 1, r)5 max2esq ← soma ← A[q]6 para i← q − 1 decrescendo até p faça7 soma ← soma + A[i]8 max2esq ← max(max2esq , soma)9 max2dir ← soma ← A[q + 1]
10 para f ← q + 2 até r faça11 soma ← soma + A[f ]12 max2dir ← max(max2dir , soma)13 maxcruz ← max2esq +max2dir
14 devolva max(maxesq ,maxcruz ,maxdir )Algoritmos – p. 16
![Page 35: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/35.jpg)
Correção
Verifique que:
maxesq é a soma máxima de um segmento de A[p . . q];
maxdir é a soma máxima de um segmento deA[q + 1 . . r]; e
maxcruz é a soma máxima de um segmento da formaA[i . . f ] com i ≤ q e q + 1 ≤ f .
Conclua que o algoritmo devolve a soma máxima de umsegmento de A[p . . r].
Algoritmos – p. 17
![Page 36: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/36.jpg)
Consumo de tempoSe a execução de cada linha de código consome1 unidade de tempo o consumo total é:
linha todas as execuções da linha1-2 = 2 = Θ(1)
3 = T (⌈
n
2
⌉
) = T (⌈
n
2
⌉
)
4 = T (⌊
n
2
⌋
) = T (⌊
n
2
⌋
)
5 = 1 = Θ(1)
6 =⌈
n
2
⌉
+ 1 = Θ(n)
7-8 =⌈
n
2
⌉
= Θ(n)
9 = 1 = Θ(1)
10 =⌊
n
2
⌋
+ 1 = Θ(n)
11-12 =⌊
n
2
⌋
= Θ(n)
13-14 = 2 = Θ(1)
total = T (⌈
n
2
⌉
) + T (⌊
n
2
⌋
) + Θ(n)Algoritmos – p. 18
![Page 37: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/37.jpg)
Consumo de tempo
T (n) := consumo de tempo quando n = r − p+ 1
Na análise do consumo de tempo do SEG-MAX-DCchegamos a (já manjada) recorrência com Θ do lado direito:
T (n) = T (⌈n/2⌉) + T (⌊n/2⌋) + Θ(n)
Solução assintótica: T (n) é Θ(n lg n).
Algoritmos – p. 19
![Page 38: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/38.jpg)
Cara da soluçãoSolução
≥ 0
≥ 0
< 0
< 0
Algoritmos – p. 20
![Page 39: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/39.jpg)
Solução indutiva
i
i f
f
f − 1
f − 1e
e
d
d
Algoritmos – p. 21
![Page 40: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/40.jpg)
Algoritmo linearDetermina um segmento de soma máxima de A[1 . . n] (porJay Kadane).
SEG-MAX-1 (A, n)1 somamax ← 02 e← 0 d← −1 ✄ A[e . . d] é vazio3 i← 14 soma ← 05 para f ← 1 até n faça6 se soma + A[f ] < 07 então i← f + 1 soma ← 08 senão soma ← soma + A[f ]9 se soma > somamax então
10 somamax ← soma e← i d← f11 devolva e, d e somamax
Algoritmos – p. 22
![Page 41: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/41.jpg)
Correção
Verifique que:
A[e . . d] é um segmento de soma máxima emA[1 . . f − 1].
somamax é a soma de A[e . . d].
A[i . . f − 1] é um segmento de soma máxima quetermina em f − 1.
soma é a soma de A[i . . f − 1].
Conclua que o algoritmo devolve a soma máxima de umsegmento de A[1 . . n].
Algoritmos – p. 23
![Page 42: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/42.jpg)
Consumo de tempoSe a execução de cada linha de código consome 1 unidadede tempo o consumo total é:
linha todas as execuções da linha1-2 = 2 = Θ(1)
3-4 = 2 = Θ(1)
5 = n+ 1 = Θ(n)
6 = n = Θ(n)
7-8 = n = Θ(n)
9 = n = Θ(n)
10 ≤ n = O(n)
11 = 1 = Θ(1)
total = Θ(4n+ 3) + O(n) = Θ(n)
Algoritmos – p. 24
![Page 43: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/43.jpg)
Conclusões
O consumo de tempo do algoritmo SEG-MAX-3 éΘ(n3).
O consumo de tempo do algoritmo SEG-MAX-2 éΘ(n2).
O consumo de tempo do algoritmo SEG-MAX-DC éΘ(n lg n).
O consumo de tempo do algoritmo SEG-MAX-1 éΘ(n).
Algoritmos – p. 25
![Page 44: Essas transparências foram adaptadas das transparências do ...cris/aulas/13_1_338/slides/aula4.pdf · Análise de Algoritmos Essas transparências foram adaptadas das transparências](https://reader034.vdocuments.net/reader034/viewer/2022042313/5edc4aeaad6a402d6666e644/html5/thumbnails/44.jpg)
TécnicasEvitar recálculos. Usar espaço para armazenarresultados a fim de evitar recalculá-los (SEG-MAX-2,SEG-MAX-1, programação dinâmica).
Divisão-e-conquista. Os algoritmos Mergesort eSEG-MAX-2 utilizam uma forma conhecida dessatécnica.
Algoritmos incrementais/varredura. Como estender asolução de um subproblema a uma solução doproblema (SEG-MAX-1).
Delimitação inferior. Bons projetistas de algoritmos sódormem em paz quando sabem que seus algoritmossão o melhor possível (SEG-MAX-1).
Algoritmos – p. 26