Anda di halaman 1dari 28

TUGAS MAKALAH

ALGORITMA BRUTE FORCE

Dosen Pengampu:

Kana Saputra S, S.Pd., M.Kom

Putri Harliana, S.T., M.Kom

Disusun Oleh:

Kelompok III

Rahel Lina Simanjuntak (4213550005)

Rizki Agung Ramadhan (4213250022)

Sri Mulyana (4213550033)

Theresia Romauli Siagian (4212250002)

Willy Pramudia Ananta (4211250013)

ILMU KOMPUTER C 2021

PROGRAM STUDI ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS NEGERI MEDAN

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.

Medan, 19 Februari 2023

Tim Penulis,

Kelompok III

ii
DAFTAR ISI

KATA PENGANTAR ...............................................................................................................ii

DAFTAR ISI ............................................................................................................................ iii

DAFTAR GAMBAR ................................................................................................................ iv

DAFTAR TABEL ..................................................................................................................... iv

BAB I PENDAHULUAN ......................................................................................................... iv

1.1 Latar Belakang ............................................................................................................ 5

1.2 Tujuan.......................................................................................................................... 6

BAB II LANDASAN TEORI .................................................................................................... 7

2.1 Pengertian Algoritama Brute Force............................................................................. 7

2.2 Kelebihan dan Kekurangan Algoritma Brute Force .................................................... 8

2.3 Cara Kerja Algoritma Brute Force ............................................................................ 12

2.4 Algoritma Pengurutan Brute Force ........................................................................... 15

2.5 Contoh Penyelesaian dengan Algoritma Brute Force. .............................................. 21

BAB III PENUTUP ................................................................................................................. 25

3.1 Kesimpulan................................................................................................................ 25

3.2 Saran .......................................................................................................................... 25

DAFTAR PUSTAKA .............................................................................................................. 27

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

Tabel 2. 1 Penyelesaian contoh kasus 1 .................................................................................. 14


Tabel 2. 2 Penyelesaian contoh kasus 2 .................................................................................. 15

iv
BAB I

PENDAHULUAN

1.1 Latar Belakang


Algoritma brute force adalah algoritma yang bekerja dengan cara mencoba
semua kemungkinan solusi secara sistematis dan secara berurutan untuk
menyelesaikan suatu masalah. Metode ini seringkali digunakan dalam
permasalahan optimasi, pencarian, dan pengujian kebenaran.

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.

Meskipun begitu, algoritma brute force memiliki kelebihan yaitu mudah


dipahami dan diimplementasikan, serta dapat memberikan solusi yang akurat dalam
beberapa kasus. Algoritma ini juga sering digunakan sebagai algoritma dasar dalam
mengembangkan algoritma yang lebih canggih dan efisien.

Pencocokan string adalah metode untuk yang digunakan untuk pencarian


sebuah string yang disebut pattern didalam sebuah string lainnya yang disebut text.
Proses pencocokan string, terbagi menjadi beberapa jenis algoritma. Diantaranya
adalah algoritma dengan proses pencocokan string dari kiri ke kanan, serta
algoritma dengan proses pencocokan string dari kanan ke kiri. Salah satu algoritma
yang termasuk dalam proses pencocokan string dari kiri ke kanan adalah algoritma
Brute Force.

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

2.1 Pengertian Algoritama Brute Force

Algoritma adalah metode terbatas dari sekumpulan perintah yang


didefenisikan untuk menyelesaikan masalah.Algoritma memiki kriteria tertentu
di awal kondisi sebelum menjalankan algoritma. Algoritma akan berakhir jika
semua kondisi awal memenuhi kriteria. Dimulai dari nilai awal, kemudian
kolektifitas perintah dieksekusi untuk memproses kondisi yang ditetapkan
sampai menghasilkan keluaran dan menentukan kondisi akhir

Brute force adalah sebuah pendekatan langsung (straight forward) untuk


