Anda di halaman 1dari 8

[ STRATEGI ALGORITMA ]

Brute Force
Penjelasan Umum
• Brute force adalah sebuah pendekatan langsung (straightforward)
untuk memecahkan suatu masalah

• Algoritma brute force memecahkan masalah dengan sangat


sederhana, langsung dan dengan cara yang jelas (obvious way)
Karakteristik
• Algoritma brute force umumnya tidak “cerdas” dan tidak efisien
• Membantu menemukan algoritma yang lebih cerdas
• Mudah diimplementasikan
• Lebih relevan untuk input berukuran kecil
Keunggulan
• 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, dll
Kelemahan
• Metode brute force jarang menghasilkan algoritma yang efektif
• Beberapa algoritma brute force lambat sehingga tidak dapat diterima
• Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya
Contoh Kasus - Selection sort
• Diberikan n buah bilangan bulat yang dinyatakan sebagai a0, a2, …, an-1. Urutkan
bilangan-bilangan tersebut secara ascending.
Algoritma SelectionSort (A[0 .. n-1])
{ Urutkan array yang diberikan dengan Selection Sort
Input : Sebuah array A[0 .. n-1] yang tidak terurut
Output : Sebuah array A[0 .. n-1] yang terurut ascending }

for i  0 to n-2 do -> n


min  i -> 1
for j  i + 1 to n-1 do -> n
if A[j] < A[min] then -> 1
min  j -> 1
endif
endfor
//tukar A[i] dan A[min]
temp  A[i] -> 1
A[i]  A[min] -> 1
A[min]  temp -> 1
endfor Kompleksitas O(n2)
Contoh Kasus - Sequential search
Diberikan n buah bilangan bulat yang dinyatakan sebagai a1, a2, …, an . Akan dicari
nilai x di dalam himpunan bilangan bulat tersebut.
• Jika x ditemukan, Algoritma SequentialSearch(A[0 .. n-1], x)
maka indeks elemen bernilai x ditampilkan { Nilai yang dicari (x) dimasukkan sebagai sentinel array
Input : Sebuah array A[0 .. n-1] dan nilai yang dicari
• Jika x tidak ditemukan, (x)
Output : Indeks pertama A[0 .. n-1] yang mengandung elemen
maka nilai -1 ditampilkan bernilai sama dengan x. Nilai -1 jika tidak ditemukan }

A[n]  x -> 1
i  0 -> 1
while A[i] ≠ x do
-> n-1
i  i + 1
endwhile -> 1

if i < n then
return i -> 1
else
-> 1
return -1

endif -> 1
Kompleksitas O(n)
Contoh Kasus - String matching
Terdapat dua buah array.
Array pertama (A[0 .. n-1]) mengandung teks.
Array kedua (B[0 .. m-1]) mengandung pola.
Algoritma StringMatch (A[0 .. n-1], B[0 .. m-1])
{ Implementasi StringMatch dengan BruteForce
Lalu akan dicari bagian teks yang sesuai pola. Input : Array A[0 .. n-1] berisi n karakter sebagai teks
• Jika ditemukan, Array B[0 .. n-1] berisi n karakter sebagai pola
maka indeks teks yang mengawali pola Output : Indeks pertama A[0 .. n-1] yang mengawali string yang
cocok dengan pola. Nilai -1 jika tidak ditemukan. }
ditampilkan.
• Jika tidak ditemukan, for i0 to n – m do
maka nilai -1 ditampilkan. j  0
while j < m AND B[j] = A[i+j] do
j  j + 1
endwhile

if j = m then
return i
else
return -1

endif
endfor

Anda mungkin juga menyukai