620 likes | 826 Views
Design and Analysis of Algorithm Dynamic Programming. Aryo Pinandito, ST, M.MT – PTIIK Universitas Brawijaya. Pemrograman Dinamis ( Dynamic Programming ). M etode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan tahapan ( stage )
E N D
Design and Analysis of AlgorithmDynamic Programming Aryo Pinandito, ST, M.MT – PTIIK UniversitasBrawijaya
PemrogramanDinamis (Dynamic Programming) • Metodepemecahanmasalahdengancaramenguraikansolusimenjadisekumpulantahapan (stage) • Sedemikiansehinggasolusidaripersoalandapatdipandangdariserangkaiankeputusan yang salingberkaitan. • Istilah"pemrogramandinamis" munculkarenaperhitungansolusimenggunakantabel-tabel.
KarakteristikPemrogramanDinamis • Terdapatsejumlahberhinggapilihan yang mungkin, • Solusipadasetiaptahapdibangundarihasilsolusitahapsebelumnya, • Kita menggunakanpersyaratanoptimasidankendalauntukmembatasisejumlahpilihan yang harusdipertimbangkanpadasuatutahap.
Greedy vs Dynamic Programming Greedy Dynamic Programming • Hanyasaturangkaiankeputusan yang dihasilkan • Lebihdarisaturangkaiankeputusan yang dipertimbangkan.
Greedy: Graf LintasanTerpendek 1 ke 10. Greedy: 1 – 2 – 6 – 9 – 10 dengancost = 2 + 4 + 3 + 4 = 13 Dynamic Programming: akandijelaskankemudian
Prinsip Optimalitas • Pada program dinamis, rangkaian keputusan yang optimal dibuat dengan menggunakan Prinsip Optimalitas. • Prinsip Optimalitas: jika solusi total optimal, maka bagian solusi sampai tahap ke-k juga optimal.
PrinsipOptimalitas (2) • Prinsipoptimalitasberartibahwajikakitabekerjadaritahap k ketahap k + 1, kitadapatmenggunakanhasil optimal daritahap k tanpaharuskembaliketahapawal. • Ongkospadatahap k +1 = (ongkos yang dihasilkanpadatahap k ) + (ongkosdaritahap k ketahap k + 1) …… …… 1 2 k k +1 n
KarakteristikPersoalanPemrogramanDinamis • Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya diambil satu keputusan. • Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan dengan tahap tersebut. Secara umum, status merupakan bermacam kemungkinan masukan yang ada pada tahap tersebut.
Graf Multitahap (Multistage Graph) Tiapsimpul di dalamgraftersebutmenyatakan status, sedangkan V1, V2, … menyatakantahap.
KeputusandanOngkos • Hasildarikeputusan yang diambilpadasetiaptahapditransformasikandari status yang bersangkutanke status berikutnyapadatahapberikutnya. • Ongkos (cost) padasuatutahapmeningkatsecarateratur (steadily) denganbertambahnyajumlahtahapan. • Ongkospadasuatutahapbergantungpadaongkostahap-tahap yang sudahberjalandanongkospadatahaptersebut.
KeputusandanOngkos (2) • Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan pada tahap sebelumnya. • Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk setiap status pada tahap k + 1. • Prinsip optimalitas berlaku pada persoalan tersebut.
Dua pendekatan PD • Duapendekatan yang digunakandalam PD: • 1. PD maju (forward atauup-down) • 2. PD mundur (backwardataubottom-up).
ContohPendekatan • Misalkan x1, x2, …, xnmenyatakanpeubah (variable) keputusan yang harusdibuatmasing-masinguntuktahap 1, 2, …, n. Maka: • Pemrogramandinamismaju. Program dinamisbergerakmulaidaritahap 1, terusmajuketahap 2, 3, danseterusnyasampaitahapke-n. Runtunanpeubahkeputusanadalah x1, x2, …, xn. • Pemrogramandinamismundur. Program dinamisbergerakmulaidaritahap n, terusmundurketahap n – 1, n – 2, danseterusnyasampaitahap ke-1. Runtunanpeubahkeputusanadalahxn, xn-1, …, x1.
PrinsipOptimalitas PD Maju (Forward) • Prinsipoptimalitaspada PD maju: • Ongkospadatahap k +1 = (ongkos yang dihasilkanpadatahap k ) + (ongkosdaritahap k ketahap k + 1) • k = 1, 2, …, n – 1 • Prinsipoptimalitaspada PD mundur: • Ongkospadatahap k = (ongkos yang dihasilkanpadatahap k + 1) + (ongkosdaritahap k + 1 ketahap k ) • k = n, n – 1, …, 1
Langkah-langkah Pengembangan Algoritma Program Dinamis • Karakteristikkanstruktursolusi optimal. • Definisikansecararekursifnilaisolusi optimal. • Hitungnilaisolusi optimal secaramajuataumundur. • Konstruksisolusi optimal.
Shortest Path Dynamic Programming
LintasanTerpendek (Shortest Path) • Tentukanlintasanterpendekdarisimpul 1 kesimpul 10:
Penyelesaiandengan Program DinamisMaju • Misalkan x1, x2, …, x4adalahsimpul-simpul yang dikunjungipadatahap k (k = 1, 2, 3, 4). • Makarute yang dilaluiadalah • x1 x2 x3 x4 10 , • dalamhalini x1 = 1.
LintasanTerpendek (Shortest Path) • Padapersoalanlintasanterpendek (shortest path) ini: • Tahap (k) adalah proses memilihsimpultujuanberikutnya (ada 4 tahap). • Status (s) yang berhubungandenganmasing-masingtahapadalahsimpul-simpul di dalamgraf.
Capital Budgeting Dynamic Programming
Penganggaran Modal (Capital Budgeting) • Sebuahperusahaanberencanaakanmengembangkanusaha (proyek) melaluiketigabuahpabrik (plant) yang dimilikinya. • Setiappabrikdimintamengirimkan proposal (bolehlebihdarisatu) keperusahaanuntukproyek yang akandikembangkan. • Setiap proposal memuat total biaya yang dibutuhkan (c) dan total keuntungan (revenue) yang akandiperoleh (R) daripengembanganusahaitu. • Perusahaan menganggarkanRp 5 milyaruntukalokasidanabagiketigapabriknyaitu.
Tabelberikutmeringkaskannilai c dan R untukmasing-masing proposal proyek. • Proposal proyekbernilai-nolsengajadicantumkan yang berartitidakadaalokasidana yang diberikanuntuksetiappabrik. • Tujuan Perusahaan adalahmemperolehkeuntungan yang maksimumdaripengalokasiandanasebesarRp 5 milyartersebut. • Selesaikanpersoalaninidengan program dinamis.
Penyelesaian dengan Program Dinamis Maju. • Misalkan: • Rk(pk) = keuntungandarialternatifpkpadatahap k • fk(xk) = keuntungan optimal daritahap 1, 2, …, dan k yang diberikanoleh status xk
Penyelesaian dengan Program Dinamis • Tahap (k) adalah proses mengalokasikandanauntuksetiappabrik (ada 3 tahap, tiappabrikmendefinisikansebuahtahap). • Status (xk) menyatakanjumlah modal yang dialokasikanpadapadasetiaptahap (namunterikatbersamasemuatahaplainnya). • Alternatif (p) menyatakan proposal proyek yang diusulkansetiappabrik. Pabrik 1, 2, dan 3 masing-masingmemiliki 3, 4 dan 2 alternatif proposal.
0/1 Knapsack Dynamic Programming
Integer (1/0) Knapsack • Padapersoalan 1/0 Knapsack ini: • Tahap (k) adalah proses memasukkanbarangkedalamkarung (knapsack) (ada 3 tahap). • Status (y) menyatakankapasitasmuatkarung yang tersisasetelahmemasukkanbarangpadatahapsebelumnya. • Dari tahap ke-1, kitamasukkanobjek ke-1 kedalamkarunguntuksetiapsatuankapasitaskarungsampaibataskapasitasmaksimumnya. Karenakapasitaskarungadalahbilanganbulat, makapendekataninipraktis.
Misalkanketikamemasukkanobjekpadatahap k, kapasitasmuatkarungsekarangadalah y – wk. • Untukmengisikapasitassisanya, kitamenerapkanprinsipoptimalitasdenganmengacupadanilai optimum daritahapsebelumnyauntukkapasitassisa • y – wk ( yaitu fk-1(y – wk)).
Selanjutnya, kitabandingkannilaikeuntungandariobjekpadatahap k (yaitupk) plus nilai fk-1(y – wk) dengankeuntunganpengisianhanya k – 1 macamobjek, fk-1(y). • Jikapk + fk-1(y – wk) lebihkecildari fk-1(y), makaobjek yang ke-k tidakdimasukkankedalamkarung, tetapijikalebihbesar, makaobjek yang ke-k dimasukkan.
fk(y) adalahkeuntungan optimum daripersoalan 0/1 Knapsack padatahap k untukkapasitaskarungsebesar y. • f0(y) = 0 adalahnilaidaripersoalan knapsack kosong (tidakadapersoalan knapsack) dengankapasitas y, • fk(y) = -adalahnilaidaripersoalan knapsack untukkapasitasnegatif. • Solusi optimum daripersoalan 0/1 Knapsack adalahfn(M).
ContohPermasalahan 1/0 Knapsack • Jumlahbarang yang dapatdiambil • n = 3 • Kapasitasmaksimumkarung • M = 5
Travelling Salesperson Problem Dynamic Programming
Travelling Salesperson Problem (TSP) • Diberikansejumlahkotadandiketahuijarakantarkota. Tentukanturterpendek yang harusdilaluiolehseorangpedagangbilapedagangituberangkatdarisebuahkotaasaldanmenyinggahisetiapkotatepatsatu kali dankembalilagikekotaasalkeberangkatan.