Download
divide and conquer n.
Skip this Video
Loading SlideShow in 5 Seconds..
Divide and Conquer PowerPoint Presentation
Download Presentation
Divide and Conquer

Divide and Conquer

152 Views Download Presentation
Download Presentation

Divide and Conquer

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