370 likes | 763 Views
Analisa Algoritma Greedy Algorithm. Tuti Widya Lestari, S.Kom. Contents. Algoritma Greedy Contoh Algoritma Greedy Masalah penukaran uang Knapsack 0/1. Pendahuluan. Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi .
E N D
AnalisaAlgoritmaGreedy Algorithm TutiWidya Lestari, S.Kom.
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).