10010101001011110101010001
1 001011
2 001011
3 001011
4 001011
5 001011
6 001011
7 001011
8 001011
9 001011
2. Mencari Pasangan Titik yang
Jaraknya Terdekat
Persoalan: Diberikan n buah titik (2-D atau 3-D), tentukan dua buah titik yang
terdekat satu sama lain.
Jarak dua buah titik di bidang 2-D, p1 = (x1, y1) dan p2 = (x2, y2) adalah
(rumus Euclidean):
Algoritma brute force:
1. Hitung jarak setiap pasang titik.
2. Pasangan titik yang mempunyai jarak terpendek itulah jawabannya.
Algoritma brute force akan menghitung sebanyak C(n, 2) = n(n 1)/2
pasangan titik dan memilih pasangan titik yang mempunyai jarak terkecil.
Kompleksitas algoritma adalah O(n2).
Kekuatan dan Kelemahan Metode Brute Force
Kekuatan:
1. Metode brute force dapat digunakan untuk memecahkan hampir sebagian
besar masalah (wide applicability).
2. Metode brute force sederhana dan mudah dimengerti.
3. Metode brute force menghasilkan algoritma yang layak untuk beberapa
masalah penting seperti pencarian, pengurutan, pencocokan string, perkalian
matriks.
4. 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).
Kelemahan:
1. Metode brute force jarang menghasilkan algoritma yang mangkus.
2. Beberapa algoritma brute force lambat sehingga tidak dapat diterima.
3. 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.
Exhaustive Search
(4 1)! = 3! = 6
Dan kategori terakhir, dari arah yang ditentukan secara spesifik oleh algoritma
tersebut, arah ini menghasilkan hasil terbaik secara teoritis, algoritma yang
termasuk kategori ini adalah:
1. Algoritma Colussi
2. Algoritma Crochemore-Perrin
Algoritma brute force dalam pencarian string
Algoritma brute force merupakan algoritma pencocokan string yang ditulis tanpa
memikirkan peningkatan performa. Algoritma ini sangat jarang dipakai dalam
praktek, namun berguna dalam studi pembanding dan studi-studi lainnya.
Cara kerja
Secara sistematis, langkah-langkah yang dilakukan algoritma brute force pada
saat mencocokkan string adalah:
1. Algoritma brute force mulai mencocokkan pattern pada awal teks.
2. Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter
pattern dengan karakter di teks yang bersesuaian, sampai salah satu kondisi
berikut dipenuhi:
1. Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch).
2. Semua karakter di pattern cocok. Kemudian algoritma akan memberitahukan
penemuan di posisi ini.
3. Algoritma kemudian terus menggeser pattern sebesar satu ke kanan, dan
mengulangi langkah ke-2 sampai pattern berada di ujung teks.
Berikut adalah Algoritma brute force yang sedang bekerja mencari string:
Pseudocode
Pseudocode algoritma brute force ini:
procedure BruteForceSearch(
input m, n : integer,
input P : array[0..n-1] of char,
input T : array[0..m-1] of char,
output ketemu : array[0..m-1] of boolean
)
Deklarasi:
i, j: integer
Algoritma:
for (i:=0 to m-n) do
j:=0
while (j < n and T[i+j] = P[j]) do
j:=j+1
endwhile
if(j >= n) then
ketemu[i]:=true;
endif
endfor