memecahkan suatu masalah, biasanya didasarkan pada pernyataan masalah
(problem statement) dandefinisi konsep yang dilibatkan. Algoritma brute force
memecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang
jelas (obvious way). Di dalam pencocokan string, terdapat istilah teks dan
pattern.Teks merupakan kata yang dicari dan dicocokkan dengan pattern.

Algoritma brute force adalah algoritma untuk mencocokkan pattern dengan


semua teks antara 0 dan n-m untuk menemukan keberadaan pattern dalam teks
(Riyanarto Sarno, Yeni Anistyasari, dan Rahimi Fitri, 2012). Di dalam
pencocokkan string, terdapat istilah teks dan pattern. Teks merupakan kata yang
dicari dan dicocokkan dengan pattern. Sedangkan pattern merupakan kata yang
diinputkan untuk dicocokkan Secara rinci, langkah – langkah yang dilakukan
algoritma ini saat mencocokkan string adalah:

1. Algoritma brute force mulai mencocokkan pattern dari awal teks.


2. Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter
pattern dengan karakter pada teks yang bersesuaian, sampai salah satu
kondisi berikut terpenuhi.
a Karakter di pattern dan di teks yang dibandingkan tidak cocok.

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.

Algoritma Brute Force digunakan untuk mengecek pada setiap kedudukan


string dalam text mulai karakter awal hingga karakter akhir. Setelah melakukan
pengecekan pada karakter pertama, maka proses shift dilakukan, yaitu dengan
memindahkan string tepat satu posisi ke arah kanan atau karakter akan berpindah
menuju karakter kedua, ketiga dan seterusnya). Pembandingan karakter pada
text dapat selesai pada posisi manapun selama tahap pencarian,sehingga
Algoritma Brute Force tidak memerlukan tahap proses. Sebagai contoh,
diberikan sejumlah karakter sebagai text = backbone dan yang akan dicocokkan
adalah pattern = bone. Pada karakter pertama b akan terjadi kecocokan (match)
karena karakter pertama dan text pertama adalah huruf “b”, sementara pada
karakter dua “o” terjadi ketidakcocokan (mismatch) pada teks karena karakter
kedua pada pattern “o” tidak sama dengan karakter huruf pada text, maka proses
pergeseran dilakukan yaitu dengan berpindah satu posisi ke arah kanan.
Pencocokan karakter yang tidak cocok mismatch akan terjadi proses pergeseran
tersebut (berpindah ke karakter ketiga,keempat dan selanjutnya) sampai karakter
pada pattern keseluruhan match dengan karakter pada teks.

2.2 Kelebihan dan Kekurangan Algoritma Brute Force

Algoritma brute force juga memiliki kelebihan dan kelemahan. Adapun


kelebihan dari algoritma brute force yaitu:

✓ Algoritma brute force dapat digunakan untuk memecahkan hampir sebagian


besar masalah.
✓ Algoritma brute force sederhana dan mudah dimengerti
✓ Algoritma brute force menghasilkan algoritma yang layak untuk beberapa
masalah penting seperti pencarian, pengurutan, pencocokkan string, atau
perkalian matriks.

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.

2. Pencocokan String (String Matching)

Persoalan: Diberikan

a Teks (text), yaitu (long) string dengan panjang n karakter


b Pattern, yaitu string dengan panjang m karakter (asumsi: m < n)

Pattern: 001011

Teks: 10010101001011110101010001

Penyelesaian :

procedure PencocokanString (input P: string, T: string,


n, m: integer, output idx: integer)
{ Masukan: pattern P yang panjangnya m dan teks T yang
panjangnya n. Teks T direpresentasika sebagai string
(array of character)
Keluaran: lokasi awal kecocokan (idx)
}
Deklarasi
i : integer

9
ketemu : Boolean

Algoritma:
i0
ketemufalse
while (i  n-m) and (not ketemu) do
j1
while (j  m) and (Pj = Ti+j ) do
jj+1
endwhile { j > m or Pj  Ti+j }

if j = m then { kecocokan string ditemukan }


