Vous êtes sur la page 1sur 11

ALGORITMA

DIVIDE DAN
CONQUER
1.
Divide and Conquer Langkah-langkah umum algoritma Divide and
merupakan algoritma Conquer :
yang berprinsip • Divide : Membagi masalah menjadi beberapa sub-
memecah-mecah masalah yang memiliki kemiripan dengan masalah
permasalahan yang semula namun berukuran lebih kecil ( idealnya
terlalu besar menjadi berukuran hampir sama ).
beberapa bagian kecil • Conquer : Dalam langkah ini kita mencoba
sehingga lebih mudah menyelesaikan masalah atau data yang telah
untuk diselesaikan. dipecahkan pada langkah pertama, dengan
menggunakan algoritma sederhana.
• Combine : Menggabungkan solusi masing-masing sub-
masalah sehingga membentuk solusi masalah semula.
Skema umum
algoritma
divide and
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

Ada 4 hal 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

penting yang pula algoritma komputasi geometric yang memiliki branching factor berjumlah 2.

harus
• Balance
Sebuah algoritma divide and conquer dikatakan balance jika problem awal dibagi menjadi

dipahami
sub-sub problem dengan ukuran yang sama. Yang artinya jumlah dari keseluruhan ukuran
subproblem sama dengan ukuran problem awal (initial problem). Algoritma Mergesort dan

dalam strategi
binary tree, dan sama halnya dengan algoritma reduksi & prefix sum adalah beberapa
contoh algoritma divide and conquer yang seimbang (balance).

ini : • Data Dependence of Divide Function


Algoritma divide and conquer memiliki sebuah fungsi pembagian terhadap data yang
memiliki ketergantungan, artinya jika ukuran relatif dari sebuah Pseudocode untuk model
algoritma n-way divide and conquer subproblem tergantung pada proses input datanya. Ini
adalah salah satu ciri dari 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.
• Mampu menyelesaikan masalah yang sulit, algoritma
Algoritma Divide ini mampu menyelesaikan masalah rumit yang hingga
and Conquer kini masih cukup sulit dipecahkan oleh komputer biasa,
memiliki kelebihan seperti Tower of Hanoi Problem.
yang membuatnya • Algoritma lebih efisien untuk beberapa kasus tertentu,
banyak diterapkan misalnya kasus Fast Fourier Transform maupun Sorting
dan digunakan dapat dilakukan dengan kompleksitas algoritma O(n
dalam aplikasi- log n) dari algoritma lainnya yang hanya mampu
aplikasi dunia nyata, mencapai kompleksitas O (n2).
diantaranya : • Algoritma ini dapat bekerja secara paralel dan dapat
memaksimalkan penggunaan dari cache memory.
TOWER OF
Gambar 1 menggambarkan kondisi awal permainan tower of
hanoi dengan tiang A,B,C dan memiliki lima piring. Sebagai
contoh yang sederhana akan diambil tiga

HANOI • buah piring agar mudah dimengerti. Langkah-langkah


untuk menyelesaikan permasalahan tiga piring sebagai
berikut:
Pindahkan piring 1 dari A ke C
Pindahkan piring 2 dari A ke B
Pindahkan piring 1 dari C ke B
Pindahkan piring 3 dari A ke C

Pindahkan piring 1 dari B ke A


Pindahkan piring 2 dari B ke C
Pindahkan piring 1 dari A ke C
Permasalahan selesai ditangani.
TOWER OF
HANOI
• Merge sort : seperti namanya, merupakan algoritma yang

Contoh
dirancang untuk melakukan pengurutan terhadap
sekumpulan bilangan. Ide utama dari merge sort sama
dengan algoritma perhitungan total yang telah kita

algoritma lakukan sebelumnya, yaitu membagi-bagikan keseluruhan


list menjadi komponen kecil, dan kemudian mengurutkan

devide and komponen tersebut dan menggabungkannya kembali


menjadi sebuah list besar.

conquer • Pemecahan Masalah Convex Hull dengan Algoritma


Divide and Conquer : Permasalahan convex hull adalah
permasalahan yang memiliki aplikasi terapan yang cukup
banyak, seperti pada permasalahan grafika komputer,
otomasi desain, pengenalan pola (pattern recognition),
dan penelitian operasi.
• Persoalan Minimum dan Maksimum ( MinMaks)
• Optimasi Konversi Bilangan Desimal Ke Biner
• Mencari Pasangan titik yang jaraknya dekat (close pair)
Misalnya diketahui table A yang berukuran n eleman

PERSOALAN
sudah berisi nilai integer. Kita ingin menentukan nilai
minimum dan nilai maksimum sekaligus di dalam table
MINIMUM tersebut. Misalkan tabel A berisi elemen-elemen sebagai
berikut :
DAN
MAKSIMUM (
MINMAKS)
Misalkan tabel A berisi elemen-elemen sebagai berikut :

PERSOALAN
MINIMUM
DAN Ide dasar algoritma secara Divide and Conquer :

MAKSIMUM
(MINMAKS)
PERSOALA Algoritma MinMaks :
1. Untuk kasus n = 1 atau n = 2,
N SOLVE : Jika n = 1, maka min = maks = An. Jika n = 2, maka
bandingkan kedua elemen untuk menentukan min dan maks.

MINIMUM 2. Untuk kasus n > 2,


DIVIDE : Bagi dua table A secara rekursif menjadi dua bagian yang

DAN
berukuran sama, yaitu bagian kiri dan bagian kanan.
CONQUER : Terapkan algoritma Divide and Conquer untuk masing-

MAKSIMUM
masing bagian, dalam hal ini min dan maks dari table bagian kiri
dinyatakan dalam peubah min1 dan maks1, dan min dan maks dari
table bagian kanan dinyatakan dalam peubah min2 dan maks2.
( MINMAKS) COMBINE : Bandingkan min1 dan min2 untuk menentukan min table
A, serta bandingkan maks1 dan maks2 untuk menentukan maks table
A.

Vous aimerez peut-être aussi