Bahan Kuliah ke-3 IF2251 Strategi Algoritmik
Algoritma Greedy
Disusun oleh: Ir. Rinaldi Munir, M.T.
Departemen Teknik Informatika Institut Teknologi Bandung 2004
1
•
•
•
Persoalan optimasi (optimization problems): persoalan yang menuntut pencarian solusi optimum. Persoalan optimasi ada dua macam: 1. Maksimasi (maximization) 2. Minimasi (minimization) Solusi optimum (terbaik) adalah solusi yang bernilai bernilai minimum atau maksimum dari sekumpulan sekumpulan alternatif solusi yang mungkin.
•
1. 2.
•
•
Elemen persoalan optimasi: kendala (constraints) fungsi objektif(atau fungsi optiamsi)
Solus olusii yang mem memenu nuh hi semua ken kendala ala disebut solu Solusi si feasible ble soluti solution on). Solu solusi si laya layak k ( feasi layak yak yang ang mengo engopt ptim imum umka kan n fung fungsi si opti optima massi disebut solusi optimum. Algoritma greedy merupakan metode yang paling pop opu uler untuk ntuk memecahkan persoalan optimasi. Greedy = rakus, tamak, loba, ….
•
Prinsip greedy adalah: “take what you can get now! ”.
2
•
•
•
•
Contoh masalah sehari-hari yang menggunakan prinsip greedy: o Memilih beberapa jenis investasi (penanaman modal) o Menca encari ri jalu jalurr tersi ersing ngka katt dari dari Bandu andung ng ke Surabaya o Memilih jurusan di Perguruan Tinggi o Bermain kartu remi
Algoritma greedy memb memben entu tuk k solu solusi si lang langka kah h per per langkah ( step step by step). Terdapat ban banyak pil piliha ihan yang perlu dieksplorasi pada setiap langkah solusi. Oleh karena itu, itu, pada pada seti setiap ap lang langka kah h haru haruss dibu dibuat at kepu keputu tusa san n yang terbaik dalam menentukan pilihan. Keputusan yang telah diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya. Pend Pendek ekat atan an yang ang digu diguna naka kan n di dala dalam m algoritma greedy adal adalah ah memb membua uatt pili piliha han n yang yang “tampaknya” memberikan perolehan terbaik, yaitu deng dengan an memb membuat uat pili pilihan han optimu optimum m lokal lokal (local optimum) pad pada setiap lang ngka kah h deng dengaan harapan bah bahwa wa sis sisan anya ya meng mengar arah ah ke ke solu solusi si optimum global optimm). global ( global
3
Algoritma greedy adala adalah h algor algorit itma ma yang memecahkan masalah langkah per langkah, pada setiap langkah: mengambil pilihan yang terbaik yang dapat 1. diperoleh pada saat itu tanpa mem memperhatikan kan ko kons nseeku kueensi ke depan pan (prinsip “take what you can get now! ”)
•
2.
•
ber berharap bah bahwa deng dengaan mem memilih opti optim mum loka lokall pada pada setia etiap p lang langka kah h akan akan bera berakh khir ir dengan optimum global.
Pada setiap langkah diperoleh optimum lokal. Bila Bila algo algori ritm tmaa bera berakh khir ir,, kita kita berh berhar arap ap op opti timu mum m lokal menjadi optimum global.
Contoh 1 (Masalah Penukaran uang): Persoalan: Diberikan uang senilai A. Tukar A dengan koin-koin uang yang ada. Berapa jumlah minimum koin yang diperlukan untuk penukaran tersebut? tersebut?
Contoh: tersedia tersedia koin-koin 1, 5, 10, dan 25 Uang senilai 32 dapat ditukar dengan cara berikut: 32 = 1 + 1 + … + 1 (32 koin) 32 = 5 + 5 + 5 + 5 + 1 0 + 1 + 1 (7 koin) 32 = 10 + 10 + 10 + 1 + 1 (5 koin) … dan seterusnya Minimum: 32 = 25 + 5 + 1 + 1
) hanya 4 koin
Strategi greedy yang digunakan adalah:
4
Pada setiap langkah, pilihlah koin dengan nilai sebe ebesar mung mungki kin n dari dari himp himpun unan an ko koin in yang ang tersisa dengan syarat (kendala) tidak melebihi nilai uang yang ditukarkan. Tinjau masalah menukarkan uang 32 dengan koin 1, 5, 10, dan 25: Langkah 1: pilih pilih 1 buah buah koin 25 (Total = 25) Langkah 2: pilih 1 buah koin 5 (Total = 25 + 5 = 30)
25+5+1+1= 32) Langkah 3: pilih 2 buah koin 1 (Total = 25+5+1+1= Solusi: Jumlah koin minimum = 4 (solusi optimal!) Pada setiap langkah di atas kita memperoleh optimum lok okaal, dan pada akhir hir algori oritma kita memperoleh optimum global (yang pada contoh ini merupakan solusi optimum).
Skema Umum Algoritma Greedy
5
Algoritma greedy disusun oleh elemen-elemen berikut: 1. Himpunan kandidat. Berisi elemen-elemen pembentuk solusi. 2. Himpuna Himpunan n solusi solusi Berisi Berisi kandidat-kandidat kandidat-kandidat yang terpilih sebagai sebagai solusi persoalan. 3.
Fungsi seleksi ( selection function ) Memilih kand kandid idaat yang pal paling memung ngki kink nkaan mencapai solusi optimal. Kandidat yang sudah dipilih pada suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya.
4.
Fungsi kelayakan ( feasible feasible) Memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala (constraints) yang ada. Kandidat yang layak dima dimasu sukka kkan n ke dalam dalam himpun himpunan an solu solusi si,, seda sedangk ngkan an kandidat yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi.
5.
Fungsi obyektif, yaitu fungsi yang memaksimumkan atau meminimumkan nilai solusi (misalnya panjang lintasan, keuntungan, dan lain-lain).
Contoh pada masalah penukaran uang, elemen-elemen algoritma greedy-nya adalah:
6
1. Himpunan kandidat: himpunan koin yang mere merepr pres esen enta tasi sika kan n nilai nilai 1, 5, 10, 25, palin paling g sedi sedikit kit mengandung satu koin untuk setiap nilai. 2. Himpu Himpuna nan n solus solusi: i: tota totall nila nilaii koin koin yang yang dipil dipilih ih tepa tepatt sama jumlahnya dengan nilai uang yang ditukarkan. 3. Fungs Fungsii sele seleks ksi: i: pilih pilihla lah h koin koin yang yang berni bernila laii tert terting inggi gi dari himpunan kandidat yang tersisa. 4. Fung ngssi layak: mem memeriksa ksa apak pakah nila ilai tota otal dari himpu himpunan nan koin koin yang yang dipili dipilih h tidak tidak mele melebih bihii jumla jumlah h uang yang harus dibayar. 5. Fungsi obyektif: minimum.
jumlah
koin
yang
digunakan
Pseudo-code algoritma greedy adalah sebagai berikut:
procedure greedy(input C: himpunan_kandidat; output S : himpunan_solusi) {
mene menent ntuk ukan an solu solusi si opti optimu mum m algoritma greedy Masukan: himpunan kandidat C Keluaran: himpunan solusi S
dari dari
pers persoa oala lan n
opti optima masi si
deng dengan an
} Deklarasi
x : kandidat; Algoritma :
{ inisialisasi S dengan kosong } S←{} while (belum SOLUSI(S)) and (C ≠ {} ) do { pilih sebuah kandidat dari C} x←SELEKSI(C); { elemen himpunan kandidat berkurang satu } C← C - {x} if LAYAK(S ∪ {x}) then S←S ∪ {x} endif endwhile {SOLUSI(S) sudah diperoleh or C = {} }
7
•
•
Pada Pada akhi akhirr seti setiap ap lela lelara ran, n, solus solusii yang yang terb terbent entuk uk adalah optimum lokal. Pada akhir kalang whiledo diperoleh optimum global. Nam Namun un adak adakal alan anya ya op opti timu mum m glob global al meru merupa paka kan n solusi sub-optimum atau pseudo-optimum. Alasan:
1.
algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada (sebagaimana pada metode exhaustive search) .
2.
pemilihan fungsi SELEKSI: Mungkin saja terdapat beberapa fungsi SELEKSI yang berbeda, sehingga kita harus memilih fungsi yang tepat jika kita ingin algoritma bekerja dengan benar dan menghasilkan solusi yang benar-benar optimum Karena itu, pada sebagian masalah algoritma tidak sela selalu lu berh berhas asil il membe memberi rikan kan solus solusii greedy tidak yang benar-benar optimum.
•
Jika ika jawa jawaba ban n terba erbaik ik mutl mutlak ak (ben (benaar-be r-bena nar r optimum) tidak diperlukan, maka algoritma greedy seri sering ng bergu berguna na untuk untuk mengh menghas asil ilkan kan solus solusii yang yang mengham menghampiri piri (approximation ) optim optimum, um, daripa daripada da meng menggu guna naka kan n algo algori ritm tmaa yang yang lebi lebih h rumi rumitt un untu tuk k menghasilkan solusi yang eksak.
•
•
Bila algoritma greedy keopti ptimalann nny ya itu dap dapat matematis
optimum, dibu bukt ktik ikan an
maka secara
8
(Sekali Lagi) Masalah Penukaran Uang
Misalkan koin-koin dinyatakan dalam himpunan-ganda (multiset ) {d 1, d 2, …, d n}. Solusi persoalan dinyatakan sebagai tupel X = { x1, x2, …, xn}, sedemikian sehingga xi = 1 jika d i dipilih, atau xi = 0 jika d i tidak dipilih. Misalkan uang yang akan ditukar dengan sejumlah koin adalah A. Obyektif persoalan adalah n
Minimisasi F = ∑ x
(fungsi obyektif)
i
i =1
n
dengan kendala ∑ d x = A i
i
i =1
Algoritma Exhaustive Search •
Karena setiap elemen X = { x1, x2, …, xn} adalah 0 atau 1, maka terdapat 2n kemungkinan nilai X .
Waktu yang dibutuhkan untuk mengevaluasi fungsi obyektif adalah O(n), oleh karena itu kompleksitas exhaustiv tivee searc search h un algoritma exhaus untu tuk k mas masalah alah ini ini adalah O(n ⋅ 2n ). Pemecahan Masalah dengan Algoritma Greedy •
•
Strategi greedy yang yang diguna digunakan kan dala dalam m memi memili lih h koin berikutnya: berikutnya:
9
Pad Pada a seti setiap ap lang langka kah, h, pili pilihl hlah ah koin koin deng dengan an nila nilaii sebe sebesa sarr mung mungki kin n dari dari himp himpun unan an koin koin yang tersisa dengan syarat tidak melebihi nilai uang yang ditukarkan. •
•
•
Agar Agar pemi pemili liha han n ko koin in beri beriku kutn tnya ya op opti tima mal, l, maka maka perlu perlu mengu mengurut rutkan kan himpu himpunan nan koin koin dala dalam m uruta urutan n yang menurun (noninceasing order ). ). Jika himpunan koin sudah terurut menurun, maka kompleksitas kompleksitas algoritma algoritma greedy adalah O(n). Jika Jika waktu pengurutan diperhitungkan, maka kompleks kompleksita itass algorit algoritma ma greedy diten ditentuk tukan an dari dari kompleksitas algoritma pengurutan. Apakah algoritma greedy untuk masalah masalah penukaran uang uang ini ini sela selalu lu meng mengha hasi silk lkan an solu solusi si op opti timu mum? m? Jawa Jawaba banny nnya: a: tida tidak k sela selalu lu,, berga bergantu ntung ng pada pada koin koin mata uang yang digunakan.
Contoh 2. (a) Koin: 5, 4, 3, dan 1 Uang yang ditukar = 7.
Solusi dengan algoritma greedy: 7=5+1+1
( 3 koin) tidak optimal 10
Solusi yang optimal: 7 = 4 + 3
( 2 koin)
(b) Koin: 10, 7, 1 Uang yang ditukar: 15 Solusi dengan algoritma greedy: 15 = 10 + 1 + 1 + 1 + 1 + 1
(6 ko koin)
Solus olusii yang ang opt optiimal: 15 = 7 + 7 + 1
(hany hanyaa 3 koin) oin)
(c) Koin: 15, 10, dan 1 Uang yang ditukar: 20 Solusi dengan algoritma greedy: 20 = 15 + 1 + 1 + 1 + 1 + 1 Solusi opgtimal: 20 = 10 + 10
•
(6 ko koin) (2 koin)
Untuk sistem mata mata uang dollar AS, euro Eropa, dan crown Swedia, algoritma greedy selalu memberikan solusi optimum. Misalnya untuk menukarkan $6,39 dengan uang kertas (bill ) dan koin sen (cent ), ), kita dapat memilih: • Satu buah uang kertas senilai $5 • Satu buah uang kertas senilai $1 ($5 + $1 = $6))
11
• •
•
Satu koin 25 sen ($5 + $1 + 25c = $6,25) Satu koin 10 sen ($5 + $1 + 25c + 10c = $6,35) Empat koin 1 sen ($5 + $1 + 25c + 10 c + 1 c + 1c + 1c + 1c = $6,39)
Bagaimana dengan mata uang rupiah Indonesia?
Minimisasi Waktu di dalam Sistem (Penjadwalan)
Persoa Persoalan lan:: Sebuah Sebuah server (dap (dapat at beru berupa pa processor , pom pompa pa,, kas kasir di bank bank,, dll dll) memp mempun unai ai n pelanggan (customer , client ) yang harus dilayani. Waktu pelayanan untuk untuk setiap setiap pelangg pelanggan an sudah sudah ditetapk ditetapkan an sebelu sebelumnya mnya,, yaitu yaitu pelanggan pelanggan i membutu membutuhkan hkan waktu waktu t i. Kita ingin meminimumkan total waktu di dalam sistem, n
T = ∑ (waktu di dalam sistem untuk pelanggan i) i =1
12
Karena jumlah pelanggan adalah tetap, meminimumkan waktu di dalam sistem ekivalen dengan meminimumkan waktu rata-rata. Misalk lkan an kita kita mempu mempuny nyai ai tiga tiga pelan pelangga ggan n Conto Contoh h 3. Misa dengan t 1 = 5,
t 2 = 10,
t3 = 3,
maka enam urutan pelayanan yang mungkin adalah: Urutan
T
=================================
1, 2, 2, 3: 3: 1, 3, 2: 2, 1, 3: 3: 2, 3, 1: 1: 3, 1, 1, 2: 2: 3, 2, 2, 1: 1:
5 + (5 + 10) + (5 + 10 + 3 ) = 38 5 + (5 + 3) + (5 + 3 + 10) = 31 10 + (10 + 5) + (10 + 5 + 3) = 43 10 + (10 + 3) + (10 + 3 + 5) = 41 3 + (3 + 5) + (3 + 5 + 10) = 29 (optimal) 3 + (3 + 10) + (3 + 10 + 5) = 34
Pem Pemec ecah ahan an Masa Masala lah h deng dengan an Algo Algorit ritma ma Exha Exhaus usti tive ve Search •
•
Urutan pelangan yang dilayani merupakan suatu permutasi
oleh server
Jika ada n orang pelanggan, maka tedapat tedapat n! urutan pelanggan. Waktu yang dibutuhkan untuk menge mengeva valu luas asii fungs fungsii oby obyekt ektif if adal adalah ah O(n), oleh oleh
13
kare karena na itu itu ko komp mple leks ksit itas as algor lgoriitma tma exhaustive search untuk masalah ini adalah O(nn!)
Pemecahan Masalah dengan Algoritma Greedy
Strategi greedy untuk untuk memi memili lih h pelang pelanggan gan beri berikut kutny nyaa adalah: Pada Pada seti setiap ap langk langkah, ah, masu masukka kkan n pelang pelanggan gan yang membutuhkan waktu pelayanan terkecil di antara pelanggan lain yang belum dilayani. •
Agar pros roses pem pemilihan han pel pelang ngg gan beriku kuttny nyaa optimal, maka perlu mengurutkan waktu pelayanan seluruh pelanggan dalam urutan yang menaik. Jika waktu pengurutan tidak dihitung, maka kompleks kompleksita itass algoritm algoritmaa greedy un untu tuk k masa masala lah h minimisasi waktu di dalam sistem adalah O(n).
procedure PenjadwalanPelanggan(input n:integer) { Menceta Mencetak k informa informasi si deretan deretan pelangg pelanggan an yang yang akan akan diprose diproses s server tunggal Masukan: n pelangan, setiap pelanggan dinomori 1, 2, …, n Keluaran: urutan pelanggan yang dilayani } Deklarasi
oleh oleh
i : integer Algoritma : {pelanggan 1, 2, ..., n sudah diurut menaik berdasarkan ti}
for i←1 to n do write(‘Pelanggan ‘, i, ‘ dilayani!’) endfor
14
Pemilihan srategi greedy untuk penjadwalan pelanggan akan selalu menghasilkan solusi optimum. Keop Keopti timu muma man n ini ini diny dinyat atak akan an deng dengan an Teor Teoreema 3.1 3.1 berikut: Teorema 3.1. Jika t 1 ≤ t 2 ≤ … = j, 1 ≤ j ≤ n meminimumkan n
T =
≤
t n maka pengurutan i j
k
∑∑t i
j
k =1 j =1
untuk semua kemungkinan permutasi i j.
Persoalan Knapsack Persoalan Knapsack (a) 0/1 Knapsack n
maksimasi F = ∑ p x i =1
i
i
dengan kendala (constraint ) n
∑ w x ≤ W i =1
i
i
15
yang dalam hal ini, xi = 0 atau 1,
i = 1, 2, …, n
Algoritma Exhaustive Search •
exhaustive search search untuk Algoritma exhaustive untuk pers persoa oala lan n 0/1 Knapsack mempunyai kompleksitas O(n ⋅ 2n).
Algoritma Greedy •
•
Masukkan objek satu per satu ke dalam knapsack . Sekali objek dimasukkan ke dalam knapsack , objek tersebut tidak bisa dikeluarkan lagi. Terdapa Terdapatt beberapa beberapa strate strategi gi greedy yang yang heurist heuristik ik yang dapat digunakan untuk memilih objek yang akan dimasukkan ke dalam knapsack :
1. Greedy by profit . Pada Pada seti setiap ap langk langkah, ah, knapsack diis diisii dengan dengan objek objek yang yang memp mempuny unyai ai keunt keuntung ungan an terb terbes esar ar.. Stra Strate tegi gi ini menc mencob obaa mema memaks ksiimumk mumkan an keun keuntu tung ngan an deng dengan an memilih objek yang paling menguntungkan terlebih dahulu. 2. Greedy by weight.. Pada Pada seti setiap ap langk langkah, ah, knapsack diis diisii dengan dengan objek objek yang yang memp mempun unya yaii bera beratt pali paling ng ring ringan an.. Stra Strate tegi gi ini ini menc mencob obaa mema memaks ksiimumk mumkan an keun keuntu tung ngan an deng dengan an 16
mema memassuk ukka kan n seban ebanya yak k mung mungki kin n ob obje jek k ke dala dalam m knapsack . 3. Greedy by density. Pada setiap langkah, knapsack diisi dengan objek yang mempuny mempunyai ai densit densitas, as, pi /wi terb terbes esar ar.. Stra Strate tegi gi ini mencob obaa memaksimumk umkan keun unttun unga gan n deng dengaan memilih objek yang mempunyai keuntungan per unit berat terbesar. Pemilihan objek berdasarkan salah satu dari ketiga strate strategi gi di atas atas tidak tidak menjam menjamin in akan akan member memberikan ikan solus solusii optim optimal al.. Bahka Bahkan n ada ada kemung kemungkin kinan an keti ketiga ga stategi tersebut tidak memberikan solusi optimum. Contoh 4 berikut memberikan ilustrasi kedua kasus ini. Contoh 4. Tinjau persoalan 0/1 Knapsack dengan n = 4. w1 = 2; p1 = 12 w2 = 5; p1 = 15 w3 = 10; p1 = 50 w4 = 5; p1 = 10 knapsack W = 16 Kapasitas knapsack W •
Solusi dengan algoritma greedy:
i
Properti objek wi pi pi /w /wi
1
6
12
2
Greedy by Solusi profi weigh densit Optimal t t y 0 1 0 0
17
2 3 4
5 10 5
15 3 50 5 10 2 Total bobot Total keuntungan
•
1 1 0 15 65
1 0 1 16 37
1 1 0 15 65
1 1 0 15 65
Pada contoh ini, algoritma greedy dengan strategi pemil pemilihan ihan objek objek berdas berdasark arkan an profit dan density member memberika ikan n solusi solusi optimal optimal,, sedangka sedangkan n pemilih pemilihan an objek berdasarkan berat tidak memberikan solusi optimal.
Tinjau persoalan 0/1 Knapsack lain dengan 6 objek: w1 = 100; p1 = 40 w2 = 50; p2 = 35 w3 = 45; p3 = 18 w4 = 20; p4 = 4 w5 = 10; p5 = 10 w6 = 5; p6 = 2 knapsack W = 100 Kapasitas knapsack W
i
Properti objek wi pi pi /wi
1 2
10 1 0 0 40 5 0 35
0,4 0,7
Greedy by profi weigh densit t t y 1 0 0 0 0 1
Solusi Optimal 0 1 18
3 4 5 6
•
45 20 10 5
18 0,4 4 0,2 10 1,0 2 0,4 Total bobot Total keuntungan
0 0 0 0 100 40
1 1 1 1 80 34
0 1 1 1 85 51
1 0 0 0 10 0 55
Pada Pada conto contoh h ini, ini, algor algorit itma ma greedy dengan dengan ketiga ketiga strategi pemilihan objek tidak berhasil memberikan solu solusi si optim optimal al.. Solu Solusi si optima optimall perm permas asal alah ah ini adalah X = (0, 1, 1, 0, 0, 0) dengan total keuntungan = 55.
Algorit itma ma greedy tidak tidak sela selalu lu berha berhasi sill Kesimpulan: Algor menemukan solusi optimal untuk masalah 0/1 Knapsack . (b) Fractional Knapsack
Serupa dengan persoalan 0/1 Knapsack di atas, tetapi 0 ≤ xi ≤ 1, untuk i = 1, 2, …, n n
maksimasi F = ∑ p x i =1
i
i
dengan kendala (constraint ) n
∑ w x ≤ W i =1
i
i
yang dalam hal ini, 0 ≤ xi ≤ 1, i = 1, 2, …, n
19
Algoritma Exhaustive Search •
Oleh Oleh kare karena na 0 ≤ xi ≤ 1, maka maka terd terdap apat at tida tidak k berhi berhinga nga nilai nilai-ni -nila laii xi. Persoalan Fractional Knapsack menj menjad adii mala malarr (continuous ) sehi sehing ngga ga tida idak mung ngki kin n dip dipecahkan kan deng ngaan algori oritma exhaustive search.
Pemecahan Masalah dengan Algoritma Greedy •
Ketiga strategi greedy yang telah disebutkan di atas dapat digunakan untuk memilih objek yang akan dimasukkan ke dalam knapsack .
persoalan fractional knapsack dengan Contoh 5. Tinjau persoalan n = 3. w1 = 18; p1 = 25 w2 = 15; p1 = 24 w3 = 10; p1 = 15 knapsack W = 20 Kapasitas knapsack W Solusi dengan algoritma greedy:
i
1 2 3
Properti objek wi pi pi /w /wi 18 15 10
25 24 15
1,4 1,6 1,5
Greedy by profi weigh densit t t y 1 0 0 2/15 2/3 1 0 1 1/2
20
Total bobot 20 Total keuntungan 28,2
•
•
•
•
20 3 1 ,0
20 3 1 ,5
Penyelesaia Penyelesaian n persoalan persoalan knapsack yang yang mema memaka kaii strategi pemilihan objek berdasarkan pi /wi terbesar memberikan keuntungan yang maksimum (optimum). Solusi optmal persoalan knapsack di atas adalah X = (0, 1, 1/2) yang memberikan keuntungan maksimum 31,5. Agar proses pemilihan objek berikutnya optimal, maka kita perlu mengurutkan objek terlebih dahulu berdasarkan pi /wi dala dalam m urut urutan an yang yang menu menuru run, n, sehi sehing ngga ga ob obje jek k beri beriku kutn tnya ya yang yang dipi dipili lih h adal adalah ah objek sesuai dalam urutan itu. Algoritma persoalan fractional knapsack fractional knapsack : 1. Hitung harga p /w i i , i = 1, 2, ..., n 2. Urutkan seluruh objek berdasarkan nilai p /w i i yang menurun 3. Panggil SolveFractinonalKnapsack untuk mencari solusi optimum.
21
procedure SolveFractionalKnapsack(input p, w, : Tabel, W : real, n : integer, output x : Tabel, TotalUntung : real) { Penyelesaian persoalan fractional knapsack dengan algoritma greedy yang menggunaka strategi pemilihan objek berdasarkan density (pi/wi) Asumsi: Sebelum pemanggilan SolveFractionalKnapsack , harus dilakukan prosedur pendahuluan sebagai berikut : 1. Hitung harga pi/w i , i = 1, 2, ..., n 2. Urutkan seluruh objek berdasarkan nilai pi/w i yang menurun 3. Baru kemudian panggil procedure SolveFractionalKnapsack ini } Deklarasi
i : integer; kapasitas : real; MasihMuatUtuh : boolean; Algoritma :
for i←1 to n do { inisialisasi setiap fraksi objek i dengan 0 } xi ← 0 endfor kapasitas ←W { kapasitas knapsack awal } TotalUntung ←0
22
i←1 MasihMuatUtuh ←true while (i ≤ n) and (MasihMuatUtuh) do if wi ≤ kapasitas then xi←1 TotalUntung ←TotalUntung + p i kapasitas ←kapasitas - w i i←i+1; else MasihMuatUtuh ←false endif endwhile { i > n or not MasihMuatUtuh } { objek terakhir yang akan dimasukkan} if i ≤ n then xi ← kapasitas/w i TotalUntung ←TotalUntungt + x i*pi endif
•
•
Kompleks Kompleksita itass waktu waktu asimpto asimptotik tik algorit algoritma ma di atas atas (den (denga gan n mang mangab abai aika kan n wakt waktu u peng pengur urut utan an ob obje jek) k) adalah O(n). Algoritma greedy un untu tuk k pers persoa oala lan n fractional knapsack dengan strategi pemilihan objek berdasarkan pi /wi terbesar akan selalu memberikan solusi optimal. Hal ini dinyatakan dalam Teorema 3.2 berikut ini.
Teorema 3.2. Jika p1/w1 ≥ p2/w2 ≥ ... ≥ pn/wn maka algo algori ritm tmaa gree greedy dy deng dengan an stra strattegi pemi pemili liha han n ob obje jek k berdasarkan pi /wi terbesar menghas menghasilka ilkan n solusi solusi yang optimum.
Latihan: Sebuah kapal besar akan diisi dengan muatan. Muatan ters terseb ebut ut disi disimp mpan an di dala dalam m peti peti kema kemass dan dan tiap tiap peti peti kemas berukuran sama, tetapi berat peti kemas (yang
23
sud udaah beri berissi muatan) ber berbeda eda belum tentu sama. Misalkan wi adalah berat peti kemas ke-i, 1 ≤ i ≤ n. Kapasitas kapal membawa muatan adalah C . Kita ingin memuat kapal sehingga jumlah peti kemas yang diangkut maksimum. Seperti soal nomor satu, rumuskan persoalan ini dengan metode greedy. Lakukan perhitungan perhitungan untuk n = 8, dengan w = (100, 200, 50, 90, 150, 50, 20, 80), dan C = 400.
24