ketemutrue
else
ii+1 {geser pattern satu karakter ke kanan teks }
endif
endfor
{ i > n – m or ketemu }
if ketemu then
idxi+1
else
idx-1
endif

3. Perkalian matriks

Definisi: Misalkan C = A × B dan elemen-elemen matrik dinyatakan sebagai

𝑐𝑖𝑗 , 𝑎𝑖𝑗 , dan 𝑏𝑖𝑗 ,

10
𝑐𝑖𝑗 = 𝑎𝑖1 𝑏𝑖1 + 𝑎𝑖2 𝑏𝑖2 + ⋯ 𝑎𝑖𝑛 𝑏𝑛𝑗 = ∑𝑛𝑘=1 𝑎𝑖𝑘 𝑏𝑘𝑗

Gambar 2. 1 Contoh Algoritma brute force dalam penyelesaian perkalian


matriks
Pada permasalahan kali ini algoritma diimplementasikan dengan melakukan
traversal terhadap array sebagai elemen pertama yang akan dibandingkan.
Kemudian, traversal akan dilakukan untuk kedua kalinya untuk menentukan
elemen kedua yang akan dibandingkan nantinya. Artinya untuk melakukan
pengurutan pada suatu kumpulan objek, diperlukan loop sebanyak n × n
sehingga kompleksitas algoritma O(𝑛2 ).

✓ Algoritma brute force menghasilkan algoritma baku (standart) untuk tugas-


tugas komputasi penjumlahan/perkalian n buah bilangan, menentukan
elemen minimum atau maksimum di dalam tabel (list).
- Mencari elemen terbesar (terkecil)
Persoalan: Diberikan sebuah senarai yang beranggotakan n buah bilangan
bulat (a1 , a2 , …, an ). Carilah elemen terbesar di dalam senarai tersebut.
Algoritma brute force: bandingkan setiap elemen senarai untuk menemukan
elemen terbesar

Sedangkan kelemahan dari algoritma brute force yaitu sebagai berikut :

✓ Algoritma brute force jarang menghasilkan algoritma yang mangkus


(manjur).
✓ Beberapa algoritma brute force lambat, maka tidak sesuai dengan masalah
yang rumit,.
✓ Tidak sekonstruktif/sekreatif teknik pemecahan masalah lainnya

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,

Banyak permasalahan yang memanfaatkan algoritma brute force, seperti


mencari elemen terbesar/terkecil, pencarian beruntun (sequential search),
menghitung 𝑎𝑛 , menghitung n!, mengalikan dua buah matriks, uji bilangan
prima, dan lain-lain. Dapat dibilang hampir semua persoalan dapat diselesaikan
dengan brute force dengan kekurangan kompleksitas waktu yang cenderung
lama. Sebagai contoh, isPrima yang merupakan algoritma penentu sebuah
bilangan prima atau bukan dilakukan dengan cara melakukan traversal terhadap
angka-angka dari 0 hingga angka yang diuji dan mengeceknya apakah angka
yang diuji dapat dibagi dengan angka tersebut. Apabila dapat dibagi loop
dihentikan dan menandakan bahwa angka yang diuji bukanlah prima. Dengan
begitu, algoritma tersebut memiliki kasus terburuk sebesar n karena mengecek
semua angka hingga angka itu sendiri.

2.3 Cara Kerja Algoritma Brute Force

Brute Force adalah teknik paling sederhana untuk menyelesaikan


permasalahan komputasi pada umumnya. Secara konseptual, Brute Force
bekerja sebagai berikut:

1. Mula-mula pattern dicocokkan pada awal teks


2. Dengan bergerak dari kiri ke kanan, bandingkan setiap karakter di dalam
pattern dengan karakter yang bersesuaian di dalam teks sampai:
• Semua karakter yang dibandingkan cocok atau sama (pencarian
berhasil), atau
• Dijumpai sebuah ketidakcocokan karakter (pencarian belum
berhasil)

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 :

Teks (X) : HRONIZATION

Pattern (Y) : SYNCHRONIZATION

