divide and conquer

20
Analisa Algoritma Divide and Conquer Divide and Conquer

Upload: zita

Post on 09-Jan-2016

58 views

Category:

Documents


3 download

DESCRIPTION

Divide and Conquer. Prinsip Dasar. Membagi n input menjadi k sub set input yang berbeda (1< k < n) Dari k sub set input yang berbeda akan terdapat k subproblem Setiap subproblem mempunyai solusi masing-masing (k sub solusi) Dari k sub solusi akan diperoleh solusi yang optimal yang diharapkan. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Divide and Conquer

Analisa Algoritma

Divide and ConquerDivide and Conquer

Page 2: Divide and Conquer

Prinsip DasarPrinsip Dasar

Membagi n input menjadi k sub set Membagi n input menjadi k sub set input yang berbeda (1< k < n)input yang berbeda (1< k < n)

Dari k sub set input yang berbeda Dari k sub set input yang berbeda akan terdapat k subproblemakan terdapat k subproblem

Setiap subproblem mempunyai solusi Setiap subproblem mempunyai solusi masing-masing (k sub solusi)masing-masing (k sub solusi)

Dari k sub solusi akan diperoleh Dari k sub solusi akan diperoleh solusi yang optimal yang diharapkansolusi yang optimal yang diharapkan

Page 3: Divide and Conquer

Jika subproblem masih dianggap besar Jika subproblem masih dianggap besar maka dapat dipecah lagi menjadi sub sub maka dapat dipecah lagi menjadi sub sub problem yang lebih kecil lagiproblem yang lebih kecil lagi

Metoda DANDC dapat digunakan lagi Metoda DANDC dapat digunakan lagi secara rekursifsecara rekursif

Pemecahan n input menjadi k input Pemecahan n input menjadi k input sehingga menimbulkan k sub problem dpt sehingga menimbulkan k sub problem dpt dilakukan apabila k subproblem tsb dilakukan apabila k subproblem tsb mempunyai sifat yang sama terhadap mempunyai sifat yang sama terhadap persoalan semulapersoalan semula

Page 4: Divide and Conquer

INPUT 3

subproblem

subsolusi

INPUT k

subproblem

subsolusi

INPUT 2

subproblem

subsolusi

INPUT 1

subproblem

subsolusi

Solusi optimal

N INPUT

Page 5: Divide and Conquer

Algoritma DANDCAlgoritma DANDC

Procedure DANDC(p,q)Procedure DANDC(p,q)Global n,A(1:N): integer m,p,qGlobal n,A(1:N): integer m,p,qIf small(p,q) then G(p,q)If small(p,q) then G(p,q)

