Cari Blog Ini

Rabu, 18 April 2012

Metoda DIVIDE and CONQUER (DandC)



·        Prinsip dasar dari metoda ini adalah membagi n input menjadi k subset input yang berbeda (1<k≤n). Dari k subset input yang bebeda akan terdapat k subproblem . Setiap subproblem mempunyai solusi masing-masing, sehingga akan diperoleh solusi yang optimal.
·        Metoda DandC menggunakan teknik rekursif.
·        DandC digunakan untuk menyelesaikan persoalan searching dan sorting.
 













Algoritma DandC secara umum :

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



Keterangan :
·        Small(p,q) adalah fungsi bernilai boole yang menentukan apakah input q-p+1 berukuran cukup kecil sedemikian sehingga solusinya dapat dihitung tanpa pemecahan. Jika demikian halnya maka fungsi G(p,q) yang akan diproses atau dieksekusi. Pada keadaan lain, fungsi divide (p,q) yang diproses.
·        Fungsi divide(p,q) menghasilkan bilangan bulat yang menguraikan input menjadi dua bagian. Misal m= divide(p,q) maka input dipecah menjadi A(p:m) dan A(m+1:q).
·        Fungsi combine merupakan fungsi yang menentukan solusi umum atau solusi yang diharapkan dari persoalan semula A(p:q)

*       SEARCHING
Ø Menentukan bilangan maksimum dan minimum dengan menggunakan teknik iteratif.
Algoritma :
procedure straitmaxmin(A,n,max,min)
integer i,n
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
repeat
endstaritmaxmin

1.     Keadaan Terbaik (Best Case)
Keadaan ini akan tercapai jika elemen-elemen pada array disusun secara menaik (increasing).


Contoh: array A berisi 4 bilangan yang disusun secara menaik
2
4
5
10
A =

Jika dijalankan dengan algortima straitmaxmin maka akan diperoleh:
max←min←A(1)=2
i=2
            A(2) > max  ? 
4 > 2  ? ya → max = 4 ……………1 operasi perbandingan
            i=3
A(3) > max  ? 
5 > 4  ? ya → max = 5 ……………1 operasi perbandingan
i=4
A(4) > max  ? 
10 > 5  ? ya → max = 10 ……….1 operasi perbandingan
            Sehingga akan diperoleh min=2, max=10

Penyelesaian tersebut diperoleh dengan membutuhkan 3 operasi perbandingan atau secara umum (n-1)satuan opersai, n banyaknya elemen dalam array.

2.     Keadaan Terburuk (Worst Case)
Keadaan ini akan tercapai jika elemen-elemen pada array disusun secara menurun (decreasing).
80
21
6
-10
A =

Jika dijalankan dengan algortima straitmaxmin maka akan diperoleh:
max←min←A(1)=80
i=2
            A(2) > max  ? 
21 > 80  ? tidak
A(2) < max  ? 
21 < 80  ? ya → min = 21 ……………2 operasi perbandingan
            i=3
A(3) > max  ? 
6 > 80  ? tidak
A(3) < max  ? 
6 < 80  ? ya → min = 6 ……………2 operasi perbandingan
i=4
A(4) > max  ? 
-10 > 80  ? tidak
A(4) < max  ? 
21-10 < 80 ? ya → min = -10  …………2 operasi perbandingan

            Sehingga akan diperoleh min = -10, max = 80

Penyelesaian tersebut diperoleh dengan membutuhkan 6 operasi perbandingan atau secara umum 2(n-1)satuan opersai, n banyaknya elemen dalam array.

3.     Keadaan Rata-rata (Average Case)
Keadaan ini akan tercapai jika elemen-elemen pada array disusun secara acak. Akan diperoleh waktu sebesar (3n/2-1) satuan operasi.

Ø Menentukan bilangan maksimum dan minimum dengan menggunakakan metoda DandC (teknik rekursif)
Algortima :
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
endmaxmin

Contoh : dalam suatu array terdapat 9 bilangan yaitu
22
13
-5
-8
15
60
17
31
47
A =
Penyelesaian disimulasikan dalam bentuk pohon (tree).
Nilai i=1, j=n=9
 

                

 
6, 9
 

 
1, 5
 
    
 

                                          
 
















-5, -5
 
3, 3
 
22, 13
 
1, 2
 
                                                              

 









Bilangan maksimum = 60
Bilangan minimum = -8
Analisis algoritma :
                T(½n/2½) + T(T(½n/2½) + 2 ; untuk n>2      
T(n) =      1                                                ; untuk  n= 2
               0                                                 ; untuk n =1

Tidak ada komentar:

Posting Komentar