Program Dinamis
Program Dinamis
(Dynamic Programming)
1
2
Program Dinamis
• Program Dinamis (dynamic programming):
- metode pemecahan masalah dengan cara menguraikan
solusi menjadi sekumpulan tahapan (stage)
- sedemikian sehingga solusi dari persoalan dapat
dipandang dari serangkaian keputusan yang saling
berkaitan.
5
• Perbedaan Algoritma Greedy dengan
Program Dinamis:
Greedy: hanya satu rangkaian keputusan yang
dihasilkan
6
Tinjau graf di bawah ini. Kita ingin menemukan
lintasan terpendek dari 1 ke 10.
7
2 5
1
2 4 3 4
6 8 3
6
4
1 3 2 6 3 10
3 9 4
4
3 1
4
3
4 7
5
8
• Prinsip optimalitas berarti bahwa jika kita bekerja
dari tahap k ke tahap k + 1, kita dapat menggunakan
hasil optimal dari tahap k tanpa harus kembali ke
tahap awal.
… ck , k 1 …
1 2 … k k +1 … n
9
Karakteristik Persoalan
Program Dinamis
1. Persoalan dapat dibagi menjadi beberapa tahap
(stage), yang pada setiap tahap hanya diambil
satu keputusan.
9
6
7 10 12
1
4
8
11
11
3. Hasil dari keputusan yang diambil pada setiap tahap
ditransformasikan dari status yang bersangkutan ke
status berikutnya pada tahap berikutnya.
12
6. Keputusan terbaik pada suatu tahap bersifat
independen terhadap keputusan yang dilakukan
pada tahap sebelumnya.
13
Dua pendekatan PD
• Dua pendekatan yang digunakan dalam PD:
1. PD maju (forward atau up-down)
2. PD mundur (backward atau bottom-up).
14
Misalkan x1, x2, …, xn menyatakan peubah (variable)
keputusan yang harus dibuat masing-masing untuk
tahap 1, 2, …, n. Maka,
1.Program dinamis maju. Program dinamis bergerak
mulai dari tahap 1, terus maju ke tahap 2, 3, dan
seterusnya sampai tahap n. Runtunan peubah keputusan
adalah x1, x2, …, xn.
17
Lintasan Terpendek
(Shortest Path)
• Tentukan lintasan terpendek dari simpul 1 ke
simpul 10:
7
2 5
1
2 4 3 4
6 8 3
6
4
1 3 2 6 3 10
3 9 4
4
3 1
4
3
4 7
5
18
Penyelesaian dengan Program Dinamis
Mundur
k = 2, 3, 4
Keterangan:
a. xk : peubah keputusan pada tahap k (k = 2, 3, 4).
b. c : bobot (cost) sisi dari s ke xk
sxk
Solusi Optimum
s f1(s) x1*
2 2 1
3 4 1
4 3 1
22
Tahap 2:
f 2 ( s ) min{c x2 s f1 ( x2 )}
x2
23
Tahap 3:
f 3 ( s ) min{c x3s f 2 ( x3 )}
x3
24
Tahap 4:
f 4 ( s) min{c x4 s f 3 ( x4 )}
x4
25
Solusi optimum dapat dibaca pada tabel di bawah ini:
4
10
9 6 4 1 11
26
Penganggaran Modal
(Capital Budgeting)
• Sebuah perusahaan berencana akan
mengembangkan usaha (proyek) melalui ketiga
buah pabrik (plant) yang dimilikinya. Setiap pabrik
diminta mengirimkan proposal (boleh lebih dari
satu) ke perusahaan untuk proyek yang akan
dikembangkan. Setiap proposal memuat total biaya
yang dibutuhkan (c) dan total keuntungan (revenue)
yang akan diperoleh (R) dari pengembangan usaha
itu. Perusahaan menganggarkan Rp 5 milyar untuk
alokasi dana bagi ketiga pabriknya itu.
27
• Tabel berikut meringkaskan nilai c dan R untuk
masing-masing proposal proyek. Proposal proyek
bernilai-nol sengaja dicantumkan yang berarti
tidak ada alokasi dana yang diberikan ntuk setiap
pabrik. Tujuan Perusahaan adalah memperoleh
keuntungan yang maksimum dari pengalokasian
dana sebesar Rp 5 milyar tersebut. Selesaikan
persoalan ini dengan program dinamis.
28
Pabrik 1 Pabrik 2 Pabrik 3
Proyek c1 R1 c2 R2 c3 R3
1 0 0 0 0 0 0
2 1 5 2 8 1 3
3 2 6 3 9 - -
4 - - 4 12 - -
29
Penyelesaian dengan Program Dinamis
x3
x2
x1
31
Penyelesaian dengan Program Dinamis Maju.
Misalkan,
Rk(pk) = keuntungan dari alternatif pk pada
tahap k
32
Relasi rekurens keuntungan optimal:
f ( x ) max {R1(p1)}
1 1 feasible
(basis)
proposal _ p1
k = 2, 3
Catatan:
1. xk – 1 = xk – ck(pk)
33
Relasi rekurens keuntungan optimal menjadi
f ( x ) max {R1(p1)}
1 1 c1 ( p1 ) x1
(basis)
k = 2, 3
34
Tahap 1
f ( x ) max {R1(p1)}
1 1 c1 ( p1 ) x1
p1 1 , 2 , 3
35
Tahap 2
36
Tahap 3
37
Rekonstruksi solusi:
x3 p3* x2 p2* x1 p1* (p1*, p2*,
p3*)
1 (5 – 0 = 5) 4 (5 – 4 = 1) 2 (2, 4, 1)
1
2 (4 – 2 = 2) 3 (3, 2, 2)
2 (5 – 1 = 4)
3 (4 – 3 = 1) 3 (2, 3, 2)
38
Integer (1/0) Knapsack
Pada persoalan ini,
1. Tahap (k) adalah proses memasukkan barang ke dalam
karung (knapsack) (ada 3 tahap).
2. Status (y) menyatakan kapasitas muat karung yang
tersisa setelah memasukkan barang pada tahap
sebelumnya.
40
• Selanjutnya, kita bandingkan nilai keuntungan dari
objek pada tahap k (yaitu pk) plus nilai fk-1(y – wk)
dengan keuntungan pengisian hanya k – 1 macam
objek, fk-1(y).
41
Relasi rekurens untuk persoalan ini adalah
f0(y) = 0, y = 0, 1, 2, …, M (basis)
fk(y) = -, y < 0 (basis)
42
• fk(y) adalah keuntungan optimum dari persoalan 0/1
Knapsack pada tahap k untuk kapasitas karung
sebesar y.
M=5
Barang ke-i wi pi
1 2 65
2 3 80
3 1 30
44
Tahap 1:
f1(y) = max{f0(y), p1 + f0(y – w1)}
= max{f0(y), 65 + f0(y – 2)}
Solusi Optimum
y f0(y) 65 + f0(y – 2) f1(y) (x1*, x2*, x3*)
0 0 - 0 (0, 0, 0)
1 0 - 0 (0, 0, 0)
2 0 65 65 (1, 0, 0)
3 0 65 65 (1, 0, 0)
4 0 65 65 (1, 0, 0)
5 0 65 65 (1, 0, 0)
45
Tahap 2:
f2(y) = max{f1(y), p2 + f1(y – w2)}
= max{f1(y), 80 + f1(y – 3)}
Solusi Optimum
y f1(y) 80 + f1(y – 3) f2(y) (x1*, x2*, x3*)
0 0 80 + (-) = - 0 (0, 0, 0)
1 0 80 + (-) = - 0 (0, 0, 0)
2 65 80 + (-) = - 65 (1, 0, 0)
3 65 80 + 0 = 80 80 (0, 1, 0)
4 65 80 + 0 = 80 80 (0, 1, 0)
5 65 80 + 65 = 145 145 (1, 1, 0)
46
Tahap 3:
f3(y) = max{f2(y), p3 + f2(y – w3)}
= max{f2(y), 30 + f2(y – 1)}
Solusi Optimum
y f2(y) 30 + f2(y – 1) f3(y) (x1*, x2*, x3*)
0 0 30 + (-) = - 0 (0, 0, 0)
1 0 30 + (-) = - 0 (0, 0, 0)
2 65 30 + 0 = 30 65 (1, 0, 0)
3 80 30 + 65 = 95 95 (1, 0, 1)
4 80 30 + 80 = 110 110 (0, 1, 1)
5 145 30 + 80 = 110 145 (1, 1, 0)
48
• Misalkan G = (V, E) adalah graf lengkap berarah
dengan sisi-sisi yang diberi harga cij > 0.
49
• Setiap tur pasti terdiri dari sisi (1, k) untuk
beberapa k V – {1} dan sebuah lintasan dari
simpul k ke simpul 1.
51
Hubungan rekursif:
f (i , ) c i ,1
, 2 i n (basis)
0 10 15 20
5 0 9 10
6 13 0 12
8 8 9 0
Tahap 1: f (i, ) c i ,1
, 2 i n
Diperoleh:
f(2, ) = c21 = 5;
f(3, ) = c31 = 6;
f(4, ) = c41 = 8;
53
Tahap 2:
f (i, S ) min{c f ( j, S { j})} untuk S = 1
jS ij
Diperoleh:
f(2, {3}) = min{c23 + f(3, )} = min{9 + 6} = min{15} = 15
f(2, {4}) = min{c24 + f(4, )} = min{10 + 8} = min{18} = 18
f(3, {2}) = min{c32 + f(2, )} = min{13 + 5} = min{18} = 18
f(3, {4}) = min{c34 + f(4, )} = min{12 + 8} = min{20} = 20
f(4, {2}) = min{c42 + f(2, )} = min{8 + 5} = min{13} = 13
f(4, {3}) = min{c43 + f(3, )} = min{9 + 6} = min{15} = 15
54
Tahap 3:
f (i, S ) min{c f ( j, S { j})}
jS ij
Diperoleh:
f(2, {3, 4}) = min{c23 + f(3, {4}), c24 + f(4, {3})}
= min{9 + 20, 10 + 15}
= min{29, 25} = 25
f(1, {2, 3, 4}) = min{c12 + f(2, {3, 4}), c13 + f(3, {2, 4}),
c14 + f(4, {2, 3})}
= min{10 + 25, 15 + 25, 20 + 23}
= min{35, 40, 43} = 35
56
Menentukan lintasan yang dilalui
• Tinjau pada setiap f(i, S) nilai j yang meminimumkan
persamaan (2)
• Misalkan J(i, S) adalah nilai yang dimaksudkan tersebut.
Maka, J(1, {2, 3, 4}) = 2. Jadi, tur mulai dari simpul 1
selanjutnya ke simpul 2.
• Simpul berikutnya dapat diperoleh dari f(2, {3, 4}), yang
mana J(2, {3, 4}) = 4. Jadi, simpul berikutnya adalah
simpul 4.
• Simpul terakhir dapat diperoleh dari f(4, {3}), yang mana
J(4, {3}) = 3. Jadi, tur yang optimal adalah 1, 2, 4, 3, 1
dengan bobot (panjang) = 35.
57