Anda di halaman 1dari 17

Algoritma Brute Force

Deskripsi

Materi ini membahas tentang algoritma brute


force dengan berbagai studi kasus

Definisi Brute Force


Straighforward (lempeng)
Sederhana dan jelas
Lebih mempertimbangkan solusi dari problem

Tanpa mempertimbangkan efisiensi


Dengan cara meminimumkan jumlah operasi

Contoh-contoh Brute Force


Menghitung an (a > 0, n adalah bilangan bulat taknegatif)
an = a x a x x a (n kali) , jika n > 0
=1
, jika n = 0
Algoritma: kalikan 1 dengan a sebanyak n kali

Menghitung n! (n bilangan bulat tak-negatif)


n! = 1 2 3 n , jika n > 0
=1
, jika n = 0
Algoritma: kalikan n buah bilangan, yaitu 1, 2,
3, , n, bersama-sama

Mengalikan dua buah matrik yang berukuran n n.

Misalkan C = A B dan elemen-elemen matrik dinyatakan


sebagai cij, aij, dan bij
n

cij ai 1b1 j ai 2 b2 j ain bnj aik bkj


k 1

Algoritma: hitung setiap elemen hasil perkalian satu per satu,


dengan cara mengalikan dua vektor yang panjangnya n.

Algoritma Perkalian Matriks


procedure PerkalianMatriks(input A, B : Matriks,
input n : integer,
output C : Matriks)
1
2

for i1 to n do
for j1 to n do

C[i,j]0

for k 1 to n do

5
6
7
8

{ inisialisasi penjumlah }

C[i,j]C[i,j] + A[i,k]*B[k,j]
endfor
endfor
endfor

Mencari elemen terbesar (atau terkecil)


Persoalan: Diberikan sebuah himpunan yang
beranggotakan n buah bilangan bulat. Bilanganbilangan bulat tersebut dinyatakan sebagai a1, a2, ,
an. Carilah elemen terbesar di dalam himpunan
tersebut.

Algoritma Cari Elemen Terbesar


procedure CariElemenTerbesar
(input a1, a2, ..., an : integer,
output maks : integer)
1
2
3
4
5
6

maksa1
for k2 to n do
if ak > maks then
maksak
endif
endfor

Sequential Search
Persoalan: Diberikan n buah bilangan bulat yang
dinyatakan sebagai a1, a2, , an. Carilah apakah x
terdapat di dalam himpunan bilangan bulat tersebut.
Jika x ditemukan, maka lokasi (indeks) elemen yang
bernilai x disimpan di dalam peubah idx. Jika x tidak
terdapat di dalam himpunan tersebut, maka idx diisi
dengan nilai 0.

Algoritma Pencarian Beruntun


procedure PencarianBeruntun
(input a1, a2, ..., an : integer, x : integer,
output idx : integer)
1
2
3

k1
while (k < n) and (ak x) do
k k + 1

endwhile

{ k = n or ak = x }

if ak = x then

7
8
9
10

{ x ditemukan }

idxk
else
idx 0
endif

{ x tidak ditemukan }

Bubble Sort

Apa metode yang paling lempang dalam


memecahkan masalah pengurutan? Jawabnya
adalah algoritma pengurutan bubble sort.

Algoritma bubble sort mengimplementasikan


teknik brute force dengan jelas sekali.

Algoritma Bubble Sort


procedure BubbleSort (input/output L : TabelInt, input n : integer)
1

for i 1 to n - 1 do

for k n downto i + 1 do

if L[k] < L[k-1] then

{pertukarkan L[k] dengan L[k-1]}

temp L[k]

L[k] L[k-1]

L[k-1] temp

8
9
10

endif
endfor
endfor

Karakteristik Algoritma
Brute Force

Mudah diimplementasikan
Tidak cerdas dan tidak efektif

Seringkali bukan pilihan yang disukai


Dapat ditemukan algoritma yang lebih cerdas dan efektif

Butuh jumlah langkah yang besar


Nave algorithm. Kata force mengindikasikan tenaga ketimbang
otak

Dengan mencari pola-pola yang mendasar, keteraturan, atau trik-trik


khusus

Kadang brute force lebih tepat daripada algoritma lain, ditinjau dari
implementasinya
Hampir semua permasalahan dapat diselesaikan dengan brute
force

Malah, ada beberapa masalah yang hanya bisa diselesaikan dengan


brute force

Kekuatan Metode Brute Force

Digunakan untuk memecahkan hampir sebagian besar masalah


(wide applicability).
Sederhana dan mudah dimengerti.
Menghasilkan algoritma yang layak untuk beberapa masalah
penting seperti pencarian, pengurutan, pencocokan string, perkalian
matriks.
Menghasilkan algoritma baku (standard) untuk tugas-tugas
komputasi seperti penjumlahan/perkalian n buah bilangan,
menentukan elemen minimum atau maksimum di dalam tabel (list).

Kelemahan Metode Brute Force

Metode brute force jarang menghasilkan algoritma yang efektif


Beberapa algoritma brute force lambat sehingga tidak dapat
diterima
Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya
Ken Thompson (salah seorang penemu Unix) mengatakan: When
in doubt, use brute force, faktanya kernel Unix yang asli lebih
menyukai algoritma yang sederhana dan kuat (robust) daripada
algoritma yang cerdas tapi rapuh

Latihan

Buatlah suatu algoritma brute force untuk pencocokan string.


Persoalan: Diberikan
a. teks (text), yaitu (long) string yang
panjangnya n karakter
b. pattern, yaitu string dengan panjang m
karakter (m < n) yang akan dicari di dalam
teks.
Carilah lokasi pertama di dalam teks yang bersesuaian dengan
pattern. Jika pattern/sub-string ditemukan maka return valuenya
berupa posisi substring tersebut. Jika sub-string tidak ditemukan
maka return valuenya bernilai -1

Anda mungkin juga menyukai