Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Divide and Conquer Analisa Algoritma.

Presentasi serupa


Presentasi berjudul: "Divide and Conquer Analisa Algoritma."— Transcript presentasi:

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 subsolusi subsolusi subsolusi
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 1 2 3 4 5 6 7 8 9 22 13 -5 -8 15 60 17 31 47

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

10 i=2 A(2) > max maka max = 4 i=3 A(3) > max maka max = 5
BEST CASE 2 4 5 10 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 10 5 4 2 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

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) Endif For k  low to high do A(k)  B(k) Repeat End merge


Download ppt "Divide and Conquer Analisa Algoritma."

Presentasi serupa


Iklan oleh Google