Anda di halaman 1dari 6

Nama : Putri Apricania

Kelas : Informatika A
NIM : 1910511012
Dasar Pemograman Lanjut

Divide dan Conquer

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.

Selain dari pada langkah utama mengenai divide dan conquer, berikut ini terdapat empat hal
penting yang harus dipahami dalam strategi divide dan conquer :

1. Branching
Factor Branching factor dalam algoritma divide dan conquer adalah jumlah dari sub
masalah yang akan dibagi dari sebuah masalah awal.
2. Balance
Sebuah algoritma divide dan conquer dikatakan balance jika masalah awal dibagi menjadi
sub-sub masalah dengan ukuran yang sama.
3. Data
Dependence of Divide Function Algoritma divide dan conquer memiliki sebuah fungsi
pembagian terhadap data yang memiliki ketergantungan, artinya jika ukuran relatif dari
sebuah sub msalah tergantung proses input datanya. Salah satu contoh dari algoritma yang
ttidak seimbang adalah algoritma quicksort yang akan membagi sub msalah dengan fungsi
datadependent divide.
4. Control
Parallelism of Sequentiality 5 Algoritma divide dan conquer dikatakan berurutan
(sequential) jika sub msalah di eksekusi dengan perintah program.

Obyek permasalahan yang dibagi : masukan (input) atau instances yang berukuran n seperti:

 Tabel (larik),
 Matriks,
 Eksponen,
 dll, 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.

Skema Umum Algoritma Divide and Conquer


Keuntungan dan Kelemahan Metode Divide dan Conquer

Berikut ini adalah beberapa keuntungan dengan menggunakan algoritma divide dan conquer.

 Dapat memecahkan permasalahan yang sulit (kompleks) Algoritma divide and conquer
merupakan alat yang sangat berguna untuk memecahkan masalah yang kompleks,
 Efisien. Dalam masalah pengurutan, algoritma divide and conquer dapat menjadi solusi
yang baik untuk mengatasi efisiensi. Sebagai contoh, metoda quicksort dan mergesort
memiliki dasar algoritma divide and conquer dan dikenal sebagai metode pengurutan
yang paling efesien. Efisiensi algoritma divide and conquer bernotasi O(n log n).
 Akses Memori. Permasalahan yang diselesaikan dengan algoritma divide and conquer
juga dapat berpengaruh dalam pengaksesan memori, dikarenakan masalah dibagi menjadi
beberapa bagian dan setiap bagian diselesaikan dengan solusi yang sama maka dalam
pengaksesan memori setiap sub-masalah diselesaikan cukup dengan mengakses cache
memory yang tidak terlalu lambat.

Berikut ini adalaha kelemahan jika menggunakan algoritma divide dan conquer

 Sering menggunakan rekursi yang menyebabkan overhead.


 Dapat diterapkan dan inferior untuk solusi algoritmik yang lebih sederhana.

Penerapan Algoritma

Penerapan algoritma divide dan conquer menurut beberpa sumber bahwa algoritma ini dapat
dipakai dalam berbagai hal diantaranya :

1. Quicksort. Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge Sort, algoritma ini
juga berdasar pada pola divide dan conquer. Berbeda dengan Merge Sort, algoritma ini
hanya mengikuti langkah-langkah berikut :
1. Divide yaitu memilah masalah menjadi sub-sub masalah
2. Conquer yaitu mengurutkan elemen pada sub rangkaian secara rekursif.
Pada algoritma quicksort, langkah kombinasi tidak dilakukan karena telah terjadi
pengurutan elemen-elemen pada sub array.
2. Binary Search : merupakan sebuah algoritma pencarian. Pada setiap langkahnya akan
membandingkan input elemen x dengan nilai elemen pada array tengah. Jika nilai nya
sama, return index tengah. Jika x kurang dari nilai array tengah, maka akan
mengulang/merekursif pada kirinya elemen array tengah, else mengulangi/merekursi
kanannya array tengah.
3. Merge Sort : merupakan sorting algorithm. Membelah array menjadi dua, menyortir
secara rekursif lalu menyatukan kedua array yang terbelah.

Contoh :

4. Insertion Sort : Prinsip dasar Insertion adalah secara berulang-ulang menyisipkan atau
memasukkan setiap elemen ke dalam posisinya atau tempatnya yang benar.
Contoh
Algoritma:
1. Untuk kasus n = 1, maka tabel A sudah terurut dengan sendirinya (langkah SOLVE).
2. Untuk kasus n > 1, maka (a) DIVIDE: bagi tabel A menjadi dua bagian, bagian kiri dan
bagian kanan, masing-masing bagian berukuran n/2 elemen. (b) CONQUER: Secara
rekursif, terapkan algoritma D-and-C pada masing-masing bagian. (c) MERGE: gabung
hasil pengurutan kedua bagian sehingga diperoleh tabel A yang terurut.
Misalnya table A berisi elemen-elemen berikut.

5. Closest Pair: Closest Pairs adalah memcari pasangan titik yang jaraknya paling dekat
yaitu dengan cara jika n = 2, maka jarak kedua titik dihitung langsung dengan rumus
Euclidean. Setelah itu bagi menjadi dua bagian yaitu Pleft dan Pright, setiap bagian
mempuny ai jumlah titik yang sama. Setelah kedua jarak tersebut mempunyai jarak yang
sama, maka secara rekursif terapkan algoritma D dan C pada masing-masing bagian yang
akan menghasilkan tiga kemungkinan jarak terdekat dari titk tersebut. Dan akhirnya jarak
titik yang paling dekat terdapat pada Pleft. Berikut adalah penggambaran Closest Pair of
Points dengan cara brute-force

Seperti digambar, Closest Pair of Points akan melakukan konsep looping terus menerus
mulai dari i = 1 sampai dengn panjang array - 1. Kemudian hasilnya akan direturn

6. Convex Hull. Pada penyelesaian masalah pencarian convex hull dengan menggunakan
algoritma divide dan conquer, hal ini dapat dipandang sebagai generalisasi dari algoritma
penguruan merge sort. Permasalahan convex hull adalah sebuah permasalahan yang
memiliki aplikasi terapan yang cukup banyak, seperti permasalahan terhadap grafika
komputer, otomasi desain, pengenalan pola (pattern recognition), dan penelitian operasi.
Algoritma divide dan conquer merupakan salah satu solusi dalam penyelesaian masalah
convex hull. Algoritma ini ternyata memiliki ompleksitas waktu yang cukup kecil dan
efektif dalam menyelesaikan permasalahan ini (jika dibandingkan algoritma lain). Selain
itu juga, algoritma ini dapat di generalisasi untuk permasalahan convex hull yang
berdimensi lebih dari tiga.

Referensi

https://www.scribd.com/doc/86625349/Metode-Divide-Dan-Conquer

http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2017-2018/Algoritma-Divide-and-
Conquer-(2018).pdf

Anda mungkin juga menyukai