MAKALAH MATEMATIKA

ALGORITMA GREEDY

DISUSUN OLEH : MIMIN SUMINAR 41101255 TI-A1 STEFANUS NUGROHO 41101274 TI-A2 PRAYOGI 41101363 TI-A2 SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER STMIK IKMI CIREBON
Jalan Perjuangan 10B Majasem Telp.0231 ± 490480, 490481 Cirebon Websites : www.ikmi.ac.id Email : stmik _ikmi@yahoo.com

0

algoritma yang selama ini sering digunakan untuk memecahkan masalah tersebut adalah algoritma dijkstra.membutuhkan waktu yang lama untuk menemukan solusinya. Hal ini dikarenakan pada algoritma dijkstra kita membandingkan semua lintasan yang mungkin dari simpul awal ke simpul akhir. Dengan penerapan ini akan ditemukan solusi yang benar untuk semua kondisi tanpa mengurangi kemangkusan dari algoritma. Pendahuluan Prinsip pencarian lintasan terpendek memegang peranan yang penting selama ini. 1 . Kami mempunyai pemikiran untuk menerapkan Algoritma Branch & Bound pada prinsip pencarian solusi. Tapi algoritma dijkstra yang selama ini kami pelajari.1.

2. y 2 . Oleh karena itu. Pendekatan yang digunakan di dalam algoritma greedy adalah membuat pilihan yang ³tampaknya´ memberikan perolehan terbaik. lalu kita namakan solusi tersebut dengan optimum lokal. kami menggunakan algoritma Dijkstra untuk dibandingkan dengan algoritma B&B. Algoritma Greedy Definisi Algoritma Greedy Algoritma Greedy membentuk solusi langkah per langkah. dan keputusan tersebut tidak dapat diubah lagi pada langkah ± langkah selanjutnya. tamak. pada setiap langkah dalam algoritma greedy kita ambil keputusan yang paling optimal untuk langkah tersebut tanpa memperhatikan konsekuensi pada langkah ± langkah selanjutnya. y Terdapat banyak pilihan yang perlu dieksplorasi pada setiap langkah solusi. Pada setiap langkah tersebut akan dipilih keputusan yang paling optimal. Keputusan tersebut tidak perlu memperhatikan keputusan selanjutnya yang akan diambil. Prinsip utama algoritma greedy adalah prinsip ³take what you can get now!´. Greedy = rakus. yaitu tercapainya solusi optimum yang melibatkan keseluruhan langkah dari awal sampai akhir. Contoh masalah sehari-hari yang menggunakan prinsip greedy: o Memilih beberapa jenis investasi (penanaman modal) o Mencari jalur tersingkat dari Bandung ke Surabaya o Memilih jurusan di Perguruan Tinggi o Bermain kartu remi y Algoritma greedy membentuk solusi langkah per langkah (step by step). Dengan cara pengambilan nilai optimum lokal pada setiap langkah diharapkan akan tercapainya optimum global. yaitu dengan membuat pilihan optimum lokal (local optimum) pada setiap langkah dengan harapan bahwa sisanya mengarah ke solusi optimum global (global optimm). Dalam makalah ini. loba. Keputusan yang telah diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya. pada setiap langkah harus dibuat keputusan yang terbaik dalam menentukan pilihan. y y Prinsip greedy adalah: ³take what you can get now!´. y Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi. «. Maksud dari prinsip tersebut adalah sebagai berikut.

berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global. Skema Umum Algoritma Greedy Algoritma greedy disusun oleh elemen-elemen berikut: 1. Contoh 1 (Masalah Penukaran uang): Persoalan: Diberikan uang senilai A. dan 25 Uang senilai 32 dapat ditukar dengan cara berikut: 32 = 1 + 1 + « + 1 (32 koin) 32 = 5 + 5 + 5 + 5 + 10 + 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: Pada setiap langkah. dan 25: Langkah 1: pilih 1 buah koin 25 (Total = 25) Langkah 2: pilih 1 buah koin 5 (Total = 25 + 5 = 30) Langkah 3: pilih 2 buah koin 1 (Total = 25+5+1+1= 32) Solusi: Jumlah koin minimum = 4 (solusi optimal!) Pada setiap langkah di atas kita memperoleh optimum lokal. Berapa jumlah minimum koin yang diperlukan untuk penukaran tersebut? Contoh: tersedia koin-koin 1. 10. 5.y Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah. pada setiap langkah: 1. kita berharap optimum lokal menjadi optimum global. 5. y Pada setiap langkah diperoleh optimum lokal. Tinjau masalah menukarkan uang 32 dengan koin 1. pilihlah koin dengan nilai sebesar mungkin dari himpunan koin yang tersisa dengan syarat (kendala) tidak melebihi nilai uang yang ditukarkan. mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan (prinsip ³take what you can get now!´) 2. Himpunan kandidat. 3 . dan pada akhir algoritma kita memperoleh optimum global (yang pada contoh ini merupakan solusi optimum). Tukar A dengan koin-koin uang yang ada. Bila algoritma berakhir. 10.

