- Simulation Laboratory

Transcription

- Simulation Laboratory
Dynamic Programming
Matakuliah Desain & Analisis Algoritma
(CS 3024)
ZK Abdurahman Baizal
STT Telkom Bandung



Ditemukan oleh Seorang matematikawan
AS, Richard Bellman tahun 1950
Kata Programming lebih mengacu ke
planning, dan bukan mengacu ke
pemrograman komputer
The word dynamic is related with the
manner in which the tables used in
obtaining the solution are constructed
ZKA-STT Telkom Bandung
2


Pemrograman Dinamis adalah sebuah teknik
untuk menyelesaikan masalah dengan cara
membagi masalah dalam beberapa sub masalah
yang tidak saling independent (istilah
lain:overlapping subproblem) [Levitin]
Pemrograman Dinamis (dynamic
programming): metode pemecahan masalah
dengan cara menguraikan solusi menjadi
sekumpulan langkah (step) atau tahapan (stage)
sedemikian sehingga solusi dari persoalan dapat
dipandang dari serangkaian keputusan yang
saling berkaitan [diktat Rinaldi]
ZKA-STT Telkom Bandung
3

Dynamic programming strategy is related with
divide and conquer strategy because both of
them are based on dividing a problem in
subproblems. However there are some
differences between these two approaches:
 in divide and conquer approaches the
subproblems are usually independent so all of
them have to be solved
 in dynamic programming approaches the
subproblems are dependent (overlapping) so
we need the result obtained for a
subproblem many times (so it is important to
store it)
ZKA-STT Telkom Bandung
4


Divide & Conquer menggunakan
pendekatan top down
Pemrograman Dinamis :


Pada umumnya menggunakan pendekatan bottom
up
Pendekatan Top down + bottom up  memory
functions (lihat levitin halaman 295)
ZKA-STT Telkom Bandung
5
The steps in the development of a
dynamic programming
1.
2.
Establish a recursive property that
gives the solution to an instance of the
problem
Solve an instance of the problem in a
bottom-up fashion by solving smaller
instance first
ZKA-STT Telkom Bandung
6
Bilangan Fibonacci
Bilangan Fibonacci
0,1, 1, 2, 3, 5, 8, 13, 21, 34,…
 Dengan relasi recurrence :
0
untuk n=0
F(n) = 1
untuk n=1
F(n-1)+F(n-2) untuk n>=2

ZKA-STT Telkom Bandung
7
Fibonacci using Divide-andConquer (Top down approach)
problem: determine the nth term in the fibo
sequence
inputs: a nonnegative integer n
outputs: fib, the nth term of the fibo sequence
function fib(n:integer):integer;
begin
if (n=1) or (n=2) then
fib:=1
else
fib:=fib(n-1)+fib(n-2)
end
end;
ZKA-STT Telkom Bandung
8
Ilustrasi
ZKA-STT Telkom Bandung
9
nth Fibonacci using Dynamic Programming
(Bottom up Approach)
1.
Establish a recursive property in terms of F, it
is
1


F n  
1
F [n  1]  F [n  2]

