1 / 20

Divide and Conquer

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.

zita
Download Presentation

Divide and Conquer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Divide and Conquer Analisa Algoritma

  2. 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

  3. Jika subproblem masih dianggap besar maka dapat dipecah lagi menjadi sub sub problem yang lebih kecil lagi • Metoda DANDC dapat digunakan lagi secara rekursif • Pemecahan n input menjadi k input sehingga menimbulkan k sub problem dpt dilakukan apabila k subproblem tsb mempunyai sifat yang sama terhadap persoalan semula

  4. N INPUT INPUT 1 INPUT 2 INPUT 3 INPUT k subproblem subproblem subproblem subproblem subsolusi subsolusi subsolusi subsolusi Solusi optimal

  5. Algoritma DANDC Procedure DANDC(p,q) Global n,A(1:N): integer m,p,q If small(p,q) then G(p,q) else m  DIVIDE(p,q) COMBINE(DANDC(p,m),DANDC(m+1,q) Endif End DANDC

  6. Small(p,q) adalah fungsi bernilai boole yang menentukan apakah ukuran input (q-p+1) cukup kecil sehingga tak perlu dipecah lagi, jika demikian maka G(p,q) yang diproses, jika tidak maka fungsi DIVIDE(p,q) yg diproses • Fungsi DIVIDE(p,q) menghasilkan bilangan bulat yg menguraikan input menjadi dua bagian. Misalnya input dari p sampai q, dipecah menjadi p:m dan m+1:q • Pecahan tadi menjadi dua subproblem dan menghasilkan dua subsolusi misalnya X dan Y • Fungsi COMBINE(X,Y) merupakan fungsi penentu solusi umum atau yg diharapkan dgn memanfatkan solusi X dan Y.

  7. Algoritma DANDC • Procedure maxmin(I,j,fmax,fmin) • Integer I,j • Global n, A(1:n) • Case • : i=j : fmax <- fmin <- A(i) • : I = j-1 : if A(i) < A(j) • Then fmax <- A(j); fmin <- A(i) • Else fmax <- A(i) ; fmin <- A(j) • Endif • : ELSE mid <- | (i+j)/2 | • CALL maxmin (I,mid,gmax,gmin) • CALL maxmin(mid+1,j, hmax, hmin) • Fmax <- MAX(gmax, hmax) • Fmin <- MIN (gmin, hmin) • Endcase • End maxmin

  8. Carilah min dan max nya

  9. Procedure straitmaxmin(A,n,max,min) Max min  A(1) For i=2 to n do if A(i) > max then max  A(i) else if A(i) < min then min  A(i) endif endif Endfor End straitmaxmin

  10. BEST CASE Max=2 ; Min=2 i=2 A(2) > max maka max = 4 i=3 A(3) > max maka max = 5 i=4 A(4) > max maka max = 10 Jadi diperoleh min=2 dan max =10 Operasi pembandingan yang dilakukan sebanyak 3 atau (n-1)

  11. Worst case Max=10; min=10 i=2; A(2) > max A(2) < min , mk min=5 i=3; A(3) > max A(3) < min, mk min =4 i=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)

  12. Average case Rata-rata dari best case dan worst case [(n-1) + 2(n-1) ]/2 = 3/2 (n-1)

  13. 1,9 1,5 6,9 1,3 4,5 6,7 8,9 1,2 3,3

  14. 60,-8 22,-8 60,17 22,-5 15,8 60,17 47,31 22,13 -5,-5

  15. T(n/2) + T(n/2)+2 ; utk n > 2 T(n) = 1 ; utk n = 2 0 ; utk n = 1

  16. Mergesort Terdapat barisan n input elemen yang ditempatkan dalam sebuah array. Pisahkan n elemen tsb menjadi dua bagian. Jika masing-2 bagian masih terlalu besar, dapat dibagi lagi. Setiap bagian diurutkan, lalu digabungkan dengan bagian lain.

  17. Algoritma mergesort • Terdiri dari dua prosedur yaitu mergesort dan merge • Mergesort utk mengurutkan • Merge utk menggabungkan

  18. Procedure mergesort(low,high) If low < high then mid  [ (low+high) / 2] CALL mergesort(low,mid) CALL mergesort(mid+1, high) CALL merge(low, mid, high) Endif End mergesort

  19. Procedure merge(low,mid,high) Hlow; I low; j mid+1 While h <= mid AND j <= high do if A(h)<= A(j) then B(i)  A(h) h  h+1 else B(i)  A(j) j  j + 1 endif I < I +1 Repeat

  20. If h > mid then for k j to high do B(i)  A(k) I  I +1 repeat else for k  h to mid do B(i) A(k) I  I +1 repeat Endif For k  low to high do A(k)  B(k) Repeat End merge

More Related