elemen-elemen algoritma greedy-nya adalah: 1. yaitu fungsi yang memaksimumkan atau meminimumkan nilai solusi (misalnya panjang lintasan. Kandidat yang sudah dipilih pada suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya. Himpunan solusi: total nilai koin yang dipilih tepat sama jumlahnya dengan nilai uang yang ditukarkan. keuntungan. Contoh pada masalah penukaran uang. sedangkan kandidat yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi. Algoritma: Sn{} { inisialisasi S dengan kosong } 4 . 5. Himpunan kandidat: himpunan koin yang merepresentasikan nilai 1. output S : himpunan_solusi) { menentukan solusi optimum dari persoalan optimasi dengan algoritma greedy Masukan: himpunan kandidat C Keluaran: himpunan solusi S } Deklarasi x : kandidat. paling sedikit mengandung satu koin untuk setiap nilai. 25. Fungsi kelayakan (feasible) Memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak.Berisi elemen-elemen pembentuk solusi. Fungsi seleksi: pilihlah koin yang bernilai tertinggi dari himpunan kandidat yang tersisa. 2. Fungsi obyektif: jumlah koin yang digunakan minimum. Kandidat yang layak dimasukkan ke dalam himpunan solusi. 5. yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala (constraints) yang ada. 4. Fungsi layak: memeriksa apakah nilai total dari himpunan koin yang dipilih tidak melebihi jumlah uang yang harus dibayar. Fungsi obyektif. Himpunan solusi Berisi kandidat-kandidat yang terpilih sebagai solusi persoalan. Fungsi seleksi (selection function) Memilih kandidat yang paling memungkinkan mencapai solusi optimal. 10. 4. 2. 3. dan lain-lain). Pseudo-code algoritma greedy adalah sebagai berikut: procedure greedy(input C: himpunan_kandidat. 5. 3.

y Bila algoritma greedy optimum. maka keoptimalannya itu dapat dibuktikan secara matematis y (Sekali Lagi) Masalah Penukaran Uang Misalkan koin-koin dinyatakan dalam himpunan-ganda (multiset) {d1. pada sebagian masalah algoritma greedy tidak selalu berhasil memberikan solusi yang benar-benar optimum. algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada (sebagaimana pada metode exhaustive search). Obyektif persoalan adalah Minimisasi F = § x i i !1 n (fungsi obyektif) 5 . { pilih sebuah kandidat dari C} Cn C . d2. sedemikian sehingga xi = 1 jika di dipilih. atau xi = 0 jika di tidak dipilih. Namun adakalanya optimum global merupakan solusi sub-optimum atau pseudo-optimum.while (belum SOLUSI(S)) and (C { {} ) do xnSELEKSI(C). xn}.{x} { elemen himpunan kandidat berkurang satu } if LAYAK(S Š {x}) then SnS Š {x} endif endwhile {SOLUSI(S) sudah diperoleh or C = {} } y Pada akhir setiap lelaran. Misalkan uang yang akan ditukar dengan sejumlah koin adalah A. «. «. Alasan: y 1. Jika jawaban terbaik mutlak (benar-benar optimum) tidak diperlukan. Solusi persoalan dinyatakan sebagai tupel X = {x1. maka algoritma greedy sering berguna untuk menghasilkan solusi yang menghampiri (approximation) optimum. solusi yang terbentuk adalah optimum lokal. x2. daripada menggunakan algoritma yang lebih rumit untuk menghasilkan solusi yang eksak. sehingga kita harus memilih fungsi yang tepat jika kita ingin algoritma bekerja dengan benar dan menghasilkan solusi yang benar-benar optimum y Karena itu. 2. dn}. Pada akhir kalang while-do diperoleh optimum global. pemilihan fungsi SELEKSI: Mungkin saja terdapat beberapa fungsi SELEKSI yang berbeda.

Waktu yang dibutuhkan untuk mengevaluasi fungsi obyektif adalah O(n). Pemecahan Masalah dengan Algoritma Greedy y Strategi greedy yang digunakan dalam memilih koin berikutnya: Pada setiap langkah. bergantung pada koin mata uang yang digunakan. dan 1 Uang yang ditukar = 7. 4. (a) Koin: 5. 3. x2. y Agar pemilihan koin berikutnya optimal. pilihlah koin dengan nilai sebesar mungkin dari himpunan koin yang tersisa dengan syarat tidak melebihi nilai uang yang ditukarkan. «. maka kompleksitas algoritma greedy adalah O(n). maka terdapat 2n kemungkinan nilai X. 7. xn } adalah 0 atau 1. Solusi dengan algoritma greedy: 7=5+1+1 Solusi yang optimal: 7 = 4 + 3 ( 3 koin) ( 2 koin) tidak optimal (b) Koin: 10. oleh karena itu kompleksitas algoritma exhaustive search untuk masalah ini adalah O(n ™ 2n ). Apakah algoritma greedy untuk masalah penukaran uang ini selalu menghasilkan solusi optimum? Jawabannya: tidak selalu. maka kompleksitas algoritma greedy ditentukan dari kompleksitas algoritma pengurutan. 1 Uang yang ditukar: 15 Solusi dengan algoritma greedy: 6 . Jika himpunan koin sudah terurut menurun.dengan kendala §d x ! A i !1 i i n Algoritma Exhaustive Search y Karena setiap elemen X = {x1. Jika waktu pengurutan diperhitungkan. maka perlu mengurutkan himpunan koin dalam urutan yang menurun (noninceasing order). y y y Contoh 2.

yaitu pelanggan i membutuhkan waktu ti.39 dengan uang kertas (bill) dan koin sen (cent).25) y Satu koin 10 sen ($5 + $1 + 25c + 10c = $6. 10. algoritma greedy selalu memberikan solusi optimum. t2 = 10. client) yang harus dilayani.15 = 10 + 1 + 1 + 1 + 1 + 1 (6 koin) Solusi yang optimal: 15 = 7 + 7 + 1 (hanya 3 koin) (c) Koin: 15. dan 1 Uang yang ditukar: 20 Solusi dengan algoritma greedy: 20 = 15 + 1 + 1 + 1 + 1 + 1 Solusi opgtimal: 20 = 10 + 10 (6 koin) (2 koin) y Untuk sistem mata uang dollar AS. Misalnya untuk menukarkan $6. dll) mempunai n pelanggan (customer. euro Eropa. kasir di bank. Waktu pelayanan untuk setiap pelanggan sudah ditetapkan sebelumnya. Kita ingin meminimumkan total waktu di dalam sistem. pompa. dan crown Swedia. n T= § i !1 (waktu di dalam sistem untuk pelanggan i) Karena jumlah pelanggan adalah tetap. Misalkan kita mempunyai tiga pelanggan dengan t1 = 5. t3 = 3. meminimumkan waktu di dalam sistem ekivalen dengan meminimumkan waktu rata-rata. Contoh 3. 7 .35) y Empat koin 1 sen ($5 + $1 + 25c + 10c + 1c + 1c + 1c + 1c = $6. kita dapat memilih: y Satu buah uang kertas senilai $5 y Satu buah uang kertas senilai $1 ($5 + $1 = $6)) y Satu koin 25 sen ($5 + $1 + 25c = $6.39) Bagaimana dengan mata uang rupiah Indonesia? Minimisasi Waktu di dalam Sistem (Penjadwalan) Persoalan: Sebuah server (dapat berupa processor.

maka perlu mengurutkan waktu pelayanan seluruh pelanggan dalam urutan yang menaik. 3: 10 + (10 + 5) + (10 + 5 + 3) = 43 2. 1. «. Waktu yang dibutuhkan untuk mengevaluasi fungsi obyektif adalah O(n). maka tedapat n! urutan pelanggan. 2. 1. 3. procedure PenjadwalanPelanggan(input n:integer) { Mencetak informasi deretan pelanggan yang akan diproses oleh server tunggal Masukan: n pelangan. 2. 1: 10 + (10 + 3) + (10 + 3 + 5) = 41 3. n Keluaran: urutan pelanggan yang dilayani } Deklarasi i : integer 8 .maka enam urutan pelayanan yang mungkin adalah: Urutan T ================================= 1. y Agar proses pemilihan pelanggan berikutnya optimal. 3: 5 + (5 + 10) + (5 + 10 + 3 ) = 38 1. 2. 2: 3 + (3 + 5) + (3 + 5 + 10) = 29 n (optimal) 3. maka kompleksitas algoritma greedy untuk masalah minimisasi waktu di dalam sistem adalah O(n). 2: 5 + (5 + 3) + (5 + 3 + 10) = 31 2. setiap pelanggan dinomori 1. Jika waktu pengurutan tidak dihitung. oleh karena itu kompleksitas algoritma exhaustive search untuk masalah ini adalah O(nn!) Pemecahan Masalah dengan Algoritma Greedy Strategi greedy untuk memilih pelanggan berikutnya adalah: Pada setiap langkah. 3. masukkan pelanggan yang membutuhkan waktu pelayanan terkecil di antara pelanggan lain yang belum dilayani. 1: 3 + (3 + 10) + (3 + 10 + 5) = 34 Pemecahan Masalah dengan Algoritma Exhaustive Search y y Urutan pelangan yang dilayani oleh server merupakan suatu permutasi Jika ada n orang pelanggan.

Algoritma Exhaustive Search y i = 1. Jika t1 e t2 e « e tn maka pengurutan ij = j. n Algoritma exhaustive search untuk persoalan 0/1 Knapsack mempunyai kompleksitas O(n ™ 2n). . 2. 2. meminimumkan n k ij 1 e j e n T= §§ t k !1 j !1 untuk semua kemungkinan permutasi ij.1. µ dilayani!¶) endfor Pemilihan srategi greedy untuk penjadwalan pelanggan akan selalu menghasilkan solusi optimum.Algoritma: {pelanggan 1. Algoritma Greedy y Masukkan objek satu per satu ke dalam knapsack. xi = 0 atau 1. Sekali objek dimasukkan ke dalam knapsack..1 berikut: Teorema 3. Terdapat beberapa strategi greedy yang heuristik yang dapat digunakan untuk memilih objek yang akan dimasukkan ke dalam knapsack: y 9 .. i. Persoalan Knapsack (a) 0/1 Knapsack n maksimasi F = § i !1 px i i dengan kendala (constraint) §w x eW i !1 i i n yang dalam hal ini. «. Keoptimuman ini dinyatakan dengan Teorema 3. objek tersebut tidak bisa dikeluarkan lagi.. n sudah diurut menaik berdasarkan ti} for in1 to n do write(µPelanggan µ.

Pada setiap langkah. knapsack diisi dengan objek yang mempunyai berat paling ringan. 3. w1 = 2. Tinjau persoalan 0/1 Knapsack lain dengan 6 objek: 10 . Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang paling menguntungkan terlebih dahulu. Contoh 4. pi /wi terbesar. Pada setiap langkah. 2. Greedy by profit. p1 = 50 w4 = 5. p1 = 12 w2 = 5. Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang mempunyai keuntungan per unit berat terbesar. p1 = 15 w3 = 10. Strategi ini mencoba memaksimumkan keuntungan dengan memasukkan sebanyak mungkin objek ke dalam knapsack. Tinjau persoalan 0/1 Knapsack dengan n = 4. Pada setiap langkah. knapsack diisi dengan objek yang mempunyai densitas.1. knapsack diisi dengan objek yang mempunyai keuntungan terbesar. Bahkan ada kemungkinan ketiga stategi tersebut tidak memberikan solusi optimum. algoritma greedy dengan strategi pemilihan objek berdasarkan profit dan density memberikan solusi optimal. Pemilihan objek berdasarkan salah satu dari ketiga strategi di atas tidak menjamin akan memberikan solusi optimal. sedangkan pemilihan objek berdasarkan berat tidak memberikan solusi optimal. Greedy by weight. p1 = 10 Kapasitas knapsack W = 16 Solusi dengan algoritma greedy: Properti objek pi pi /wi 12 2 15 3 50 5 10 2 Total bobot Total keuntungan Greedy by weight 1 1 0 1 16 37 Solusi Optimal 0 1 1 0 15 65 y i 1 2 3 4 wi 6 5 10 5 profit 0 1 1 0 15 65 density 0 1 1 0 15 65 y Pada contoh ini. Contoh 4 berikut memberikan ilustrasi kedua kasus ini.. Greedy by density.

tetapi 0 e xi e 1. p5 = 10 w6 = 5. 2. 0. i = 1. 0) dengan total keuntungan = 55. 2. n n maksimasi F = § i !1 px i i dengan kendala (constraint) §w x eW i !1 i i n yang dalam hal ini.2 10 10 1. 0 e xi e 1. p6 = 2 Kapasitas knapsack W = 100 Properti objek wi pi pi /wi 100 40 0. 1. Kesimpulan: Algoritma greedy tidak selalu berhasil menemukan solusi optimal untuk masalah 0/1 Knapsack. p3 = 18 w4 = 20.0 5 2 0. n Algoritma Exhaustive Search 11 .4 50 35 0. (b) Fractional Knapsack Serupa dengan persoalan 0/1 Knapsack di atas. 1. p4 = 4 w5 = 10.7 45 18 0. 0. «.4 20 4 0. untuk i = 1.4 Total bobot Total keuntungan Greedy by weight 0 0 1 1 1 1 80 34 Solusi Optimal 0 1 1 0 0 0 100 55 i 1 2 3 4 5 6 profit 1 0 0 0 0 0 100 40 density 0 1 0 1 1 1 85 51 y Pada contoh ini. p1 = 40 w2 = 50. algoritma greedy dengan ketiga strategi pemilihan objek tidak berhasil memberikan solusi optimal. Solusi optimal permasalah ini adalah X = (0. «. p2 = 35 w3 = 45.w1 = 100.

n 2. maka kita perlu mengurutkan objek terlebih dahulu berdasarkan p i /wi dalam urutan yang menurun.y Oleh karena 0 e xi e 1. Algoritma persoalan fractional knapsack: 1.4 15 24 1. Panggil SolveFractinonalKnapsack untuk mencari solusi optimum. Urutkan seluruh objek berdasarkan nilai pi/wi yang menurun 3. Contoh 5. p1 = 15 Kapasitas knapsack W = 20 Solusi dengan algoritma greedy: Properti objek wi pi pi /wi 18 25 1. p1 = 24 w3 = 10. sehingga objek berikutnya yang dipilih adalah objek sesuai dalam urutan itu.5.. . Tinjau persoalan fractional knapsack dengan n = 3. p1 = 25 w2 = 15. 1/2) yang memberikan keuntungan maksimum 31.. maka terdapat tidak berhinga nilai-nilai xi. y 12 . 1. i = 1. Persoalan Fractional Knapsack menjadi malar (continuous) sehingga tidak mungkin dipecahkan dengan algoritma exhaustive search..5 Total bobot Total keuntungan Greedy by weight 0 2/3 1 20 31. Solusi optmal persoalan knapsack di atas adalah X = (0. Hitung harga pi/wi . 2. Pemecahan Masalah dengan Algoritma Greedy y Ketiga strategi greedy yang telah disebutkan di atas dapat digunakan untuk memilih objek yang akan dimasukkan ke dalam knapsack.6 10 15 1. w1 = 18. y y Agar proses pemilihan objek berikutnya optimal.2 density 0 1 1/2 20 31.5 y Penyelesaian persoalan knapsack yang memakai strategi pemilihan objek berdasarkan pi /wi terbesar memberikan keuntungan yang maksimum (optimum).0 i 1 2 3 profit 1 2/15 0 20 28.

Urutkan seluruh objek berdasarkan nilai pi/wi yang menurun 3. kapasitas : real.wi ini+1. . n 2. i = 1. Hitung harga pi/wi .. n : integer. MasihMuatUtuh : boolean. TotalUntung : real) { Penyelesaian persoalan fractional knapsack dengan algoritma greedy yang menggunaka strategi pemilihan objek berdasarkan density (pi/wi) Asumsi: Sebelum pemanggilan SolveFractionalKnapsack.. w.. Algoritma: for in1 to n do xi n 0 { inisialisasi setiap fraksi objek i dengan 0 } endfor kapasitasnW { kapasitas knapsack awal } TotalUntungn0 in1 MasihMuatUtuhntrue while (i e n) and (MasihMuatUtuh) do if wi e kapasitas then xin1 TotalUntungnTotalUntung + pi kapasitasnkapasitas . Baru kemudian panggil procedure SolveFractionalKnapsack ini } Deklarasi i : integer.procedure SolveFractionalKnapsack(input p. output x : Tabel. else MasihMuatUtuhnfalse endif endwhile { i > n or not MasihMuatUtuh } 13 . harus dilakukan prosedur pendahuluan sebagai berikut : 1. 2. : Tabel. W : real.

. u pn/wn maka algoritma greedy dengan strategi pemilihan objek berdasarkan pi /wi terbesar menghasilkan solusi yang optimum.2.. Masalah pencarian lintasan terpendek dapat diselesaikan dengan berbagai cara antara lain dengan algoritma dijkstra dan dengan algoritma B&B. Kesimpulan Algoritma greedy sangat mudah untuk diimplementasikan tetapi hasil yang didapatkan tidak selalu merupakan hasil yang optimal hal ini dikarenakan algoritma greedy tidak melakukan operasi terhadap semua kemungkinan yang ada serta banyaknya fungsi seleksi yang dapat kita pilih sehingga belum tentu fungsi yang kita pilih merupakan fungsi yang tepat. Jika p1/w1 u p2/w2 u . pengelolaan memori dan yang terutama adalah masalah efektifitas. Dari hasil analisis di atas. Algoritma greedy untuk persoalan fractional knapsack dengan strategi pemilihan objek berdasarkan pi /wi terbesar akan selalu memberikan solusi optimal. kami menyimpulkan bahwa algoritma B&B memiliki kemampuan yang lebih baik dibanding dijkstra dalam hal waktu yang dibutuhkan. Hal ini dinyatakan dalam Teorema 3. 14 .2 berikut ini.if i e n then { objek terakhir yang akan dimasukkan} xi n kapasitas/wi TotalUntungnTotalUntungt + xi *pi endif y Kompleksitas waktu asimptotik algoritma di atas (dengan mangabaikan waktu pengurutan objek) adalah O(n). y Teorema 3.

Sign up to vote on this title
UsefulNot useful