Pada langkah pertama karakter pertama berbeda dengan pattern yang sudah
ditentukan, selanjutnya digeser ke sebelah kanan sebanyak satu kali.

Pada langkah kedua masih belum ditemukan kecocokan karakter pertama


pada teks dengan karakter kedua dari pattern maka digeser satu kali ke sebelah
kanan.

Pada langkah ketiga masih tidak ditemukan kecocokan antara karakter


pertama dalam teks dengan karakter ketiga dari pattern maka digeser sebanyak
satu kali ke sebelah kanan.

Pada langkah keempat masih belum ditemukan kecocokan antara karakter


pertama dalam teks dengan karakter keempat dari pattern maka digeser
sebanyak satu kali ke sebelah kanan.

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.

Tabel 2. 1 Penyelesaian contoh kasus 1


Contoh Kasus 2 :

Teks = DATABASE MYSQL

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.

2.4 Algoritma Pengurutan Brute Force

Algoritma yang menggunakan strategi Brute Force adalah algoritma Bubble


Sort dan Selection Sort.

15
2.4.1 Bubble Sort

A. Pengertian dan Cara kerja Bubble Sort

Bubble Sort adalah metode pengurutan data dengan cara melakukan


penukaran data dari data pertama dengan data di sebelahnya secara terus
menerus sampai bisa dipastikan dalam suatu iterasi tertentu tidak ada lagi
perubahan atau penukaran. Algoritma ini menggunakan perbandingan dalam
operasi antar elemennya. Algoritma Bubble Sort adalah algoritma pengurutan
paling dasar serta memiliki metode pengurutan paling sederhana daripada
algoritma pengurutan yang lain. Proses pencarian solusi dilakukan secara brute
force, langsung ke intinya yaitu membandingkan elemen-elemen dalam tabel.
Bubble sort adalah metode pengurutan yang membandingkan elemen yang
sekarang dengan elemen berikunya, jika elemen sekarang > elemen berikutnya
maka posisinya ditukar, kalau tidak, tidak perlu ditukar, misalnya untuk n = 7
maka akan dilakukan ( n – 1 ) = 6 tahap (mulai dari 0 sampai dengan n - 2).

Berikut adalah syarat dan langkah-langkah yang harus diperhatikan pada


metode Bubble Sort.

1) Jumlah iterasi sama dengan banyaknya bilangan dikurang 1.


2) Di setiap iterasi, jumlah pertukaran bilangannya sama dengan jumlah
banyaknya bilangan.
3) Dalam algoritma Bubble Sort, meskipun deretan bilangan tersebut sudah
terurut, proses sorting akan tetap dilakukan.
4) Tidak ada perbedaan cara yang berarti untuk teknik algoritma Bubble Sort
Ascending dan Descending.
Untuk mempelajari algoritma Bubble Sort ini kita hanya perlu memahami
cara yang digunakan untuk mengurutkan data. Logika sederhananya, algoritma
ini menggunakan perbandingan dalam operasi antar elemennya. Algoritma
Bubble Sort ini mempunyai kelebihan dan kekurangan. Dua hal inilah yang
menjadi pertimbangan programmer ketika membuat program. Berikut
beberapa kelebihan yang dimiliki oleh algoritma 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.

Gambar 2. 2 Contoh simulasi bubble sort


B. Kompleksitas Algoritma Bubble Sort

Kompleksitas sebuah algoritma Bubble Sort dapat dilihat dari beberapa


jenis kasus, yaitu Worst-case, Average-case, dan Best-case.

17
1. Kondisi Worst-case

Worst-case (kondisi terburuk) yaitu kompleksitas dengan jumlah paling


besar (Tmax), adalah waktu terlama yang diperlukan suatu algoritma untuk
memecahkan masalah pada n jumlah inputan. Analisis worst case memberikan
batas atas atau upper bound dari running time[9]. Worst-case merupakan dasar
dari analisis kompleksitas algoritma. Worst-case dinyatakan dalam notasi Big-
O (O), karena worst-case merupakan upper bound dari sebuah algoritma. Suatu
algoritma tidak mungkin dieksekusi dengan kompleksitas waktu lebih dari
worst-case. Pada kondisi ini, iterasi dilakukan sebanyak data n-1.

