Anda di halaman 1dari 8

PEMROGRAMAN LANJUT

Nama : Putri Sarah Fransisca


NIM : 1910511037
Jurusan : S1 Informatika
Kelas :B
Dosen : Jayanta, S.Kom., M.Si.

Fakultas Ilmu Komputer


Universitas Pembangunan Nasional “Veteran” Jakarta
Jakarta
2020
DIVIDE AND CONQUER
I. PENGERTIAN
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.

Skema Umum Algoritma Divide and Conquer :

Divide and conquer adalah varian dari beberapa strategi pemrograman, tetapi
keistimewaannya adalah membuat sub-sub problem dari problem yang besar, oleh karena itu
strategi ini ditunjukkan secara berulang-ulang (recursively), didalam menerapkan algoritma
yang sama dalam sub-sub problem seperti yang diterapkan pada masalah aslinya (original
problem). Sebagaimana prinsip dasar algoritma perulangan dibutuhkan sebuah kondisi untuk
mengakhiri perulangan tersebut. Biasanya untuk mengecek apakah problem sudah cukup kecil
untuk diselesaikan dengan metode secara langsung. Mungkin dari segi ilustrasi kita, bahwa
proses-proses pada komputer paralel tentunya memiliki proses/problem/job yang cukup
kompleks sehingga harus dipecah-pecah menjadi sub-sub problem.

4 hal penting dalam Algoritma Divide dan Conquer :

 Branching Factor
Branching factor dalam algoritma divide and conquer adalah jumlah dari subproblem yang
akan dibagi dari sebuah problem awal. Ini adalah langkah nyata dari algoritma divide and
conquer, didalam proses pembagian yang sebenarnya, jumlah dari branching factor harus 2
atau lebih, karena jika tidak problem tidak bisa dibagi. Banyak jenis algoritma ini termasuk
pula algoritma komputasi geometric yang memiliki branching factor berjumlah.

 Balance
Sebuah algoritma divide and conquer dikatakan balance jika problem awal dibagi menjadi
sub-sub problem dengan ukuran yang sama. Yang artinya jumlah dari keseluruhan ukuran
subproblem sama dengan ukuran problem awal (initialproblem). Algoritma Mergesort dan
binary tree, dan sama halnya dengan algoritma reduksi & prefix sum adalah beberapa contoh
algoritma divide andconquer yang seimbang (balance).

 Data Dependence of Divide Function


Algoritma divide and conquer memiliki sebuah fungsi pembagian terhadap data yang
memiliki ketergantungan, artinya jika ukuran relatif dari sebuah algoritma yang tidak
seimbang, salah satu contohnya adalah algoritma quicksort yang akan membagi subproblem
dengan fungsi data-dependent divide.

 Control Parallelism or Sequentiality


Algoritma divide and conquer dikatakan berurutan (sequential) jika subproblem dieksekusi
sesuai dengan perintah program. Paralelisasi dari algoritma divide and conquer yang terurut
pertama kali didefinisikan oleh Mou’s Divacon[Mou90] yang terjadi ketika hasil dari salah
satu sub-eksekusi diperlukan oleh subeksekusi yang lain. Dalam kasus ini hasil dari subtree
pertama diberikan (passing) kepada proses komputasi subtree kedua, supaya hasil akhir
tersebut bisa digunakan sebagai nilai awalnya, tetapi sekarang ini contoh diatas tidak dapat
dijadikan ilustrasi lagi karena teknologi komputer paralel yang semakin canggih dan
kompleks

II. ALGORITMA YANG MENGGUNAKAN KONSEP DIVIDE AND CONQUER

A. Merge Sort (Metode Penggabungan)


Pengertian Merge Sort adalah algoritma yang dijalankan sebagai akibat dari terlalu banyaknya
daftar yang diurutkan, dengan menghasilkan lebih banyak daftar yang diurutkan sebagai
output. Biasanya digunakan pada pengurutan berkas. Prinsip dari metode penggabungan
sebagai berikut :
Mula-mula diberikan dua kumpulan data yang sudah dalam keadaan urut. Kedua
kumpulan data tersebut harus dijadikan satu table sehingga dalam keadaan urut.
Contoh Listing Program Merge Sort C++ :
B. Quick Sort
Quick Sort merupakan suatu algoritma pengurutan data yang menggunakan teknik pemecahan
data menjadi partisi-partisi, sehingga metode ini disebut juga dengan nama partition exchange
sort. Untuk memulai irterasi pengurutan, pertama-tama sebuah elemen dipilih dari
data,  kemudian elemen-elemen data akan diurutkan diatur sedemikian rupa.
Algoritma ini mengambil salah satu elemen secara acak (biasanya dari tengah) yang disebut
dengan pivot lalu menyimpan semua elemen yang lebih kecil di sebelah kiri pivot dan semua
elemen yang lebih besar di sebelah kanan pivot. Hal ini dilakukan secara rekursif terhadap
elemen di sebelah kiri dan kanannya sampai semua elemen sudah terurut.
Contoh Listing Program Quick Sort C++:

C. Binary Search
Binary Search merupakan metode pencarian dimana data harus diurutkan terlebih dahulu
sebelum dilakukan proses pencarian. Pada metode pencarian ini, data dibagi menjadi dua
bagian untuk setiap tahap pencarian.

Algoritma binary search :


1. Data diambil dari posisi 1 sampai posisi akhir n
2. Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi akhir) / 2
3. Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama
atau lebih kecil, atau lebih besar?
4. Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi
tengah + 1
5. Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi
tengah – 1
6. Jika data sama, berarti ketemu.
Contoh Listing Program Binary Search C++:

D. Closest Pair of Points


Sebuah algoritma untuk menemukan pasangan poin terdekat dalam satu set-point pada
bidang x-y. Problem ini dapat diselesaikan dengan O(n^2)time dengan menjumlahkan
jarak setiap pasangan poin dan membandingkan jarak untuk menemukan
minimumnya. Algoritma Divide & Conquer menyelesaikan masalah pada O(nLogn)
time.
E. Strassen’s Algorithm
Algoritma untuk mengalikan dua buah matriks. Metode paling simple untuk
mengalikan matrik membutuhkan 3 nested loops dan waktu yang diperlukan adalaha
O(n^3). Strassen’s algorithm mengalikan dua buah matriks hanya dengan
O(N^2.8974).

F. Cooley-Turkey Fast Fourier Transform (FFT) algorithm


Algortima paling umum untuk FFT. menggunakan waktu sebanyak O)nLogn).

G. Karatsuba algoritm for fast multiplication


Melakukan perkalian dari dua angka n-digit pada 3 nlog 3 ≈ 3 n 1.585 sebuah digit dikalikan
2

seacara general (dan tentunya n log 3 ketika n dipangkatkan 2).


2
SUMBER REFERENSI

https://www.geeksforgeeks.org/closest-pair-of-points-using-divide-and-conquer-algorithm/
http://onophp.blogspot.com/2018/11/quick-sort-pengertian-agoritma-dan.html
https://www.labwisnu.com/2017/06/merge-sort-c.html
https://www.academia.edu/34093805/Algoritma_Divide_and_Conquer?auto=download

Anda mungkin juga menyukai