Professional Documents
Culture Documents
Chng 4
Qui hoch ng v gii thut
tham lam
Qui hoch ng
Gii thut tham lam
2
1. Qui hoch ng
Quy hoch ng (dynamic programming) gii cc bi ton
bng cch kt hp cc li gii ca cc bi ton con ca bi
ton ang xt.
Phng php ny kh dng khi cc bi ton con khng c
lp i vi nhau, tc l khi cc bi ton con c dng chung
nhng bi ton chu (subsubproblem).
Qui hoch ng gii cc bi ton chu dng chung ny
mt ln v lu li gii ca chng trong mt bng v sau
khi phi tnh li khi gp li bi ton chu .
Qui hoch ng c p dng cho nhng bi ton ti u
ha (optimization problem).
3
Bn bc ca qui hoch ng
S xy dng mt gii thut qui hoch ng c th c chia
lm bn bc:
1. c trng ha cu trc ca li gii ti u.
2. nh ngha gi tr ca li gii ti u mt cch quy.
3. Tnh tr ca li gii ti u theo kiu t di ln.
4. Cu to li gii ti u t nhng thng tin c tnh
ton.
4
Th d1: Nhn xu ma trn
Cho mt chui <A
1
, A
2
, , A
n
> gm n matrn, v ta mun
tnh tch cc ma trn.
A
1
A
2
A
n
(5.1)
Tch ca xu ma trn ny c gi l m-ng-ngoc-y-
(fully parenthesized ) nu n l mt ma trn n hoc l tch
ca hai xu ma trn m-ng-ngoc-y- .
Th d: A
1
A
2
A
3
A
4
c th c m-ng-ngoc-y- theo 5
cch:
(A
1
(A
2
(A
3
A
4
)))
(A
1
((A
2
A
3
)A
4
)
((A
1
A
2
)(A
3
A
4
))
(A
1
(A
2
A
3
))A
4
)
(((A
1
A
2
)A
3
)A
4
)
5
Cch m ta m ng ngoc mt xu ma trn c nh hng
rt ln n chi ph tnh tch xu ma trn.
Th d: A
1
10 100
A
2
100 5
A
3
5 50
((A
1
A
2
)A
3
)) thc hin
10.100.5 + 10.5.50 = 5000 + 2500
= 7500 php nhn v hng.
(A
1
(A
2
A
3
)) thc hin
100.5.50 + 10.100.50 = 25000 + 50000 = 75000 php nhn v
hng.
Hai chi ph trn rt khc bit nhau.
6
Pht biu bi ton nhn xu ma trn
Bi ton tnh tch xu ma trn:
'Cho mt chui <A
1
, A
2
, , A
n
> gm n matrn, vi mi
i = 1, 2, , n, ma trn A
i
c kch thc p
i-1
p
i
, ta m-ng-
ngoc tch ny sao cho ti thiu ha tng s php nhn v
hng.
y l mt bi ton ti u ha thuc loi kh.
7
Cu trc ca mt cch m ng ngoc ti u
Bc 1: c trng ha cu trc ca mt li gii ti u.
Dng A
i..j
k hiu ma trn kt qu ca vic tnh
A
i
A
i+1
A
j
.
Mt s m ng ngoc ti u ca tch xu ma trn A
1
.A
2
A
n
Tch xu ngay ti v tr nm gia A
k
v A
k+1
vi mt tr
nguyn k, 1 s k < n. Ngha l, trc tin ta tnh cc chui ma
trn A
1..k
and A
k+1..n
v ri nhn chng vi nhau cho ra A
1.n
.
Chi ph ca s m ng ngoc ti u ny = chi ph tnh A
l..k
+
ch ph tnh A
k+1..n
, + chi ph nhn chng li vi nhau.
8
Din t li gii mt cch quy
y, nhng bi ton con ca ta l bi ton xc nh chi ph
ti u ng vi s m ng ngoc cho chui A
i
.A
i+1
A
j
vi
1 s i s j s n.
t m[i, j] l tng s ti thiu cc php nhn v hng c
i hi tnh ma trn A
i..j
. Chi ph ca cch r nht tnh
A
1..n
s c ghi m[1, n].
Gi s rng s m ng ngoc ti u tch i tch chui A
i
A
i+l
A
j
ti gia A
k
and A
k+l
, vi i s k < j. Th m[i, j] bng vi
ch ph ti thiu tnh A
i..k
v A
k+1..j
, cng vi chi ph
nhn hai ma trn ny li vi nhau.
m[i, j] = m[i, k] + m[k+1, j] + p
i-1
p
k
p
j
.
9
Mt cng thc quy
Nh vy, nh ngha quy cho chi ph ti thiu ca mt
s m ng ngoc cho A
i
A
i+l
A
j
l nh sau:
m[i, j] = 0 nu i = j,
= min {m[i, k] + m[k + 1, j] + p
i-1
p
k
p
j
.}
nu i < j. (5.2)
gip theo di cch to mt li gii ti u, hy nh
ngha:
s[i, j]: tr ca k ti chng ta tch tch xu ma trn
A
i
A
i+1
A
j
t n mt s m ng ngoc ti u.
10
Mt nhn xt quan trng
Mt nhn xt quan trng l
''S m ng ngoc ca xu con A
1
A
2
....A
k
bn trong s m
ng ngoc ti u ca xu A
1
A
2
A
n
cng phi l mt s m
ng ngoc ti u''.
Nh vy, mt li gii ti u cho bi tan tch xu ma trn
cha ng trong n nhng li gii ti u ca nhng bi ton
con.
Bc th hai ca phng php qui hoch ng l nh ngha
tr ca li gii ti u mt cch quy theo nhng li gii ti
u ca nhng bi ton con.
11
Tnh nhng chi ph ti u
Thay v tnh li gii da vo cng thc cho (5.2) bng mt
gii thut quy, chng ta i thc hin Bc 3 ca qui hoch
ng: tnh chi ph ti u bng cch tip cn t di ln.
Gi s ma trn A
i
c kch thc p
i-1
p
i
vi
i = 1, 2 ,.., n.
u vo l chui tr s <p
0
, p
1
, , p
m
>.
Th tc dng mt bng m[1..n, 1..n] lu cc chi ph m[i, j]
v bng s[1..n, 1..n] lu gi tr no ca v tr k m thc
hin c chi ph ti u khi tnh m[i, j].
Th tc MATRIX-CHAIN-ORDER tr v hai mng m v s.
12
Th tc tnh hai bng m v s
procedure MATRIX-CHAIN-ORDER(p, m, s);
begin
n:= length[p] - 1;
for i: = 1 to n do m[i, i] := 0;
for l:= 2 to n do /* l: length of the chain */
for i:= 1 to n l + 1 do
begin
j:= i + l 1;
m[i, j]:= ; /* initialization */
for k:= i to j-1 do
begin
q:= m[i, k] + m[k + 1, j] + p
i-1
p
k
p
j
;
if q < m[i, j] then
begin m[i, j]: = q; s[i, j]: = k end
end
end
end
13
Mt th d: Tnh tch xu ma trn
V ta nh ngha m[i, j] ch cho i < j, ch phn ca bng m
trn ng cho chnh mi c dng.
Cho cc ma trn vi kch thc nh sau:
A
1
30 35
A
2
35 15
A
3
15 5
A
4
5 10
A
5
10 20
A
6
20 25
Hnh 4.1 trnh by bng m v s c tnh bi th tc
MATRIX-CHAIN-ORDER vi n = 6.
14
Mt th d v tnh tch xu ma trn (tt.)
Mng m
i
1 2 3 4 5 6
6 15125 10500 51375 3500 5000 0
5 11875 7125 2500 1000 0
j 4 9357 4375 750 0
3 7875 2625 0
2 15750 0
1 0
Mng s Hnh 5.1
i
1 2 3 4 5
6 3 3 3 5 5
5 3 3 3 4
j 4 3 3 3
3 1 2
2 1
15
Mt th d v tnh tch xu ma trn (tt.)
m[2,5] = min
= 7125
k = 3 for A
2..5
2 5
1 2 5
1 4 5
m[2, 2] m[3, 5] p.p p 0 2500 35.15.20 13000
m[2,3] m[4, 5] p p p 2625 100 35.5.30 7125
m[2, 4] m[5m5] p p p 4375 0 35.10.20 11375
+ + = + + =
+ + = + + =
+ + = + + =