- 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 .
- Enumerasi (list) setiap solusi yang mungkin dengan cara yang sistematis.
- Evaluasi setiap kemungkinan solusi “satu per satu” dan simpan solusi terbaik yang ditemukan sampai sejauh ini (the best solusi found so far).
- Bila pencarian solusi berakhir, umumkan solusi terbaik (the winner)
- Algoritma brute force sebenarnya bukanlah algoritma yang “cerdas” dan mangkus(efisien), karena ia membutuhkan jumlah langkah yang besar/banyak dalam penyelesaiannya dan tentu saja membutuhkan waktu yang berbanding lurus dengan jumlah langkah penyelesaiannya. Kadang-kadang algoritma brute force disebut juga algoritma naif (naïve algorithm).
- Algoritma brute force seringkali merupakan pilihan yang kurang disukai karena ketidakmangkusannya itu, tapi kalau mencari pola2 dasar, keteraturan, atau trik-trik khusus, biasanya dapat membantu membantu untuk menemukan algoritma yang lebih cerdas dan lebih mangkus lagi.
- Untuk persoalan2 yang kecil, kesederhanaan brute force lebih diperhitungkan daripada ketidakmangkusannya. Algoritma brute force sering digunakan sebagai basis bila membandingkan beberapa alternatif algoritma yang mangkus.
- Meskipun brute force bukan merupakan teknik pemecahan masalah yang mangkus, namun teknik brute force dapat diterapkan pada sebagian besar persoalan. Bayangkan..,sangat sulit menemukan masalah yang tidak dapat dipecahkan dengan teknik brute force, tapi ada masalah yang hanya dapat dipecahkan secara brute force.
procedure BubbleSort (input/output L : arrayOfInt, input n : integer)
{ Mengurutkan array L[1..N] sehingga terurut menaik dengan metode pengurutan bubble sort.
Masukan : Array L yang sudah terdefenisi nilai-nilainya.
Keluaran: Array L yang terurut menaik sedemikian sehingga
L[1] L[2] … L[N].
}
Deklarasi
i : integer { variabel untuk jumlah langkah }
k : integer { variabel,untuk pengapungan pada setiap langkah }
temp : integer { variabel untuk pertukaran } Algoritma:
for i <- 1 to n – 1 do
for j <- n downto i + 1 do {looping menurun}
if (L[j] < L[j-1]) then
{tukar L[j] dengan L[j-1]}
temp <- L[j]
L[j] <- L[j-1]
L[j-1] <- temp
endif
endfor
endfor
Tidak ada komentar:
Posting Komentar