CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort...
Transcript of CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort...
![Page 1: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/1.jpg)
CI165 — Analise de Algoritmos Recursivos
Andre Vignatti
Andre Vignatti CI165
![Page 2: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/2.jpg)
Ordenacao por intercalacao
Q que significa intercalar dois (sub)vetores ordenados?
Problema: Dados A[p . . . q] e A[q+1 . . . r ] crescentes,rearranjar A[p . . . r ] de modo que ele fique em ordem crescente.
Entrada:p q r
A 22 33 55 77 99 11 44 66 88
Saıda:p q r
A 11 22 33 44 55 66 77 88 99
Andre Vignatti CI165
![Page 3: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/3.jpg)
Intercalacao
p q rA 22 33 55 77 99 11 44 66 88
B
Andre Vignatti CI165
![Page 4: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/4.jpg)
Intercalacao
kA
i jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 5: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/5.jpg)
Intercalacao
kA 11
i jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 6: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/6.jpg)
Intercalacao
kA 11 22
i jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 7: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/7.jpg)
Intercalacao
kA 11 22 33
i jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 8: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/8.jpg)
Intercalacao
kA 11 22 33 44
i jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 9: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/9.jpg)
Intercalacao
kA 11 22 33 44 55
i jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 10: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/10.jpg)
Intercalacao
kA 11 22 33 44 55 66
i jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 11: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/11.jpg)
Intercalacao
kA 11 22 33 44 55 66 77
i jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 12: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/12.jpg)
Intercalacao
kA 11 22 33 44 55 66 77 88
i = jB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 13: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/13.jpg)
Intercalacao
A 11 22 33 44 55 66 77 88 99
j iB 22 33 55 77 99 88 66 44 11
Andre Vignatti CI165
![Page 14: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/14.jpg)
Intercalacao
Pseudo-codigo
INTERCALA(A,p,q, r)1 para i ← p ate q faca2 B[i]← A[i]3 para j ← q + 1 ate r faca4 B[r + q + 1− j]← A[j]5 i ← p6 j ← r7 para k ← p ate r faca8 se B[i] ≤ B[j]9 entao A[k ]← B[i]
10 i ← i + 111 senao A[k ]← B[j]12 j ← j − 1
Andre Vignatti CI165
![Page 15: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/15.jpg)
Complexidade de Intercala
Entrada:p q r
A 22 33 55 77 99 11 44 66 88
Saıda:p q r
A 11 22 33 44 55 66 77 88 99
Tamanho da entrada: n = r − p + 1
Consumo de tempo: Θ(n)
Andre Vignatti CI165
![Page 16: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/16.jpg)
Algoritmos recursivos
“To understand recursion, we must first understand recursion.”(anonimo)
O que e o paradigma de divisao-e-conquista?
Como mostrar a corretude de um algoritmo recursivo?
Como analisar o consumo de tempo de um algoritmorecursivo?
O que e uma relacao de recorrencia?
O que significa resolver uma relacao de recorrencia?
Andre Vignatti CI165
![Page 17: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/17.jpg)
Recursao e o paradigma de divisao-e-conquista
Um algoritmo recursivo resolve o problema chamando a simesmo para resolver instancias menores do mesmoproblema.
Algoritmos de divisao-e-conquista possuem tres etapasem cada nıvel de recursao:
1 Divisao: a instancia do problema e dividida em instanciasde tamanho menor, gerando subproblemas.
2 Conquista: cada subproblema e resolvido recursivamente.3 Combinacao: as solucoes dos subproblemas sao
combinadas para obter uma solucao do problema original.
Andre Vignatti CI165
![Page 18: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/18.jpg)
Exemplo de divisao-e-conquista: Mergesort
Mergesort e um algoritmo de ordenacao e um exemploclassico do uso da tecnica de divisao-e-conquista. (tomerge = intercalar)
Descricao do Mergesort em alto nıvel:1 Divisao: divida o vetor com n elementos em dois
subvetores de tamanho bn/2c e dn/2e2 Conquista: ordene os dois subvetores recursivamente
usando o Mergesort
3 Combinacao: intercale os dois subvetores para obter umvetor ordenado usando o algoritmo Intercala
Andre Vignatti CI165
![Page 19: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/19.jpg)
Mergesort
p q rA 66 33 55 44 99 11 77 22 88
Andre Vignatti CI165
![Page 20: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/20.jpg)
Mergesort
p q rA 66 33 55 44 99 11 77 22 88
p q rA 66 33 55 44 99
Andre Vignatti CI165
![Page 21: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/21.jpg)
Mergesort
p q rA 66 33 55 44 99 11 77 22 88
p q rA 66 33 55 44 99
p q rA 66 33 55
Andre Vignatti CI165
![Page 22: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/22.jpg)
Mergesort
p q rA 66 33 55 44 99 11 77 22 88
p q rA 66 33 55 44 99
p q rA 66 33 55
p rA 66 33
Andre Vignatti CI165
![Page 23: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/23.jpg)
Mergesort
p q rA 66 33 55 44 99 11 77 22 88
p q rA 66 33 55 44 99
p q rA 66 33 55
p rA 66 33
p = rA 66
Andre Vignatti CI165
![Page 24: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/24.jpg)
Mergesort
p q rA 66 33 55 44 99 11 77 22 88
p q rA 66 33 55 44 99
p q rA 66 33 55
p rA 66 33
Andre Vignatti CI165
![Page 25: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/25.jpg)
Mergesort
p q rA 66 33 55 44 99 11 77 22 88
p q rA 66 33 55 44 99
p q rA 66 33 55
p rA 66 33
p = rA 33
Andre Vignatti CI165
![Page 26: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/26.jpg)
Mergesort
p q rA 66 33 55 44 99 11 77 22 88
p q rA 66 33 55 44 99
p q rA 66 33 55
p rA 66 33
Andre Vignatti CI165
![Page 27: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/27.jpg)
Mergesort
p q rA 33 66 55 44 99 11 77 22 88
p q rA 33 66 55 44 99
p q rA 33 66 55
p rA 33 66
Andre Vignatti CI165
![Page 28: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/28.jpg)
Mergesort
p q rA 33 66 55 44 99 11 77 22 88
p q rA 33 66 55 44 99
p q rA 33 66 55
Andre Vignatti CI165
![Page 29: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/29.jpg)
Mergesort
p q rA 33 66 55 44 99 11 77 22 88
p q rA 33 66 55 44 99
p q rA 33 66 55
p = rA 55
Andre Vignatti CI165
![Page 30: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/30.jpg)
Mergesort
p q rA 33 66 55 44 99 11 77 22 88
p q rA 33 66 55 44 99
p q rA 33 66 55
Andre Vignatti CI165
![Page 31: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/31.jpg)
Mergesort
p q rA 33 55 66 44 99 11 77 22 88
p q rA 33 55 66 44 99
p q rA 33 55 66
Andre Vignatti CI165
![Page 32: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/32.jpg)
Mergesort
p q rA 33 55 66 44 99 11 77 22 88
p q rA 33 55 66 44 99
Andre Vignatti CI165
![Page 33: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/33.jpg)
Mergesort
p q rA 33 55 66 44 99 11 77 22 88
p q rA 33 55 66 44 99
p rA 44 99
Andre Vignatti CI165
![Page 34: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/34.jpg)
Mergesort
p q rA 33 55 66 44 99 11 77 22 88
p q rA 33 55 66 44 99
p rA 44 99
p = rA 44
Andre Vignatti CI165
![Page 35: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/35.jpg)
Mergesort
p q rA 33 55 66 44 99 11 77 22 88
p q rA 33 55 66 44 99
p rA 44 99
Andre Vignatti CI165
![Page 36: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/36.jpg)
Mergesort
p q rA 33 55 66 44 99 11 77 22 88
p q rA 33 55 66 44 99
p rA 44 99
p = rA 99
Andre Vignatti CI165
![Page 37: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/37.jpg)
Mergesort
p q rA 33 55 66 44 99 11 77 22 88
p q rA 33 55 66 44 99
p rA 44 99
Andre Vignatti CI165
![Page 38: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/38.jpg)
Mergesort
p q rA 33 55 66 44 99 11 77 22 88
p q rA 33 55 66 44 99
Andre Vignatti CI165
![Page 39: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/39.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p q rA 33 44 55 66 99
Andre Vignatti CI165
![Page 40: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/40.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
Andre Vignatti CI165
![Page 41: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/41.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
Andre Vignatti CI165
![Page 42: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/42.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 11 77
Andre Vignatti CI165
![Page 43: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/43.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 11 77
p = rA 11
Andre Vignatti CI165
![Page 44: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/44.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 11 77
Andre Vignatti CI165
![Page 45: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/45.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 11 77
p = rA 77
Andre Vignatti CI165
![Page 46: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/46.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 11 77
Andre Vignatti CI165
![Page 47: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/47.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
Andre Vignatti CI165
![Page 48: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/48.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 22 88
Andre Vignatti CI165
![Page 49: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/49.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 22 88
p = rA 22
Andre Vignatti CI165
![Page 50: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/50.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 22 88
Andre Vignatti CI165
![Page 51: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/51.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 22 88
p = rA 88
Andre Vignatti CI165
![Page 52: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/52.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
p rA 22 88
Andre Vignatti CI165
![Page 53: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/53.jpg)
Mergesort
p q rA 33 44 55 66 99 11 77 22 88
p rA 11 77 22 88
Andre Vignatti CI165
![Page 54: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/54.jpg)
Mergesort
p q rA 33 44 55 66 99 11 22 77 88
p rA 11 22 77 88
Andre Vignatti CI165
![Page 55: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/55.jpg)
Mergesort
p q rA 33 44 55 66 99 11 22 77 88
Andre Vignatti CI165
![Page 56: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/56.jpg)
Mergesort
p q rA 11 22 33 44 55 66 77 88 99
Andre Vignatti CI165
![Page 57: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/57.jpg)
Mergesort
p q rA 11 22 33 44 55 66 77 88 99
Andre Vignatti CI165
![Page 58: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/58.jpg)
Mergesort
Relembrando: o objetivo e rearranjar A[p . . . r ], com p ≤ r , emordem crescente.
MERGESORT(A,p, r)1 se p < r2 entao q ← b(p + r)/2c3 MERGESORT(A,p,q)4 MERGESORT(A,q + 1, r)5 INTERCALA(A,p,q, r)
p q rA 66 33 55 44 99 11 77 22 88
Andre Vignatti CI165
![Page 59: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/59.jpg)
Mergesort
Relembrando: o objetivo e rearranjar A[p . . . r ], com p ≤ r , emordem crescente.
MERGESORT(A,p, r)1 se p < r2 entao q ← b(p + r)/2c3 MERGESORT(A,p,q)4 MERGESORT(A,q + 1, r)5 INTERCALA(A,p,q, r)
p q rA 33 44 55 66 99 11 77 22 88
Andre Vignatti CI165
![Page 60: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/60.jpg)
Mergesort
Relembrando: o objetivo e rearranjar A[p . . . r ], com p ≤ r , emordem crescente.
MERGESORT(A,p, r)1 se p < r2 entao q ← b(p + r)/2c3 MERGESORT(A,p,q)4 MERGESORT(A,q + 1, r)5 INTERCALA(A,p,q, r)
p q rA 33 44 55 66 99 11 22 77 88
Andre Vignatti CI165
![Page 61: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/61.jpg)
Mergesort
Relembrando: o objetivo e rearranjar A[p . . . r ], com p ≤ r , emordem crescente.
MERGESORT(A,p, r)1 se p < r2 entao q ← b(p + r)/2c3 MERGESORT(A,p,q)4 MERGESORT(A,q + 1, r)5 INTERCALA(A,p,q, r)
p q rA 11 22 33 44 55 66 77 88 99
Andre Vignatti CI165
![Page 62: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/62.jpg)
Complexidade do Mergesort
MERGESORT(A,p, r)1 se p < r2 entao q ← b(p + r)/2c3 MERGESORT(A,p,q)4 MERGESORT(A,q + 1, r)5 INTERCALA(A,p,q, r)
Qual e a complexidade de MERGESORT?
Seja T (n) := o consumo de tempo maximo (pior caso) emfuncao de n = r − p + 1
Andre Vignatti CI165
![Page 63: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/63.jpg)
Complexidade do Mergesort
MERGESORT(A,p, r)1 se p < r2 entao q ← b(p + r)/2c3 MERGESORT(A,p,q)4 MERGESORT(A,q + 1, r)5 INTERCALA(A,p,q, r)
linha consumo de tempo
1 ?2 ?3 ?4 ?5 ?
T (n) =?
Andre Vignatti CI165
![Page 64: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/64.jpg)
Complexidade do Mergesort
MERGESORT(A,p, r)1 se p < r2 entao q ← b(p + r)/2c3 MERGESORT(A,p,q)4 MERGESORT(A,q + 1, r)5 INTERCALA(A,p,q, r)
linha consumo de tempo
1 Θ(1)2 Θ(1)3 T (dn/2e)4 T (bn/2c)5 Θ(n)
T (n) = T (dn/2e) + T (bn/2c) + Θ(n) + Θ(2)
Andre Vignatti CI165
![Page 65: CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort Mergesort e um algoritmo de ordenac¸´ ao e um exemplo˜ classico do uso da t´ ecnica](https://reader033.fdocumentos.tips/reader033/viewer/2022041619/5e3df788e54cd77d3f5303a4/html5/thumbnails/65.jpg)
Complexidade do MergesortObtemos uma relacao de recorrencia (i.e., uma funcao definida emtermos de si mesma).
T (1) = Θ(1)
T (n) = T (dn/2e) + T (bn/2c) + Θ(n) para n = 2,3,4, . . .
Algoritmo Recursivo⇒ Relacao de Recorrencia
Em geral, algoritmos recursivos levam a complexidade T (n) que euma relacao de recorrencia.
E necessario entao resolver a recorrencia!
Ou seja, obter uma “formula nao-recursiva” (ou “formulafechada”) para T (n).
No caso, T (n) = Θ(n lg n). Assim, o consumo de tempo doMergesort e Θ(n lg n) (no pior ou melhor caso?).
Veremos em breve como resolver recorrencias...Andre Vignatti CI165