Anda di halaman 1dari 8

CII2K3 – ALGORITHM STRATEGY

Part 2: Brute Force


Siti Saadah (SSD)
TA 2020/2021_2

1. PENGERTIAN
Brute force merupakan pendekatan yang lempang (straightforward) untuk memecahkan suatu masalah.
Strategi algoritma ini didasarkan pada pernyataan masalah (problem statement) dengan melibatkan
definisi konsep. Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung, dan
dengan cara yang jelas (obvious way). Berdasarkan pemaparan tersebut, metode brute force
dianalogikan dengan ungkapan “just do it”.

Algoritma brute force umumnya tidak “cerdas” dan tidak mangkus, karena ia membutuhkan jumlah
langkah yang besar dalam penyelesaian suatu permasalahan. Kata “force” mengindikasikan “tenaga”
ketimbang “otak”, sehingga terkadang algoritma brute force disebut juga algoritma naif (naïve algorithm).

Mengacu kepada karakteristik brute force di atas, algoritma ini lebih cocok untuk masalah yang memiliki
ruang solusi berukuran kecil. Pertimbangannya karena simple (sederhana) dan mudah
diimplementasikan. Oleh sebab itu, Algoritma brute force sering digunakan sebagai basis pembanding
dengan algoritma yang lebih mangkus.

Meskipun bukan metode yang mangkus, hampir semua masalah dapat diselesaikan dengan algoritma
brute force. Dengan kata lain, sukar menunjukkan masalah yang tidak dapat diselesaikan dengan
metode brute force. Bahkan, ada masalah yang hanya dapat diselesaikan dengan metode brute force.
Contoh: mencari elemen terbesar di dalam senarai.

2. KELEBIHAN DAN KEKURANGAN


Brute force memiliki beberapa kekuatan/kelebihan yaitu:

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).

Sedangkan, kelemahan/kekurangan dari algoritma brute force yaitu:

1. Metode brute force jarang menghasilkan algoritma yang mangkus.


2. Beberapa algoritma brute force lambat sehingga tidak dapat diterima.
3. Tidak sekontruktif atau sekreatif teknik pemecahan masalah lainnya.

1 of 8
CII2K3 – ALGORITHM STRATEGY

4. 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.

3. PENYELESAIAN PERMASALAHAN
Penyelesaian permasalahan menggunakan strategi brute force dibagi ke dalam 3 (tiga) bentuk yaitu
1. Berdasarkan pernyataan permasalahan yang ditemui; 2. Berdasarkan definisi konsep pada
permasalahan yang diberikan; maupun 3. Berdasarkan pemasalahan khusus seperti pada issue atau
kasus kombinatorial. Berikut penjelasan satu-per-satu terkait hal tersebut.

3.1 Berikut merupakan contoh penyelesaian permasalahan menggunakan brute force berdasarkan
pernyataan masalah yaitu mengenai:

1. Mencari elemen terbesar (terkecil), diketahui persoalan mengenai hal ini yaitu diberikan
sebuah senarai yang beranggotakan n buah bilangan bulat (a1, a2, …, an). Carilah elemen
terbesar di dalam senarai tersebut. Kemudian, algoritma strategi algoritma brute force
menyelesaikan permasalahan tersebut dengan cara membandingkan setiap elemen senarai
untuk menemukan elemen terbesar. Berikut merupakan penggambaran algortima brute
force dalam pseudocode.

Mengacu kepada operasi dasar dari procedure CariElemenTerbesar diatas, dapat diketahui
bahwa kompleksitas waktu algoritma adalah O(n).

2. Pencarian beruntun (Sequential Search), diketahui persoalan terkait hal ini yaitu diberikan
senarai yang berisi n buah bilangan bulat (a1, a2, …, an). Carilah nilai x di dalam senarai
tersebut. Jika x ditemukan, maka keluarannya adalah indeks elemen senarai, jika x tidak
ditemukan, maka keluarannya adalah 0. Adapun strategi algoritma brute force terhadap
masalah ini yaitu dengan cara: setiap elemen senarai dibandingkan dengan x. Pencarian
selesai jika x ditemukan atau elemen senarai sudah habis diperiksa. Berikut merupakan
penggambaran algortima brute force dalam pseudocode.

