Disusun Oleh :
Divide and Conquer adalah metode pemecahan masalah yang bekerja dengan membagi
masalah menjadi beberapa upa-masalah yang lebih kecil, kemudian menyelesaikan masing-
masing upa-masalah tersebut secara independent, dan akhirnya menggabungkan solusi
masing-masing upa-masalah sehingga menjadi solusi dari masalah semula.
Algoritma Divide and Conquer merupakan salah satu solusi dalam penyelesaian masalah
convex hull. Algoritma ini ternyata memiliki kompleksitas waktu yang cukup kecil dan
efektif dalam menyelesaikan permasalahan ini (jika dibandingkan algoritma lain). Selain itu
juga, algoritma ini dapat digeneralisasi untuk permasalahan convex hull yang berdimensi
lebih dari 3.
Algoritma Divide and Conquer memiliki kelebihan yang membuatnya banyak diterapkan dan
digunakan dalam aplikasi-aplikasi dunia nyata, diantaranya :
Mampu menyelesaikan masalah yang sulit, algoritma ini mampu menyelesaikan
masalah rumit yang hingga kini masih cukup sulit dipecahkan oleh komputer biasa,
seperti Tower of Hanoi Problem.
Algoritma lebih efisien untuk beberapa kasus tertentu, misalnya kasus Fast Fourier
Transform maupun Sorting dapat dilakukan dengan kompleksitas algoritma O(n log
n) dari algoritma lainnya yang hanya mampu mencapai kompleksitas O (n2).
Algoritma ini dapat bekerja secara paralel dan dapat memaksimalkan penggunaan dari
cache memory.
Contoh algoritma devide and conquer adalah pada merge sort :
Merge sort, seperti namanya, merupakan algoritma yang dirancang untuk melakukan
pengurutan terhadap sekumpulan bilangan. Ide utama dari merge sort sama dengan
algoritma perhitungan total yang telah kita lakukan sebelumnya, yaitu membagi-
bagikan keseluruhan list menjadi komponen kecil, dan kemudian mengurutkan
komponen tersebut dan menggabungkannya kembali menjadi sebuah list besar.
Pemecahan Masalah Convex Hull dengan Algoritma Divide and Conquer :
Permasalahan convex hull adalah permasalahan yang memiliki aplikasi terapan yang
cukup banyak, seperti pada permasalahan grafika komputer, otomasi desain,
pengenalan pola (pattern recognition), dan penelitian operasi.
Persoalan Minimum dan Maksimum ( MinMaks ), dan
Optimasi Konversi Bilangan Desimal Ke Biner
Mencari Pasangan titik yang jaraknya dekat (close pair)
Prinsip dasar dari algoritma ini adalah dengan membagi n input menjadi k subset input yang
berbeda (1 < k ≤n). Dari k subset input yang berbeda akan terdapat k subproblem. Setiap
subproblem mempunyai solusinya masing-masing, sehingga akan diperoleh k subsolusi.
Kemudian, dari k subsolusi akan diperoleh solusi yang optimal atau solusi yang diharapkan.
Jika subproblem dianggap masih terlalu besar, maka metode DANDCdapat digunakan lagi.
Dalam keadaan tersebut, pemakaian ulang metodeDANDC dinyatakan menggunakan teknik
rekursif.
1. SMALL adalah fungsi yang mengirim BOOLEAN, menentukan apakah ukuran telah
cukup kecil sehingga solusi dapat diperoleh. Ukurandinyatakan sebagai telah
berukuran kecil bergantung masalah.
2. DIVIDE adalah fungsi membagi menjadi 2 bagian pada posisi K. Biasanya bagian
berukuran sama.
3. COMBINE adalah fungsi menggabungkan solusi X dan Y submasalah. Solusi
diperoleh dengan memanggil prosedur rekursif DNC.
Jika ukuran kedua submasalah sama, waktu komputasi DNC dideskripsikan hubungan
rekuren berikut :
T(n) = g (n), n kecil
2 T (n/2) + f (n), selainnya
dimana :
Untuk algoritma divide dan conquer yang menghasilkan submasalahsubmasalah dengan tipe
masalah yang sama dengan masalah awal, sangat alami untuk mendeskripsikan algoritma
secara rekursi. Kemudian untuk meningkatkan efisiensi dilakukan penerjemahan menjadi
bentuk iterasi.
Pemakaian teknik Divide dan Conquer banyak digunakan dalam menyelesaikan berbagai
macam persoalan, antara lain :
Penerapan Algoritma
Permasalahan convex hull adalah sebuah permasalahan yang memiliki aplikasi terapan yang
cukup banyak, seperti pada permasalahan grafika komputer, otomasi desain, pengenalan pola
(pattern recognition), dan penelitian operasi. Divide and Conquer adalah metode pemecahan
masalah yang bekerja dengan membagi masalah menjadi beberapa upa-masalah yang lebih
kecil, kemudian menyelesaikan masing-masing upa-masalah tersebut secara independent, dan
akhirnya menggabungkan solusi masing-masing upa-masalah sehingga menjadi solusi dari
masalah semula.
Algoritma Divide and Conquer merupakan salah satu solusi dalam penyelesaian masalah
convex hull. Algoritma ini ternyata memiliki kompleksitas waktu yang cukup kecil dan
efektif dalam menyelesaikan permasalahan ini (jika dibandingkan algoritma lain). Selain itu
juga, algoritma ini dapat suntuk permasalahan convex hull yang berdimensi lebih dari 3.
Ukuran table hasil pembagian dapat dibuat cukup kecil sehingga mencari minimum dan
maksimum dapat diselesaikan (SOLVE) secara lebih mudah. Dalam hal ini, ukuran kecil
yang dipilih adalah 1 elemen atau 2 elemen.
Algoritma MinMaks :
DIVIDE : Bagi dua table A secara rekursif menjadi dua bagian yang berukuran sama,
yaitu bagian kiri dan bagian kanan.
CONQUER : Terapkan algoritma Divide and Conquer untuk masing-masing bagian,
dalam hal ini min dan maks dari table bagian kiri dinyatakan dalam peubah min1 dan
maks1, dan min dan maks dari table bagian kanan dinyatakan dalam peubah min2 dan
maks2.
COMBINE : Bandingkan min1 dan min2 untuk menentukan min table A, serta
bandingkan maks1 dan maks2 untuk menentukan maks table A.
Karena angka pembagi yang kita pakai adalah 8 (23), maka kita dapat mengurangijumlah
pembagian yang kita lakukan menjadi ± 1/3 dari jumlah semula. Hal ini tentu saja akan
sangat berpengaruh pada kinerja dan waktu yang diperlukan oleh computer mengingat proses
pembagian merupakan salah satu proses yang cukup rumit.
Tentu saja optimasi ini harus kita bayar dengan menangani konversi bilangan octal ke biner.
Akan tetapi jika kita gunakan teknik perbandingan ( tanpa harus melakukan konversi secara
manual ), maka proses ini akan menjadi sangat cepat dan mudah. Penerapan algoritma ini
adalah dengan menggunakan sintaks case of. Begitu juga dengan permasalahan pemakaian
memori ( kompleksitas ruang ) yang lebih besar yang muncul akibat penggunaan algoritma
rekursif. Karena pada proses rekursif-nya kita tidak banyak menggunakan variable yang
memerlukan tempat yang begitu besar, maka hal ini bias kita abaikan. Dengan penggunaan
optimasi ini, maka seharusnya proses konversi akan lebih cepat karena pemangkasan jumlah
pembagian yang dilakukan.
Penyelesaian dengan Algoritma Divide and Conquer :
– SOLVE : jika n = 2, maka jarak kedua titik dihitung langsung dengan rumus Euclidean.
– DIVIDE : Bagi titik-titik itu ke dalam dua bagian, PLeft dan PRight, setiap bagian
mempunyai jumlah titik yang sama