Disusun oleh :
Anissa Azhari
3411181167
2020
Daftar Isi
Daftar Isi..............................................................................................................................i
BAB I ALGORTIMA BRUTE FORCE............................................................................1
1.1 Pengertian..........................................................................................................1
1.2 Tahapan Algoritma Umum.................................................................................1
1.3 Contoh Masalah & Penjelasan Penyelesaian......................................................1
1.3.1 Mencari Elemen Terbesar...........................................................................1
1.3.2 Pencarian Beruntun (Sequential Search)....................................................2
1.3.3 Menghitung an (a > 0, n adalah bilangan bulat tak-negatif)........................2
1.3.4 Menghitung n! (n bilangan bulat tak-negatif).............................................2
1.3.5 Mengalikan dua buah matriks, A dan B......................................................2
1.3.6 Tes Bilangan Prima.....................................................................................2
1.3.7 Selection Sort.............................................................................................2
1.3.8 Bubble Sort.................................................................................................2
1.3.9 Mengevaluasi Polinom...............................................................................2
1.3.10 Pencocokan String (String Matching)..........................................................2
1.3.11 Mencari Pasangan Titik yang Jaraknya Terdekat (Closest Pairs).................2
1.4 Kelebihan dan Kekurangan.................................................................................2
1.4.1 Kelebihan....................................................................................................2
1.4.2 Kekurangan.................................................................................................2
BAB II ALGORITMA GREEDY......................................................................................3
2.1 Pengertian..........................................................................................................3
2.2 Tahapan Algoritma Umum.................................................................................3
2.3 Contoh Masalah.................................................................................................3
2.4 Penjelasan Penyelesaian....................................................................................3
2.5 Kelebihan dan Kekurangan.................................................................................3
BAB III IMPLEMENTASI................................................................................................4
3.1 Bubble Sort.........................................................................................................4
i
ii
BAB I
ALGORTIMA BRUTE FORCE
1.1 Pengertian
Dalam beberapa literature, algoritma merupakan suatu langkah-langkah
tertentu yang logis dalam memecahkan ataupun menyelesaikan masalah yang
disusun secara sistematis dan memiliki urutan langkah. Meskipun dalam hal ini
algoritma sering dikaitkan dengan komputer, akan tetapi algoritma juga dapat
diterapkan dalam menyelesaikan masalah di kehidupan sehari-hari.
1
1.3 Contoh Masalah & Penjelasan Penyelesaian
2
idx diisi dengan 0.
Masukan: a 1, a 2, ..., a n
Keluaran: idx
}
Deklarasi
k: integer
Algoritma:
k←1
while (k < n) and (ak != x) do
k←k+1
endwhile
{k = n or ak = x}
if ak = x then { x ditemukan }
idx ← k
else
idx ← -1 { x tidak ditemukan }
endif
1.3.3 Menghitung an (a > 0, n adalah bilangan bulat tak-negatif)
Definisi:
=1 , jika n = 0
3
endfor
return hasil
1.3.4 Menghitung n! (n bilangan bulat tak-negatif)
n! = 1 × 2 × 3 × … × n , jika n > 0
=1 , jika n = 0
Algoritma Brute Force : kalikan n buah bilangan, yaitu 1, 2, 3, …, n,
bersama-sama.
n
Cij = a i1b1j + ai2b2j + … + a inbnj = ∑ aik bkj
k =1
Algoritma brute force: hitung setiap elemen hasil perkalian satu per
satu,dengan cara mengalikan dua vektor yang panjangnya n
4
Deklarasi
i, j, k : integer
Algoritma
for i←1 to n do
for j←1 to n do
C[i,j]←0 { inisialisasi penjumlah }
for k ← 1 to n do
C[i,j]←C[i,j] + A[i,k]*B[k,j]
endfor
endfor
endfor
1.3.6 Tes Bilangan Prima
Diberikan sebuah bilangan bilangan bulat positif. Periksa apakah
bilangan tersebut adalah bilangan prima atau bukan. Bilangan prima
adalah bilangan yang hanya habis dibagi oleh 1 dan dirinya sendiri.
Algoritma Brute Force : bagi n dengan 2 sampai √ n. Jika semuanya
tidak habis membagi n, maka n adalah bilangan prima.
5
while (test) and (y ← 2) do
if x mod y = 0 then
test ← false
else
y←y-1
endif
endwhile
{ not test or y < 2 }
return test
endif
endif
1.3.7 Selection Sort
Pass ke –1:
Pass ke-2:
6
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
1.3.8 Bubble Sort
Mulai dari elemen ke-1:
1. Jika s2 < s1, pertukarkan
2. Jika s3 < s2, pertukarkan
…
3. Jika sn – 1 < sn, pertukarkan
Ulangi lagi untuk pass ke-2, 3, .., n – 1 dst. Semuanya ada n – 1 kali pass
procedure BubbleSort (input/output s : TabelInt, input n : integer)
{ Mengurutkan tabel s[1..N] sehingga terurut menaik dengan metode
pengurutan bubble sort.
Masukan : Tabel s yang sudah terdefenisi nilai-nilainya.
Keluaran: Tabel s yang terurut menaik sedemikian sehingga
s[1] ≤ s[2] ≤… ≤ s[N].
}
Deklarasi
i : integer { pencacah untuk jumlah langkah }
k: integer { pencacah,untuk pengapungan pada setiap langkah }
temp : integer { peubah bantu untuk pertukaran }
Algoritma:
for i ← n-1 downto 1 do
for k ← 1 to i do
if s[k+1] < s[k] then
{pertukarkan s[k] dengan s[k+1]}
temp ← s[k]
7
s[k] ← s[k+1]
s[k+1] ← temp
endif
endfor
endfor
1.3.9 Mengevaluasi Polinom
Persoalan: Hitung nilai polinom
8
{ Menghitung nilai p(x) pada x = t. Koefisien-koefisein polinom
sudah disimpan di dalam a[0..n].
Masukan: t
Keluaran: nilai polinom pada x = t.
}
Deklarasi
i, j : integer
p, pangkat : real
Algoritma:
p ← a[0]
pangkat←1
for i ← 1 to n do
pangkat ← pangkat * t
p ← p + a[i] * pangkat
endfor
return p
1.3.10 Pencocokan String (String Matching)
Persoalan: Diberikan
9
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
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
endwhile
{ i > n – m or ketemu }
if ketemu then
idx←i+1
else
idx←-1
endif
Analisis:
a. Worst Case
10
Pada setiap pergeseran pattern, semua karakter di pattern dibandingkan.
Jumlah perbandingan: m(n – m + 1) = O(mn)
Contoh:
T: "aaaaaaaaaaaaaaaaaaaaaaaaaah"
P: "aaah"
b. Base Case
Contoh:
Contoh:
P: "store"
11
Jarak dua buah titik, p1 = (x1, y1) dan p2 = (x2, y2) dihitung dengan
rumus Euclidean:
d = √ ( x 1−x 2 )2+( y 1− y 2 )2
Algoritma Brute Force :
12
Algoritma:
dmin←9999
for i←1 to n-1 do
for j←i+1 to n do
2 2
√
d ← ( ( pi . x− p j . x ) + ( p i . y + p j . y ) )
13
Algoritma exhaustive search untuk TSP:
1. Enumerasikan (list) semua sirkuit Hamilton dari graf lengkap
dengan n buah simpul.
2. Hitung (evaluasi) bobot setiap sirkuit Hamilton yang
ditemukan pada langkah 1.
3. Pilih sirkuit Hamilton yang mempunyai bobot terkecil. 50
Contoh 4: TSP dengan n = 4, simpul awal = a
Contoh:
TSP dengan n = 4, simpul awal = a
R
ute perjalananan terpendek dengan bobot = 32 adalah:
acbda
adbca
2. 1/0 Knapsack Problem
14
Diberikan n buah objek dan sebuah knapsack dengan
kapasitas bobot K. Setiap objek memiliki properti bobot
(weigth) wi dan keuntungan(profit) pi. Bagaimana memilih
memilih objek-objek yang dimasukkan ke dalam knapsack
sedemikian sehingga diperoleh keuntungan yang maksimal.
Total bobot objek yang dimasukkan ke dalam knapsack
tidak boleh melebihi kapasitas knapsack. Persoalan 0/1
Knapsack dapat kita pandang sebagai mencari himpunan
bagian (subset) dari keseluruhan objek yang muat ke dalam
knapsack dan memberikan total keuntungan terbesar.
X = {x1, x2, …, x}
15
3. Pilih himpunan bagian yang memberikan total keuntungan
terbesar.
1.4.1 Kelebihan
Metode brute force dapat digunakan untuk memecahkan hampir sebagian
besar masalah (wide applicability).
Metode brute force sederhana dan mudah dimengerti.
Metode brute force menghasilkan algoritma yang layak untuk beberapa
masalah penting seperti pencarian, pengurutan, pencocokan string, perkalian
matriks.
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).
1.4.2 Kekurangan
Metode brute force jarang menghasilkan algoritma yang mangkus.
Beberapa algoritma brute force lambat sehingga tidak dapat diterima.
Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya.
16
BAB II
ALGORITMA GREEDY
2.1 Pengertian
Algoritma Greedy merupakan metode yang paling populer untuk memecahkan
persoalan optimasi. Persoalan optimasi (optimization problems) merupakan
persoalan untuk mencari solusi optimum. Prinsip Algoritma Greedy adalah take
what you can get now! . Hanya terdapat dua macam persoalan optimasi:[2]
1. Maksimasi (maximization)
2. Minimasi (minimization)
1. Himpunan kandidat, C.
2. Himpunan solusi, S
3. Fungsi seleksi (selection function)
4. Fungsi kelayakan (feasible)
5. Fungsi obyektif
17
Algoritma:
S {} { inisialisasi S dengan kosong }
while (not SOLUSI(S)) and (C != {} ) do
x SELEKSI(C) { pilih sebuah kandidat dari C}
C C - {x} { elemen himpunan kandidat berkurang satu }
if SOLUSI(S) then
return S
else
write(’tidak ada solusi’)
endif
18
BAB III
IMPLEMENTASI
3.1 Bubble Sort
M09Algoritma Greedy.pdf
* JobSchedulling1 (Hal 9)
19
* Algoritma Kruskal (Temukan di Internet)
20