2 of 8
CII2K3 – ALGORITHM STRATEGY

Mengacu kepada operasi dasar dari procedure PencarianBeruntun diatas, dapat diketahui
bahwa kompleksitas waktu algoritma adalah O(n).

3.2 Selanjutnya untuk contoh penyelesaian permasalahan menggunakan brute force berdasarkan
definisi konsep yang menaungi, dapat dipelajari melalui contoh berikut:

1. Menghitung 𝒂𝒏 (a > 0, n adalah bilangan bulat tak-negatif), dengan persamaan relasi rekurens
algoritma terkait perhitungan ini sebagai berikut:

Kemudian, algoritma strategi algoritma brute force menyelesaikan permasalahan tersebut


dengan cara mengalikan 1 dengan a sebanyak n kali. Berikut merupakan algoritma fungsi untuk
persoalan pangkat tersebut.

2. Menghitung n! (n bilangan bulat tak-negatif), dengan persamaan relasi rekurens algoritma


terkait perhitungan ini sebagai berikut:

3 of 8
CII2K3 – ALGORITHM STRATEGY

Kemudian, algoritma strategi algoritma brute force menyelesaikan permasalahan tersebut


dengan cara mengalikan 𝑛 buah bilangan, yaitu1, 2, 3 … , 𝑛 bersama-sama. Berikut merupakan
algoritma fungsi untuk persoalan faktorial tersebut.

3. Mengalikan dua buah matriks, A dan B


Misalkan C = A × B dan elemen-elemen matrik dinyatakan sebagai cij, aij, dan bij

Kemudian, algoritma strategi algoritma brute force menyelesaikan permasalahan tersebut


dengan cara menghitung setiap elemen hasil perkalian satu per satu, dengan cara mengalikan
dua vektor yang panjangnya n. Berikut merupakan untuk persoalan perkalian matriks tersebut.

4. Algoritma Pengurutan Bubble sort dan selection sort

Buble sort dan selection sort merupakan algoritma pengurutan yang sangat jelas
memperlihatkan teknik brute force, yakni melalui cara mengurutkan yang lempang
(straightforward).

4 of 8
CII2K3 – ALGORITHM STRATEGY

3.3 Selanjutnya untuk penyelesaian permasalahan khusus seperti permasalahan kombinatorial


dengan menggunakan strategi brute force, dapat dipelajari melalui contoh berikut.

Metode pencarian solusi dengan menggunakan strategi brute force juga banyak ditemui pada
permasalahan di antara objek-objek kombinatorik seperti permutasi, kombinasi, atau himpunan
bagian dari sebuah himpunan. Penyelesaian permasalahan kombinatorik dengan cara brute force ini
akan mengakibatkan pencarian solusi yang panjang atau melelahkan. Oleh sebab itu, metode brute
force dalam permasalahan ini disebut dengan exhaustive search. Meskipun algoritma exhaustive-
brute force secara teoritis menghasilkan solusi, namun waktu atau sumberdaya yang dibutuhkan
dalam pencarian solusinya sangat besar.

Berikut merupakan tahapan (atau langkah) dalam mencari solusi secara exhaustive search-brute
force:

1. Enumerasi (list) setiap solusi yang mungkin dengan cara yang sistematis.
2. Evaluasi setiap kemungkinan solusi satu per satu, simpan solusi terbaik yang ditemukan sampai
sejauh ini (the best solusi found so far).
3. Bila pencarian berakhir, umumkan solusi terbaik (the winner)

Adapun contoh persoalan metode exhaustive-brute force dapat dilihat pada 1/0 knapsack dan
Travelling Salesman Problem (TSP). Penjelasan mengenai kedua contoh ini, dapat dicermati pada
point di bawah ini.

1. Exhaustive Search pada persoalan 1/0 knapsack


