1. Pengertian
Algoritma Divide and Conquer merupakan algoritma
yang sangat populer di dunia Ilmu Komputer. Divide and Conquer merupakan
algoritma yang berprinsip memecah-mecah permasalahan yang terlalu besar menjadi
beberapa bagian kecil sehingga lebih mudah untuk diselesaikan. Langkah-langkah
umum algoritma Divide and Conquer :
Divide : Membagi masalah menjadi beberapa
upa-masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih
kecil ( idealnya berukuran hampir sama ).
Conquer : Memecahkan ( menyelesaikan ) masing-masing
upa-masalah ( secara rekursif ).
Combine : Menggabungkan solusi masing-masing
upa-masalah sehingga membentuk solusi masalah semula.
Objek masalah yang di bagi adalah masukan (input)
atau instances yang berukuran n: tabel (larik), matriks, dan sebagainya,
bergantung pada masalahnya. Tiap-tiap upa-masalah mempunyai karakteristik yang
sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide
and Conquer lebih natural diungkapkan dalam skema rekursif. Sesuai dengan
karakteristik pembagian dan pemecahan masalah tersebut, maka algoritma ini
dapat berjalan baik pada persoalan yang bertipe rekursif (perulangan dengan
memanggil dirinya sendiri). Dengan demikian, algoritma ini dapat
diimplementasikan dengan cara iteratif ( perulangan biasa ), karena pada
prinsipnya iteratif hampir sama dengan rekursif. Salah satu penggunaan
algoritma ini yang paling populer adalah dalam hal pengolahan data yang bertipe
array ( elemen larik ). Mengapa ? Karena pengolahan array pada umumnya selalu
menggunakan prinsip rekursif atau iteratif. Penggunaan secara spesifik adalah
untuk mencari nilai minimal dan maksimal serta untuk mengurutkan elemen array.
Dalam hal pengurutan ini ada empat macam algoritma pengurutan yang berdasar
pada algoritma Divide and Conquer, yaitu merge sort, insert sort, quick sort,
dan selection sort. Merge sort dan Quick sort mempunyai kompleksitas algoritma
O(n ²log n). Hal ini lebih baik jika dibandingkan dengan pengurutan biasa
dengan menggunakan algoritma brute force.
2. Penerapan Algoritma
2.1. Pemecahan Masalah Convex Hull dengan Algoritma
Divide and Conquer
Pada penyelasaian masalah pencarian Convex Hull
dengan menggunakan algoritma Divide and Conquer, hal ini dapat dipandang
sebagai generalisasi dari algoritma pengurutan merge sort. Berikut ini merupakan garis besar gambaran dari algoritmanya:
sebagai generalisasi dari algoritma pengurutan merge sort. Berikut ini merupakan garis besar gambaran dari algoritmanya:
Pertama-tama lakukan pengurutan terhadap titik-titik
dari himpunan S yang diberika berdasarkan koordinat absis-X, dengan
kompleksitas waktu O(n log n).
Jika |S| ≤ 3, maka lakukan pencarian convex hull
secara brute-force dengan kompleksitas waktu O(1). (Basis).
Jika tidak, partisi himpunan titik-titik pada S
menjadi 2 buah himpunan A dan B, dimana A terdiri dari setengah jumlah dari |S|
dan titik dengan koordinat absix-X yang terendah dan B terdiri dari setengah
dari jumlah |S| dan titik dengan koordinat absis-X terbesar.
Secara rekursif lakukan penghitungan terhadap HA =
conv(A) dan HB = conv(B).
Lakukan penggabungan (merge) terhadap kedua hull
tersebut menjadi convex hull, H, dengan menghitung da mencari upper dan lower
tangents untuk HA dan HB dengan mengabaikan semua titik yang berada diantara
dua buah tangen ini.
Tidak ada komentar:
Posting Komentar