DAFTAR ISI......................................................................................................................i
DAFTAR GAMBAR.......................................................................................................ii
BAB 1................................................................................................................................1
PENDAHULUAN............................................................................................................1
1.1 Tujuan..............................................................................................................................1
1.2 Latar Belakang................................................................................................................1
1.3 Alat dan Bahan................................................................................................................2
BAB 2................................................................................................................................3
TINJAUAN PUSTAKA..................................................................................................3
2.1 Algoritma Divide and Conquer......................................................................................3
2.2 Penerapan Algoritma......................................................................................................4
2.2.1 Pemecahan Masalah Convex Hull dengan Algoritma Divide and
Conquer...........................................................................................................4
2.2.2 Optimasi Konversi Bilangan Desimal Ke Biner............................5
BAB 3................................................................................................................................6
LANGKAH-LANGKAH PRAKTIKUM......................................................................6
3.1 Skema umum Divide and Conquer................................................................................6
3.2 Solusi dari masalah semula............................................................................................6
3.3 Nilai Maks dan Min menggunakan Metode Brute Force.............................................7
3.4 Nilai Maks dan Min........................................................................................................8
3.5 Mencari jarak terdekat sepasang titik didalam himpunan p......................................9
3.6 Pengurutan....................................................................................................................10
3.7 Prosedur MasgeSort.....................................................................................................10
3.8 Prosedur Marge............................................................................................................11
3.9 Insertion sort 1..............................................................................................................13
3.10 Insertion Sort 2..............................................................................................................14
BAB 4..............................................................................................................................15
ANALISA & PEMBAHASAN.....................................................................................15
4.1 Knapsack.......................................................................................................................15
i
4.2 Tracer............................................................................................................................17
BAB 5..............................................................................................................................19
KESIMPULAN..............................................................................................................19
5.1 Kesimpulan.....................................................................................................................20
REFERENSI....................................................................................................................21
DAFTAR GAMBAR
ii
BAB 1
PENDAHULUAN
1.1 Tujuan
1. Mahasiswa mampu memahami pengertian Algoritma Knapsack
1
untuk melakukan pencocokkan, seperti Divide and Conquer dan Euclidean
Distance. Divide and Conquer merupakan algoritma yang berprinsip memecah –
mecah dahulu permasalahan yang besar menjadi bagian – bagian terkecil sehingga
lebih mudah diselesaikan. Masalah yang bisa diselesaikan seperti pada masalah
array 1 atau 2 dimensi yang mencari pasangan titik yang jaraknya terdekat atau
disebut juga Closest pair. Pada penelitian Khrisna Nugraha [8], beliau berhasil
menerapkan Divide and Conquer sebagai metode pencocokkan suara. Euclidean
distance merupakan metode perhitungan 2 buah titik dalam Euclidean space.
Euclidean space berkaitan dengan Teorema Phytagoras dan biasanya diterapkan
pada suatu template array yang berbasis 1, 2 atau 3 dimensi. Tapi juga sederhana
jika diterapkan pada dimensi yang lebih tinggi [2]. Pada penelitian Damayanti Eva
[1], beliau berhasil menerapkan Euclidean distance sebagai metode pencocokkan
suara. Berdasarkan kesamaan kedua metode yang dapat diterapkan pada suatu
array 1 atau 2 dimensi dan telah berhasil diterapkan sebagai algoritma
pencocokkan suara pada penelitian sebelumnya, maka kedua algoritma tersebut
akan diterapkan pada suatu aplikasi pengenalan suara, lalu akan dilakukan
perbandingan. Tujuan dilakukannya perbandingan adalah untuk mengukur
ketepatan atau keakuratan dalam perhitungan dan pencocokkan pada suatu sistem
pengenalan suara. Berdasarkan hal – hal yang sudah dibahas sebelumnya maka
akan dibangun aplikasi game catur yang membandingkan hasil implementasi
Divide and Conquer dan Euclidean distance sebagai pencocokkan pola suara.
Diharapkan dengan adanya penelitian ini, dapat mengetahui algoritma manakah
yang akan melakukan proses pencocokkan pola suara lebih baik pada nilai
keakuratannya dan menentukan metode yang lebih baik untuk diterapkan pada
Speech Recognition terhadap game catur (Turfan, D., Aladag, C.H. dan Yeniay,
O.2012)
2
BAB 2
TINJAUAN PUSTAKA
3
1.5 Penerapan Algoritma
1.5.1 Pemecahan Masalah Convex Hull dengan Algoritma Divide and
Conquer
Pada penyelasaian masalah pencarian Convex Hull dengan menggunakan
algoritma Divide and Conquer, hal ini dapat dipandang
sebagai generalisasi dari algoritma pengurutan merge sort. Berikut ini merupakan
garis besar gambaran dari algoritmanya:
Algoritma Divide and Conquer merupakan salah satu solusi dalam penyelesaian
masalah convex hull. Algoritma ini ternyata memiliki kompleksitas waktu yang
cukup kecil dan efektif dalam menyelesaikan permasalahan ini (jika dibandingkan
algoritma lain). Selain itu juga, algoritma ini dapat digeneralisasi untuk
permasalahan convex hull yang berdimensi lebih dari 3.
4
1.5.2 Optimasi Konversi Bilangan Desimal Ke Biner
Salah satu cara optimasi yang bias kita lakukan adalah membagi bilangan decimal
yang hendak diubah dengan angka 8 ( bukan 2 ). Di sinilah prinsip algoritma
Divide and Conquer kita gunakan untuk melakukan optimasi. Kita pecah-pecah
angka decimal yang akan kita gunakan dengan cara membaginya dengan angka 8
secara berulang. Angka-angka sisa pembagian yang kita peroleh kemudian kita
ubah ke dalam bilangan biner sebelum kita gabungkan menjadi hasil jawaban.
Karena angka pembagi yang kita pakai adalah 8 (23), maka kita dapat
mengurangijumlah pembagian yang kita lakukan menjadi ± 1/3 dari jumlah
semula. Hal ini tentu saja akan sangat berpengaruh pada kinerja dan waktu yang
diperlukan oleh computer mengingat proses pembagian merupakan salah satu
proses yang cukup rumit.
Tentu saja optimasi ini harus kita bayar dengan menangani konversi bilangan
octal ke biner. Akan tetapi jika kita gunakan teknik perbandingan ( tanpa harus
melakukan konversi secara manual ), maka proses ini akan menjadi sangat cepat
dan mudah. Penerapan algoritma ini adalah dengan menggunakan sintaks case of.
Begitu juga dengan permasalahan pemakaian memori ( kompleksitas ruang ) yang
lebih besar yang muncul akibat penggunaan algoritma rekursif. Karena pada
proses rekursif-nya kita tidak banyak menggunakan variable yang memerlukan
tempat yang begitu besar, maka hal ini bias kita abaikan. Dengan penggunaan
optimasi ini, maka seharusnya proses konversi akan lebih cepat karena
pemangkasan jumlah pembagian yang dilakukan.
5
BAB 3
LANGKAH-LANGKAH PRAKTIKUM
Deklarasi
r, k : integer
Algoritma
else
DIVIDE_and_CONQUER(n/k)
endfor
endif
Deklarasi
6
r, k : integer
Algoritma
else
Endif
Deklarasi
i : integer
Algoritma:
for i2 to n do
minAi
endif
7
if Ai > maks then
maksAi
endif
endfor
Deklarasi
Algoritma:
minAi
maksAi
else
if Ai < Aj then
maksAj
minAi
else
maksAi
minAj
8
endif
minmin1
else
minmin2
endif
if maks1<maks2 then
maksmaks2
else
maksmaks2
endif
Deklarasi:
DeltaLeft, DeltaRight : real
Algoritma:
if n = 2 then
delta jarak kedua titik dengan rumus Euclidean
else
P-Left {p1, p2 ,..., pn/2 }
P-Right {pn/2+1, pn/2+2 ,..., pn }
FindClosestPair2(P-Left, n/2, DeltaLeft)
FindClosestPair2(P-Right, n/2, DeltaRight)
delta minimum(DeltaLeft, DeltaRight)
{--***********************************************************--}
Tentukan apakah terdapat titik pl di P-Left dan pr di P-Right
Dengan jarak(pl, pr) < delta. Jika ada, set delta dengan jarak
9
terkecil tersebut.
{--***********************************************************--}
endif
for ji+1 to s do
exit when (|qi.x – qj.x | > Delta or |qi.y – qj.y | > Delta
if jarak (qi, qj) < Delta then
Delta jarak(qi, qj) { dihitung dengan rumus Euclidean }
endif
endfor
endfor
1.11 Pengurutan
procedure Sort(input/output A : TabelInt, input n : integer)
Algoritma:
dan n2 (n = n1 + n2)
bagian kanan }
end
10
Keluaran: Tabel A yang terurut
Deklarasi:
k : integer
Algoritma:
k(i+j) div 2
MergeSort(A, i, k)
MergeSort(A, k+1, j)
Merge(A, i, k, j)
endif
Deklarasi
B : TabelInt
11
Algoritma:
ikiri
BiAkidal1
kidal1kidal1 + 1
else
BiAkidal2
kidal2kidal2 + 1
endif
ii + 1
endwhile
BiAkidal1
kidal1kidal1 + 1
ii + 1
endwhile
BiAkidal2
kidal2kidal2 + 1
12
ii + 1
endwhile
AiBi
endfor
input i, j : integer)
Deklarasi:
k : integer
Algoritma:
ki
InsertionSort(A, i, k)
InsertionSort(A, k+1, j)
Merge(A, i, k, j)
endif
13
1.15 Insertion Sort 2
procedure InsertionSort(input/output A : TabelInt,
input i, j : integer)
Deklarasi:
k : integer
Algoritma:
ki
Insertion(A, k+1, j)
Merge(A, i, k, j)
endif
BAB 4
ANALISA & PEMBAHASAN
1.16 Knapsack
Input:
14
Gambar 4.1 Syntax Knapsack
Output:
15
Gambar 4.2 Output Knapsack
Analisa:
1.17 Tracer
16
Perhitungan K[0][0] :
for (w = 0; w <= W; w++)
{
if (i==0 || w==0)
K[0][1] = 0;
Perhitungan K[0][1] :
for (w = 0; w <= W; w++)
{
if (i==0 || w==1)
K[0][1] = 0;
Perhitungan K[0][2] :
for (w = 0; w <= W; w++)
{
if (i==0 || w==3)
K[0][3] = 0;
Perhitungan K[0][3] :
for (w = 0; w <= W; w++)
{
if (i==0 || w==1)
K[0][3] = 0;
Perhitungan K[0][4] :
for (w = 0; w <= W; w++)
{
if (i==0 || w==1)
K[0][4] = 0;
Selanjutnya pembuktian
perhitungan K[1][0]:
Perhitungan K[1][0] :
for (w = 0; w <= W; w++)
{
if (i==1 || w==0)
K[1][0] = 0;
Perhitungan K[1][1] :
17
for (w = 0; w <= W; w++)
{
if (i==1 || w==1)
K[1][1] = 0;
Perhitungan K[1][2] :
for (w = 0; w <= W; w++)
{
if (i==1 || w==2)
K[1][2] = 0;
Perhitungan K[1][3] :
for (w = 0; w <= W; w++)
{
if (i==1 || w==3)
K[1][3] = 0;
Selanjutnya pembuktian
perhitungan K[2][0]
sampai K[2][4]:
Perhitungan K[2][0] :
for (w = 0; w <= W; w++)
{
if (i==2 || w==0)
K[2][0] = 0;
Perhitungan K[2][1] :
for (w = 0; w <= W; w++)
{
if (i==2 || w==1)
K[2][1] = 0;
Perhitungan K[2][2] :
for (w = 0; w <= W; w++)
{
if (i==2 || w==2)
K[2][2] = 0;
18
Perhitungan K[2][3] :
for (w = 0; w <= W; w++)
{
if (i==2 || w==3)
K[2][3] = 0;
Perhitungan K[2][4] :
for (w = 0; w <= W; w++)
{
if (i==2 || w==4)
K[2][4] = 7;
BAB 5
KESIMPULAN
5.1 Kesimpulan
Divide and Conquer dulunya adalah strategi militer yang dikenal dengan nama
divide ut imperes. Sekarang strategi tersebut menjadi strategi fundamental di
dalam Ilmu Komputer dengan nama Divide and Conquer.
19
Permasalahan convex hull adalah sebuah permasalahan yang memiliki aplikasi
terapan yang cukup banyak, seperti pada permasalahan grafika komputer, otomasi
desain, pengenalan pola (pattern recognition), dan penelitian operasi. Divide and
Conquer adalah metode pemecahan masalah yang bekerja dengan membagi
masalah menjadi beberapa upa-masalah yang lebih kecil, kemudian
menyelesaikan masing-masing upa-masalah tersebut secara independen, dan
akhirnya menggabungkan solusi masing-masing upamasalah sehingga menjadi
solusi dari masalah semula.
Algoritma divide and conquer merupakan salah satu solusi dalam penyelesaian
masalah convex hull. Algoritma ini ternyata memiliki kompleksitas waktu yang
cukup kecil dan efektif dalam menyelesaikan permasalahan ini (jika dibandingkan
algoritma lain). Selain itu juga, algoritma ini dapat digeneralisasi untuk
permasalahan convex hull yang berdimensi lebih dari 3. 13
REFERENSI
20
Anagun, A.S. dan Sarac, T., Optimization performance of genetics algorithm for
0-1 knapsack problems using taguchi method. Lect. Notes Comput. Sc.,
Vol. 3982, pp. 678-687, 2006.
Syarif, A., Algoritma Genetika; Teori dan Aplikasi Edisi 2, Yogyakarta, Graha
Ilmu, 2014.
Turfan, D., Aladag, C.H. dan Yeniay, O., A new genetic algorithm to solve
knapsack problems, Journal of Social and Economic Statistics, Vol. 1, No.
2, 2012.
Zhao, J., Huang, T., Pang, F. dan Liu, Y., Genetic algorithm based on greedy
strategy in the 0-1 knapsack problem, Third International Conference on
Genetic and Evolutionary Computing IEEE, 2009.
21