Persoalan mengenai exhaustive search pada 1/0 knapsack dapat diamati berdasarkan soal
berikut ini diberikan 𝑛 buah objek dan sebuah knapsack dengan kapasitas bobot 𝐾 .
Setiap objek memiliki properti bobot (weigth) 𝑤𝑖 dan keuntungan(profit) 𝑝𝑖 .

Sehingga cara menyelesaikan 1/0 knapsack dapat diselesaikan dengan cara memilih objek-objek
yang dimasukkan ke dalam knapsack, sedemikian sehingga memberikan keuntungan maksimal.
Solusi persoalan dinyatakan dengan 𝑋 = {𝑥1 , 𝑥2 , … , 𝑥𝑛 }, dimana 𝑥𝑖 = 1, jika objek ke-i dipilih, 𝑥𝑖 =
0, jika objek ke-i tidak dipilih. Dengan kendala (constraint) total bobot objek yang dimasukkan ke
dalam knapsack tidak boleh melebihi kapasitas knapsack, maka formulasi secara matematis
untuk fungsi memaksimalkan knapsack tersebut dapat dituliskan dengan persamaan berikut ini.

𝐹 = ∑𝑛𝑖=1 𝑝𝑖 𝑥𝑖 , dengan kendala (constraint) ∑𝑛𝑖=1 𝑤𝑖 𝑥𝑖 ≤ 𝐾,


yang dalam hal ini 𝑥𝑖 = 0 𝑎𝑡𝑎𝑢 1 𝑑𝑒𝑛𝑔𝑎𝑛 𝑖 = 1, 2, … , 𝑛

Untuk lebih memahami pemaparan solusi exhaustive search pada persoalan 1/0 knapsack, dapat
melihat contoh di bawah ini.
Diketahui: Terdapat n buat objek atau barang, dimana banyak n = 4.
Dengan bobot 𝑤𝑖 dan profit 𝑝𝑖 masing-masing barang yaitu:
w1 = 2; p1 = 20
w2 = 5; p2 = 30
w3 = 10; p3 = 50
w4 = 5; p4 = 10
Kapasitas knapsack (K) = 16

5 of 8
CII2K3 – ALGORITHM STRATEGY

Ditanyakan: Hitung keuntungan maksimum yang dapat dibawa oleh knapsack (K), serta barang
apa saja yang dapat dipilih dengan keuntungan maksimum tersebut.

Jawab:
Langkah-langkah pencarian solusi 0/1 Knapsack secara exhaustive search dirangkum dalam tabel
di bawah ini

Pada tabel terlihat bahwa himpunan bagian objek yang memberikan keuntungan maksimum
adalah {2, 3} dengan himpunan solusi X = {0, 1, 1, 0}, atau dengan kata lain dengan memilih
membawa barang 2 dan 3 (dengan total barang masih mencukupi bobot knapsack yaitu < 16),
akan diperoleh total keuntungan maksimum yaitu 80.

Mengacu kepada tabel di atas dapat diketahui banyaknya himpunan bagian dari sebuah
himpunan dengan n elemen yaitu 2n dengan waktu untuk menghitung total bobot objek yang
dipilih adalah O(n). Sehingga, Kompleksitas algoritma exhaustive search untuk persoalan 0/1
Knapsack adalah O(n. 2n).

2. Exhaustive Search pada persoalan Travelling Salesman Problem (TSP)


Persoalan exhaustive search untuk TSP dapat dilihat pada contoh berikut ini:
Diberikan n buah kota dimana jarak antara setiap kota satu sama lain diketahui. Temukan
perjalanan (tour) terpendek yang melalui setiap kota lainnya hanya sekali dan kembali lagi ke
kota asal keberangkatan.

TSP dengan n = 4 dan simpul awal = a didapatkan rute perjalananan terpendek adalah
a→c→b→d→a atau a→d→b→c→a dengan bobot = 32. Penjelasan mengenai rute perjalanan
dapat dilihat pada tabel di bawah ini.

6 of 8
CII2K3 – ALGORITHM STRATEGY

