370 likes | 612 Views
Design and Analysis of Algorithm Greedy Algorithm. Aryo Pinandito, ST, M.MT – PTIIK Universitas Brawijaya. Contents. Algoritma Greedy Contoh Algoritma Greedy Masalah penukaran uang Knapsack 0/1 . Pendahuluan.
E N D
Design and Analysis of AlgorithmGreedy Algorithm Aryo Pinandito, ST, M.MT – PTIIK UniversitasBrawijaya
Contents • Algoritma Greedy • ContohAlgoritma Greedy • Masalahpenukaranuang • Knapsack 0/1
Pendahuluan • Algoritma greedy merupakanmetode yang paling populeruntukmemecahkanpersoalanoptimasi. • Persoalanoptimasi (optimization problems): • persoalanmencarisolusi optimum. • Hanyaadaduamacampersoalanoptimasi: • Maksimasi (maximization) • Minimasi (minimization)
ContohPersoalanOptimasi • (MasalahPenukaranUang): Diberikanuangsenilai A. Tukar A dengankoin-koinuang yang ada. Berapajumlah minimum koin yang diperlukanuntukpenukarantersebut? • Persoalanminimasi
PenukaranUang • Contoh 1: • Tersediabanyakkoin 1, 5, 10, 25 • Uangsenilai A = 32 dapatditukardenganbanyakcaraberikut: • 32 = 1 + 1 + … + 1 (32 koin) • 32 = 5 + 5 + 5 + 5 + 10 + 1 + 1 (7 koin) • 32 = 10 + 10 + 10 + 1 + 1 (5 koin) • … dst • Minimum: 32 = 25 + 5 + 1 + 1 (4 koin)
Greedy • Greedy = rakus, tamak, loba, … • Prinsip greedy: “take what you can get now!”. • Algoritma greedy membentuksolusilangkah per langkah (step by step). • Padasetiaplangkah, terdapatbanyakpilihan yang perludieksplorasi. • Olehkarenaitu, padasetiaplangkahharusdibuatkeputusan yang terbaikdalammenentukanpilihan.
Greedy (2) • Padasetiaplangkah, kitamembuatpilihan optimum lokal (local optimum) • denganharapanbahwalangkahsisanyamengarahkesolusi optimum global (global optimum).
Algoritma Greedy • Algoritma greedy adalahalgoritma yang memecahkanmasalahlangkah per langkah;padasetiaplangkah: • Mengambilpilihan yang terbaik yang dapatdiperolehpadasaatitutanpamemperhatikankonsekuensikedepan (prinsip “take what you can get now!”) • Berharapbahwadenganmemilih optimum lokalpadasetiaplangkahakanberakhirdengan optimum global.
Strategi Greedy padaPenukaranUang • Strategi greedy: Padasetiaplangkah, pilihlahkoindengannilaiterbesardarihimpunankoin yang tersisa. • Misal: A = 32, koin yang tersedia: 1, 5, 10, dan 25 • Langkah 1: pilih 1 buahkoin 25 (Total = 25) • Langkah 2: pilih 1 buahkoin 5 (Total = 25 + 5 = 30) • Langkah 3: pilih 2 buahkoin 1 (Total = 25+5+1+1= 32) • Solusi: Jumlahkoin minimum = 4 (solusi optimal!)
Elemen-elemenAlgoritma Greedy • Elemen-elemenalgoritma greedy: • Himpunankandidat, C. • Himpunansolusi, S • Fungsiseleksi (selection function) • Fungsikelayakan (feasible) • Fungsiobyektif • Dengan kata lain: • Algoritma greedy melibatkanpencariansebuahhimpunanbagian, S, darihimpunankandidat, C; yang dalamhalini, S harusmemenuhibeberapakriteria yang ditentukan, yaitumenyatakansuatusolusidan S dioptimisasiolehfungsiobyektif.
ElemenAlgoritma Greedy padaPenukaranUang • Himpunankandidat: himpunankoin yang merepresentasikannilai 1, 5, 10, 25, paling sedikitmengandungsatukoinuntuksetiapnilai. • Himpunansolusi: total nilaikoin yang dipilihtepatsamajumlahnyadengannilaiuang yang ditukarkan. • Fungsiseleksi: pilihlahkoin yang bernilaitertinggidarihimpunankandidat yang tersisa. • Fungsilayak: memeriksaapakahnilai total darihimpunankoin yang dipilihtidakmelebihijumlahuang yang harusdibayar. • Fungsiobyektif: jumlahkoin yang digunakan minimum.
Skema Algoritma Greedy • Skemaumumalgoritma greedy: Padaakhirsetiapiterasi, solusi yang terbentukadalah optimum lokal. Padaakhirperulanganwhile-do diperoleh optimum global.
Optimum Global danSolusiTerbaik • Warning: Optimum global belumtentumerupakansolusi optimum (terbaik), tetapi sub-optimum atau pseudo-optimum. • Kenapa? • Algoritma greedy tidakberoperasisecaramenyeluruhterhadapsemuaalternatifsolusi yang ada(sebagaimanapadametode exhaustive search). • Terdapatbeberapafungsi SELEKSI yang berbeda, sehinggakitaharusmemilihfungsi yang tepatjikakitainginalgoritmamenghasilkansolusi optimal. Jadi, padasebagianmasalahalgoritma greedy tidakselaluberhasilmemberikansolusi yang optimal.
ContohOptimalisasiPadaAlgoritma Greedy • Tinjaumasalahpenukaranuang. (a) Koin: 5, 4, 3, dan 1 Uang yang ditukar = 7. Solusi greedy: 7 = 5 + 1 + 1 ( 3 koin) tidak optimal Solusi optimal: 7 = 4 + 3 ( 2 koin) (b) Koin: 10, 7, 1 Uang yang ditukar: 15 Solusi greedy: 15 = 10 + 1 + 1 + 1 + 1 + 1 (6 koin) Solusi optimal: 15 = 7 + 7 + 1 (hanya 3 koin) (c) Koin: 15, 10, dan 1 Uang yang ditukar: 20 Solusi greedy: 20 = 15 + 1 + 1 + 1 + 1 + 1 (6 koin) Solusi optimal: 20 = 10 + 10 (2 koin)
Kasus Mata Uang Optimum • Untuksistemmatauang dollar AS, euro Eropa, dan crown Swedia, algoritma greedy selalumemberikansolusi optimum. • Contoh: Uang $6,39 ditukardenganuangkertas (bill) dankoinsen (cent), kitadapatmemilih: • Satubuahuangkertassenilai $5 • Satubuahuangkertassenilai $1 • Satukoin 25 sen • Satukoin 10 sen • Empatkoin 1 sen • $5 + $1 + 25c + 10c + 1c + 1c + 1c + 1c = $6,39
SolusiHampiranAlgoritma Greedy • Jikajawabanterbaikmutlaktidakdiperlukan, makaalgoritma greedy seringbergunauntukmenghasilkansolusihampiran (approximation), daripadamenggunakanalgoritma yang lebihrumituntukmenghasilkansolusi yang eksak. • Bilaalgoritma greedy optimum, makakeoptimalannyaitudapatdibuktikansecaramatematis
Contoh-contoh Algoritma Greedy • Masalahpenukaranuang • Nilaiuang yang ditukar: A • Himpunankoin (multiset): {d1, d2, …, dn}. • Himpunansolusi: X = {x1, x2, …, xn}, • xi= 1 jika di dipilih, xi = 0 jika di tidakdipilih.
PenukaranUangdengan Exhaustive Search • Penyelesaiandengan exhaustive search • Terdapat 2nkemungkinansolusi • (nilai-nilai X = {x1, x2, …, xn} ) • Untukmengevaluasifungsiobyektif = O(n) • Kompleksitasalgoritma exhaustive search seluruhnya = O(n 2n)
Exhaustive Search: 0/1 Knapsack • Penyelesaiandengan exhaustive search • Sudahdijelaskanpadapembahasan exhaustive search. • Kompleksitasalgoritma exhaustive search untukpersoalanini = O(n 2n).
Greedy: 0/1 Knapsack • Penyelesaiandenganalgoritma greedy: • Masukkanobjeksatu per satukedalam knapsack. Sekaliobjekdimasukkankedalam knapsack, objektersebuttidakbisadikeluarkanlagi. • Terdapatbeberapastrategi greedy yang heuristik yang dapatdigunakanuntukmemilihobjek yang akandimasukkankedalam knapsack: Desain dan Analisis Algoritma
Heuristik Greedy: 0/1 Knapsack • Greedy by profit. • Padasetiaplangkah, pilihobjek yang mempunyaikeuntunganterbesar. • Mencobamemaksimumkankeuntungandenganmemilihobjek yang paling menguntungkanterlebihdahulu. • Greedy by weight. • Padasetiaplangkah, pilihobjek yang mempunyaiberatteringan. • Mencobamemaksimumkankeuntungan.dengandenganmemasukkansebanyakmungkinobjekkedalam knapsack.
Heuristik Greedy: 0/1 Knapsack • Greedy by density. • Padasetiaplangkah, knapsack diisidenganobjek yang mempunyai pi/witerbesar. • Mencobamemaksimumkankeuntungandenganmemilihobjek yang mempunyaikeuntungan per unit beratterbesar. • Pemilihanobjekberdasarkansalahsatudariketigastrategi di atastidakmenjaminakanmemberikansolusi optimal.
Contoh: Greedy 0/1 Knapsack • Contoh1 w1 = 6; p1 = 12; w2 = 5; p2 = 15; w3 = 10; p3 = 50; w4 = 5; p4 = 10 Kapasitas knapsack K = 16 • Solusi optimal: X = (0, 1, 1, 0) • Greedy by profitdangreedyby densitymemberikansolusi optimal!
Contoh 2: Greedy 0/1 Knapsack • w1 = 100; p1 = 40; w2 = 50; p2 = 35; w3 = 45; p3 = 18; • w4 = 20; p4 = 4; w5 = 10; p5 = 10; w6 = 5; p6 = 2 • Kapasitasknapsack K = 100 Ketigastrategigagalmemberikansolusioptimal!
KesimpulanAlgoritma Greedy • Algoritma greedy tidakselaluberhasilmenemukansolusi optimal untukmasalah 0/1 Knapsack.
Fractional Knapsack • Penyelesaiandengan exhaustive search, tidakmungkindilakukan. • Olehkarena 0 xi 1, makaterdapattidakberhinganilai-nilai xi. • Persoalan Fractional Knapsack menjadi malar (continuous) sehinggatidakmungkindipecahkandenganalgoritmaexhaustive search.
Fractional Knapsack: Algoritma Greedy • Penyelesaiandenganalgoritma greedy. • Ketigastrategi greedy yang telahdisebutkan di atasdapatdigunakanuntukmemilihobjek yang akandimasukkankedalam knapsack.
Contoh Fractional Knapsack w1 = 18; p1 = 25; w2 = 15; p1 = 24 w3 = 10; p1 = 15 Kapasitas knapsack K = 20 • Solusi optimal: X = (0, 1, 1/2) • yang memberikan keuntungan maksimum = 31,5.
StrategiAlgoritma Greedy: Knapsack • Strategipemilihanobjekberdasarkandensitas pi/witerbesarakanselalumemberikansolusi optimal. • Agar proses pemilihanobjekberikutnya optimal, makakitaurutkanobjekberdasarkan pi/wi yang menurun, sehinggaobjekberikutnya yang dipilihadalahobjeksesuaidalamurutanitu. Jika p1/w1 p2/w2 ... pn/wnmakaalgoritma greedy denganstrategipemilihanobjekberdasarkan pi/witerbesarmenghasilkansolusi yang optimum.
Algoritma Fractional Knapsack • Algoritmapersoalan fractional knapsack: • Hitungharga pi/wi , i = 1, 2, ..., n • Urutkanseluruhobjekberdasarkannilai pi/widaribesarkekecil. • JalankanFractionalKnapsack.
Pseudo-code Fractional Knapsack Kompleksitaswaktualgoritma = O(n).
Exercise • Suppose that in 0-1 knapsack problem, the order of the items when sorted by increasing weight is the same as their order when sorted by decreasing value. Given an efficient algorithm to find an optimal solution to this variant of the knapsack problem, and argue that your algorithm is correct.
감사합니다 Grazias Kiitos Gratias Danke ﺷﻜﺮﺍﹰ 谢谢 TerimaKasih Merci Thank You धन्यवाद ありがとうございます