else else m m DIVIDE(p,q) DIVIDE(p,q)COMBINE(DANDC(p,m),DANDC(m+1,q)COMBINE(DANDC(p,m),DANDC(m+1,q)

EndifEndifEnd DANDCEnd DANDC

Page 6: Divide and Conquer

Small(p,q) adalah fungsi bernilai boole yang Small(p,q) adalah fungsi bernilai boole yang menentukan apakah ukuran input (q-p+1) menentukan apakah ukuran input (q-p+1) cukup kecil sehingga tak perlu dipecah lagi, cukup kecil sehingga tak perlu dipecah lagi, jika demikian maka G(p,q) yang diproses, jika jika demikian maka G(p,q) yang diproses, jika tidak maka fungsi DIVIDE(p,q) yg diprosestidak maka fungsi DIVIDE(p,q) yg diproses

Fungsi DIVIDE(p,q) menghasilkan bilangan Fungsi DIVIDE(p,q) menghasilkan bilangan bulat yg menguraikan input menjadi dua bulat yg menguraikan input menjadi dua bagian. Misalnya input dari p sampai q, bagian. Misalnya input dari p sampai q, dipecah menjadi p:m dan m+1:qdipecah menjadi p:m dan m+1:q

Pecahan tadi menjadi dua subproblem dan Pecahan tadi menjadi dua subproblem dan menghasilkan dua subsolusi misalnya X dan Ymenghasilkan dua subsolusi misalnya X dan Y

Fungsi COMBINE(X,Y) merupakan fungsi Fungsi COMBINE(X,Y) merupakan fungsi penentu solusi umum atau yg diharapkan penentu solusi umum atau yg diharapkan dgn memanfatkan solusi X dan Y.dgn memanfatkan solusi X dan Y.

Page 7: Divide and Conquer

Algoritma DANDCAlgoritma DANDC Procedure maxmin(I,j,fmax,fmin)Procedure maxmin(I,j,fmax,fmin) Integer I,jInteger I,j Global n, A(1:n)Global n, A(1:n) CaseCase : i=j : fmax <- fmin <- A(i): i=j : fmax <- fmin <- A(i) : I = j-1 : if A(i) < A(j): I = j-1 : if A(i) < A(j) Then fmax <- A(j); fmin <- A(i)Then fmax <- A(j); fmin <- A(i) Else fmax <- A(i) ; fmin <- A(j)Else fmax <- A(i) ; fmin <- A(j) EndifEndif : ELSE mid <- | (i+j)/2 |: ELSE mid <- | (i+j)/2 | CALL maxmin (I,mid,gmax,gmin)CALL maxmin (I,mid,gmax,gmin) CALL maxmin(mid+1,j, hmax, hmin)CALL maxmin(mid+1,j, hmax, hmin) Fmax <- MAX(gmax, hmax)Fmax <- MAX(gmax, hmax) Fmin <- MIN (gmin, hmin)Fmin <- MIN (gmin, hmin) EndcaseEndcase End maxminEnd maxmin

Page 8: Divide and Conquer

11 22 33 44 55 66 77 88 99

2222 1313 -5-5 -8-8 1515 6060 1717 3131 4747

Carilah min dan max nya

Page 9: Divide and Conquer

Procedure straitmaxmin(A,n,max,min)Procedure straitmaxmin(A,n,max,min)MaxMax min min A(1) A(1)For i=2 to n doFor i=2 to n do

if A(i) > maxif A(i) > maxthen max then max A(i) A(i)

else if A(i) < min else if A(i) < min then min then min A(i) A(i)

endifendifendifendif

EndforEndforEnd straitmaxminEnd straitmaxmin

Page 10: Divide and Conquer

BEST CASE22 44 55 1010

Max=2 ; Min=2i=2 A(2) > max maka max = 4i=3 A(3) > max maka max = 5i=4 A(4) > max maka max = 10

Jadi diperoleh min=2 dan max =10

Operasi pembandingan yang dilakukan sebanyak 3 atau (n-1)

Page 11: Divide and Conquer

Worst caseWorst case1010 55 44 22

Max=10; min=10i=2; A(2) > max

A(2) < min , mk min=5i=3; A(3) > max

A(3) < min, mk min =4i=4; A(4) > max

A(4) < min, mk min =2

Jadi min=2 max=10

Operasi pembandingan yang dilakukan sebanyak 6 atau 2(n-1)

Page 12: Divide and Conquer

Average caseAverage case

Rata-rata dari best case dan worst Rata-rata dari best case dan worst casecase

[(n-1) + 2(n-1) ]/2 = 3/2 (n-1)[(n-1) + 2(n-1) ]/2 = 3/2 (n-1)

Page 13: Divide and Conquer

1,9

1,5 6,9

1,3 4,5 6,7 8,9

1,2 3,3

Page 14: Divide and Conquer

60,-8

22,-8 60,17

22,-5 15,8 60,17 47,31

22,13 -5,-5

Page 15: Divide and Conquer

T(n/2) + T(n/2)+2 ; utk n > 2T(n/2) + T(n/2)+2 ; utk n > 2

T(n) = 1T(n) = 1 ; utk n = 2 ; utk n = 2

00 ; utk n = 1 ; utk n = 1

Page 16: Divide and Conquer

MergesortMergesort

Terdapat barisan n input elemen yang Terdapat barisan n input elemen yang ditempatkan dalam sebuah array. ditempatkan dalam sebuah array.

Pisahkan n elemen tsb menjadi dua Pisahkan n elemen tsb menjadi dua bagian.bagian.

Jika masing-2 bagian masih terlalu Jika masing-2 bagian masih terlalu besar, dapat dibagi lagi. besar, dapat dibagi lagi.

Setiap bagian diurutkan, lalu Setiap bagian diurutkan, lalu digabungkan dengan bagian lain.digabungkan dengan bagian lain.

Page 17: Divide and Conquer

Algoritma mergesortAlgoritma mergesort

Terdiri dari dua prosedur yaitu Terdiri dari dua prosedur yaitu mergesort dan mergemergesort dan merge

Mergesort utk mengurutkanMergesort utk mengurutkan Merge utk menggabungkanMerge utk menggabungkan

Page 18: Divide and Conquer

Procedure mergesort(low,high)Procedure mergesort(low,high)

If low < high If low < high

then mid then mid [ (low+high) / 2] [ (low+high) / 2]

CALL mergesort(low,mid)CALL mergesort(low,mid)

CALL mergesort(mid+1, high)CALL mergesort(mid+1, high)

CALL merge(low, mid, high)CALL merge(low, mid, high)

EndifEndif

End mergesortEnd mergesort

Page 19: Divide and Conquer

Procedure merge(low,mid,high)Procedure merge(low,mid,high)

HHlow; I low; I low; j low; j mid+1mid+1

While h <= mid AND j <= high doWhile h <= mid AND j <= high do

if A(h)<= A(j) if A(h)<= A(j)

then B(i) then B(i) A(h) A(h)h h h+1 h+1

else B(i) else B(i) A(j) A(j)

j j j + 1 j + 1

endifendif

I < I +1I < I +1

RepeatRepeat

Page 20: Divide and Conquer

If h > mid thenIf h > mid thenfor k for k j to high doj to high do

B(i) B(i) A(k) A(k)I I I +1 I +1

repeatrepeatelse for k else for k h to mid do h to mid do

B(i) B(i) A(k)A(k) I I I +1 I +1repeatrepeat

EndifEndifFor k For k low to high do low to high do

A(k) A(k) B(k) B(k)RepeatRepeatEnd mergeEnd merge