Aplikasi masalah 0 1 Knapsack menggunakan algoritma Greedy
APLIKASI MASALAH 0/1 KNAPSACK
MENGGUNAKAN ALGORITMA GREEDY
Skripsi
Diajukan untuk Menempuh Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Oleh :
Yohanes Tommy Gratsianto
NIM : 065314035
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2013
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(2)
ii
APPLICATION 0/1 KNAPSACK PROBLEM
USING GREEDY ALGORITHM
Final Project
Presented as Partial Fulfillment of the Requirements
To Obtain Sarjana Komputer
Informatics Engineering Study Program
By :
Yohanes Tommy Gratsianto
065314035
INFORMATICS ENGINEERING STUDY PROGRAM
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2013
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(3)
iii
SKRIPSI
APLIKASI MASALAH 0/1 KNAPSACK
MENGGUNAKAN ALGORITMA GREEDY
Oleh :
Yohanes Tommy Gratsianto
NIM : 065314035
Telah disetujui oleh :
Dosen pembimbing
Alb. Agung Hadhiatma, S.T., M.T.
Tanggal : .... Mei 2013
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(4)
iv
SKRIPSI
APLIKASI MASALAH 0/1 KNAPSACK
MENGGUNAKAN ALGORITMA GREEDY
Dipersiapkan dan ditulis oleh
Yohanes Tommy Gratsianto
NIM : 065314035
Telah dipertahankan di depan Paniti Penguji
Pada Tanggal : 6 Mei 2013
Dan dinyatakan memenuhi syarat
Susunan Panitia Penguji :
Nama Lengkap
Tanda Tangan
Ketua
: Eko Hari Parmadi, S.Si., M.Kom.
……….
Sekretaris : Drs. J. Eka Priyatma, M.Sc., Ph.D.
……….
Anggota : Alb. Agung Hadhiatma, S.T., M.T.
……….
Yogyakarta, .... Mei 2013
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan
Paulina Heruningsih Prima Rosa, S.Si., M.Sc.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(5)
v
HALAMAN PERSEMBAHAN
Penulis mempersembahkan Tugas Akhir ini kepada :
Yesus Kristus
Atas segalanya yang telah kau berikan kepada kami.
Bapak Aloysius Hendarto dan Ibu M.M. Sri Utami
Terima kasih atas kasih sayang, cinta, pengorbanan,
doa dan dukungannya selama ini.
Christophorus Tommy Astanto
Aku bangga punya kakak sepertimu.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(6)
vi
PERNYATAAN KEASLIAN KARYA
Saya menyatakan bahwa skripsi yang saya tulis ini tidak memuat karya
atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan
daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, 16 Mei 2013
Yohanes Tommy Gratsianto
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(7)
vii
LEMBAR PERNYATAAN PERSETUJUAN
PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata
Dharma :
Nama : Yohanes Tommy Gratsianto
NIM : 065314035
Demi pengembangan ilmu pengetahuan, saya memberikan kepada
Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :
APLIKASI MASALAH 0/1 KNAPSACK
MENGGUNAKAN ALGORITMA GREEDY
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya
memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk
menyimpan, mengalihkan dalam bentuk media lain, mengelola dalam bentuk
pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di
Internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari
saya maupun memberi royalti kepada saya selama tetap mencantumkan nama saya
sebagai penulis.
Demikian pernyataan ini yang saya buat dengan sebenarnya.
Dibuat diYogyakarta
Pada tanggal : .... Mei 2013
Yang menyatakan
Yohanes Tommy Gratsianto
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(8)
viii
ABSTRAK
Masalah Knapsack adalah masalah di mana kita dihadapkan dengan
persoalan optimasi pemilihan benda untuk dimasukkan ke dalam sebuah wadah
yang memiliki keterbatasan ruang dan daya tampung tetapi benda yang akan
dimasukkan ke dalam wadah tersebut haruslah tetap dalam keadaan utuh bukan
merupakan fraksi dari benda tersebut. Masing-masing benda yang ada memiliki
sebuah nilai berupa berat, volume, harga, atau nilai lainnya yang dapat dipakai
sebagai penentu dalam proses pemilihannya. Sedangkan wadah memiliki sebuah
nilai konstanta yang dimilikinya dan merupakan sebuah pembatas dalam proses
pemilihan benda untuk dapat dimasukkan ke dalam wadah tersebut. Penelitian ini
bertujuan untuk mengetahui apakah algoritma Greedy dapat menyelesaikan semua
permasalahan Knapsack.
Hasil pengujian program menunjukkan bahwa algoritma Greedy bisa
menyelesaikan permasalahan Knapsack, tetapi tidak selalu menghasilkan solusi
yang optimal.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(9)
ix
ABSTACT
Knapsack problems are problems in which we are faced with the selection
of the optimization problem to put objects in a container that has limited space
and capacity but objects to be inserted into the container must remain intact is not
a fraction of these objects. Each object has a value that is in the form of weight,
volume, prices, or other value that can be used as a determinant in the selection
process. Meanwhile, the container has a value of its constants and is a barrier in
the process of selecting objects to be inserted into the container. This study aims
to determine whether the Greedy algorithm can solve all the problems Knapsack.
Program testing results show that the Greedy algorithm can solve the
problems Knapsack, but does not always produce an optimal solution.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(10)
x
KATA PENGANTAR
Puji syukur saya panjatkan ke hadirat Tuhan Yang Maha Esa karena atas
berkat dan rahmatnya sehingga penulis dapat menyelesaikan Skripsi ini.
Skripsi ini disusun sebagai salah satu syarat untuk memperoleh gelar
sarjana di program studi Teknik Informatika Universitas Sanata Dharma,
Yogyakarta.
Dalam penulisan Skripsi ini, penulis telah mendapatkan bantuan dari
berbagai pihak. Untuk itu penulis dengan segala rendah hati ingin menyampaikan
ucapan terimakasih kepada:
1. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc., selaku Dekan Fakultas
Sains dan Teknologi Universitas Sanata Dharma.
2. Ibu Ridowati Gunawan S.Kom., M.T., selaku Ketua Program Studi Teknik
Informatika Univesitas Sanata Dharma.
3. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T., selaku Dosen Pembimbing
Akademik Teknik Informatika angkatan 2006 kelas A.
4. Bapak Alb. Agung Hadhiatma, S.T., M.T., selaku Dosen Pembimbing
Skripsi yang telah membimbing selama proses pembuatan Skripsi ini.
5. Seluruh Dosen Teknik Informatika Sanata Dharma yang telah
membimbing penulis selama studi.
6. Seluruh Laboran dan karyawan Fakultas Sains dan Telnologi Universitas
Sanata Dharma.
7. Anastasia Galih Sri Darmaningsih yang telah memberi semangat dan
dukungan untuk menyelesaikan studi dan skripsi ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(11)
xi
8. Teman-teman Teknik Informatika Universitas Sanata Dharma angkatan
2006. Terimakasih atas kebersamaanya selama ini.
9. Teman-teman UKF Basketball Fakultas Sains dan Teknologi Universitas
Sanata Dharma.
Penulis menyadari bahwa dalam penulisan skripsi ini masih banyak
kekurangan. Oleh karena itu kritik dan saran yang bersifat membangun akan
sangat diharapkan dalam sempurnanya skripsi ini.
Akhir kata, penulis berharap semoga penelitian dan tulisan ini dapat
bermanfaat bagi pembaca.
Yogyakarta, 16 Mei 2013
Penulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(12)
xii
DAFTAR ISI
HALAMAN JUDUL ... i
TITLE PAGE ... ii
HALAMAN PERSETUJUAN ... iii
HALAMAN PENGESAHAN ... iv
HALAMAN PERSEMBAHAN ... v
HALAMAN KEASLIAN KARYA ... vi
HALAMAN PUBLIKASI KARYA ... vii
ABSTRAK ... viii
ABSTACT ... ix
KATA PENGANTAR ... x
DAFTAR ISI ... xii
DAFTAR TABEL ... xiv
DAFTAR GAMBAR ………. xv
BAB I. PENDAHULUAN
1.1 Latar Belakang ………... 1
1.2 Rumusan Masalah ………... 2
1.3 Batasan Masalah ………...… 2
1.4 Tujuan ……… 2
1.5 Metodologi ……… 2
1.6 Sistematika Penulisan ……… 4
BAB II. LANDASAN TEORI
2.1 Pengertian Permasalahan Knapsack ... 5
2.2 Knapsack 0/1 (Integer Knapsack) ...5
2.3 Algoritma Greedy ... 6
2.4 Bubble Sort (Exchange Sort) ... 8
2.5 Bahasa Pemrograman JAVA ... 9
BAB III. ANALISA DAN PERANCANGAN SISTEM
3.1 Analisa Sistem ... 11
3.2 Kebutuhan Sistem ... 11
3.3 Perancangan ... 12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(13)
xiii
3.3.1 Perancangan Proses ...12
3.4 Algoritma Program ... 13
3.4.1 Algoritma Greedy By Profit ... 14
3.4.2 Flowchart Algoritma Greedy By Profit ………. 14
3.4.3 Algoritma Greedy By Weight ……… 15
3.4.4 Flowchart Algoritma Greedy By Weight ……….. 16
3.4.5 Algoritma Greedy By Density ………... 17
3.4.6 Flowchart Algoritma Greedy By Density ……….. 17
3.5 Perancangan Interface Program ……….……… 18
3.5.1 Form Menu Awal ……….…. 19
3.5.2 Form Menu Utama ……….…… 19
3.5.3 Form Menu Informasi Program ……….……… 20
BAB IV. IMPLEMENTASI PROGRAM
4.1 Implementasi Program ……….…. 21
4.1.1 Tampilan Menu Awal ………... 21
4.1.2 Tampilan Menu Informasi Program ………. 22
4.1.3 Tampilan Menu Utama ………. 23
4.1.4 Tampilan Menu Peringatan ……… 24
BAB V. ANALISA DAN HASIL PENGUJIAN PROGRAM
5.1 Analisa Program ………. 26
5.2 Hasil Pengujian Program ……… 26
BAB VI. KESIMPULAN DAN SARAN
6.1 Kesimpulan ……… 31
6.2 Saran ……….. 31
DAFTAR PUSTAKA ……….. 32
LAMPIRAN ……… 33
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(14)
xiv
DAFTAR TABEL
Table 2.1 Contoh Solusi Menggunakan Algoritma Greedy ……… 8
Tabel 2.2 Iterasi Pertama Bubble Sort ……… 8
Tabel 2.3 Iterasi Lengkap Bubble Sort ………... 9
Tabel 5.1 Hasil Pengujian Pertama ………. 27
Tabel 5.2 Hasil Pengujian Kedua ……… 28
Tabel 5.3 Hasil Pengujian Ketiga ……… 29
Tabel 5.4 Hasil Pengujian Keempat ……….... 30
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(15)
xv
DAFTAR GAMBAR
Gambar 1.1 Diagram Metode Waterfall ………. 3
Gambar 3.1 Diagram Konteks ………. 12
Gambar 3.2 Diagram Alur Data Level 1 ………. 12
Gambar 3.3 Diagram Alur Data Level 2 ………. 13
Gambar 3.4 Flowchart Algoritma Greedy By Profit ….……….. 15
Gambar 3.5 Flowchart Algoritma Greedy By Weight .……… 16
Gambar 3.6 Flowchart Algoritma Greedy By Density ….………... 18
Gambar 3.7 Form Menu Awal ……….……… 19
Gambar 3.8 Form Menu Utama ……….……….. 19
Gambar 3.9 Form Menu Informasi Program ……….……….. 20
Gambar 4.1 Tampilan NetBeans 5.5 ……….……….. 21
Gambar 4.2 Menu Awal Program ………... 22
Gambar 4.3 Menu Informasi Program .……… 23
Gambar 4.4 Menu Utama Program ………. 24
Gambar 4.5 Menu Peringatan ………. 25
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(16)
l
g
! "
y
#$
tu
! %# # #y
" # " &#& #$ & &# #t
&# & &" ! !%# # ## ' & % &# & 'w
&
y
" # # # '
t
t
"&&
y
t
u
"t
t
#'&
y
"&#
&
w
&t
' %
t
t
& &
ut
' ( # & # '&t
' %$ # ")# " ' &y
" & # # # ' ## ' 't
*v
! * "*t
u
## # +y
" &t
&# # '"# %u
& ! # # +$ ,&"w
& # # # ' # # !t
%y
" &# # ##+ & ' 't
& ! # # ' & % &t
&# &w
&
t
' %$- & # +
t
* # " &#"t
ut
& '#& " "" % ' "$ -t
' %* &## "#tu
tu
"y
" # % " " % ' "
y
" & & "t
#& '# # 't
#t
y
"& $.+ "! #
t
y
" &t
&#"t
+ #$ # + "! #
t
.ut
/!* -y
# 0!" #"* 1 &+* "! #t
1t
# & #' + "# $0 # #
"! #
t
& + #
"
t
%#"$0"" "! #
t
y
"t
t
' %u
+ # & " '# $ ,' # +*t
#&%t
##tu
"! #t
! %# # # + ' 't
't
+ ! " '# % $- 2 " 3# # # # '
t
## % + #
4%"
" " "!#
t
1&+$PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(17)
5
67 89
umusan Masalah
:;< =< > <? @ABC
t
D< EB FFGH G <; <t
DFIHF? FJ<C=<I J F Du
< ;FB D<J < ?<>< I KI LF @FBMI <;J <N =t
FB< D<ut
G <? < DOC G< I @; FI @CBCD<I O<B< I @P1.3 Batasan Masalah
:G<; QI O<
t
<J < ID<J< ?<>G< BCt
Q @<J<=>C BC IC< G< ?< >RS P T FD OQ<
t
< I <;?C =<JCy
< I @ GC B< IN <I @ D FI @@Q I<=< I O< ><J< ; FDB A @B<D<I U:V:P5P TB A @B < D
y
< I @ <=< I GC OQ <t
D FI @@Q I<=<I <? @AB Ct
D< EB F FGH QI LQ = D FIHF? FJ<C=<I; FB D<J< ?<>< IKILF @FBMI< ;J <N =PW P X<
t
<D< JQ=< IOFBQ ;<G<t
<C I LF@FB P1.4 Tujuan
YQZ
u
< I G< BCt
Q @< J <=>CB CI C < G<?<> D FB< IN<I @ G< I D FI @F DO<I @=< I < ;? C =< J C D<J< ?<> KI LF @FB MI< ;J <N= DFI @@QI<=< I <? @ABCt
D< EB F FG H G<? < D =<J QJ; FI@< I @=QL< IO<B<I @P1.5 Metodologi
S P [F
t
AGF\t
QG CTQ Jt
< =<[F
t
AGF CIC J FO<@< C ; FIQIZ< I @ G <?<D ;B AJ FJ ;FI @QD; Q?< I G<t
< GFI @< I D F D; F? <Z<BC OFBO<@<C D< N<D ?CFB<t
t
QBy
< I @ OFB =< C<It
G FI @<I ;F D OQ<t
< I ; B A@B< DC ICP5P [F
t
AGFTFI@F DO< I @<ITFB <I @=<t
]QI<=GFI @<I;< B<G C @D<Waterfall
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(18)
^
_ `ab `cd edfg`h c`aaitj k i waterfall
lm
t
nom p qp op rs qtu tq vm w trtp xmqsqy t qr o tz t{ x| n vmv xm{ wstt
tq x| nr| t{ vm vs tp omqrt q u mw s}s~tq xm { tutp p o tzt{ {mt
no m p qpt
m|otxtt
w mw m|t xtt
t~t xtqy
tq rtu t qop ztusutqy
tpt
s mu t
y
t v tpvt
m{t~t xtq p qp oprs qtu t q s q}su {mqrs{xsz u tq um ws}s~t q x|nr| t{ om q rt qvm op up
t
{mzp w tt
u tqt qtzp vpvot qxm |t qt qrtqqt qtzp vpv
t~t xtq pqp oprs q tutq s q}su { mqrt qtz p vpv
t
m q}tqr x| nvm os| tt
tu
s qrvpy
t qrtut qop rsqtu tqo t quser interface
x| nr|t{^ m| t qtq rtq
lm| s xtutq
t
t~txt qy
t qr { m{ s v tt
ut q xtot ut| tu}m |pvt
pu o t|puser
inteface
ot qx| nvm os|m tt
tu
s q rvpvmt| t{m qomt
tp z m qs zp v t q | nr|t{lm q}m| ym {t~utq~tvpz|tqt qrt qu mo tz t{x|nr| t{ m qrsy ptq
lm q rsypt xtut~x| n r| t{vsot~vmv
u
tpomqrt qy
t qrop p qrpqu t qPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(19)
st
m
t
ka Penulisan
¡ ¢ ¢£
t
£ ¤t
¥£ ¦ £ § §£ ¨©ª ©« ¬£ ¢¦
©§ §£
t
£t
¦t
§ £ ¦ ¤ ¤ ¦ §t
¤ ¦u
® ¤ £t
¯ ¢¦¯ ¢ t
£ ¤t
¥ £¦°©ª ©«« ± ¢£ ¯
©§ §£
t
£ t
£¯ ²t
£¯y
¢ ¥t
¢ £ § § ¥£ ¢ ¢ ¥ £¤ § t
¥¯ ¤ ¢ ¥£ ¦ t
£³££ ¦ °©ª ©««« ª¦ ¢ ¬£ ³ ´
t
£ ¤©§ §£
t
£ t
¦ t
£¤ ¦ £§ut
³ £ £ µ³£y
¢ ¢ ¦¤¥£ ¤ § t
¥ ¯ ¤ ° ©ª ©«¶ «¤ ¥ ¦£ ¤£ ¬¯ ¤©§ §£
t
£ ¦ ¤ ¥ ¦£ ¤£ ¥ ¯ ¤ ¤£ ®£ ¦ £t
¥¥ ¦ y
¢¢ ¦¤¥¯ ¤°©ª ©¶ ª¦ ¢ · ¦¬£ ® ¬¯ ¤
©§ §£
t
£t
¦ ¥ ¯ ¤ £t
¦ ¥£ § ¢ £ ¢ ¦ ¯ t
¤ §£ ¢¦¥ £u
® ¥ ¯ ¤ °©ª ©¶« ¸£ ¤ ¥ ¦ ¢´
©§ §£
t
£ £ ¤¥¦ ¢ £t
£ ¦ ¤£ ¤¥¦£ ¤£ ¥ ¯ ¤ °¹ªºª »¬ ¼´ ª¸ª ±ª ½¬ «»ª ¾
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(20)
¿
ÀÁÀÂÂ ÃÁ ÄÅÁÆÁÄÇÈ ÉÊÂ ËÌ ÍÎ Ï
n
gertian Permasalahan Knapsack
ÐÑÒ ÓÔ Ò ÕÖ Ò ×Ò ØÒÙ
t
ÒÔ ÒÒt
u
ÖÒ ÚÛÑ Üy
Ò Ñ Ü ×ÝÜÛ ÑÒ ÖÒÑ ÛÑ ÞÛÖ ßàßÒÔ Û ÖÖÒ Ñ Ô à Ô ÛÒtu
á âÒÓÝt
Ý ×ÒÖ Ô àßÛÒ ãÒ ÚÒ Ñ Ü ãÝÔ Ò ×ÝÒßÓÛÑ Üt
Ö à ×ÒØÒ ß ÖÒ ÚÛÑÜt
à ÚÔ àãÛ Þá ÐÒ ÚÛ ÑÜt
àÚÔ àãÛ Þ ÙÒ ÑäÒ ×ÒÓÒt
ßà ÑäÝ ßÓÒÑ ãàãàÚ Ò ÓÒ åãæà Ö ×à Ñ ÜÒ Ñt
åÒ Øt
ÛÖÛÚÒÑ ØàãÝ ÙÖà ÕÝØÒt
Òu
ÔÒßÒ×àÑ ÜÒ ÑÛÖ ÛÚÒ ÑÖÒ ÓÒ Ô Ýt
Ò ÔÖÒ ÚÛÑÜáÐÑÒ ÓÔ Ò Ö Ò×ÒØÒÙ ÓàÚ ßÒ Ô ÒØÒ ÙÒÑ ß àÑÜàÑÒÝ åÓ
t
Ýß ÝÔÒ Ô Ý
ÖåßãÝ ÑÒ
t
åÚÝ ÒØá ÐÑ Ò ÓÔ Ò ÕÖ ß à ÚÛ ÓÒ ÖÒ Ñ ÔÛ Òtu
Óà ÚßÒÔ Ò ØÒÙÒÑãÒÜÒ ÝßÒÑ Ò
ßà ß ÝØÝÙ åãæàÖ
×Ò ÚÝ Ô à ÖÝÒÑ ãÒ ÑäÒ Ö ×Ò Ñ ãàÚÒÓÒ ãàÔ Ò Ú åãæà Ö
t
à ÚÔàãut
Ò ÖÒ Ñ ×ÝÔÝ ß ÓÒ Ñ Ôà ÙÝÑ Ü ÜÒ ×Ý Óà ÚåØà ÙÔu
Òtu
Óà ÑäÝ ß ÓÒÑÒ ÑäÒÑ ÜåÓÞÝß ÒØ×à Ñ ÜÒ Ñß à ß ÓàÚ ÙÒt
ÝÖÒ Ñå ã æà ÖäÒ Ñ Üt
àÚ ×ÝÚÝ ×ÒÚÝ Ñ åãæàÖ çèé êé ëéáááé Ñ ì ×Ýß ÒÑÒÔàÝ Ò Ó
t
åãæàÖß àßÝ ØÝÖ Ý ãåã åÞ çw
íì ×Ò Ñ îÝ ØÒ Ý ÓÚåïÝ
t
ç Óí
ì ×à ÑÜÒÑ ß àßÓà Ú ÙÒÝÖÒÑ
t
æÛÜÒ ÖÒÓÒ Ô Ýt
Ò Ô ×ÒÚÝ ßà×ÝÒ ÓàÑäÝßÓÒ ÑÒ Ñ Ô àãà ÔÒÚ ð ×Ò Ñ ÑÝØÒ Ý ÓÚåãÒãÝ ØÝt
Ò Ô ×ÒÚ Ý Ôàt
ÝÒ Ó åãæà Ö çX
n). Kita
diberi suatu set barang dengan masing-masing barang mempunyai nilai dan
harga yang berbeda dan kita harus menebak jumlah barang yang harus
dimasukkan ke dalam knapsack sehingga total nilainya tidak melebihi batas
yang diberikan, tetapi memiliki harga total tertinggi yang paling
memungkinkan.
Permasalahan knapsack memiliki tiga jenis persoalan, yaitu :
1. Knapsack 0/1 ( Integer Knapsack)
2. Knapsack Bounded
3. Knapsack Unbounded
2.2 Knapsack 0/1 ( Integer Knapsack)
Dalam persoalan ini, kita diberikan n buah objek yang masing-masing
memiliki nilai bobot dan keuntungan. Kita diminta untuk memilih objek-objek
yang akan dimasukkan ke dalam knapsack yang memiliki bobot maksimum W
sehingga didapat keuntungan yang maksimum. Persoalan ini disebut Integer
Knapsack karena tiap objek hanya memiliki dua status yaitu terpilih atau
tidak.
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(21)
ñ
òó ôõ ö÷ ö øöùöú
t
óô÷ ó û üý þ öÿ öt
þú öt
ööú þöøöõ û óú ý ü ôõ öø ÷ó û öö û ó ôü ýûóôöú ú ûüöù ûó þó ú öú ûûý õö÷ú õö÷ú
w
w
w
þöú ó üú ýüú öú ÿ
ÿ
ÿ
öø
u t
óôþ öÿ öt
÷ó û ü öù ú öÿ÷ ö þó ú öú ûûý õ ö ÷õu
õ øü÷ þ öô ÿóô÷ ö øöúþ öö÷t
þú öt
ööúþöøöõv
óýôút
üÿó øX = {x
1, x
2, ..., x
n}
Dimana xi bernilai 1 jika objek ke-i dipilih dan bernilai 0 jika objek ke-i
tidak dipilih. Misal X = {1,0,0} merupakan solusi dimana objek yang dipilih
ialah objek ke-1, sedangkan objek ke-2 dan ke-3 tidak dipilih.
Solusi dihasilkan dengan batasan
Maksimal
ni
p
ix
iF
1
Dengan kendala
n
i1
w
ix
iK
l
goritma Greedy
Secara harafiah,
greedy
berati rakus atau tamak. Algoritma
Greedy
merupakan algoritma sederhana dan lempang yang paling populer untuk
pemecahan persoalan optimasi (maksimum atau minimum). Prinsip
greedy
adalah “
take what you can get now
!”, yang digunakan dalam konteks positif.
Ada tiga pendekatan dalam menyelesaikan persoalan integer knapsack
dengan algoritma Greedy, yaitu:
1. Greedy by profit
Pada setiap langkah, knapsack diisi dengan objek yang mempunyai
keuntungan terbesar. Strategi ini memcoba memaksimumkan keuntungan
dengan memilih objek yang paling menguntungkan terlebih dahulu.
Pertama kali yang dilakukan adalah mengurutkan secara menurun
objek-objek berdasarkan
profit
-nya. Kemudian baru diambil satu-persatu objek
yang dapat ditampung oleh
knapsack
sampai
knapsack
penuh atau sudah
tidak ada objek lagi yang bisa dimasukkan.
2. Greedy by weight
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(22)
t
!"#$" % " ! &'( "y
!) ) * + ',t
! , ! - .t
,t
! ) )% &' ) )" ) *) " " * / * ! ! ) ) *" " ' + " )* !" &' (" " )knapsack
-,t
) "y
! "*" # ) ! *,ut
" % , ) " &'("0 &' ( "' , ,"weight
0 + - 1) * ',u
)'tu
0 ,tu
&' ( "y
!
t
t
) * ! &#knapsack
)knapsack
*#t
u t
" &' ( "!y
!') *""-3. Greedy by density
t
!"#$" % " ! &'( "y
! ) ) * +t
2
p
3
w
4t
,' ,- .t
,t
! ) % &' ) ) " )* )" " 0 * /* ! , *t
' ,t t
,' ,- ,t
) "y
! "*" # ) % , ,&5t
, *t
2density
4 ,t
0t
&' ( "- 1 ) * &' ( "0&' ( "t
, ' */u
,ut
" % , ) *, * ' , ,"density
0 +-1) * ',u
)'tu
0 ,tu
&' ( "y
!t
t
)* ! & #knapsack
)knapsack
*#t
u t
" &' ( " !y
! ' ) * ""-) # &' ( " ' ,, " #
tu
, "t
!t
,t
!t
t
" ) () " ))' ," &* & /) - 6#" " ) * ! " "t
!t
,t
!t
,' */t
"))' ," & * &/)*)-7 (
u
, & 8 /! ,1 %" !n
= 3. Misalkan objek-objek
tersebut kita beri nomor 1, 2, 3. Properti setiap objek
i
dan kapasitas knapsack
adalah sebagai berikut:
w
1= 3;
p
1= 30
w
2= 2;
p
2= 25
w
3= 5;
p
3= 20
Kapasitas knapsack
W
= 8
Maka tabel solusi dengan menggunakan algoritma greedy adalah sebagai
berikut:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(23)
9
:; <=>;
t
?@AB > CGreedy by
i
w
Dp
Dp
D Ew
D
Weight
Profit Density
F <GHI ? @=J?K L G
M N NO MO M M M M
P P PQ MPRQ M M M M
N Q PO S O O O O
T<JL GU<A <J Q Q Q Q T< JL GV>HWJ HWXL W Q Q QQ QQ Q Q YZ[ \]^ _`ab cdbef b] ghij\c k kgc Zl Zcm ] kbnitjZon\\p q
rL;?
t
LA >G s?Lt
LIR LGX<;?t
K L X;> >st s>WXLW C>t
? XL It
;L>X?t
y
LWX LsL K >WXuLI ? GCLW I <G HI?y
L WX <= J?K LGy
L ?tu
X = {1,1,0}. Artinya objek ke
-1 dan
ke-2 dimasukkan ke dalam knapsack, sedangkan objek ke-3 tidak dimasukkan.
vw xy
ubble Sort (Exchange Sort)
Metode pengurutan ini merupakan metode yang paling umum dikenal
dalam dunia pemrograman. Kelebihan metode ini ada pada kemudahan dalam
membuat programnya. Walaupun semua metode yang digunakan akhirnya
harus mempertimbangkan tingkat efisiensinya.
Ide dasar metode
bubble sort
adalah melewatkan data dalam larik
beberapa kali. Setiap melewati larik, dilakukan perbandingan setiap elemen
sesudahnya (x[i] dengan x[i+1]) dan dilakukan penukaran antara kedua
elemen tersebut bila tidak terurut. Perhatikan contoh berikut :
25
57
48
37
12
92
86
33
Hasil iterasi pembadingan pertama akan menghasilkan :
x[0]
dengan
x[1]
(25 dengan 57) Tidak berubah
x[1]
dengan
x[2]
(57 dengan 48) Ditukar
x[2]
dengan
x[3]
(57 dengan 37) Ditukar
x[3]
dengan
x[4]
(57 dengan 12) Ditukar
x[4]
dengan
x[5]
(57 dengan 92) Tidak berubah
x[5]
dengan
x[6]
(92 dengan 86) Ditukar
x[6]
dengan
x[7]
(92 dengan 33) Ditukar
Tabel 2.2 Iterasi Pertama Bubble Sort
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(24)
z
{| } ~ | ~| | |
t
t
}| z } | | | } ~}~y
|| ||
u
u
x
[n
-iterasi] akan ada pada posisi yang benar setelah
iterasi ke iterasi. Metode ini disebut
bubble sort
karena setiap elemen lambat
seperti gelembung untuk sampai ke posisi yang benar.
Setelah pembandingan kedua, larik yang terbentuk :
25
37
12
48
57
33
86
92
Perhatikan angka 86 menempati posisi kedua tertinggi. Setiap iterasi
menempatkan setiap elemen larik ke tempat yang benar. Untuk mengurutkan
n
elemen larik, iterasi yang dibutuhkan tidak lebih dari
n
-1 iterasi.
Iterasi lengkap untuk pengurutan bubble sort :
25
57
48
37
12
92
86
33
Iterasi 1
25
48
37
12
57
86
22
92
Iterasi 2
25
37
12
48
57
33
86
92
Iterasi 3
25
12
37
48
33
57
86
92
Iterasi 4
12
25
37
33
48
57
86
92
Iterasi 5
12
25
33
37
48
57
86
92
Iterasi 6
12
25
33
37
48
57
86
92
Iterasi 7
12
25
33
37
48
57
86
92
Tabel 2.3 Iterasi Lengkap Bubble Sort
Implementasi algoritma bubble sort dalam suatu method :
m
ro
graman JAVA
void BubbleSort(int[] data){
int temp;
for(int i=1; i<data.length; i++){
for(int j=0; j<data.length-1; j++){
if(data[j]>data[j+1]){
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(25)
v
¡ ¢£ ¢¤ ¥¦ §¨ ©ª¨ §« ¤ ¦ ¨£ ª¬« y
«ª ¥t
ª¬« ®« ¬«¯ ¬® §¦§£¬t
¥¨©ª¨§¤ ¦ £ª§« °« §¦§£ ¬t
«y
¦« ª«£ ¢¤ ±¤² ¡t
u
³++.
Java dikembangkan oleh Sun Microsystem pada Agustus 1991, dengan
nama semula Oak. Konon Oak adalah pohon semacam jati yang terlihat dari
jendela tempat pembuatannya, James Gosling, bekerja. Ada yang mengatakan
bahwa Oak adalah singkatan dari “Object Application Kernel”, tetapi ada yang
menyatakan hal itu muncul setelah nama Oak diberikan. Pada Januari 1995,
karena nama Oak dianggap kurang komersial, maka diganti dengan Java.
Java merupakan hasil perpaduan sifat dari sejumlah bahasa pemrograman,
yaitu C, C++, Object-C, SmallTalk, dan Common LISP. Selain itu Java juga
dilengkapi dengan unsur keamanan. Yang tak kalah penting adalah bahwa
Java menambahkan paradigma pemrograman yang sederhana.
Java memiliki beberapa keunggulan, diantaranya (Hermawan, 2004) :
1. Java berorientasi pada objek
Dalam memecahkan masalah, Java membagi program menjadi
objek-objek, kemudian memodelkan sifat dan tingkah laku masing-masing.
Selanjutnya, Java menentukan dan mengatur interaksi antara objek yang
satu dengan yang lain.
2. Java bersifat terdistribusi
Pada dekade awal perkembangan PC (
Personal Computer
), komputer
hanya bersifat sebagai
workstation
tunggal, tidak terhubung satu sama
lain. Saat ini, sistem komputerisasi cenderung terdistribusi, mulai dari
workstation client
,
e-mail server
,
database server
,
web server
,
proxy
server
, dan sebagainya.
3. Java bersifat multiplatform
Java dapat diterjemahkan oleh Java Interpreter pada berbagai sistem
operasi. Ketidaktergantungan terhadap
platform
sering dinyatakan dengan
istilah portabilitas. Tingkat portabilitas Java tidak hanya sebatas pada
program sumber (
source code
), melainkan juga pada tingkat kode biner
yang disebut
bytecode
yang bisa dijalankan pada berbagai sistem operasi
karena kode ini berbeda dengan kode mesin.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(26)
´ ´
µ¶ µ·· ·
¶¸ ¶¹ · º¶» ¶¸¼ ½¾ ¶¸¿ ¶¸ À ¶¸º· ºÁ ½Â ÃÄ Å¶
n
ÆÇÈs
ƺÈst
Ém
ÊË ÌËÍË Î ÏÐ ÑÒ ÓÒÔ ÕÐ Ë ÖÌË × Ø Ë ÙË ÍË Î ÚË ÌËÍË Î Ù Û ÚË ÐË Ø ÛË
t
Ù ÛÎËÙËÖØË Ð Ù ÒÐÓËÐ ÖÒÔÌÜË ÍË Ð ÜÖ ÑÛÚËÌ Û ÖÒÚ ÛÍÛÎË Ð ÝÒÐÙË ÞÐt
ÞØ Ù Û ÚËÌÞØØËÐ ØÒ ÙËÍË Ú ÌÒÝÞË Î Ë ÙËÎw
y
ËÐÓ ÚÒ Ú ÛÍÛØÛ ØÒt
Ò ÔÝËt
Ë ÌË Ð ÔÞËÐÓ ÙË Ð ÙËy
Ët
Ë Ú Öu
ÐÓt
Òt
Ë Ö Û ÝÒÐ ÙËy
ËÐÓ Ë ØË Ð ÙÛÚË Ìu
ØØË Ð ØÒ ÙË ÍË Úw
Ë ÙË Ît
ÒÔ ÌÒÝÞÑ Î Ë ÔÞÌÍË Ît
Òt
Ë Ö ÙËÍËÚ ØÒË ÙË ËÐut
ÞÎ ÝÞØË Ð ÚÒ ÔÞÖË ØËÐ
ßÔË Ø Ì Û ÙËÔÛ
ÝÒÐÙ Ë
t
ÒÔÌÒÝÞÑàÊË ÌÛÐ Ó áÚËÌ ÛÐ Ó ÝÒÐ ÙË
y
Ë Ð ÓËÙË ÚÒ Ú ÛÍ ÛØÛ
ÌÒÝ ÞËÎ Ð ÛÍË Û
ÝÒÔÞÖË ÝÒÔË
t
âv
ÜÍÞÚÒâ
ÎË Ô ÓËâË
t
Ëu
ÐÛÍËÛ Í Ë ÛÐÐãËy
ËÐ Ó ÙËÖËt
ÙÛÖËØËÛ ÌÒÝËÓËÛ ÖÒÐÒÐÑu
ÙËÍ ËÚ Ö ÔÜÌÒÌ ÖÒÚÛÍ ÛÎËÐ ÐËy
à äÒ ÙË Ð ÓØËÐw
ËÙË Î ÚÒ ÚÛÍ Û ØÛ ÌÒÝÞË Î ÐÛÍË Û ØÜÐÌËÐÑËt
y
ËÐ Ó Ù Û ÚÛÍ Û ØÛÐãË ÙËÐ ÚÒÔÞÖË ØË Ð ÌÒÝÞËÎ ÖÒÚÝËË Ìt
Ù ËÍË Ú Ö ÔÜÌÒÌ ÖÒ ÚÛÍ ÛÎËÐ ÝÒ ÐÙ Ë ÞÐ ÑÞØ ÙË ÖËt
ÙÛÚËÌÞØØËÐ ØÒ ÙË ÍËÚw
ËÙ ËÎt
ÒÔÌÒÝ Þt
à ÊË ØË ÖÒÐÞÍ Û Ì ËØËÐ ÚÒÐÓÒ ÚÝË Ð ÓØËÐ ÌÞËtu
ÖÔÜÓÔËÚy
ËÐÓ ÙËÖËt
ÙÛÓÞÐËØËÐ ÞÐÑu
Ø ÚÒ ÐãÒ ÍÒÌËÛ ØËÐ ÖÒÔÚË ÌË ÍËÎË Ð Ï Ð ÑÒÓÒÔÕÐËÖÌË×ØÙË ÍËÚØË ÌÞÌ
ÖÒÐÓÛÔ ÛÚËÐ
ÝËÔË Ð Óà
åÙË ÖÞÐ ÖÔÜÓ ÔËÚ
y
ËÐÓ ËØË Ð Ù ÛÝÞËt
ÞÐ ÑÞØ ÚÒ ÐÐãÒ ÍÒ ÌË Û ØË Ð ÖÒÔÚËÌËÍË ÎË Ð Ï Ð ÑÒÓÒÔ ÕÐ Ë Ö ÌË ×Ø ÚÒÐ ÓÓÞÐ Ë ØË Ð Ë Í ÓÜÔÛt
ÚË æÔÒÒ Ùãà çÒÔËÐÓØËt
ÍÞÐËØy
Ë Ð Ó ÙÛÓÞÐËØËÐÙË ÍËÚÖÒ ÚÝÞËt
ËÐÖÔÜÓÔËÚÛÐ Ûy
Ë Ûtu
èÒt
éÒ ËÐ Ìv
ÒÔ ÌÛêàêàÃÄëìÉ
butuhan Sistem
íËÍ Ë ÚÖÒ ÚÝ ÞË
t
ËÐî ÞÓË Ì åØÎ ÛÔÛÐ Û ÖÒ ÐÞÍÛÌ ÚÒÐÓÓÞÐ Ë ØË Ð ÖÒ ÔË Ð ÓØËt
ÍÞÐËØ è Òt
éÒË Ð Ìv
ÒÔÌ Û êàêà äÒ ÍËÛÐ Ûtu
ÖÒÐÞÍ Û Ì ïÞÓË ÚÒÐ ÓÓÞÐËØËÐ ÖÒÔË Ð ÓØËt
ØÒ ÔËÌy
Ë Ð Ó
t
ÒÔÙ Û ÔÛÙË Ô Ûð
ç ÔÜ× Ò Ì ÌÜÔ ðÏÐ ÑÒ ÍñÒ ÍÒÔÜÐÊ
Memory
ð´òó ôÊÝ
õ æå ðö ê÷ÊÝ
ÊÒÙÛËçÒ ÐãÛ ÚÖËÐË Ð ðHard disk
ÊÒÙÛËÊË ÌÞØËÐ ðKeyboard
äy
Ìt
Ò ÚøÖÒ ÔËÌ Û ðù ÛÐÙÜú ÌXP
11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(27)
ûü
ýþýÿ
r
cangan
t
t
y
y
tu
interface
3.3.1 Perancangan Proses
y
t
t
t
y
t
t
!" #$ %&'( ) # !*+ , - ./ 0
1 û
t
t
t
t
23t
ut
3
t
t
u
t
t
y
t
2 3!" #$% 4'( )# !56 7 #' t 8. 9.6&
1ü
t
t
üy
tu
t
t
t
t
:t
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(28)
;<
=> ?@ ABACD> B@ EAFA
t
AG @H ?AID> B At
FA CG @H ?A I=>u
CJ@ CKACIAL M ?FABMEB NL > L E> COABM A C L N ?@LMP QCJ@ = EB NL> L H > CAHEM?=A C I ALM ? HAL @ = =AC CRA D> B AL A? F AB M EB NL >L E>COAB MAC L N?@ LMy
AMtu
FAt
A Gu
H ? AI D>BAt
F AC G @H?AI =>@CJ@CKA CP S> FACK=A C F At
A =>?@ ABAC CRAy
AMtu
FAt
A G@ H? AI D>BAt
FA C =>@CJ@CKA CPTUVW UXY ZY[ \ U]X UV^_ ` X[ UUt abc b_d
e AFA K AH D AB <P< H>CG>? AL =A C DAIf A EA FA EB NL >L E> CO ABMA C L N ?@L M geB NL > L ; F A? AH hih j>
v
>? ;k FM E> O A I H > CG AFM < EB NL > Ly
AMtu
EB NL > L E> COABM A C L N?u
LM H>CKKu
CA =A C lB>> FR DR EB NmMt
n EB NL > L E> COABM A C L N?@L M H >CKoKu
C A=A C lB >>FR Dy w
> MK IJn FAC EB NL >L E>CO ABMAC L N?@ LM H >CKK@ CA =A ClB >>FRDRF> CL MPty
pq rs
l
goritma Program
i?KNBM
t
H A E> HKBNK B AH A C L A CKAt
E>CJMCK @ CJ@= FM D@ At
=AB>CA A=A C H > H E>BH @ F AI F A?AH EBNL > Lcoding
n =AB> C A F>CKA C H>CKK@ CA =A C A?KNBMt
HA =Mt
A FA EAt
H> CK>t
AI@MG A? AC CRA EB NL >L
y
A CK A =A C =Mt
A D@ At
P QCJ @ =A ?KNBMt
H A EB NK B AH FA ?AHt
@K AL A= IMB MCM H > CKK@CA= AC A ?KNBMt
H A lB> > FRy
A CK H > H E@ CRAMt
MK AE> C F> =At
A Cny
AMtu
t
Greedy by profit
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(29)
uv
Greedy by weight
Greedy by density
wxy
.1 Algoritma Greedy By Profit
z {|} ~
t
Greedy by profit
{~ { ~ { u } ~~ {t
y
{ ~{ { {
t
{} ut
{ t
{ t
} ut
~{ ~ {p
{ {
{ { ~ {w
+knapsack dengan W.
o
Jika
w
+knapsack <= W, maka
w
akan dimasukkan ke
dalam knapsack.
o
Jika
w
+knapsack > W, maka
w
tidak akan dimasukkan ke
dalam knapsack.
Menampilkan hasil.
Selesai
3.4.2 Flowchart Algoritma Greedy By Profit
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(30)
¡¢£t ¤ ¥ ¦t §§¨y ©y ª «¦t ¬®
.3 Algoritma Greedy By Weight
¯ °±² ³´ µ¶· ¸¹
t
º´» ¸¼¼½¾¿ ¾w
¼¹¶À ±µ´°¶³´ À Áµ´ °¶ ³´ À °¾´´½´ µ´À à Ĵ Å ² ³³´ °½´´t
y
´°¶´ ³´°½¹·µ´ ÀÃÆ Ã Ç¸· Å ¼Åȼ °¶· µ´ À´°½´
t
´ Ã
Ǹ· Å ¼Å ȼ °¶² ¸ut
´ ° ½´t
´ ½¹ º´°´ ½´t
´ ½¹² ¸ut
³´ ° ¿¼¸½´ Å´ ¸ ³´ °w
Å ¼É´¸´´Åɼ °½ ¹°¶ Ã
Ǹ· Å ¼Åº¼º¿´°½¹°¶ ³´ °Ê+knapsack dengan W.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(31)
ËÌ
o
Í ÎÏÐw
+knapsack <= W, maka w akan dimasukkan ke
dalam knapsack.
o
Jika w+knapsack > W, maka w tidak akan dimasukkan ke
dalam knapsack.
Menampilkan hasil.
Selesai
ÑÒÓ
.4 Flowchart Algoritma Greedy By Weight
Gambar 3.5 Flowchart Algoritma Greedy By Weight
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(32)
ÔÕ
Ö×Ø
.5 Algoritma Greedy By Density
Ù ÚÛÜ ÝÞ ßàá âã
t
äÞGreedy by density
ßÞÚàÝÞ å æ ßÞÚà ÝÞåÚçÞÞèÞ ßÞ åé Ôê ëÞ ì Ü ÝÝÞ ÚèÞÞt
y
ÞÚàÞ ÝÞÚèãáßÞ åíê ëîÚàåã
t
ÜÚàÚ ãßÞãèîÚì ãty
=
p
/
w
.
3. Proses pengolahan data.
Proses pengurutan data dimana data diurutkan berdasarkan
density secara descending.
Proses membandingkan
w
+knapsack dengan W.
o
Jika
w
+knapsack <= W, maka
w
akan dimasukkan ke
dalam knapsack.
o
Jika
w
+knapsack > W, maka
w
tidak akan dimasukkan ke
dalam knapsack.
Menampilkan hasil.
Selesai
3.4.6 Flowchart Algoritma Greedy By Density
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(33)
ïð
ñòóô òõö ÷øùú û üýþ òõt ÿ ú û õtóòñõ y y ty
r
cangan Interface Program
tw
y
t
t
!
t
" #$#$ % & ' ()(t
'*
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(34)
+,
-./
.1 Form Menu Awal
0123 145 67894 2:;< =>w1? @A BAC DE FG HG
t
IE BA JAt
Kt
D FL DM Ny
AGtu
O
PDF LDMQAR ST OUHVS TFI FAHWWG MXDE FUt
AFAY
PDF LDMZI Mu
A E OUHVS TTI Mu
A EBAE GJEDWEA FY
PDF LDM[ HC DE FARG OUHVS TFI FAHWWG MXDE F[ H C DE FARG@E DWEAF3.5.2 Form Menu Utama
0123 145 6\894 2:;< =]t12 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(35)
^_
`a bac de fg hg
t
ie ba jat
^t
d fk dl my
agtu
n
o d fk dlpifka lg nq hr sttif kal gtiu de fvw
a l
o d fk dl` e dwiw nq hr stfilatstahje dwiwdjrg fgwawgfihxxs ha ta hvlxdeg
t
fayeiibz{`a ba c de f ghg m bgwiki la | t geg
t
i e bajat
t dldf }t dldf shrst fifawstt a hbat
ay
a hxa ta hbgje dwiwbahy
a hxbgwi kila|taha hshr st fiha fjglta h|awg lbae gdjrgfa lgwawg{~
.3 Form Menu Informasi Program
`a bau de fg hg
t
i e bajat
^t
df kdl ma gy
tu
n
o d fk dlpi f ka lg nq hr sttif kal gtic de fihsvw
al{
o d fk dlpilu
a e nq hr stti lu
a ebae gjedxea f{PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(36)
¡¢£¤ ¥£ ¦§ ¨
m
plementasi Program
©ª «ª ¬ ®¬¯°ªª ±
t
²³ ´²ª ¬µ ±µ¬®±´´° ±ª¶ª± ¯ª·ª ¸ ª ®¬²³ ´² ª ¬ª ± ¹ º»º ¼ª ± ¬® ±´´° ±ª¶ª± ®²ª ±´¶ªt
«° ±ª¶ ½®t
¾®ª ±¸ ¿À ¿À ½®t
¾®ª ±¸ µ±µ ¼µ ´ °±ª¶ª ± °±Á°¶ ¬®¬¯°ªt
²³Â®Ãt
²³ ´²ª ¬y
ª ± ´ ¼µ ¯° ªt
¼ª± ¼µ ´° ±ª¶ª ± ° ´ª °±° ¶t
¬ ® ±Âª«ª±¶ª±²³ ´²ª ¬y
ª ±´t
® «ª ·¼µ¯°ªt
ÀĪ¬ ¯ª ²ÅÀÆÇÈÉ Ê Ë ÇÌͩν®
t
¾®ª±¸¿À ¿À4.1.1 Tampilan Menu Awal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(37)
Ï Ï
ÐÑÒÓ ÑÔÕ Ö×ØÙÚÛÜwÑÝÞ Ôß àÔ ÑÒ
áâ ãâ äå æç â
w
â è é æét
å ê ãâ ëât t
é ìât
í äî íèy
âétu
t
íä îí è ï æðí áê íìêâäñ òâ ó ç ôñ ãâæ õå èçâê ö ÷æøç ôt
í äîíè ïæðí ëê íìê â ä âôâæ äå äâ æ ììéè èây
åê é æðíê äâ óét
å æø â æ ì âëèé ôâ óéäâ óâ èâù ôæâ ëóâúô äå æ ììç æâ ôâæ â è ìíê é
t
äâ ìê ååãû é æéö ÷æø ç ôt
íä îí è òâó çô âôâæ äå äâ æ ììéèt
â ä ëéèâæ äåæç âäâöut
üå ãâ æìôâ æ çæøçôt
íä îíè õåèçâ ê ãéìç æâ ôâ æç æt
ç ôôå èu
âêãâê éëê íìê â äéæéöýþÿ
.2 Tampilan Menu Informasi Program
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(38)
! " #$ # % $" &$ '' $ #'!
t
' () *u
't
"t
t
! ! #y
tu t
! !# +#u
t
! !# + #) , ! !# $ # ' $ -$$#u
" !') .'$t
! ! #+ #' $ -$ $ # $w
#)/01
.3 Tampilan Menu Utama
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(39)
23
4567 589 :9;<= >?t565
@A BA C DE F
ut
A CA GEGt
DHBA IAt t
G JAt
KC L KMy
AGtu t
KCLKM NDMFA HO NDC LAM G BAE @ HKP DPQ R KC L KM S DMAHu
BGJFEASAE FET FS S DMu
A H BAHG IH KJ HA C Q RKCLKM NDCLA MG BGJ FEA SA E FET FS S DCLAMG S D C DEF Aw
AMQ UD BAE JSA Et
KCLKM@ HKP DPBGJFEA SAEFE T FS CDCIHKP DPBAt
ABAECDEVAHG P KMFP GK ITG CAMQWG BA MAC CDE F
ut
ACA XFJAt
D HBAIAt
LD LD HA IA SKM KC FET FS CDCA P FSS AE BAt
Ay
AEJ A SAE BGIHKPDPQ YETFS CDC AP FS SAE BAt
A ZAHFP CDEVDETA EJVZDVS LK[t
DHM D LGZBA Z FMu
P F IAy
ASKMKCCDEXABGDE A LM D BA E LG P AC DEJG P GS KM KCt
DHP DLFT Q\]^
.4 Tampilan Menu Peringatan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(40)
_`
abcd bef ghijklm jen k obtbk
p qr s t quvr wx
t
xr vr v x yxr zsr { s| } vyx yx tx ~ vt
x ~ r xt~ x{y q|zu
vv ~ v r syyq| sx ux uvzqr svr v{ systy| v yt
z | PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(41)
n
s
o
gram
¡¢ £¤¥ ¦¥£§¥ ¨ ©¥ ¦ ª«
u
¬ ª ®¯¥° ±£ ®²£¥ ³ ª¨ª ¦¢ ¥ £¥ §¢¦¢« ´ £´ ©¥¨ ¤¥±¥t
¯¢ §¢£¬¥ ¤ ¢¨ ²¥¨ ¯¥ ª § ¤¥ ¨ ¤¥ ±¥t
³¢³ ¯¥ ¨µu
±£®¦¢ ¦ ±¢ ³ ª«ª© ¥¨ ¯¥ £¥¨² ¨µ´ §u
³ ¢ ¨²© ¥ ¦ ª«§¥ ¨§¢ ´¨µ´¨ ²¥¨³¥ §¦ ª³¥ «¶·¤¥ ±´¨ §¢ «¢ ¯ ª© ¥¨ ¤¥ ¨ §¢ §´ £¥ ¨²¥ ¨ ¤¥£ª ±£®²£¥ ³ ª¨ª ¥¨µ¥ £¥ «¥ª¨ ¦¢¯¥²¥ª ¯ ¢ £ ª§´µ
¸
5.1.1 Kelebihan
¹£®² £¥³ª¨ ª¤¥ ±¥t
¤ª²´¨¥§¥ ¨´ ¨µ´§³¢¨ ¥£ª¦ ®«´¦ª®±µª³ ¥ «¶
·«²® £ªt
³¥ º £¢ ¢¤ » ¤ ¥ ±¥t
¤ ª²´¨¥§¥ ¨ ´ ¨t
´ § ³¢¨ »¢« ¢ ¦¥ª§¥¨ ³¥¦¥« ¥© ¼½¾ ¿¨¥ ± ¦¥§¶
¹£®² £¥³ ª¨ª ¦¥ ¨²¥t
¦ ¢ ¤¢£©¥ ¨¥ ¦¢ ©ª¨²²¥ ¤¥±¥t
¤¢ ¨²¥¨ ³´ ¤¥© ¤ ª²´ ¨¥§¥¨¶5.1.2 Kekurangan
À¨µ´§³¢ ³ ¥ ¦´ § §¥¨¤ ¥¥¨»¥t
³¥¦ ª©¦¢ ¥£¥ ³¥¨ ´¥«¬ ¥ ¤ª¯ ª ¦¥ ¦¥¬¥t
¢£¬ ¥ ¤ª §¢ ¦¥«¥ ©¥ ¨¦¥¥¨³¢ ³¥ ¦´ §§¥¨¤¥¥¶t
À¨µu
§¯¢¯ ¢ £¥±¥±¢£®¯¥ ¥¨¦ ®«´¦ªy
¥ ¨²¤ ª© ¥ ¦ ª«§¥ ¨t
ª¤¥§¦¢ «¥«u
® ±µª³¥ «¶
¿¢« ´¥ £¥¨y
¥¨ ² ¤ª©¥¦ ª«§¥¨ ³ ¥ ¦ ª© ¯ ¢ £¤¥ ¦¥£§¥ ¨ ±¥¤ ¥ ¦t
£¥t
¢² ªy
¥¨² ¥ ¤¥ ±¥¤ ¥ ¥« ²®£ªt
³ ¥ º £¢ ¢¤ »° ¦¢© ª¨²²¥ ±¢ ³¥§¥ ª ³¥¦ª© ©¥£´ ¦ ³¢ ¨»¢ «¢§¦ ª ³¥ ¨¥¤¥£ª§¢t
ª²¥§¢ «u
¥£¥¨ªtu y
¥ ¨²³¢ ¨²© ¥ ¦ ª«§¥ ¨¦ ®« ´ ¦ ª®±µª³¥ «¶
5.2 Hasil Pengujian Program
¹¥¤¥¥ ©¥ ±
t
u
¬ª ®¯ ¥±£®²£¥ ³¤ ª²´¨¥§¥ ¨¯¢¯¢ £¥ ±¥³ ¥¦´§¥ ¨¤ ¥t
¥y
¥ ¨²¥§¥¨ ¤ª ±£®¦¢¦¶ ¡¢£ª§´µ ª¨ª ¥ §¥¨ ¤ ªt
¥ ³ ±ª« §¥¨ ©¥¦ª« ¤¥£ª ±£® ¦¢ ¦ ±¢¨ ¥£ª¥ ¨ ¦®«´ ¦ ª ® ±µª³ ¥«³¢ ¨²²´¨¥§¥ ¨¥ «²® £ªt
³¥º £¢¢ ¤»¶
¹¢¨²´¬ª¥¨±¢£t
¥ ³¥¸ Á´ ³« ¥©¤¥t
¥= 10
Kapasitas knapsack = 139
26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(42)
ÂÃ
ÄÅÆ ÇÈ Å
t
ÉÆ ÊË ÈÌ Í ÅÈ ÈÎÏÊÏÉ
w
Ç ÇÐw
ÄÅÆÑÉt
ÒÉÈÓÔ Õ ÖÈ×ØÉty
ÙÆ ÚÛØÉ ÜÇÕÉÝ Þ Ú
ß à á ß â Âá ã ß ß ã
Â Ã ß ã ß âà ä ã ß ß ß
ä å æ ß âä à ß ß ß ß
à Âß ßç ãâçã ã ß ã ß
á ßà Âã ß âßæ ß ß ß ß
å äá à ã ß âß à ß ß ß ß
à à  àß ãâçæ ß ã ã ß
æ ßß ßä ß âßæ ã ß ß ß
ç äç
à ã ß â ã Â ß ã ß ã
ßã Âæ Âá ãâæç ã ß ã ã
èÆÕÞ ÚÊÆ ÊÆÕ ßäç ß Âç ßßç ß äç èÆÕÞ ÚÌ ÈÛ× ÕÛ×ÓÞ× ßàç ßà ã ßäå ß áß
éêë ìíî ïðñ êòóíôìõ ö÷ø óêõôìùtêúê ÖÉÚÉÔÞ
t
ÎÞ ÅÉ
t
Þ ÊÚ ÈÎÉÞt
ÞØâÇÞ ÎÞ
ÇÈ× ÓÛËÉÞ×
ÇÈ Å
t
Þ ÝÞÎÈ×ÓÞ× Ø
t
ÅÞt
ÈÓÉ ÊÏ
ÇÅÆÑÉ
t
t
ÆÕÞ Ú ÊÆ ÊÆ
t y
Þ×Ó ÎÞÇ Þt
ÎÉt
ÞÝ ÇÛ×Ó Þ ÎÞÚ ÞÔ ßäç Î È×ÓÞ× ÌÈÛ×ÕÛ× ÓÞ× ßàç û ÖÈ×ÓÞ× Øt
Å Þt
ÈÓÉ ÊÏw
È ÉÓÔÕt
ÆÕÞÚ ÊÆÊÆÕy
Þ×Ó ÎÞ ÇÞt
ÎÉt
ÞÝ ÇÛ× Ó Þ ÎÞ ÚÞÔ ßÂç Î È× ÓÞ× Ì ÈÛ× ÕÛ×ÓÞ× ßàã ÎÞ× ÎÈ×ÓÞ× Øt
ÅÞt
ÈÓÉ ÊÏ ÎÈ× ØÉty t
ÆÕÞ Ú ÊÆÊÆÕy
Þ×Ó Î ÞÇ Þt
ÎÉt
ÞÝ ÇÛ×Ó Þ ÎÞÚÞÔ ßßç ÎÈ×ÓÞ× ÌÈÛ× ÕÛ×ÓÞ× ßäåû ÙÈ ÎÞ×ÓÌÞ× ØÆÚÛØÉ ÆÇÕÉ Ý Þ Ú Û× ÕÛ Ì ÇÈ×ÓÛ ËÉÞ× ÇÈ Åt
Þ ÝÞ É×É Þ ÎÞÚÞÔX={0,1,1,1,1,1,1,1,0,0}
dengan total bobot 139 dan total keuntungan 151. Jadi ketiga strategi dari
algoritma Greedy ini tidak menghasilkan solusi optimal.
Pengujian kedua
Jumlah data = 5
Kapasitas knapsack = 37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(43)
üý
þÿ ÿ
t
ÿ
w
w
þÿt
ty
ü
ü ü
!
" ü
"
#$% &'( )*+ $,-'. &/ 01 % $$23 &4 5 $
t
ÿt
t
t
ÿt
ÿt
t
y
t
t
6
t
ÿt
w
t
y
t
t
ü
t
ÿt
y
ty t
y
t
t
6t
ÿ7X={1,1,1,0,1} dengan total
bobot 36 dan total keuntungan 61. Jadi strategi dari algoritma greedi yang
menghasilkan solusi optimal adalah Greedy by profit dan by density.
Sedangkan Greedy by weight tidak menghasilkan solusi optimal.
Pengujian ketiga
Jumlah data = 6
Kapasitas knapsack = 180
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(44)
89
:;< => ;
t
?< @A >B C ;> >DE@E?
w
= =Fw
:;<G?t
H?>IJ K L>MN?ty
O< PQN? R=K?S T P
U V W X W U Y Z U U U U
8 ZV ZV U W U U W
[ \W V W WY][ U W W U
Z X W XV U Y WX U W U U
V [W [U U Y W[ W U W W
\ 9V V W WYV\ W W W W
^<KT P@< @<K U]W U 8V U\V U]W ^<KT PB >QMKQMITM U9V U Z\ U9W U 9V
_`abcdefg `hi cjbk lm a ``nobtip `
L?P?JT
t
DT ;?t
T @P> D?Tt
TNY =T DT = >MIQ A?TM B >t
?IT D >MITM Nt
;Tt
>I? @E = ;<G?t
t
<KT P @< @<
t y
TMI DT= Tt
D ?t
T S=QMI T DT PTJ U]W D >MITM B>QMKQMITM U9Vq L>MITM Nt
; T
t
>I?@E
w
> ?IJK
t
<KTP @<@<Ky
TMIDT =T
t
D?t
TS =QMIT
DT PTJ U8V D >MITM B >QM
t
QMITM U Z\ DTM D>MITM N;Tt
t
>I? @E D>MN?ty t
<KT P @<@<Ky
TMI D T= Tt
D?t
TS =QMI T DTPTJ U\V D>MITM B>QMKQMITM U9 Wq O> DTMIBTM N< PQN? <=K? S TP QM KQB = >; STNTPTJTM D? Tt
TN TDTPTJX={1,0,1,1,0,0} dengan total
bobot 180 dan total keuntungan 195. Jadi strategi yang menghasilkan
solusi optimal adalah strategi by profit, sedangkan strategi by weight dan
by density tidak menghasilkan solusi optimal.
Pengujian keempat
Jumlah data = 7
Kapasitas knapsack = 55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(45)
rs
tuv wx u
t
yv z{ x| } ux x~zy
w
w ww
tuvyt
yx xyty
v y w y
s s s
s r s s
r s
s s s s s s
rs
r r
s
v zv zv
v | x
¡¢£ ¤ ¥ ¦§ ¨© ª« t
yy
t
~u yt
z x~ yt
w ~w x{y u
|x x wt
~xt
ut
xyzwuvyt
t
v zvzvy
~ wt
~ yt
w ~ ~x | x ¬ x t
ut
xy zw
xyt
v zv zvy
~ wt
~yt
w ~ ~ x |x ~ ~x t
u
t
xyz
~xy
ty t
v zv zvy
~ w t
~ yt
w
~
~x |x ¬ x~ | v y vw y | wxu ~y
t
~X={0,1,1,0,1,1,1} dengan total
bobot 55 dan total keuntungan 82. Jadi strategi yang menghasilkan solusi
optimal adalah strategi by profit, sedangkan strategi by weight dan by
density tidak menghasilkan solusi optimal
.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(46)
®
¯° ¯±²
³ ´µ² ¶ · ¸¹°º»°ºµ°¼°º ½¾ ¿³À
s
Ám
pulan
ÂÃ ÄÅÆ ÇÆÄÈÆ É ÅÆ ÄÊ ËÆÇ ÊÌ ÍÎÊ Ï ÐÑÆ ÒÄ ÐÓÄÆ Ô
y
ÆÉÓt
ÃÌÆ Ë Å ÊÌÆÈÍÈÆÉÕ ÅÆÒÆt
ÅÊÇ ÊÔ ÒÍ ÌÈÆ ÉÑÆËÖÆ×®Ø ÙÌÓÐ ÄÊ
t
ÔÆÚÄÃÃ ÅÛÅÆÒÆt
Å ÊÊ ÔÒ Ìà Ôà ÉÜÆ Ç ÊÈÆÉÍÉÜÍÈÔà ÉÛÃÌÃÇÆ Ê ÈÆÉÔÆÇÆÌÆ Ë ÝÉÜÃÓÃÄÞÉ Æ Ò ÇÆ ÏÈØßØ ÙÌÓÐ ÄÊ
t
ÔÆÚÄÃ ÃÅÛ
t
ÊÅ Æ È ÇÃ ÌÆÌ
u
ÔÃ É ÓË Æ Ç ÊÌ ÈÆ É Ç ÐÌÍ Ç ÊÐÒÜÊÔÆÌ
ÈÆÄÃ ÉÆ ÒÆÅÆ ÇÃ
t
ÊÆ ÒÌÆ É ÓÈÆ ËÉÛÆ
Æ ÌÓÐÄÊ
t
ÔÆÚÄÃÃ ÅÛ ËÆ ÉÛÆ
ÔÃ Ô ÊÌ ÊË ÑÃ ÄÅÆ ÇÆÄÈÆ É ÈÃ ÍÉÜÍÉ ÓÆ É
t
ÃÄÑÃÇÆ Ä Æt
Æu
ÑÃÄÆt
ÒÆÌÊÉ Ó ÄÊÉ ÓÆ É Æt
Æu
ÅÃÉÇ Êty
ÒÆ Ì ÊÉ Ó ÑÃ ÇÆÄt
Ã Ä Ìà ÑÊËÅ ÍÌ
u y
ÆÉÓÆÈÆ ÉÅ ÊÔÆ Ç ÍÈ ÈÆÉÈÃ ÅÆÌÆÔw
Æ ÅÆ ËØ6.2 Saran
ÙÅÆÒÍÉ ÇÆÄÆ É ÆÉÓ
y
ÒÃÉ ÍÌ ÊÇ ÇÆ Ô ÒÆÊÈÆÉ ÇÃÃ ÌÆ Ët
ÒÃÔÑ ÍÆt
ÆÉ ÆÒÌÊÈÆ Ç Ê ÊÉ Ê Æ ÅÆÌÆ Ë×
®Ø àÃÉ ÆÔ ÑÆ Ë ÈÆ É áÆÇÊÌ ÊÆÇ
t
”s
ave
” sehingga pengguna dapat menyimpan data
masukan dan hasil proses optimalisasi yang telah dilakukan.
31
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(47)
âã
ä åæç åèé êëç åì å
íî ïðñò óô ïõö÷ò ãø øùò
Dasar Pemrograman JAVA 2 – Ed. II
ò úû üýîþ îñt
îò óÿ ïðt
÷îñ
t
ît
ðò ñ ðò ÷ ò õîñt
ûò ññòy
÷ò ðûÿ ûò ûð öûò ÷òãø øò
Pemrograman
GUI Swing Java Dengan NetBeans 5
òú ûüý îþ îñt
îòóÿ ïðt
÷îñ
t
ît
ðòñ ðò÷ òõîñt
ûòññy
ò÷ò ðûÿ ûòû ðö ûò÷ò ãøøòJava 2 SE dengan
JBuilder
òúûüý îþ îñt
îòóÿïðt
÷ñûïð þ ÿ ðþ ÿûñî
t
ðþîò ãø øòModul Praktikum Algoritma dan Struktur Data
1
òúûüy
îþ îñt
î÷ñî
w
îÿò ÿ ÿýò ãøøùòMenguasai Java 2 dan Object Oriented Programming
ò úûüý îþ îñt
îòóÿ ïðt
÷îñî
y
t
ðò ãøøòOptimasi Strategi Algoritma Greedy Untuk Menyelesaikan
Permasalahan Knapsack 0-1
÷óÿ ïý ðîþûÿ ûòñî
ty
ûòãøøòEksplorasi Algoritma Brute Force, Greedy dan
Pemrograman Dinamis pada Penyelesaian Masalah 0/1 Knapsack
÷ ñîîÿ î îîñy
îòu
îî ï÷ò ÿüü õö ðîþûÿûò õ öðty
û÷ò îu
ðò üõ÷òõÿ ðñò ðÿî öï ð÷ò
Eksplorasi Algoritma Brute Force, Greedy, dan
Dynamic Programming untuk Persoalan Integer Knapsack
òîÿ ïõÿü÷ õÿ ðñòðÿî öïðòãøøùòDiktat Kuliah IF2251 : Strategi Algoritmik
÷PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(48)
! " #$%&#% '( ()
n
u Awal
/*
* MenuAwal.java *
* Created on March 11, 2013, 1:00 PM */
package design; /**
*
* @author Tommy */
public class MenuAwal extends javax.swing.JFrame { /** Creates new form MenuAwal */
public MenuAwal() { initComponents(); }
/** This method is called from within the constructor to * initialize the form.
* WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() {
jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); InfoProgram = new javax.swing.JButton(); Masuk = new javax.swing.JButton(); Keluar = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Menu Awal");
setResizable(false);
jPanel1.setBackground(new java.awt.Color(255, 85, 85)); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel1.setText("APLIKASI MASALAH KNAPSACK"); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel2.setText("MENGGUNAKAN ALGORITMA GREEDY"); InfoProgram.setText("Info Program");
InfoProgram.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { InfoProgramActionPerformed(evt);
} });
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(49)
*+
Masuk.setText("Masuk");
Masuk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MasukActionPerformed(evt);
} });
Keluar.setText("Keluar");
Keluar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { KeluarActionPerformed(evt);
} });
jLabel3.setIcon(new javax.swing.ImageIcon("D:\\tom's dokumen\\Knapsack\\src\\untitled.JPG"));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING)
.addGroup(jPanel1Layout.createSequentialGroup() .addGap(70, 70, 70)
.addComponent(jLabel1))
.addGroup(jPanel1Layout.createSequentialGroup() .addGap(46, 46, 46)
.addComponent(jLabel2))
.addGroup(jPanel1Layout.createSequentialGroup() .addGap(85, 85, 85)
.addComponent(jLabel3))
.addGroup(jPanel1Layout.createSequentialGroup() .addGap(21, 21, 21)
.addComponent(InfoProgram) .addGap(41, 41, 41)
.addComponent(Masuk) .addGap(41, 41, 41) .addComponent(Keluar)))
.addContainerGap(37, Short.MAX_VALUE)) );
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap() .addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel3)
.addGap(17, 17, 17)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(50)
,-.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(InfoProgram) .addComponent(Masuk) .addComponent(Keluar)) .addContainerGap()) );
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack();
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize(); java.awt.Dimension dialogSize = getSize();
setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height-dialogSize.height)/2);
}// </editor-fold>
private void MasukActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
MenuUtama mu = new MenuUtama(); mu.setVisible(true);
this.dispose(); }
private void KeluarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
System.exit(0); }
private void InfoProgramActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
InfoProgram ip = new InfoProgram(); ip.setVisible(true);
this.dispose(); }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(51)
./
/**
* @param args the command line arguments */
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
new MenuAwal().setVisible(true); }
}); }
// Variables declaration - do not modify private javax.swing.JButton InfoProgram; private javax.swing.JButton Keluar; private javax.swing.JButton Masuk; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; // End of variables declaration }
0
n
fo Program
/*
* InfoProgram.java *
* Created on April 23, 2013, 1:03 PM */
package design; /**
*
* @author Tommy */
public class InfoProgram extends javax.swing.JFrame { /** Creates new form InfoProgram */
public InfoProgram() { initComponents(); }
/** This method is called from within the constructor to * initialize the form.
* WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(52)
12
jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); Kembali = new javax.swing.JButton(); jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Informasi Program");
setResizable(false);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel1.setText("INFORMASI PROGRAM");
jTextArea1.setBackground(new java.awt.Color(255, 85, 85)); jTextArea1.setColumns(20);
jTextArea1.setEditable(false); jTextArea1.setRows(5);
jTextArea1.setText("* Aplikasi ini digunakan untuk mencari solusi optimal
menggunakan algoritma\nGreedy.\n\n* User harus memasukkan data berupa berat dan keuntungan yang akan\ndicari solusi optimalnya.\n\n* Aplikasi pencarian solusi optimal ini mempunyai 3 keluaran berdasarkan\nstrategi dari algoritma Greedy yang masing-masing keluaran itu berisi :\n > Data Total Bobot\n > Data Total Keuntungan\n > Data Barang yang diambil (ditampilkan nomer data)");
jScrollPane1.setViewportView(jTextArea1);
jPanel1.setBackground(new java.awt.Color(255, 85, 85)); jLabel2.setText("Dibuat oleh :");
jLabel3.setText("Yohanes Tommy Gratsianto"); jLabel4.setText("065314035");
jLabel5.setText("TI - FST - USD"); jLabel6.setText("@2013");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING)
.addComponent(jLabel2) .addComponent(jLabel3) .addComponent(jLabel4) .addComponent(jLabel5) .addComponent(jLabel6))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(1)
gh
} }
TotBeratWeight.setText(""+knapsack); TotKeuntunganWeight.setText(""+profit); NoBarangWeight.setText(nomerBarang); }
private void GreedyByDensity(){
int b1 = Integer.parseInt(Berat1.getText()); int b2 = Integer.parseInt(Berat2.getText()); int b3 = Integer.parseInt(Berat3.getText()); int b4 = Integer.parseInt(Berat4.getText()); int b5 = Integer.parseInt(Berat5.getText()); int b6 = Integer.parseInt(Berat6.getText()); int b7 = Integer.parseInt(Berat7.getText()); int b8 = Integer.parseInt(Berat8.getText()); int b9 = Integer.parseInt(Berat9.getText()); int b10 = Integer.parseInt(Berat10.getText()); int b11 = Integer.parseInt(Berat11.getText()); int b12 = Integer.parseInt(Berat12.getText()); int b13 = Integer.parseInt(Berat13.getText()); int b14 = Integer.parseInt(Berat14.getText()); int b15 = Integer.parseInt(Berat15.getText()); int k1 = Integer.parseInt(Keuntungan1.getText()); int k2 = Integer.parseInt(Keuntungan2.getText()); int k3 = Integer.parseInt(Keuntungan3.getText()); int k4 = Integer.parseInt(Keuntungan4.getText()); int k5 = Integer.parseInt(Keuntungan5.getText()); int k6 = Integer.parseInt(Keuntungan6.getText()); int k7 = Integer.parseInt(Keuntungan7.getText()); int k8 = Integer.parseInt(Keuntungan8.getText()); int k9 = Integer.parseInt(Keuntungan9.getText()); int k10 = Integer.parseInt(Keuntungan10.getText()); int k11 = Integer.parseInt(Keuntungan11.getText()); int k12 = Integer.parseInt(Keuntungan12.getText()); int k13 = Integer.parseInt(Keuntungan13.getText()); int k14 = Integer.parseInt(Keuntungan14.getText()); int k15 = Integer.parseInt(Keuntungan15.getText()); if (b1 != 0){
d1 = k1/b1; }else { d1=0;} if (b2 != 0){ d2 = k2/b2; }else { d2=0;} if (b3 != 0){ d3 = k3/b3; }else { d3=0;} if (b4 != 0){ d4 = k4/b4; }else { d4=0;} if (b5 != 0){ d5 = k5/b5; }else { d5=0;}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(2)
ij
if (b6 != 0){ d6 = k6/b6; }else { d6=0;} if (b7 != 0){ d7 = k7/b7; }else { d7=0;} if (b8 != 0){ d8 = k8/b8; }else { d8=0;} if (b9 != 0){ d9 = k9/b9; }else { d9=0;} if (b10 != 0){ d10 = k10/b10; }else {
d10=0;} if (b11 != 0){ d11 = k11/b11; }else {
d11=0;} if (b12 != 0){ d12 = k12/b12; }else {
d12=0;} if (b13 != 0){ d13 = k13/b13; }else {
d13=0;} if (b14 != 0){ d14 = k14/b14; }else {
d14=0;} if (b15 != 0){ d15 = k15/b15; }else {
d15=0;}
int W = Integer.parseInt(Kapasitas.getText());
String dataN[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"};
int dataB[] ={b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15}; int dataK[] ={k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15}; double dataD[] = {d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15}; BubbleSort.BubbleSortDensity(dataN, dataB, dataK, dataD);
int knapsack=0; int temp = 0; int temp1 = 0; double temp2 = 0; int profit = 0; double density = 0; String nomerBarang = "";
for (int i = 0; i < dataB.length; i++) { if (knapsack+dataB[i] <= W) { temp = dataB[i];
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(3)
k k
temp1 = dataK[i]; temp2 = dataD[i];
knapsack=knapsack+temp; profit = profit+temp1;
density = density+temp2; if(dataB[i] != 0){
nomerBarang = nomerBarang+" "+dataN[i]+",";} } else{
temp = 0; temp1 = 0; temp2 = 0; }
}
TotBeratDensity.setText(""+knapsack); TotKeuntunganDensity.setText(""+profit); NoBarangDensity.setText(nomerBarang); }
/**
* @param args the command line arguments */
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
new MenuUtama().setVisible(true); }
}); }
// Variables declaration - do not modify private javax.swing.JTextField Berat1; private javax.swing.JTextField Berat10; private javax.swing.JTextField Berat11; private javax.swing.JTextField Berat12; private javax.swing.JTextField Berat13; private javax.swing.JTextField Berat14; private javax.swing.JTextField Berat15; private javax.swing.JTextField Berat2; private javax.swing.JTextField Berat3; private javax.swing.JTextField Berat4; private javax.swing.JTextField Berat5; private javax.swing.JTextField Berat6; private javax.swing.JTextField Berat7; private javax.swing.JTextField Berat8; private javax.swing.JTextField Berat9; private javax.swing.JCheckBox Data1; private javax.swing.JCheckBox Data10; private javax.swing.JCheckBox Data11; private javax.swing.JCheckBox Data12; private javax.swing.JCheckBox Data13; private javax.swing.JCheckBox Data14; private javax.swing.JCheckBox Data15; private javax.swing.JCheckBox Data2; private javax.swing.JCheckBox Data3; private javax.swing.JCheckBox Data4; private javax.swing.JCheckBox Data5; private javax.swing.JCheckBox Data6; private javax.swing.JCheckBox Data7;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(4)
lm
private javax.swing.JCheckBox Data8; private javax.swing.JCheckBox Data9; private javax.swing.JTextField Kapasitas; private javax.swing.JButton Keluar; private javax.swing.JButton Kembali; private javax.swing.JTextField Keuntungan1; private javax.swing.JTextField Keuntungan10; private javax.swing.JTextField Keuntungan11; private javax.swing.JTextField Keuntungan12; private javax.swing.JTextField Keuntungan13; private javax.swing.JTextField Keuntungan14; private javax.swing.JTextField Keuntungan15; private javax.swing.JTextField Keuntungan2; private javax.swing.JTextField Keuntungan3; private javax.swing.JTextField Keuntungan4; private javax.swing.JTextField Keuntungan5; private javax.swing.JTextField Keuntungan6; private javax.swing.JTextField Keuntungan7; private javax.swing.JTextField Keuntungan8; private javax.swing.JTextField Keuntungan9; private javax.swing.JLabel NoBarangDensity; private javax.swing.JLabel NoBarangProfit; private javax.swing.JLabel NoBarangWeight; private javax.swing.JLabel TotBeratDensity; private javax.swing.JLabel TotBeratProfit; private javax.swing.JLabel TotBeratWeight; private javax.swing.JLabel TotKeuntunganDensity; private javax.swing.JLabel TotKeuntunganProfit; private javax.swing.JLabel TotKeuntunganWeight; private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; // End of variables declaration }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(5)
no
p
ubble Sort
/*
* BubbleSort.java *
* Created on April 20, 2013, 11:58 PM *
* To change this template, choose Tools | Template Manager * and open the template in the editor.
*/
package design; /**
*
* @author Tommy */
public class BubbleSort {
public static void BubbleSortWeight(String dataNo[], int dataWeight[], int dataProfit[]){ String temp;
int temp1; int temp2;
for(int i=0; i<dataWeight.length-1; i++){ for(int j=0; j<dataWeight.length-1; j++){ if(dataWeight[j]>dataWeight[j+1]){
temp=dataNo[j]; dataNo[j]=dataNo[j+1];
dataNo[j+1]=temp; temp1=dataWeight[j];
dataWeight[j]=dataWeight[j+1]; dataWeight[j+1]=temp1; temp2=dataProfit[j]; dataProfit[j]=dataProfit[j+1]; dataProfit[j+1]=temp2; }
} } }
public static void BubbleSortProfit(String dataNo[], int dataWeight[], int dataProfit[]){ String temp;
int temp1; int temp2;
for(int i=0; i<dataProfit.length-1; i++){ for(int j=0; j<dataProfit.length-1; j++){ if(dataProfit[j]<dataProfit[j+1]){
temp=dataNo[j]; dataNo[j]=dataNo[j+1];
dataNo[j+1]=temp; temp1=dataWeight[j];
dataWeight[j]=dataWeight[j+1]; dataWeight[j+1]=temp1; temp2=dataProfit[j]; dataProfit[j]=dataProfit[j+1];
dataProfit[j+1]=temp2; }
} } }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
(6)
qr
public static void BubbleSortDensity(String dataNo[], int dataWeight[], int dataProfit[], double dataDensity[]){
String temp; int temp1; int temp2; double temp3;
for(int i=0; i<dataWeight.length-1; i++){ for(int j=0; j<dataWeight.length-1; j++){ if(dataDensity[j]<dataDensity[j+1]){
temp=dataNo[j]; dataNo[j]=dataNo[j+1];
dataNo[j+1]=temp; temp1=dataWeight[j];
dataWeight[j]=dataWeight[j+1]; dataWeight[j+1]=temp1; temp2=dataProfit[j]; dataProfit[j]=dataProfit[j+1]; dataProfit[j+1]=temp2; temp3 = dataDensity[j];
dataDensity[j] = dataDensity[j+1]; dataDensity[j+1] = temp3; }
} } } }