Algoritma brute force, divide and conquer, dan decrease and conquer merupakan pendekatan yang berbeda dalam memecahkan masalah secara komputasi. Brute force memecahkan masalah secara sederhana dengan mencoba semua kemungkinan, divide and conquer memecah masalah menjadi submasalah kecil lalu menggabungkan hasilnya, sedangkan decrease and conquer hanya memecah masalah menjadi submasalah kemudian memecahkan satu submasalah.
3. Penjelasan
• Brute force adalah sebuah pendekatan
yang sangat jelas(straightforward) untuk
memecahkan suatu persoalan, biasanya
didasarkan pada problem statement dan
definisi konsep yang dilibatkan. Algoritma
brute force memecahkan masalah dengan
sangat sederhana, langsung dan dengan
cara yang jelas.
4. Contoh
• Contoh algoritma yang menggunakan brute force antara lain :
buble sort, convex hull, closest pair, travelling salesman
problem, knapsack, string matching, dan selection sort.
• Contoh-contoh masalah yang dipecahkan secara brute force:
• Menghitung an (a > 0, n adalah bilangan bulat tak-negatif)
•
• an = a × a × … × a (sebanyak n kali) , jika n > 0
• =1 , jika n = 0
•
• Algoritma: kalikan 1 dengan a sebanyak n kali
5. Pseudocode
• function pangkat(input a, n : integer) integer
• { Menghitung an, a > 0 dan n bilangan bulat tak-negatif
• Masukan: a, n
• Keluaran: nilai perpangkatan.
• }
• Deklarasi
• k, hasil : integer
•
• Algoritma:
• hasil 1
• for k 1 to n do
• hasil hasil * a
• endfor
• return hasil
•
6. Cara kerja
• Secara konseptual, brute force bekerja sebagai
berikut:
• Mula-mula pattern dicocokkan pada awal teks.
• Dengan bergerak dari kiri ke kanan, bandingkan setiap
karakter di dalam pattern dengan karakter yang
bersesuaian di dalam teks sampai:
• semua karakter yang dibandingkan cocok atau sama
(pencarian berhasil), atau
• dijumpai sebuah ketidakcocokan karakter (pencarian
belum berhasil)
• Bila pattern belum ditemukan kecocokannya dan teks
belum habis, geser pattern satu karakter ke kanan dan
ulangi langkah 2.
7. Keunggulan brute force
• Metode brute force dapat digunakan untuk
memecahkan hampir sebagian besar masalah (wide
applicability).
• Metode brute force sederhana dan mudah dimengerti.
• Metode brute force menghasilkan algoritma yang
layak untuk beberapa masalah penting seperti
pencarian, pengurutan, pencocokan string, perkalian
matriks.
• Metode brute force menghasilkan algoritma baku
(standard) untuk tugas-tugas komputasi seperti
penjumlahan/perkalian n buah bilangan, menentukan
elemen minimum atau maksimum di dalam tabel (list).
8. Kelemahan brute force
• Metode brute force jarang menghasilkan
algoritma yang mangkus.
• Beberapa algoritma brute force lambat
sehingga tidak dapat diterima.
• Tidak sekontruktif/sekreatif teknik
pemecahan masalah lainnya.
9. Kompleksitas dan running
time
• Kompleksitas algoritma ini adalah O(n).
• Running time brute force adalah : n-1
multiplications
11. Penjelasan
• Strategi Divide dan Conquer memecah
masalah menjadi submasalah-submasalah
independen yang lebih kecil sehingga solusi
submasalah-submasalah dapat diperoleh
secara mudah, solusi submasalah-
submasalah digabung menjadi solusi seluruh
masalah. Contoh algoritma yang
menggunakan divide and conquer antara lain
: merge sort, quick sort, binary tree
transversals, multiplication of large
integers, dan matrix multiplication : strassen’s
algorithm.
12. Skema umum algoritma
divide and conquer
• Procedure DNC ( i,j : integer )
• Var K : integer ;
• If SMALL (i,j) then SOLVE (i,j)
• Else begin
• K : = DIVIDE (i,j)
13. Cara kerja
• SMALL adalah fungsi yang mengirim
BOOLEAN, menentukan apakah ukuran telah
cukup kecil sehingga solusi dapat diperoleh.
Ukuran dinyatakan sebagai telah berukuran
kecil bergantung masalah.
• DIVIDE adalah fungsi membagi menjadi 2
bagian pada posisi K. Biasanya bagian
berukuran sama.
• COMBINE adalah fungsi menggabungkan
solusi X dan Y submasalah. Solusi diperoleh
dengan memanggil prosedur rekursif DNC.
15. Keunggulan dan
kelemahan
• keunggulan:
• -Umumnya meningkatkan pada Brute Force dengan
satu basis efisiensi kelas
• -Mudah untuk menganalisis menggunakan
Recurrence Templates
• -Idealnya cocok untuk perhitungan paralel
• kelemahan:
• -Sering membutuhkan rekursi, yang menyebabkan
overhead
• -Dapat diterapkan dan inferior untuk solusi algoritmik
yang lebih sederhana
16. Kompleksitas dan running
time
• kompleksitas algoritma O(n ²log n).
• Running time algoritma divide and
conquer
T(n) = 2*T(n/2) + 1
= n-1
18. Penjelasan
• metode desain algoritma dengan
mereduksi persoalan menjadi beberapa
sub-persoalan yang lebih kecil, tetapi
selanjutnya hanya memproses satu sub-
persoalan saja. Berbeda dengan divide
and conquer yang memproses semua
sub-persoalan dan menggabung semua
solusi setiap sub-persoalan.
19. Jenis – jenis decrease and
conquer
• Decrease by a constant
Ukuran dari sebuah instansi dikurangi oleh
ketetapan yang sama (biasanya satu) pada
masing-masing algoritma.
• Decrease by a constant factor
Ukuran dari sebuah masalah instansi dikurangi
oleh factor ketetapan yang sama (biasanya 2)
pada masing-masing iterasi dari algoritma.
• Variable size decrease
Sebuah ukuran pola pengurangan yang berbeda
dari satu iterasi ke iterasi lainnya.
20. Cara kerja
• Decrease: mereduksi persoalan menjadi
beberapa persoalan yang lebih kecil
(biasanya dua sub-persoalan).
• Conquer: memproses satu sub-persoalan
secara rekursif. Tidak ada tahap combine
dalam decrease and conquer.
22. Kompleksitas dan running
time
• Kompleksitas algoritma decrease and
conquer adalah O(n2)
• Running time algoritma decrease and
conquer
• Decrease by one
• T(n) = T(n-1) + 1 = n-1
• Decrease by constant factor
• T(n) = T(n/a) + a-1
• = (a-1) n
• = when a = 2
23. Kelemahan dan kelebihan
• -Dapat diimplementasikan baik top down
• (rekursif) atau bawah ke atas (tanpa rekursi)
• -Seringkali sangat efisien ( O (log n))
• -Mengarah ke suatu bentuk kuat dari grafik
traversal
• (Breadth and Depth First Search)
• kelemahan:
• -Kurang berlaku secara luas (terutama penurunan
oleh
• faktor konstan)