CI165 — Analise de Algoritmos Recursivos´ · Exemplo de divisao-e-conquista:˜ Mergesort...

65
CI165 — An ´ alise de Algoritmos Recursivos Andr ´ e Vignatti Andr ´ e Vignatti CI165

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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