Dosen Pengampu:
Disusun Oleh:
Kelompok III
2023
i
KATA PENGANTAR
Puji dan syukur tim penulis panjatkan kehadirat Tuhan YME, atas anugrah dan berkat-
Nya tim penulis mampu menyelesaikan tugas makalah ini dengan sebaik-baiknya dan dengan
tepat waktu. Tujuan dari penulisan makalah ini ialah untuk memenuhi salah satu tugas
matakuliah Desain dan Analisis Logaritma. Adapun materi dari makalah ini ialah mengenai
Brute Force.
Tim penulis juga mengucapkan terimakasih kepada semua pihak yang telah membantu
dalam penyelesian penyusunan makalah ini. Semoga kiranya bermanfaat bagi banyak orang
khususnya bagi tim penulis dan umumnya bagi siapa saja yang membacanya.
Dalam penulisan makalah ini tim penulis menyadari bahwa masih banyak kekurangan
dalam penulisan. Oleh karena itu, kritik dan saran dari pembaca yang bersifat membangun
sangat diharapkan. Atas perhatiannya tim penulis ucapkan terimakasih.
Tim Penulis,
Kelompok III
ii
DAFTAR ISI
1.2 Tujuan.......................................................................................................................... 6
3.1 Kesimpulan................................................................................................................ 25
iii
DAFTAR GAMBAR
Gambar 2. 1 Contoh Algoritma brute force dalam penyelesaian perkalian matriks ............... 11
Gambar 2. 2 Contoh simulasi bubble sort .............................................................................. 17
Gambar 2. 3 Kondisi Worst-case (iterasi terjadi sebanyak 3 kali) .......................................... 18
Gambar 2. 4 Kondisi Average-case (iterasi terjadi sebanyak 2 kali) ...................................... 18
Gambar 2. 5 Kondisi Average-case (iterasi terjadi sebanyak 1 kali) ...................................... 19
Gambar 2. 6 Contoh simulasi selection sort ........................................................................... 20
Gambar 2. 7 Permainan sudoku............................................................................................... 23
Gambar 2. 8 Pengisian kotak permainan sudoku .................................................................... 24
DAFTAR TABEL
iv
BAB I
PENDAHULUAN
Istilah "brute force" mengacu pada kekuatan kasar yang diperlukan untuk
menyelesaikan suatu masalah dengan cara ini. Dalam kasus yang sangat kompleks,
algoritma brute force dapat memerlukan waktu yang sangat lama untuk
menyelesaikan masalahnya, terutama ketika ada banyak kemungkinan solusi.
Algoritma Brute Force adalah salah satu algoritma pencocokan string yang
memiliki pendekatan terhadap masalah secara langsung. Yaitu dengan memulai
proses pencocokan pattern terhadap text secara satu persatu dimulai dari karakter
paling kiri hingga karakter paling kanan. Sedangkan untuk algoritma yang termasuk
dalam proses pencocokan string dari kanan ke kiri adalah algorima Boyer-Moore.
Algoritma Boyer-Moore memiliki proses pendekatan terhadap masalah yang jauh
beda bila dibandingkan dengan algoritma Brute Force. Bila dibandingkan dengan
5
algoritma Brute Force yang melakukan pendekatan secara langsung, algoritma
Boyer-Moore memiliki sebuah proses tersendiri yang dilakukan sebelum
pencocokan string. Proses tersebut adalah proses perhitungan tabel Delta atau
Occurrence Heuristic Table. Tabel tersebut berisi nilai index paling awal dari
sebuah karakter yang ada pada pattern untuk nantinya digunakan dalam proses
pencocokan string.
1.2 Tujuan
Tujuan utama dari algoritma brute force adalah untuk menyelesaikan suatu
masalah dengan mencoba semua kemungkinan solusi secara sistematis dan
berurutan. Dalam banyak kasus, algoritma ini digunakan ketika tidak ada algoritma
yang lebih efisien atau ketika masalah yang dihadapi tidak terlalu kompleks. Tujuan
algoritma brute force adalah untuk memberikan solusi yang benar dan akurat.
6
BAB II
LANDASAN TEORI
7
b 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.
8
1. Pencarian beruntun (Sequential Search)
Persoalan: Diberikan senarai yang berisi n buah bilangan bulat (a1, a2 ,
…, an ). Carilah nilai x di dalam senara tersebut. Jika x ditemukan, maka
keluarannya adalah indeks elemen senarai, jika x tidak ditemukan, maka
keluarannya adalah -1.
Algoritma brute force (sequential search): setiap elemen senarai
dibandingkan dengan x. Pencarian selesai jika x ditemukan atau elemen
senarai sudah habis diperiksa.
Persoalan: Diberikan
Pattern: 001011
Teks: 10010101001011110101010001
Penyelesaian :
9
ketemu : Boolean
Algoritma:
i0
ketemufalse
while (i n-m) and (not ketemu) do
j1
while (j m) and (Pj = Ti+j ) do
jj+1
endwhile { j > m or Pj Ti+j }
3. Perkalian matriks
10
𝑐𝑖𝑗 = 𝑎𝑖1 𝑏𝑖1 + 𝑎𝑖2 𝑏𝑖2 + ⋯ 𝑎𝑖𝑛 𝑏𝑛𝑗 = ∑𝑛𝑘=1 𝑎𝑖𝑘 𝑏𝑘𝑗
11
✓ Kurangnya kreativitas dari algoritma, banyak pembatasan yang dapat
dilakukan sehingga algoritma tidak perlu melakukan pengecekan pada hal-
hal yang pasti salah.
✓ Algoritma tidak mangkus, biasanya terdapat pendekatan algoritma lain yang
jauh lebih ringkas,
12
3. Bila pattern belum ditemukan kecocokannya dan teks belum habis, geser
pattern satu karakter ke kanan dan ulangi langkah 2.
Contoh penggunaan algoritma Brute Force untuk pencarian pattern dalam teks
:
Contoh Kasus 1 :
Pada langkah pertama karakter pertama berbeda dengan pattern yang sudah
ditentukan, selanjutnya digeser ke sebelah kanan sebanyak satu kali.
13
Pada langkah terakhir ditemukan kecocokan antara teks dengan pattern.
Contoh di atas menunjukkan bagaimana algoritma Brute Force berjalan.
Algoritma Brute Force akan mencocokkan string dari kiri ke kanan apabila tidak
cocok maka akan terus digeser ke sebelah kanan sampai string yang dicari cocok
dengan pattern.
Pattern = MYSQL
Penyelesaian :
14
Tabel 2. 2 Penyelesaian contoh kasus 2
Beberapa algoritma yang digunakan oleh peneliti dalam proses string
matching seperti Knuth Morris Pratt, Boyer Moore dan Brute Force (Utomo,
Harjo, & Handoko, 2008). Algoritma tersebut dapat diterapkan dalam sebuah
aplikasi pencarian. Algoritma Knuth Morris Pratt dalam pencocokan string sama
dengan Brute Force, yaitu dari kiri ke kanan. Tetapi perbedaan dari algoritma
Brute Force pada pergeserannya. Algoritma Knuth Morris Pratt melakukan
proses awal terhadap pattern dengan menghitung fungsi pinggiran, dengan
adanya fungsi pinggiran ini maka dapat dicegah pergeseran yang tidak berguna.
Selain itu ada juga Algoritma Boyer Moore, yaitu metode yang menggunakan
arah dari kanan ke kiri dalam pencocokan pattern (Pratiwi, S S, & Wibowo,
2012). Algoritma ini telah banyak digunakan untuk pencocokan pattern yang
panjang, namun algoritma ini lebih lambat digunakan pada pattern yang pendek.
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.
15
2.4.1 Bubble Sort
16
1) Algoritma ini adalah metode paling sederhana untuk mengurutkan data.
2) Bubble Sort adalah algoritma yang mudah dipahami.
3) Sedangkan kekurangan dari algoritma Bubble Sort adalah sebagai berikut.
4) Tingkat efisiensinya yang kurang. Bubble Sort ini merupakan metode
pengurutan yang tidak efisien, khususnya ketika menangani data yang
jumlahnya besar. Hal ini karena ketika mengurutkan data yang sangat besar
akan sangat lambat prosesnya.
5) Jumlah pengulangan yang dilakukan oleh algoritma ini akan tetap sama
jumlahnya meskipun data yang diurutkan sudah cukup terurut.
Cara kerja Bubble Sort hampir sama dengan Selection Sort, yang
membedakan adalah data yang dibandingkan. Pada Algoritma Bubble Sort,
data yang dibandingkan adalah data yang berdekatan.Dasar algoritma Bubble
Sort ini sangat mudah, setiap data di dalam koleksi dibandingkan dengan data
berikutnya. Misalnya data pada indeks ke-0 dibandingkan dengan data pada
indeks ke-1 atau data indeks ke-1 dibandingkan dengan data indeks ke-2,
begitu seterusnya sampai data tidak bisa dibandingkan lagi. Tujuan
membandingkan data-data tersebut adalah untuk memastikan urutan di antara
kedua data sudah sesuai atau tidak.
17
1. Kondisi Worst-case
18
Best-case (kondisi terbaik) kompleksitas dengan jumlah paling kecil
(Tmin), adalah waktu tercepat yang diperlukan suatu algoritma dalam
memecahkan masalah pada n jumlah inputan. Hasil dari analisis ini adalah lower
bound atau batas bawah running time suatu algoritma. Base-case dapat
dinyatakan dalam notasi Big-Omega(Ω) walaupun sering juga dinyatakan dalam
notasi Big-O(O), karena Best-case merupakan lower bound dari kompleksitas
waktu sebuah algoritma[10]. Suatu algoritma tidak mungkin dieksekusi dengan
kompleksitas waktu kurang dari waktu best case. Pada kondisi ini, iterasi
dilakukan hanya sekali. Contoh :
Cara kerja algoritma tersebut meliputi dua loop yang digunakan untuk
melakukan perbandingan pada setiap elemen yang berada di setelahnya, hal ini
dilakukan sebanyak n kali dan dibandingkan dengan n-1 kali.
19
Gambar 2. 6 Contoh simulasi selection sort
Berikut merupakan langkah-langkah pengerjaan selection sort:
1) Mulai dari elemen pertama kemudian lakukan pilih elemen yang akan
dibandingkan dengan memilih elemen-elemen yang ada di depannya
2) Lakukan pertukaran setiap elemen yang di depannya lebih besar dari elemen
tersebut.
3) Lakukan pemilihan hingga dicek elemen terakhir.
4) Ulangi langkah pertama pada elemen kedua hingga elemen terakhir.
Selection Sort memiliki kompleksitas waktu ratarata, worst case, dan best
case yang sama, yaitu O(n2 ) dikarenakan algoritma sort ini memilki dua nested
loop.Seperti yang dapat dilihat dari langkah-langkah di atas, akan terjadi
perbandingan sebanyak n(n-1)/2 kali dan pertukaran sebanyak n-1 kali. Oleh
karena itu, kompleksitas waktu algoritma diukur dari jumlah perbandingan yaitu
O(𝑛2 ). Berikut merupakan pseudocode dari selection sort
20
Procedure SelectionSort (input/output s1, s2, ..., sn : integer)
Deklarasi
i, j, imin, temp : integer
Algoritma:
for i 1 to n – 1 do { jumlah pass sebanyak n – 1 }
{ cari elemen terkecil di dalam s[i], s[i+1, ..., s[n] }
imin i { elemen ke-i diasumsikan sebagai elemen terkecil
sementara }
for j i+1 to n do
if s[j] < s[imin] then
imin j
endif
endfor
{pertukarkan s[imin] dengan s[i] }
temp s[i]
s[i] s[imin]
s[imin] temp
endfor
21
asalkan dia dapat masuk dan diletakkan ditempat yang sesuai. Ini dilakukan
hingga kartu yang dimiliki habis. Algoritma brute force adalah algoritma yang
lempang atau apa adanya. Pemain hanya perlu meletakkan kartu domino
sehingga dapat dikeluarkan tapi tidak peduli urutan atau hal-hal lain. Secara
garis besar pseudo code-nya dapat dirumuskan:
22
rekursif terjadi karena pemasukan kartu akan dilanjutkan terus hingga kartu kita
habis atau permainan telah berakhir.
Sudoku adalah adalah permainan teka-teki (puzzle) logik yang berasal dari
Jepang. Permainan ini sangat populer di seluruh dunia.
23
3) Tidak ada angka yang sama (berulang) pada setiap bujursangkar (persegi)
yang lebih kecil.
24
BAB III
PENUTUP
3.1 Kesimpulan
Meskipun algoritma brute force sederhana dan mudah diimplementasikan,
namun memiliki kekurangan dalam hal kompleksitas waktu dan ruang.
Algoritma ini membutuhkan waktu yang lebih lama untuk menyelesaikan
masalah dan memerlukan penggunaan memori yang lebih besar untuk
menyimpan hasil uji coba semua kemungkinan solusi. Selain itu, pada beberapa
kasus masalah kompleks, jumlah kemungkinan solusi yang harus diuji sangat
besar sehingga algoritma ini tidak praktis digunakan.
3.2 Saran
Penggunaan algoritma brute force dapat memberikan solusi yang akurat dan tepat
dalam beberapa kasus, namun terdapat beberapa hal yang perlu dipertimbangkan
sebelum menggunakannya, antara lain:
1. Kompleksitas masalah: Algoritma brute force akan sangat lambat jika harus
menguji seluruh kemungkinan solusi pada masalah yang kompleks. Oleh
karena itu, sebaiknya gunakan algoritma brute force pada masalah yang
sederhana dan tidak terlalu kompleks.
25
3. Alternatif algoritma: Terkadang terdapat algoritma lain yang lebih efisien
dan efektif dalam menyelesaikan masalah yang sama. Sebelum
memutuskan untuk menggunakan algoritma brute force, sebaiknya
pertimbangkan apakah terdapat algoritma alternatif yang lebih baik dan
efektif untuk menyelesaikan masalah.
Jadi, saran kami adalah menggunakan algoritma brute force hanya pada
masalah yang sederhana dan tidak terlalu kompleks, serta mempertimbangkan
waktu dan sumber daya yang tersedia sebelum memilih algoritma brute force
sebagai solusi. Selain itu, pastikan untuk mempertimbangkan alternatif
algoritma yang lebih efisien dan efektif dalam menyelesaikan masalah yang
sama.
26
DAFTAR PUSTAKA
Aldwin Hardi Swastia. (2022). Aplikasi Selection Sort pada Pengurutan Raket Bulu
Tangkis Ramah Pemula.
Santoso, B. W., Sundawa, F., & Azhari, M. (2016). Implementasi Algoritma Brute
ForceSebagai Mesin Pencari (Search Engine) Berbasis Web Pada Database.
Jurnal SisfotekGlobal, 6(1).
Santoso, B. W., Sundawa, F., & Azhari, M. (2016). Implementasi Algoritma Brute
Force Sebagai Mesin Pencari (Search Engine) Berbasis Web Pada Database
1-12-1-Pb. 6(1), 1–8.
27
Sari, N., Gunawan, W. A., Sari, P. K., Zikri, I., & Syahputra, A. (n.d.). Analisis
Algoritma Bubble Sort Secara Ascending Dan Descending Serta
Implementasinya Menggunakan Bahasa Pemrograman Java Analisis
Algoritma Bubble Sort Secara Ascending Dan Descending Serta
Implementasinya Menggunakan Bahasa Pemrograman Java.
Sinaga, A., & Nuraisana, N. (2021). Implementasi Algoritma Brute Force Dalam
Pencarian Menu Pada Aplikasi Pemesanan Coffee ( Studi Kasus : Tanamera
Coffee ). Jurnal Ilmu Komputer Dan Sistem Informasi, 3(3), 303–313.
28