Anda di halaman 1dari 12

Algoritma Divide and Conquer (DANDC)

Mata Kuliah: Perancangan dan Analisis Algoritma

Dosen: Dessy Tri Anggraeni, S.Kom., M.M.S.I.

Kelompok 6

Fadhillah Farid (52419120)

Farah Dila Aryani (52419241)

Muhammad Ridhwan (54419392)

Kelas 3IA17

Program Studi Teknik Informatika

Fakultas Teknologi Industri

Universitas Gunadarma

PTA 2021/2022
BAB I

PENDAHULUAN

1.1 Latar Belakang


Sejarah dari Devide and Conquer dulunya merupakan startegi militer yang
dikenal dengan nama divide ut imperes. Divide ut imperes yang dalam bahasa
inggrisnya divide and rule di dalam politik dan sosiologi adalah salah satu cara
untuk mendapatkan dan mempertahankan kekuasaan dengan cara membagi-bagi
wilayah kekuasaan menjadi lebih kecil.

Awal dari algoritma ini utamanya adalah pengurangan dan penaklukan


masalah secara berturut-turut yang dipecah menjadi sub-masalah tunggal, dan
dapat diselesaikan secara berulang. Dalam ilmu komputer, pemecahan masalah
dengan cara “membagi dan menaklukan” suatu algoritma merupakan paradigma
penting berdasarkan multi-cabang rekursi. Teknik ini merupakan teknik dasar
dalam menyelesaikan masalah-masalah, seperti sortasi (misalnya quicksort,merge
sort), mengalikan dalam jumlah besar.

Algoritma Divide And Conquer ditemukan oleh seorang ilmuwan Rusia


bernama Anatolii Alexeevich Karatsuba pada tahun 1960. Pada mulanya, Anatolii
menemukan algoritma yang lebih cepat untuk mengalikan dua buah bilangan bulat
yang besar dengan kompleksitas O(n log 3). Disisi lain, kemampuan untuk
memahami dan merancang algoritma adalah keterampilan yang membutuhkan
waktu untuk menguasainya, karena setiap permasalahan algoritma merupakan
permasalahan dan harus diselesaikan dengan cara menaklukan permasalahan itu
sendiri dan membagi menjadi permasalah yang lebih kecil dengan menggunakan
metode algoritma Devide and Conquer.
1.2 Rumusan Masalah
1. Apa yang dimaksud algoritma Devide and Conquer ?
2. Bagaimana Strategi dari Algoritma Devide and Conquer ?
3. Bagaimana cara yang digunakan untuk menyelesaikan penerapan masalah
dengan metode algoritma Devide and Conquer ?
4. Apa saja kelebihan dan kekurangan dari algoritma Devide and Conquer ?

1.3 Tujuan Masalah


1. Untuk mengetahui pengertian dari metode algoritma Devide and Conquer.
2. Untuk mengetahui Strategi dari algoritma Devide and Conquer.
3. Mengetahui cara yang digunakan dalam penyelesaian masalah algoritma
Devide and Conquer.
4. Mengetahui kelebihan dan kekurangan algoritma Devide and Conquer.
BAB II

PEMBAHASAN

2.1 Pengertian Algoritma Devide and Conquer


Algoritma Devide and Conquer merupakan algoritma yang sangat populer
di dunia Ilmu Computer. Devide and Conquer merupakan algoritma yang
berprinsip untuk memecah-mecah permasalahan yang terlalu besar menjadi
bebrapa bagian kecil secara rekursif sehingga masalah tersebut dapat dipecahkan
secara langsung dan lebih mudah untuk di selesaikan. Solusi yang didapat dari
setiap bagian kemudian digabungkan untuk membentuk sebuah solusi yang utuh.

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). 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.2 Strategi Algoritma Divide and Conquer


