Anda di halaman 1dari 47

PAA-DCC-UFAM

Diviso e Conquista

Mtodo usado para projeto de algoritmos:

Diviso: Se o tamanho da entrada muito


grande para aplicao de uma soluo simples,
dividir o problema e dois ou mais subproblemas
disjuntos

Conquista: Usar o mtodo recursivamente


para resolver os subproblemas

Combinao: Tomar as solues dos


subproblemas e combina-las para compor uma
soluo para o problema original .

18

PAA-DCC-UFAM

MergeSort

Diviso: Se S tem n2 elementos, dividir


seus elementos em duas subsequencias S1
e S2 com respectivamente n/2 e n/2
elementos.

Conquista: Ordernar as subsequencias

S1

e S2 usando MergeSort.

Combinao: Intercale os elementos de S1


e S2 de forma a obter uma seqncia
19
ordenada

PAA-DCC-UFAM

Merge Sort: Algoritmo


Merge-Sort(A,
Merge-Sort(A, p,
p, r)
r)
if
if pp << rr then
then
q(p+r)/2
q(p+r)/2
Merge-Sort(A,
Merge-Sort(A, p,
p, q)
q)
Merge-Sort(A,
Merge-Sort(A, q+1,
q+1, r)
r)
Merge(A,
Merge(A, p,
p, q,
q, r)
r)
Merge(A,
Merge(A, p,
p, q,
q, r)
r)
Retire
Retire oo menor
menor entre
entre oo menor
menor dos
dos elementos
elementos de
de A[p
A[p
q]
q] ee A[q+1r]
A[q+1r] ee acrescente
acrescente ao
ao resultado.
resultado. Repita
Repita at
at
que
que as
as duas
duas sub-sequncias
sub-sequncias estejam
estejam vazias.
vazias.

20

PAA-DCC-UFAM

MergeSort (Exemplo) - 1

21

PAA-DCC-UFAM

MergeSort (Exemplo) - 2

22

PAA-DCC-UFAM

MergeSort (Exemplo) - 3

23

PAA-DCC-UFAM

MergeSort (Exemplo) - 4

24

PAA-DCC-UFAM

MergeSort (Exemplo) - 5

25

PAA-DCC-UFAM

MergeSort (Exemplo) - 6

26

PAA-DCC-UFAM

MergeSort (Exemplo) - 7

27

PAA-DCC-UFAM

MergeSort (Exemplo) - 8

28

PAA-DCC-UFAM

MergeSort (Exemplo) - 9

29

PAA-DCC-UFAM

MergeSort (Exemplo) - 10

30

PAA-DCC-UFAM

MergeSort (Exemplo) - 11

31

PAA-DCC-UFAM

MergeSort (Exemplo) - 12

32

PAA-DCC-UFAM

MergeSort (Exemplo) - 13

33

PAA-DCC-UFAM

MergeSort (Exemplo) - 14

34

PAA-DCC-UFAM

MergeSort (Exemplo) - 15

35

PAA-DCC-UFAM

MergeSort (Exemplo) - 16

36

PAA-DCC-UFAM

MergeSort (Exemplo) - 17

37

PAA-DCC-UFAM

MergeSort (Exemplo) - 18

38

PAA-DCC-UFAM

MergeSort (Exemplo) - 19

39

PAA-DCC-UFAM

MergeSort (Exemplo) - 20

40

PAA-DCC-UFAM

MergeSort (Exemplo) - 21

41

PAA-DCC-UFAM

MergeSort (Exemplo) - 22

42

PAA-DCC-UFAM

Recorrncias

As chamadas recursivas nos


algoritmos podem ser descritas
usando-se equaes(ou inequaes)
de recorrncia

So funes descritas em termos dos


seus valores para entradas menores.

43

PAA-DCC-UFAM

Recorrncias (2)

Exemplo: Busca Binria


BuscaBin(A[1n],q)
BuscaBin(A[1n],q)
if
if n=1
n=1
then
then if
if A[n]=q
A[n]=q then
then return
return nn
else
else return
return 00
k(n+1)/2
k(n+1)/2
if
if qq << A[k]
A[k] then
then BuscaBin(A[1k-1],q)
BuscaBin(A[1k-1],q)
else
else BuscaBin(A[kn],q)
BuscaBin(A[kn],q)

44

PAA-DCC-UFAM

Recorrncias (3)

Exemplo: MergeSort
Merge-Sort(A,
Merge-Sort(A, p,
p, r)
r)
if
if pp << rr then
then
q(p+r)/2
q(p+r)/2
Merge-Sort(A,
Merge-Sort(A, p,
p, q)
q)
Merge-Sort(A,
Merge-Sort(A, q+1,
q+1, r)
r)
Merge(A,
Merge(A, p,
p, q,
q, r)
r)

45

Substituio
Iterao
a
Mestre

Anda mungkin juga menyukai