Professional Documents
Culture Documents
cc ti liu khc
Bi vit chc hn cn nhiu thiu st, rt mong nhn c s gp t pha cc bn bi vit
c hon thin hn
Chapter 1: M u
Mt cht v khi nim quy hoch ng
Nhc li v bi ton quy hoch:
[I]Bi ton quy hoch l bi ton ti u: gm c 1 hm f gi l hm mc tiu hay hm nh
gi; cc hm g1, g2, gn cho gi tr logic c gi l hm rng buc. Yu cu ca bi ton l tm
1 cu hnh x tha mn cc rng buc g1, g2, , gn: gi(x) = true vi mi 1 <= i <= n v x tt nht
tc l khng tn ti 1 cu hnh y no khc tha mn cc rng buc trn m f(y) tt hn f(x)[/I]
(Trch DSAP )
f[0][0] = 0
f[0][i] = -oo vi mi i > 0
Ci m mnh mun ni n khng phi bi ton hay thut ton gii bi ton ny m l cch
chng ta hiu v f[i][j].
Theo quan im c nhn mnh, chng ta c th hiu f[i][j] l 1 tp cc cch chia i s u tin ra
lm j phn, hay ni cch khc, n chnh l tp nghim ca bi ton vi n = i, s = j (xem li khi
nim v nghim ca bi ton phn u). V trong thc t lp trnh, chng ta ch cn lu li
V d vi dy 1 2 3 4 5
f[2][2] l 1 tp nghim ch gm 1 phn t
1|2
f[3][2] l 1 tp nghim gm cc phn t sau
1 2|3
1|2 3
f[4][3] l 1 tp nghim gm cc phn t sau
1|2|3 4
1|2 3|4
1 2|3|4
f[4][3] c tnh t f[3][2] v f[2][2], c th d dng nhn ra t tp nghim f[3][2] ta thm vo
|4, (tc l gi tr cc nghim trong f[3][2] cng thm 4^2) s c 2 nghim thuc f[4][3],
tng t vi f[2][2]. i vi bi ton ny c th tng qut ln l thm vo cc nghim thuc tp
f[k][j 1] dy |a[k + 1] a[k + 2] a[i], (tc l gi tr cc nghim trong f[k][j 1] cng thm
sum[k + 1..i]^2) th ta s c 1 phn nghim ca f[i][j].
C th d dng nhn thy rng f[n][s ] c tt c cc nghim ca bi ton, khng thiu cng
khng tha, vy nn kt qu ca bi ton s c ly ra t f[n][s ].
Ni n y th chng ta c th thy rng bn cht ca quy hoch ng cng l tm ra tp
nghim ca bi ton ri t tp nghim a ra nghim tt nht, c iu quy hoch ng lm 1
cch tinh t hn so vi duyt
Tm li, khi lm qh, cc bn thch chia bi ton th no th ty, nhng m khi ly kt qu ra t
1 hay nhiu trong bng phng n, th hp cc tp nghim ca nhng ny phi l tp cha ca
tp nghim bi ton (i vi nhng bi ton yu cu m s nghim th tp nghim ny phi
ng bng tp nghim ca bi ton)
Cc cch ci t QH:
Bi ton:
Cho 1 bng vung n x n, mi vung cha 1 s nguyn, tm ng i t (1, 1) n (n, n)
sao cho tng cc s trn ng i l ln nht v t (i, j) ch c th i n (i, j + 1) hoc (i + 1,
j) nu thuc bng.
Cch gii:
Gi f[i][j] l ng i c tng ln nht t (1, 1) n (i, j). Kt qu ca bi ton l f[n] [n].
C 2 cch xy dng cng thc truy hi:
[I]Cch 1: ta xem c th xy dng tp nghim ca f[i][j] nh th no.[/I]
Nhn thy rng mun i t (1, 1) n (i, j) chc chn phi i qua 1 trong 2 (i, j 1) v (i
1, j).
f[1][1] = 0
f[1][i] = f[1][i 1] + a[1][i] vi i > 1
f[i][1] = f[i 1][1] +a[i][1] vi i > 1
C 2 cch code, 1 l tm ra th t tnh bng phng n sau tnh tun t theo th t , 1 l
dng quy c nh tnh f[n][n]
Cch tnh tun t thng c dng khi d dng xc nh c th t quy hoch ng.
Trong v d ny, chng ta s tnh bng phng n theo th t t tri qua phi, t trn xung
di.
M:
f[1][1]:= 0;
for i:= 2 to n do
begin
f[i][1]:= f[i 1][1] + a[i][1];
f[1][i]:= f[1][i 1] + a[1][i];
end;
for i:= 2 to n do
for j:= 2 to n do f[i][j]:= max(f[i 1][j], f[i][j 1]) + a[i][j];
writeln(f[n][s]);
Cch quy c nh thng c dng khi kh xc nh th t tnh ton, tuy nhin cch ny
thng tn thi gian thc hin chng trnh hn.
M:
// Hm cal tr v gi tr ca f[i][j]
function cal(i, j: longint): longint;
begin
// Nu f[i][j] c tnh th tr v f[i][j]
if f[i][j] <> -oo then exit(f[i][j]);
//
if
if
if
if
a[i][j];
Tnh
(i =
(i =
(i >
(i >
f[i][j]
1) and (j
1) and (j
1) and (j
1) and (j
=
>
=
>
1)
1)
1)
1)
then
then
then
then
f[i][j]:=
f[i][j]:=
f[i][j]:=
f[i][j]:=
exit(f[i][j]);
end;
begin
Khi to cc f[i][j] ban u bng -oo
...
writeln(cal(f[n][n]));
end.
a[1][1];
cal(i, j 1) + a[i][j];
cal(i 1, j) + a[i][j];
max(cal(i 1, j), cal(i, j 1)) +
M:
Ngoi ra khi s trng thi trn tnh ton l thuyt kh ln trong khi trong thc t khng cn tnh
ht nhng trng thi ny th c 1 cch lm khc tng t nh loang, mnh s ni thm v n
trong nhng v d sau
Mi cch lm u c nhng u khuyt im ring, v vy cc bn cn s dng linh hot chng
vo cc bi ton khc nhau.