Algoritma Divide and Conquer (DANDC) memecah masalah menjadi upa-
masalah independen yang lebih kecil sehingga solusi dari upa-masalah dapat
diperoleh secara mudah, kemudian digabung menjadi inti solusi dari seluruh
masalah. Terdapat 4 hal penting dalam strategi Algoritma Divide and Conquer :
 Branching Factor
Merupakan jumlah dari upa-masalah yang akan dibagi dari sebuah
awal masalah. Dalam proses pembagian yang sebenarnya, jumlah dari
branching factor harus dua atau lebih, karena jika tidak masalah tidak bisa
dibagi.
 Balance
Sebuah algoritma divide dan conquer dikatakan balance jika masalah
awal dibagi menjadi upa- masalah dengan ukuran yang sama. Artinya
jumlah dari keseluruhan ukuran upa-masalah sama dengan masalah awal.
Algoritma Merge sort dan BinaryTree adalah contoh dari algoritma divide
dan conquer yang seimbang.
 Data Dependence of Divide Function
Merupakan sebuah fungsi pembagian terhadap data yang memiliki
ketergantungan, artinya jika ukuran relatif dari sebuah upa-masalah
tergantung proses input datanya. Salah satu contoh dari algoritma yang tidak
seimbang adalah algoritma QuickSort.
 Control Parallelism of Sequentiality
Algoritma divide dan conquer dikatakan berurutan (sequential) jika
upa-masalah di eksekusi dengan perintah program. Parelisasi dari algoritma
divide dan conquer yang terurut pertama kali didefinisikan oleh Mou’s
Divacon, terjadi Ketika hasil dari salah satu sub-eksekusi diperlukan oleh
sub-eksekusi yang lain. Dalam kasus ini hasil dari subtree pertama diberikan
kepada proses komputasi subtree kedua, agar hasil akhir tersebut bisa
digunakan sebagai nilai awalnya.

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.

2.3 Penerapan Divide and Conquer dalam menyelesaikan suatu


masalah
Prinsip dasar dari Algoritma Divide and Conquer dapat menyelesaikan
beberapa masalah, seperti contoh :
 Pemecahan Masalah Convex Hull dengan Algoritma Divide and
Conquer
 Persoalan Minimum dan Maksimum (MinMaks)
 Pengurutan (Sorting)
 Mencari Pasangan Titik Terdekat (Closest Pair)

2.3.1 Implementasi dari 2 kasus algoritma divide and conquer


1. Menyelesaikan Pengurutan (Sorting) dengan metode Divide and
Conquer
Dalam menyelesaikan sebuah masalah untuk mengurutkan (sorting)
sebuah bilangan dapat menggunakan algoritma Divide and Conquer. Ide
dasar pengurutan larik secara divide and conquer :
 Jika ukuran larik = 1 elemen , larik sudah terurut dengan sendirinya
 Jika ukuran larik > 1, bagi larik menjadi dua bagian , lalu urut masing
masing bagian
 Gabungkan hasil pengurutan masing masing bagian menjadi sebuah
larik yang terurut.

Terdapat dua pendekatan melakukan pengurutan dengan divide and conquer


1) Mudah membagi, tetapi sulit menggabung (easy split, hard join)
 Pembagian larik menjadi dua bagian mudah secara komputasi
(Hanya membagi berdasarkan posisi atau indeks larik)
 Penggabungan dua buah larik terurut menjadi sebuah larik terurut
sukar secara komputasi ditinjau dari kompleksitas algoritmanya

Algoritma pengurutan yang termasuk jenis ini adalah urut-gabung


(Merge Sort) dan urut-seleksi (Insertion Sort)
2) Sulit membagi, tetapi mudah menggabung hard split easy join
 Pembagian larik menjadi dua bagian sukar secara komputasi
(Pembagiannya berdasarkan nilai elemen , bukan posisi elemen
larik)
 Penggabungan dua buah larik terurut menjadi sebuah larik
terurut mudah dilakukan secara komputasi

Algoritma pengurutan yang termasuk jenis ini urut-cepat (Quick


Sort) dan urut-seleksi (Selection Sort)