ZKA-STT Telkom Bandung
n 1
n2
n3
10
nth Fibonacci using Dynamic Programming
(Bottom up Approach)
2.
Solve the instance of the problem by
computing the 1th and 2nd term of
fibonacci sequence
Example. F[5]
Compute 1th term: F[1]=1
Compute 2nd term: F[2]=1
Compute 3rd term: F[3]=F[2]+F[1]=2
Compute 4th term: F[4]=F[3]+F[2]=3
Compute 5th term: F[5]=F[4]+F[3]=5
ZKA-STT Telkom Bandung
11
nth Fibonacci using Dynamic
Programming (Bottom up Approach)
problem: determine the nth term in the fibo sequence
inputs: a nonnegative integer n
outputs: fib2, the nth term of the fibo sequence
function fib2(n:integer):integer;
var
f: array[1..n] of integer;
i: index;
begin
f[1]:=1;
if n > 1 then
begin
f[2]:=1;
for i := 3 to n
begin
f[i]:=f[i-1]+f[i-2]
end
end
fib2:=f[n];
end;
ZKA-STT Telkom Bandung
12
Ilustrasi
ZKA-STT Telkom Bandung
13
Binomial Coefficient
Teorema Binomial :
(x + y)n =
C(n, 0) xn + C(n, 1) xn-1 y1 + … + C(n, k) xn-k yk
+ … + C(n, n) yn
Koefisien untuk xn-kyk adalah C(n, k).
Bilangan C(n, k) disebut koefisien
binomial.
ZKA-STT Telkom Bandung
14
Computing a binomial coefficient C(n,k)
1 if k=0 or n=k
C(n,k)=
C(n-1,k)+C(n-1,k-1) otherwise
ZKA-STT Telkom Bandung
15
Binomial Coefficient using Divide-andConquer (Top down approach)
comb(n,k)
//Problem : Compute the binomial coefficient
//Input : nonnegatif integers n and k, where k<=n
//Output :comb, the binomial coefficient C(n,k)
IF (k=0) OR (n=k) THEN
RETURN 1
ELSE
RETURN comb(n-1,k)+comb(n-1,k-1)
ZKA-STT Telkom Bandung
16
Binomial Coefficient using Dinamic
Programming (Bottom up approach)
Establish a recursive property
1
if k=0 or n=k
C[n,k]=
C[n-1,k]+C[n-1,k-1] otherwise
ZKA-STT Telkom Bandung
17
Binomial Coefficient using Dinamic
Programming (Bottom up Approach)
Bottom-up approach: constructing the Pascal’s triangle
0 1 2
3
4…
k-1
k
0
1
1
1 1
2
1 2 1
3
1 3 3 1
4 1
4 6
4
1
…
1
…
1
…
n-1 1
C(n-1,k-1)
C(n-1,k)
n
1
C(n,k)
ZKA-STT Telkom Bandung
18
Binomial Coefficient using Dinamic
Programming (Bottom up approach)
Algorithm :
Comb(n,k)
//Problem : Compute the binomial coefficient
//Input : nonnegative integers n and k, where k<=n
//Ouput : Comb, the binomial coefficient C(n,k)
FOR i:=0 to n DO
FOR j:=0,min{i,k} DO
IF (j=0) OR (j=k)
THEN C[i,j]:=1
ELSE
C[i,j]:=C[i-1,j]+C[i-1,j-1]
RETURN C[n,k]
ZKA-STT Telkom Bandung
19
Binomial Coefficient using Dinamic
Programming (Bottom up approach)
Contoh : Compute C[4,2] !
Compute row 0 : C[0,0] = 1
Compute row 1 : C[1,0] = 1
C[1,1] = 1
Compute row 2 : C[2,0] = 1
C[2,1] = C[1,0]+C[1,1]=1+1=2
ZKA-STT Telkom Bandung
20
Binomial Coefficient using Dinamic
Programming (Bottom up approach)
Compute row 3 : C[3,0] = 1
C[3,1] = C[2,0]+C[2,1]=1+2=3
C[3,2] = C[2,1]+C[2,2]=2+1=3
Compute row 4 : C[4,0] = 1
C[4,1] = C[3,0]+C[3,1]=1+3=4
C[4,2] = C[3,1]+C[3,2]=3+3=6
Jadi, C[4,2] = 6
ZKA-STT Telkom Bandung
21
Warshall’s Algorithms


Warshall’s Algorithms digunakan untuk
menentukan transitif closure dari suatu
graf berarah
Transitif closure  suatu matriks yang
berisi informasi tentang keberadaan
lintasan antar vertex dalam sebuah graf
berarah.
ZKA-STT Telkom Bandung
22
Warshall’s Algorithms


Warshall’s algorithm membentuk transitif
closure dari graf dengan n vertex melalui
sederetan matriks boolean
R(0),...., R(k-1), R(k),...., R(n)
Element r(k)[i,j] of matrix R(k) is equal to 1 if
only if there exists a directed path from vertex i
to the vertex j with intermediate vertex, if any,
numbered not higher than k.
rijk
ZKA-STT Telkom Bandung
23
Warshall’s Algorithms

Recursive property:
r(k)[i,j] = r(k-1)[i,j] OR
(r(k-1)[i,k] AND r(k-1)[k,j])
ZKA-STT Telkom Bandung
24
Warshall’s Algorithms
Given graf :
a
c
b
d
a
b
c
d
a
0
1
0
0
b
0
0
0
1
 adjacency