Gambar 2. 3 Kondisi Worst-case (iterasi terjadi sebanyak 3 kali)


2. Kondisi Average-case

Average-case yaitu kompleksitas dengan jumlah rata-rata keseluruhan


kemungkinan adalah waktu rata-rata yang diperlukan suatu algoritma dalam
memecahkan masalah pada jumlah n jumlah inputan. Average-case dapat
dinyatakan dalam notasi Big-O (O), karena Average-case terletak di antara lower
bound dan upper bound. Biasanya nilai dari average-case mendekati upper
bound-nya, tapi juga bisa lebih dekat dengan lower bound. Contoh:

Gambar 2. 4 Kondisi Average-case (iterasi terjadi sebanyak 2 kali)


3. Kondisi Best-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 :

Gambar 2. 5 Kondisi Average-case (iterasi terjadi sebanyak 1 kali)


2.4.2 Selection Sort

A. Pengertian dan Cara kerja Selection Sort

Selection Sort adalah metode pengurutan yang membandingkan elemen


yang sekarang dengan elemen berikutnya sampai ke elemen yang terakhir. Jika
ditemukan elemen lain yang lebih kecil dari elemen sekarang maka posisinya
dicatat dan langsung ditukar. Metode selection sort adalah melakukan pemilihan
dari suatu nilai yang terkecil dan kemudian menukarnya dengan elemen paling
awal, lalu membandingkan dengan elemen yang sekarang dengan elemen
berikutnya sampai dengan elemen terakhir, perbandingan dilakukan terus
sampai tidak ada lagi pertukaran data.

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.

B. Kompleksitas Selection Sort

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

2.5 Contoh Penyelesaian dengan Algoritma Brute Force.

• Algoritma Brute Force pada permainan domino

Algoritma brute force adalah algoritma yang memecahkan masalah dengan


sangat sederhana, langsung, dan dengan cara yang jelas (obvious way).
Penyelesaian permasalahan permainan domino dengan menggunakan
algoritma brute force akan menempatkan kartu domino disembarang tempat

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:

Sedangkan procedure Dapat Dimasukan adalah

Dari kode di atas jelas bahwa kita hanya perlu memasukkan/menurunkan


kartu yang sesuai, tapi tidak memperhitungkan nilai kartu yang kita keluarkan.
Yang kita lakukan hanya mengeluarkan kartu kita hingga habis. Terlihat proses

22
rekursif terjadi karena pemasukan kartu akan dilanjutkan terus hingga kartu kita
habis atau permainan telah berakhir.

Jika bertemu dengan persimpangan maka keluarkan kartu apapun yang


masih bisa dikeluarkan, tanpa memperhatikan nilai dari kartu tersebut. Demikian
algoritma brute force bekerja pada permainan domino ini. Walaupun terlihat
biasa saja tapi algoritma ini dapat menyelesaikan permasalahan permainan
domino ini dengan pasti. Meskipun kemangkusan algoritmanya masih harus
dipertanyakan. Kompeksitas waktu yang digunakan :

1) Karena waktu bukanlah faktor penting dalam permainan ini maka


kompleksitas waktu dapat dikesampingkan, kecuali terjadi situasi
dimana waktu diperlukan agar permainan domino ini lebih menarik
2) Jika memang diperlukan maka dari kode di atas dapat dihitung
bahwa kompleksitas waktunya yang diperlukan adalah O(n).

• Algoritma Brute Force pada Sudoku

Sudoku adalah adalah permainan teka-teki (puzzle) logik yang berasal dari
Jepang. Permainan ini sangat populer di seluruh dunia.

Gambar 2. 7 Permainan sudoku


Kotak-kotak di dalam Sudoku harus diisi dengan angka 1 sampai 9 sedemikian
sehingga:

1) Tidak ada angka yang sama (berulang) pada setiap baris;