Jika diselesaikan dengan exhaustive search, maka kita harus mengenumerasi sebanyak (n – 1)!
buah sirkuit Hamilton, menghitung setiap bobotnya, dan memilih sirkuit Hamilton dengan bobot
terkecil. Kompleksitas waktu algoritma exhaustive search untuk persoalan TSP sebanding
dengan (n – 1)! dikali dengan waktu untuk menghitung bobot setiap sirkuit Hamilton.
Menghitung bobot setiap sirkuit Hamilton membutuhkan waktu O(n), sehingga kompleksitas
waktu algoritma exhaustive search untuk persoalan TSP adalah O(n ⋅ n!).

Maka Perbaikan terhadap jawaban di atas dengan cara mencari setengah dari rute perjalanan
yang merupakan hasil pencerminan dari setengah rute yang lain, yakni dengan mengubah arah
rute perjalanan seperti di bawah ini.
1 dan 6
2 dan 4
3 dan 5
sehingga dapat dihilangkan setengah dari jumlah permutasi (dari 6 menjadi 3), akan diperoleh
ketiga buah sirkuit Hamilton sebagai berikut.

Untuk n buah simpul, semua rute perjalanan dibangkitkan (yang dilewati) dengan permutasi dari
n – 1 buah simpul. Dengan permutasi dari n – 1 buah simpul adalah (n – 1)! Dengan demikian,
pada contoh di atas, untuk n = 4 akan terdapat (4 – 1)! = 3! = 6 buah rute perjalanan.

Mengacu kepada permasalahan tersebut di atas, maka untuk graf dengan n buah simpul, dimana
perlu evaluasi ((n – 1)! /2) sirkuit Hamilton. Sedangkan, untuk ukuran masukan atau input yang
besar, jelas algoritma exhaustive search menjadi sangat tidak mangkus. Pada persoalan TSP,
untuk n = 20 akan terdapat (19!)/2 = 6 × 1016 sirkuit Hamilton yang harus dievaluasi satu per satu.

Sayangnya, untuk persoalan TSP tidak ada algoritma lain yang lebih baik daripada algoritma
exhaustive search. Jika anda dapat menemukan algoritma yang mangkus untuk TSP, anda akan
menjadi terkenal dan kaya! Algoritma yang mangkus selalu mempunyai kompleksitas waktu
dalam orde polinomial.

7 of 8
CII2K3 – ALGORITHM STRATEGY

Kesimpulan berdasarkan contoh TSP dan 0/1 Knapsack pada permasalahan exhaustive search, adalah
contoh persoalan eksponensial. Keduanya digolongkan sebagai persoalan NP (Non-deterministic
Polynomial), karena tidak mungkin dapat ditemukan algoritma polinomial untuk memecahkannya.

4. LATIHAN SOAL
1. (Masalah Penugasan)
Misalkan terdapat n orang dan n buah pekerjaan (job). Setiap orang akan di-assign dengan
sebuah pekerjaan. Penugasan orang ke-i dengan pekerjaan ke-j membutuhkan biaya sebesar
c(i,j).

Misalkan instansiasi persoalan dinyatakan sebagai matriks C seperti diatas. Bagaimana


melakukan penugasan sehingga total biaya penugasan adalah seminimal mungkin?
Hint: gunakan pendekatan solusi exhaustive search-brute force.

2. (Masalah partisi)
Diberikan n buah bilangan bulat positif. Bagilah menjadi dua himpunan bagian disjoint
(himpunan yang saling lepas) sehingga setiap bagian mempunyai jumlah nilai yang sama
(catatan: masalah ini tidak selalu mempunyai solusi).

Contoh: n = 6, yaitu 3, 8, 4, 6, 1, 2, dibagidua menjadi {3, 8, 1} dan {4, 6, 2} yang masing-masing


jumlahnya 12.

Rancang algoritma exhaustive search untuk masalah ini. Cobalah mengurangi jumlah himpunan
bagian yang perlu dibangkitkan. Hint: gunakan pendekatan solusi exhaustive search-brute force.

5. REFERENCES

8 of 8

Anda mungkin juga menyukai