2. Pemecahan Masalah Convex Hull dengan Algoritma Divide and


Conquer
Salah satu hal penting dalam komputasi geometri adalah menentukan
convex hull dari kumpulan titik. Himpunan titik pada bidang planar disebut
convex jika untuk sembarang dua titik pada bidang tersebut (misal p dan q ),
seluruh segmen garis yang berakhir di p dan q berada pada himpunan
tersebut. Convex hull juga dapat digunakan dalam persoalan optimasi
karena penentuan titik ekstrimnya dapat membatasi kandidat nilai optimal
yang diperiksa. Pada bidang statistik, convex hull juga dapat mendeteksi
outliers pada kumpulan data.
Tujuan Convex Hull dengan Divide and Conquer adalah untuk
menemukan kumpulan titik ‘terluar’ yang membentuk convex hull, dengan
menggunakan algoritma Quicksort. Nilai S: himpunan titik sebanyak n,
dengan n>1, yaitu titik p1(x1, y1) hingga pn(xn, yn) pada bidang kartesian
dua dimensi. Kumpulan titik diurutkan berdasarkan nilai absis yang menaik,
dan jika ada nilai absis yang sama, maka diurutkan dengan nilai ordinat
yang menaik p1 dan pn adalah dua titik ekstrim yang akan membentuk
convex hull untuk kumpulan titik tersebut.

Ide Divide and Conquer


1. Garis yang menghubungkan p1 dan pn (𝑝1𝑝𝑛) membagi S menjadi dua
bagian yaitu S1 (kumpulan titik di sebelah kiri atau atas garis 𝑝1𝑝𝑛) dan S2
(kumpulan titik di sebelah kanan atau bawah garis 𝑝1𝑝𝑛).
Untuk memeriksa apakah sebuah titik berada di sebelah kiri (atau atas) suatu
garis yang dibentuk dua titik, gunakan penentuan determinan:
Titik (x3,y3) berada di sebelah kiri dari garis ((x1,y1),(x2,y2)) jika hasil
determinan positif

2. Semua titik pada S yang berada pada garis 𝑝1𝑝𝑛 (selain titik 𝑝1 dan 𝑝𝑛)
tidak mungkin membentuk convex hull, sehingga bisa diabaikan dari
pemeriksaan

3. Kumpulan titik pada S1 bisa membentuk convex hull bagian atas, dan
kumpulan titik pada S2 bisa membentuk convex hull bagian bawah 
terapkan D & C

S
1

S
2

4. Untuk sebuah bagian (misal S1), terdapat dua kemungkinan:


• Jika tidak ada titik lain selain S1, maka titik 𝑝1 dan 𝑝𝑛 menjadi
pembentuk convex hull bagian S1
• Jika S1 tidak kosong, pilih sebuah titik yang memiliki jarak terjauh
dari garis
𝑝1𝑝𝑛 (misal pmax). Jika terdapat beberapa titik dengan jarak yang sama,
pilih
sebuah titik yang memaksimalkan sudut pmax p1 pn. Semua titik yang
berada di dalam daerah segitiga pmax p1 pn diabaikan untuk pemeriksaan
lebih lanjut

5. Tentukan kumpulan titik yang berada di sebelah kiri garis 𝑝1𝑝𝑚𝑎𝑥


(menjadi bagian S1,1), dan di sebelah kanan garis 𝑝1𝑝𝑚𝑎𝑥(menjadi bagian
S1,2)

S1,1

S1,2

Titik-titik di dalam segitiga tidak diproses, karena tidak mungkin


membentuk convex hull
6. Lakukan hal yang sama (butir 4 dan 5) untuk bagian S2, hingga bagian
‘kiri’ dan ‘kanan’ kosong
7. Kembalikan pasangan titik yang dihasilkan

(i) (ii)

(iii) (iv)

Hasil akhir:

Anda mungkin juga menyukai