2) Tidak ada angka yang sama (berulang) pada setiap kolom;

23
3) Tidak ada angka yang sama (berulang) pada setiap bujursangkar (persegi)
yang lebih kecil.

Gambar 2. 8 Pengisian kotak permainan sudoku


Algoritma Brute Force untuk Sudoku:
1. Tempatkan angka “1” pada sel pertama. Periksa apakah penempatan “1”
dibolehkan (dengan memeriksa baris, kolom, dan kotak).
2. Jika tidak ada pelanggaran, maju ke sel berikutnya. Tempatkan “1” pada sel
tersebut dan periksa apakah ada pelanggaran.
3. Jika pada pemeriksaan ditemukan pelanggaran, yaitu penempatan “1” tidak
dibolehkan, maka coba dengan menempatkan “2”.
4. Jika pada proses penempatan ditemukan bahwa tidak satupun dari 9 angka
diperbolehkan, maka tinggalkan sel tersebut dalam keadaan kosong, lalu
mundur satu langkah ke sel sebelumnya. Nilai di sel tersebut dinaikkan 1.
5. Ulangi sampai 81 buah sel sudah terisi solusi yang benar.

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.

Meskipun demikian, algoritma brute force tetap bermanfaat dalam beberapa


situasi, terutama ketika jumlah kemungkinan solusi yang harus diuji masih
tergolong sedikit atau ketika kompleksitas waktu dan ruang bukanlah faktor
utama. Algoritma ini juga bisa digunakan sebagai benchmark untuk
membandingkan efektivitas algoritma yang lebih canggih dan kompleks.

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.

2. Waktu dan Ruang: Penggunaan algoritma brute force memerlukan waktu


dan ruang yang cukup besar, terutama jika jumlah kemungkinan solusi
sangat banyak. Oleh karena itu, perlu dipertimbangkan apakah kita memiliki
waktu dan sumber daya yang cukup untuk menyelesaikan masalah dengan
menggunakan algoritma brute force.

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

Alana, S. H. (2021). Implementasi Algoritma Brute Force Dalam Pencarian Data


Katalog Buku Perpustakaan. JURNAL TEKNIK INFORMATIKA DAN
SISTEM INFORMASI, 1(2), 16-21.

Aldwin Hardi Swastia. (2022). Aplikasi Selection Sort pada Pengurutan Raket Bulu
Tangkis Ramah Pemula.

Fernando, H. (2007). Penggunaan Algoritma Brute Force dan Greedy dalam


Permainan Domino.

Mesran. (2014). Implementasi Algoritma Brute Force Dalam Pencarian Data


Katalog Buku Perpustakaan. Majalah Ilmiah Informasi dan Teknologi
Ilmiah (INTI) , III(1), 100-104.

Mirza, A. (2017). Pencarian Data Tiket Maintenance Menggunakan Metode Brute


Force. Jurnal Informatika Universitas Pamulang, 2(3), 122-126.

Pratiwi, D. K. H., & Arfyanti, I. (2016). Implementasi Algoritma Brute Force


Dalam Aplikasi. Ilmuan Teknologi Informasi Terapan, II(2), 122.

Rahayuningsih, P. (2016). Analisis Perbandingan Kompleksitas Algoritma


Pengurutan Nilai (Sorting). Jurnal Evolusi, 4(2), 64-75.

Rahmawati, Y., Pribadi, I. A., & Heningtyas, Y. (2021). PENERAPAN


ALGORITMA BRUTE FORCE PADA MENU SEARCH WEBSITE"
CALONKU" DALAM RANGKA PEMILU BERBASIS WEB. Jurnal
Pepadun, 2(1), 60-70.

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.

Tobing, F. A. T., & Tambunan, J. R. (2020). Analisis Perbandingan Efisiensi


Algoritma Brute Force dan Divide and Conquer dalam Proses Pengurutan
Angka. Ultimatics : Jurnal Teknik Informatika, 12(1), 52–58.
https://doi.org/10.31937/ti.v12i1.1585

28

Anda mungkin juga menyukai