c
0
0
0
0
matrix
d
1
0
1
0
a
b
c
d
a
1
1
1
1
b
1
1
1
1  transitive
c
0
0
0
0
d
1
1
1
1
ZKA-STT Telkom Bandung
closure
25
Warshall’s Algorithms
Algorithm
Warshall(A[1..n, 1..n])
//Input : The adjacency matrix A of digraph
//Output : The transitive closure of digraph
R(0)  A
for k  1 to n do
for i  1 to n do
for j  1 to n do
r(k)[i,j ]= r(k-1)[i,j] OR (r(k-1)[i,k] AND r(k-1)[k,j])
return R(k)

ZKA-STT Telkom Bandung
26
Warshall’s Algorithms
Given graf :
a
c
Boxes are used for
getting R(k+1)
b
d
a
b
c
d
a
0
1
0
0
b
0
0
0
1
c
0
0
0
0
d
1
0
1
0
a
b
c
d
a
0
1
0
0
b
0
0
0
1  R(1)
c
0
0
0
0
d
1
1
1
0
ZKA-STT Telkom Bandung
 R(0)
27
Warshall’s Algorithms
Given graf :
a
c
Boxes are used for
getting R(k+1)
b
d
a
b
c
d
a
0
1
0
1
b
0
0
0
1
c
0
0
0
0
d
1
0
1
1
a
b
c
d
a
0
1
0
1
b
0
0
0
1  R(3)
c
0
0
0
0
d
1
1
1
1
ZKA-STT Telkom Bandung
 R(2)
28
Warshall’s Algorithms
Given graf :
a
c
b
a
b
c
d
a
1
1
1
1
b
1
1
1
1
c
0
0
0
0
Transitive
d
1
1
1
1
Closure
 R(4)
d
ZKA-STT Telkom Bandung
29
Dynamic Programming and
Optimization Problems

Dynamic programming is also related to
greedy strategy since both of them can be
applied to optimization problems which
have the property of optimal substructure
ZKA-STT Telkom Bandung
30
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.
ZKA-STT Telkom Bandung
31


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.
ongkos pada tahap k +1 =
(ongkos yang dihasilkan pada tahap k ) +
(ongkos dari tahap k ke tahap k + 1)
ZKA-STT Telkom Bandung
32


Dengan prinsip optimalitas ini dijamin
bahwa pengambilan keputusan pada suatu
tahap adalah keputusan yang benar untuk
tahap-tahap selanjutnya.
Pada metode greedy hanya satu rangkaian
keputusan yang pernah dihasilkan,
sedangkan pada metode program dinamis
lebih dari satu rangkaian keputusan.
Hanya rangkaian keputusan yang
memenuhi prinsip optimalitas yang akan
dihasilkan.
ZKA-STT Telkom Bandung
33
The steps in the development of a dynamic
programming (on optimization Problems)
1.
2.
3.
Establish a recursive property that gives the
optimal solution to an instance of the problem.
Compute the value of an optimal solution in a
bottom-up fashion.
Construct an optimal solution in a bottom-up
fashion.
ZKA-STT Telkom Bandung
34
The 0/1 Knapsack Problem





Let us consider an instance defined by the
first i items 1 ≤ i ≤ n
Weights w1,w2,..,wn
Values v1,v2,….,vn
Knapsack capasity j, 1 ≤ j ≤ W
V[i,j]  value of an optimal solution to
the instance
ZKA-STT Telkom Bandung
35
The 0/1 Knapsack Problem
All subsets of first i items that fit into
knapsack of capacity j divide into 2
categories :
 Among subsets that do not include the i
item  V[i-1,j]
 Among the subsets that do include ith
item (hence, j-wi ≤0)  vi+V[i-1,j-wi]
ZKA-STT Telkom Bandung
36
The 0/1 Knapsack Problem

Recurrence property :
if j-wi <0
V[i-1,j]
V[i,j]=
max{V[i-1,j], vi+V[i-1,j-wi]} if j-wi ≥0
Initial conditions :
V[0,j]=0 dan V[i,0]=0 i,j ≥ 0
ZKA-STT Telkom Bandung
37
Contoh Kasus Knapsack
item
Weight
value
1
2
$12
2
1
$10
3
3
$20
4
2
$15
ZKA-STT Telkom Bandung
Knapsack
Kapacity
W=5
38
Contoh Kasus Knapsack
Constructing the solution
Steps:
0
0
0
0
0
1
0
0
12
12 12
12

