Kamis, 27 Mei 2010

Algoritma Divide dan Conquer

Devinisi :

 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), dan

 Combine: mengabungkan solusi masing-masing upa-masalah sehingga membentuk solusi masalah semula.

Skema Umum Algoritma Divide and Conquer


Algoritma Divide dan Conquer
















k
















Penyelesaian dengan Divide and Conquer



.















Penerapan Algoritma

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:

- 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