2
0
10
12
22 22
22

3
0
10
12
22 30
32
Compare V[4,5] with V[3,5]. Since
they are different it means that the
object item 4 is selected
Go to V[3,5-w4]=V[3,3]=22 and
compare it with V[2,3]=22. Since
they are equal it means that item 3
is not selected
Go to V[2,3]<>V[1,3]. it means that
also item 2 is selected
Go to V[1,3-w2]=V[1,2]=12 and
compare it with V[0,2]=0. Since
they are different it means that the
object item 1 is selected
4
0
10 15
25
37
Thus the solution is {1,2,4} or s=(1,1,0,1)

Example:
0
1
2
3
4
5

0
30
0
ZKA-STT Telkom Bandung
39
Floyd’s Algorithm


Floyd’s Algorithm digunakan untuk mencari jarak
dari masing-masing vertex ke semua vertex
yang lain dalam sebuah graf terhubung (berarah
maupun tidak berarah) yang sering juga disebut
all-pairs shortest-path problem
Elemen d[i,j] dari sebuah distance matrix
menyatakan panjang lintasan terpendek dari
vertex i ke vertex j
ZKA-STT Telkom Bandung
40
Floyd’s Algorithm
Given Graph :
2
a
7
6
3
c
b
1
d
a
b
c
d
a 0
∞
3 ∞
b 2
0
∞ ∞
c ∞ 7
0
1
d 6
∞
∞
0
a
b
c
d
a 0
∞
b 2
0
3 ∞
∞ ∞  distance matrix
c ∞ 7
0
1
d 6
∞
0
∞
 weight matrix
ZKA-STT Telkom Bandung
41
Floyd’s Algorithm


Floyd’s algorithm computes distance
matrix of a wighted graph with n vertces
through a series of n-by-n matrices:
D(0),….,D(k-1),D(k),….,D(n)
Element d(k)[i,j] of D(k) is the length of
shortest path among all path from vertex i
to the vertex j with each intermediate
vertex, if any, numbered not higher than k
ZKA-STT Telkom Bandung
42
Floyd’s Algorithm

Recurrence property :
min{d(k-1)[i,j], d(k-1)[i,k]+d(k-1)[k,j]}
for k≥1
d(k)[i,j]=
d(k)[i,j]=w[i,j]
ZKA-STT Telkom Bandung
for k=0
43
Floyd’s Algorithm
Algorithm
Floyd(W[1..n,1..n]
//input : The weight matrix W of a graph
//output : The distance matrix of the shortest path length
DW
for k 1 to n do
for i 1 to n do
for j 1 to n do
D[i,j]  min{D[i,j], D[i,k]+D[k,j]}

return D
ZKA-STT Telkom Bandung
44
Floyd’s Algorithm
weighted graf :
2
a
7
6
3
c
b
1
Boxes are used for
getting D(k+1)
d
a
b
c
a
0
∞
3 ∞
b
2
0
∞ ∞
c
∞ 7
0
1
d
6
∞
∞
0
a
b
c
d
a
0
∞
3 ∞
b
2
0
5 ∞  D(1)
c
∞ 7
0
1
d
6 ∞
9
0
ZKA-STT Telkom Bandung
d
 D(0)
45
Floyd’s Algorithm
weighted graf :
2
a
7
6
3
c
b
1
Boxes are used for
getting D(k+1)
d
a
b
c
a
0
∞
3 ∞
b
2
0
5 ∞
c
9
7
0
1
d
6
∞
9
0
a
b
c
d
a
0
10
3
4
b
2
0
5
6  D(3)
c
9
7
0
1
d
6
16
9
0
ZKA-STT Telkom Bandung
d
 D(2)
46
Floyd’s Algorithm
weighted graf :
2
a
7
6
3
c
b
1
a
b
c
d
a
0
10
3
4
b
2
0
5
6
c
7
7
0
1
d
6
16
9
0
 D(4)
 distance matrix
d
ZKA-STT Telkom Bandung
47

Similar documents