Báo Cáo Seminar - Phương pháp quy hoạch động
Transcript of Báo Cáo Seminar - Phương pháp quy hoạch động
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
1/75
Mc lc
LI MU ................................................................................................................. 4
CHNG 1: TNG QUAN VQUY HOCH NG ........................................... 6Bi ton ti u ............................................................... ..61.1
1.1.1Khi nim6
1.1.2Mt s v d v bi ton ti u6
1.1.3Nguyn l ti u Bellman7
Phng php quy hoch ng. ...................................... ..71.2
1.2.1Phng php chia tr...8
1.2.2Khi nim v quy hoch ng.8
1.2.3Phng php quy hoch ng.10
1.2.4u im v hn ch ca phng php quy hoch ng12
CHNG 2: NG DNG PHNG PHP QUY HOCH NG GII MTSBI TON CTH ............................................................................................. 14
1 Bi ton: Chia phn thng. ................................................................................ 141.1. Pht biu bi ton .......................................................... 14
1.2. tng 30s ................................................................... 14
1.3. Lp hthc.................................................................... 15
1.4. Thut ton ..................................................................... 16
1.5. Tnh ng n ............................................................... 21
1.6. phc tp thut ton .................................................. 21
1.7. ng dng thc tin : ..................................................... 21
1.8. Chng trnh : ............................................................... 22
2 Bi ton: Lp lch thu thmay hng thng ...................................................... 242.1 Pht biu bi ton. ......................................................... 24
2.2 tng 30s. .................................................................. 24
2.3 Lp hthc.................................................................... 24
2.4 Thut ton. .................................................................... 25
2.5 Tnh ng n. .............................................................. 28
2.6 phc tp thut ton .................................................. 28
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
2/75
2.7 ng dng ...................................................................... 28
3 Bi ton: Dy con c tng chia ht cho k ............................................................ 293.1 Pht biu bi ton. ......................................................... 29
3.2 tng sau 30s ............................................................ 29
3.3 Phng php quy hoch ng ....................................... 293.4 Thut gii v chng trnh............................................ 30
3.5 Tnh ng n v tnh dng .......................................... 30
3.6 phc tp thut ton .................................................. 31
3.7 ng dng : .................................................................... 31
4 Bi ton: Tng ca n stnhin sp theo trt tkhng tng......................... 334.1 Pht biu bi ton .......................................................... 33
4.2 tng 30s ................................................................... 33
4.3 Lp hthc.................................................................... 33
4.4 Thut ton ..................................................................... 35
4.5 Tnh ng n ............................................................... 39
4.6 phc tp thut ton .................................................. 39
4.7 ng dng thc tin : ..................................................... 39
5 Bi ton: Khai trin nhthc Newton ................................................................. 40
5.1 Pht biu bi ton .......................................................... 40
5.2 tng 30s ................................................................... 405.3 Lp hthc.................................................................... 40
5.4 Thut ton ..................................................................... 41
5.5 Chng minh tnh ng n ........................................... 42
5.6 phc tp thut ton .................................................. 42
5.7 ng dng ...................................................................... 42
6 Bi ton: Tng sln chuyn ghra v chuyn ghvo ................................... 43
6.1 Pht biu bi ton. ......................................................... 43
6.2 tng 30s. .................................................................. 436.3 Lp hthc.................................................................... 44
6.4 Thut ton. .................................................................... 45
6.5 Tnh ng n. .............................................................. 50
6.6 phc tp thut ton .................................................. 50
6.7 ng dng ...................................................................... 50
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
3/75
7 Bi ton: Cp scng ........................................................................................... 51Pht biu bi ton .......................................................... 517.1
tng 30s ................................................................... 517.2
Lp hthc.................................................................... 517.3
Thut ton ..................................................................... 527.4 Chng minh tnh ng n ........................................... 547.5
phc tp thut ton .................................................. 547.6
ng dng ...................................................................... 547.7
8 Bi ton: Xa t nht k tca mt xu c xu i xng. ...................... 55Pht biu bi ton .......................................................... 558.1
tng 30s ................................................................... 558.2
Lp hthc: .................................................................. 568.3
Thut ton ..................................................................... 578.4
Tnh ng n. .............................................................. 628.5
phc tp thut ton .................................................. 628.6
9 Bi ton: Ngi nng dn ................................................................................... 63Pht biu bi ton .......................................................... 639.1
tng 30s ................................................................... 639.2
Lp cng thc................................................................ 649.3
Thut ton ..................................................................... 649.4 Chng minh tnh ng n ........................................... 669.5
phc tp thut ton .................................................. 669.6
ng dng ...................................................................... 669.7
10 Bi ton nhn ma trn .......................................................................................... 67
Pht biu bi ton .......................................................... 6710.1
tng 30s ................................................................... 6810.2
Gii thut quy hoch ngError! Bookmark not defined.10.3
Thut ton ..................................................................... 7110.4 Tnh ng n v tnh dng .......................................... 7110.5
phc tp thut ton .................................................. 7210.6
ng dng ca ma trn ................................................... 7210.7
Kt lun.......................................................................................................................... 74
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
4/75
LI MU
Trong thc t, khi gp mt bi ton, mt vn cn c gii quyt, ta lunmong mun tm c phng n cho kt qutt nht, ti u nht. Bi vy, cc lp bi
ton vti u ha lun ng mt cai tr quan trng, v tnh ng dng cao trong thc
tin.
i vi lp bi ton ti u, c rt nhiu phng php gii quyt nh: phng
php nhnh cn, phng php tham lam, phng php quy hoch ng. Ty tng bi
ton cthm ta sdng phng php thch hp, nhm t c hiu qucao nht
(hiu nng, tc thc hin, phc tp, bnhsdng..). Trong , phng php
quy hoch ng (Dynamic programming) lun c u tin la chn v tnh hiu qu
cao v ti u hn hu ht cc phng php khc.
Cc bi ton quy hoch ng chim mt vtr kh quan trng trong tchc hot
ng v sn xut. Chnh v l m trong cc k thi hc sinh gii quc gia v quc t
chng ta thng gp loi ton ny.
Thng thng nhng bi ton dng phng php quay lui, vt cn cho cc bi
ton quy hoch ng th chc thvt c cc tp dliu nh, kch thc chng vi
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
5/75
chc byte. Nu tm c ng hthc thhin bn cht quy hoch ng ca bi ton
v kho tchc dliu th ta c thxl c nhng tp dliu kh ln.
Phng php quy hoch ng l phng php gii quyt tt cc bi ton ti u,
ng thi khi p dng gii mt sbi ton khng ti u cng cho ra kt qurt tt.
Tuy nhin, vic p dng phng php quy hoch ng khng phi d, v mi bi ton
c c im tnh cht ring v cch gii hon ton khc nhau. Vy mt bi ton nh
thno th c thp dng c phng php quy hoch ng, v liu c phi rng tt
ccc bi ton u c thgii quyt c bng quy hoch ng?
Hy vng trong bo co ny, em c thlm r phn no nhng cu hi trn. Vcho mi ngi thy c tng quan vquy hoch ng v cc bi ton no gii quyt
bng phng php quy hoch ng.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
6/75
CHNG 1: TNG QUAN VQUY HOCH NG
Bi ton ti u1.1
1.1.1
Khi nim
Bi ton ti u gm c 1 hm f gi l hm mc tiu hay hm nh gi; cc hm
g1, g2, , gncho gi trlogic gi l hm rng buc. Yu cu ca bi ton l tm mt
phng n x thomn tt ccc rng buc g1, g2, , gnv x l tt nht, theo ngha
khng tn ti mt cu hnh no khc thomn cc hm rng buc m f() tt hn
f(x).
Bi ton ti u l bi ton thng c nhiu phng n chp nhn c v minghim c mt gi trnh gi. Mc tiu t ra l tm ra nghim ti u, l phng
n c gi trnh gi ln nht hoc nhnht (ti u).
1.1.2 Mt s v d v bi ton ti u
V d: Bi ton Ba l: c mt ba l c thcha ti a trng lng M v c n
vt (n 100), mi vt c trng lng wiv gi trbi. (M, wi, b i Hy chn v
xp cc vt vo ba l tng gi trca ba l l ln nht.
Vi bi ton trn ta thy:+ Hm mc tiu: ibi max
+ Hm rng buc : ipi M
Vi pi =0 : vt thI khng c chn
pi =1 : vt thI c chn.
Tm li, bi ton ti u rt phong ph, a dng, c ng dng nhiu trong thc
t. Tuy nhin, cn rt nhiu cc bi ton ti u l khng gii c hoc cha c li
gii.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
7/75
1.1.3 Nguyn l ti u Bellman
Nguyn l ti u ca R.Bellmam c pht biu nh sau: ti u bc th n
bng cch ti u tt ccon ng tin n bc n-1 v chn con ng c tng chi ph
tbc 1 n bc n-1 v t n-1 n n l tt nht (nhiu nht).
Nguyn l ny c tha nhn m khng chng minh.
Nguyn l ti u Bellman cng c th pht biu theo mt cch khc nh sau:
Vi mi qu trnh iu khin ti u, bt u t trng thi A0. Khi xy dng trng
thi Akbt ktrong qu trnh ttrng thi Ak-1,nu Ak-1l ti u, th Akxy dng
c sti u. Vy trng thi An cui cng sl ti u.
Phng php tm nghim ti u theo nguyn l Bellman c gi lphng
php quy hoch ng. Thut ngny ni ln thc cht ca qu trnh iu khin ti u
l ng: C th trong mt sbc u tin la chn iu khin ti u dng nh
khng tt nhng tu chung cqu trnh li l tt nht.
Phng php quy hoch ng1.2
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
8/75
1.2.1 Phng php chia tr
Chia tr l phng php tch bi ton ban u thnh cc bi ton con c
lp, sau gii cc bi ton con ri thp dn li gii tbi ton con nhnht n bi
ton ban u. Phng php chia trl mt phng php rt thng dng trong tin hc
v kthut tnh ton.
Phng php chia trthng c p dng cho nhng bi ton c bn cht
quy: bi ton P ban u c thc gii bng li gii ca bi ton con P c dng
ging nh P,nhng theo mt ngha no P phi nhhn P, dgii hn P v vic gii
n khng cn dng n P. Gii thut dng gii bi
ton c bn cht quy gi l gii thut quy.
1.2.2 Khi nim v quy hoch ng
a. Khi nim
Phng php quy hoch ng do nh ton hc
ngi MRichard Bellman (1920- 1984) pht minhnm 1953. Phng php ny dng gii cc bi ton
ti u c bn cht qui, tc l tm phng n ti u
cho bi ton c tha v tm phng n ti u
ca mt shu hn cc bi ton con. Cng p dng
phng php chia tr, nhng so vi quy, quy
hoch ng c ci tin v ti u hn rt nhiu.
Phng php quy gii quyt bi ton theo hng top-down (ttrn xung),
ngha l gii bi ton ban u, ta phi i gii cc bi ton con b hn, v chia cc
bi ton con ny b hn na, n cc bi ton c s. y l mt phng php hay, tuy
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
9/75
nhin phng php ny sgp hn chvmt thi gian, tc do phi tnh i tnh li
nhiu ln mt sbi ton con ging nhau no .
Ngc li, phng php quy hoch ng sdng nguyn l bottom-up, ngha l
"i tdi ln". u tin, ta sphi gii cc bi ton con c s, n gin nht, c th
tm ngay ra nghim. Sau kt hp cc bi ton con ny li tm li gii cho bi ton
ln hn v cnh thcho n khi gii c bi ton ban u. Vi phng php ny,
mi bi ton con sau khi gii xong u c lu trli v em ra sdng nu cn. Do
tit kim bnhv ci thin c tc .
Vy phng php quy hoch ng l mt kthut nhm n gin ha vic tnhton cc cng thc truy hi bng cch lu ton bhay mt phn kt qutnh ton ti
mi bc trc vi mc ch sdng li.
Quy hoch ng = Chia tr+ Hng lu tr(lu li kt qu).
b. c im ca phng php quy hoch ng
Khi gii mt bi ton bng cch chia tr, ta chia bi ton ln thnh cc bi
ton con cng kiu nhhn, v gii quyt bng gii thut quy. Khi , trn thc t,
nhiu kt qutrung gian phi tnh li nhiu ln, dn ti vic lng ph v chm tc .
V vy, trnh vic phi tnh ton li mt skt qutrung gian nhiu ln, ta
cn xy dng 1 bng phng n lu gicc kt qu tm c ca cc bi ton con.
T p dng cho vic tm kim kt quca cc bi ton cha ln hn. Vy quy hoch
ng bt u tvic gii tt ccc bi ton nhnht (bi ton c s) t tng
bc gii quyt nhng bi ton ln hn cho ti khi gii c bi ton ln nht (bi
ton ban u).
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
10/75
Vic p dng bng phng n khin quy hoch ng ti uu hn rt nhiu,
gim thiu cc qu trnh tnh ton, v thhin sc mnh ca nguyn l chia trn
cao .
Quy hoch ng thng dng mt trong 2 cch tip cn sau:
Tip cn tdi ln (bottom up)
Tip cn ttrn xung (top down)
Cch tip cn tdi ln hiu quhn nn cch tip cn tdi ln (bottom up)
thng c sdng nhiu hn.
Tm li:
Quy hoch ng dng gii quyt bi ton ti u theo nguyn l chia
tr nhng ci tin hn nhiu phng php gii quyt bi ton theo hng
quy, v thhin t tng chia trn cao .
Quy hoch ng lm gim phc tp, gim thi gian gii quyt bi
Quy hoch ng thng tip cn theo hng tdi ln (Bottomup)
1.2.3 Phng php quy hoch ng
a. Bi ton thno th c gii quyt bng quy hoch ng?
Mt bi ton ti u mun gii c bng phng php quy hoch ng khi bi
ton ti u c cc c im di y:
Bi ton ln phi phn r c thnh nhiu bi ton con, m sphi hp li gii
ca cc bi ton con cho ta li gii ca bi ton ln.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
11/75
V quy hoch ng l i gii tt ccc bi ton con nn nu khng khng
gian vt l lu trkt qu(bnh, a ) phi hp chng th phng php
quy hoch ng cng khng ththc hin c.
Qu trnh tbi bi ton c stm ra li gii bi ton ban u phi qua hu hnbc.
b. Cc bc thc hin quy hoch ng
Bc 1: Lp hthc truy hi
Da vo nguyn l ti u, ta chia bi ton thnh tng giai on, tm cch phn
r bi ton thnh cc bi ton con tng tc kch thc nhhn, tm hthc quanhgia kt qubi ton kch thc cho vi kt qu ca cc bi ton con cng
kiu c kch thc nhhn ca n nhm xy dng hthc truy hi.
Cth, ta chia vic gii bi ton thnh n trng thi: n, n-1, n-2, , 2, 1, 0. Mi
trng thi k khi chu tc ng iu khin dk sbin thnh trng thi k+1. Trng thi
k+1 khi chu tc ng iu khin dk+1sbin thnh trng thi k+2. Ta sso snh v tm
im chung gia cc trng thi d0, d1, d2, , dk, dk+1, , dn-1. T xy dng hthc
truy hi d l hthc truy hi tng qut cu bi ton.
Bc 2: Tchc dliu v chng trnh
Ta tchc dliu sao cho t cc yu cu sau:
Dliu c tnh ton dn theo cc bc.
Dliu c lu trvo bng phng n gim lng tnh ton lp li.
Kch thc bnhdnh cho lu trdliu cng nhcng tt, kiu dliu c
chn ph hp, nn chn n gin dtruy cp.
Cth:
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
12/75
Cc gi tr ca Fkthng c lu tr trong mt bng (mng mt chiu hoc
hai, ba, v.v chiu).
Ta tnh ton v lu li gi trca cc bi ton c s(ddng tm ra cch gii)
lm tin gii quyt cc bi ton ln hn. Da vo hthc truy hi v kt quca cc bi ton c sgii cc bi ton
ln hn
Lu trnghim tng ng vi cc gi trti u trong tng gian on vo bng
mt cch thch hp
Bc 3: Truy vt, tm nghim v lm tt
Da vo bng lu trnghim v bng phng n ti u trong tng giai on
xy dng, ta stm ra kt qunghim ti u ca bi ton.
Sau khi tm c nghim ti u ca bi ton. Ta tm cch lm tt thut ton
bng cch thu gn h thc truy hi v gim kch thc bnh. V dnh tm cch
gim b nh lu tr t mng hai chiu thnh mng mt chiu, t mng mt chiu
xung thnh hs.
Trong thc t, khi mun lm tt vkhng gian, ta sphi tchc li chng
trnh v thc hin thm cc bc lm tt, dn ti thit hi v thi gian tnh ton, v
ngc li. Bi vy, trong mt strng hp, ta cn iu chnh gia lm tt khng gian
v thi gian t c hiu sut m vic tt nht.
1.2.4 u im v hn ch ca phng phpquy hoch ng
a. u im
Phng php quy hoch ng ci thin ng kcvkhng gian lu trv thi
gian tnh ton so vi hu ht cc phng php gii quyt bi ton ti u khc.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
13/75
b. Hn ch
Vic tm h thc truy hi hoc tm cch phn r bi ton khng phi l d.
Nhiu khi i hi sphn tch tng hp rt cng phu, dsai st, kh nhn ra nh th
no l thch hp, i hi nhiu thi gian suy ngh. ng thi khng phi lc no kt
hp li gii ca cc bi ton con cng cho kt quca bi ton ln hn.
Khi bng lu tri hi mng hai, ba chiu th kh c thxl dliu khi
kch c d liu ln. C nhng bi ton ti u khng th gii c bng quy hoch
ng
Tng kt :
Khng phi lc no vic kt hp cc bi ton con cng cho ta kt quca bi
ton ln hn. Hay ni cch khc l vic tm kim "cng thc truy hi" rt kh khn.
Ngoi ra, slng cc bi ton con cn lu trc thrt ln, khng chp nhn c v
dliu v bnhmy tnh khng cho php.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
14/75
CHNG 2: NG DNG PHNG PHP QUY HOCH NG GII MT
SBI TON CTH
1
Bi ton: Chia phn thng.
1.1.Pht biu bi ton
Cn chia ht m phn thng cho n hc sinh sp theo thttgii trxung sao
cho mi bn khng nhn t phn thng hn bn xp sau mnh.
1 m, n 70.
1.2. tng 30s
Lit k tt ccc cch chia thng. Th d, vi sphn thng m = 7, v shc
sinh n = 4 sc 11 cch chia 7 phn thng cho 4 hc sinh theo yu cu ca u bi.
l:
Phng n 1 2 3 4
1 7 0 0 0
2 6 1 0 0
3 5 2 0 0
4 5 1 1 0
5 4 3 0 0
6 4 2 1 0
7 3 3 1 0
8 3 2 2 0
9 4 1 1 1
10 3 2 1 1
11 2 2 2 1
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
15/75
1.3.Lp h thc
Gi Chia(i, j) l scch chia i phn thng cho j hc sinh, ta thy: Nu khng c hc sinh no (j = 0) th khng c cch chia no (Chia = 0).
Nu khng c phn thng no (i = 0) th chc mt cch chia (Chia = 1- mi
hc sinh nhn 0 phn thng). Ta cng quy c Chia(0, 0) = 1.
Nu sphn thng t hn shc sinh (i < j) th trong mi phng n chia, t
hc sinh thi + 1 tri skhng c nhn phn thng no:
Chia(i, j) = Chia(i, i) nu i < j.
Ta xt tt ccc phng n chia trong trng hp i j. Ta tch cc phng n
chia thnh hai nhm khng giao nhau da trn sphn thng m hc sinh ng cui
bng thnh tch, hc sinh thj, c nhn:
Nhm th nht gm cc phng n trong hc sinh thj khng c nhn
thng, tc l i phn thng chchia cho (j1) hc sinh v do , scch chia,
tc l sphn tca nhm ny sl: Chia(i, j1).
Nhm th hai gm cc phng n trong hc sinh thj cng c nhn
thng. Khi , do hc sinh ng cui bng thnh tch c nhn thng th
mi hc sinh khc cng sc thng. Do ai cng c thng nn ta bt ca
mi ngi mt phn thng (hlnh sau), sphn thng cn li (i j) s
c chia cho j hc sinh. Scch chia khi sl Chia(i j, j).
Tng scch chia cho trng hp i j sl tng sphn tca hai nhm, ta c:
Chia(i,j) = Chia(i,j - 1) + Chia(i -j,j).
Tng hp li ta c:
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
16/75
i: l s phn thng.
j: l s hc sinh
iu kin Chia(i, j)
j = 0 Chia(i, j) = 0
i = 0 v j # 0 Chia(i, j) = 1
i < j Chia(i, i) =
i j Chia(i, j) = Chia(i, j - 1) + Chia(i -
j, j)
1.4.Thut ton
Ta c phng n u tin ca gii thut Chia nh sau:
Phng n 1: quy, s cch chia i phn thng cho j hc
sinh.
function Chia(i,j: integer):longint;
begin
if j = 0 then Chia:=0
else {j > 0}
if i = 0 then {i = 0; j > 0}
Chia:=1
else {i,j > 0}if i < j then {0 < i < j}
Chia:=Chia(i,i)
else {i >= j > 0}
Chia:=Chia(i,j-1)+Chia(i-j,j);
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
17/75
end;
Phng n ny chy chm v pht sinh ra qu nhiu ln gihm trng lp. Bng di y lit k sln gi hm Chia khi gii biton chia thng vi by phn thng (m = 7) v 4 hc sinh (n = 4).Th d, hm Chia(1,1) sc gi 9 ln, Tng sln gi hm Chial 79. 79 ln gi hm sinh ra kt qu11 l qu tn km. Ta c
phng n u tin ca gii thut Chia nh sau:
0 1 2 3 4
0 0 9 1 1 0
1 9 9 2 1 0
2 6 6 1 0 0
3 5 5 2 1 1
4 3 3 1 1 0
5 2 2 1 0 0
6 1 1 0 0 0
7 1 1 1 1 1
Lm tt ln 1:Phng n 1 kh dtrin khai nhng chng trnh s
chy rt lu, bn hy thgi Chia(66,32) tri nghim c iutrn. Din t quy thng trong sng, nhn tn, nhng khi thc
hin ssinh ra hin tng gi lp li nhng hm quy. Ci tin u
tin l trnh nhng ln gi lp nh vy. Mun thchng ta tnh sn
cc gi trca hm theo cc trca u vo khc nhau v in vo
mt mng hai chiu cc. Mng cc c m tnh sau:
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
18/75
const
MN = 70;{gioi han tren cua m va n}
type
ml1 = array[0..MN ] of longint;
ml2 = array[0..mn ] of ml1;
var cc: ml2;
Ta quy c cc[i, j] cha scch chia i phn thng cho j hc sinh.
Theo phn tch ca phng n 1, ta c:
cc[0, 0] = 1; cc[i, 0] = 0, vi i:=1..m.
cc[i, j] = cc[i, i], nu i < j
cc[i, j] = cc[i, j - 1]+cc[i -j, j], nu i j
Ct j -1 Ct j
Dng i - j [ij, j]
...
Dng i [i, j1] [i, j]
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
19/75
T ta suy ra quy trnh in tr vo bng cc nh sau:
Khi tr
cc[0, 0]:= 1;
vi i:=1..m: cc[i, 0]:= 0;
in bng: Ln lt in theo tng ct j:= 1..n. Ti mi ct j ta
t:
vi i:=0..j-1: cc[i,j ]:= cc[i, i];
vi i:= j..m: cc[i, j]:= cc[i, j-1] + cc[i-j, j];Nhn kt qu: Sau khi in bng, gi tr cc[m,n] chnh l kt
qu cn tm.
Phng n 2:Dng mng 2 chiu.
cc[i,j] = scch chia i phn thng cho j hc sinh
function Chia2(m,n: integer):longint;
var i,j: integer;
begin
cc[0,0 ]:=1;
for i:=1 to m do cc[i,0]:=0;
for j:=1 to n do
begin
for i:=0 to j-1 do cc[i,j ]:=cc[i,i ];
for i:=j to m do cc[i,j ]:=cc[i,j-1 ]+cc[i-j,j ];
end;
Chia2:=cc[m,n];
end;
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
20/75
Lm tt ln 2: Dng mng hai chiu chng ta ch c th tnh ton
c vi d liu nh. Bc ci tin sau y kh quan trng: chng ta
dng mng mt chiu. Quan st k quy trnh gn tr cho mng hai
chiu theo tng ct chng ta d pht hin ra rng ct th j c th c
tnh ton t ct th j - 1. Nu gi c l mng mt chiu s dng, ta cho
s hc sinh tng dn bng cch ln lt tnh j bc, vi j:= 1..n. Ti
bc th j, c[i] chnh l s cch chia i phn thng cho j hc sinh.
Nh vy, ti bc th j ta c:
c[i] ti bcj = c[i] ti bc (j 1), nu i < j. T y suy ra
on c[0..(j 1)] c bo lu.
c[i] ti bc j = c[i] ti bc (j 1) + c[i j] ti bc j,
nu i j.
Biu thc th hai cho bit khi cp nht mng c t bc th j 1 qua
bc th j ta phi tnh t trn xung, ngha l tnh dn theo chiu
tng ca i:= j...m.
Mng c c khi tr bc j = 0 nh sau:
c[0] = 1; c[i] = 0, vi i:= 1..m.
Vi ngha l, nu c 0 hc sinh th chia 0 phn thng cho 0
hc sinh s c quy nh l 1. Nu s phn thng m khc 0 th
chia m phn thng cho 0 hc sinh s c 0 phng n.
Ta c phng n 3, dng mt mng mt chiu c nh sau:
Phng n 3: dng mng 1 chiu c.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
21/75
Ti bc th j, c[i ] = s cch chia i phn thng cho j
hc sinh.
function Chia1(m,n: integer):longint;
var i,j: integer;
begin
fillchar(c,sizeof(c),0);
c[0 ]:=1;for j:=1 to n do
for i:=j to m do c[i ]:=c[i ]+c[i-j ];
Chia1:=c[m ];
end
1.5.Tnh ng n
Trong bi ton ny ta sdng t tng quy hoch ng voxy dng cng thc truy hi, v kim tra li bng quy cng mtkt qu. Nn gii thut chng ta sdng trn lun cho kt qung.
1.6. phc tp thut ton
quy Quy hoch ngQuy hoch ng
ci tin
Khng gian O(2n) O(m.n) O(m)
Thi gian O(2n) O(n2) O(n)
1.7.ng dng thc tin :
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
22/75
Phn chia cng vic trong thc t.
Lp lch cng vic, hoc lp lch cho my tnh
Lit k mt dy tng dn, hoc gim dn.
1.8.Chng trnh :
Code chng trnh vit bng C#:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;
usingSystem.Text;usingSystem.Threading.Tasks;
namespaceSeminarTin{
classProgram{
staticvoidMain(){
Console.WriteLine("PHUONG PHAP QUY HOACH DONG:\n");Console.WriteLine("Bai toan chia phan thuong\n");
Console.WriteLine("Nhap vao so hoc sinh:\n");long n= long.Parse(Console.ReadLine());Console.WriteLine("Nhap vao so phan thuong:\n");longm= long.Parse(Console.ReadLine());Console.WriteLine("So cach chia m phan thuong cho n hoc sinh:\n");Console.WriteLine(Chia(m,n));Console.ReadLine();
}
staticlongChia(longm, longn){
long[] c= newlong[m+ 1];for(inti= 0; i
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
23/75
}}
nh chy chng trnh:
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
24/75
2 Bi ton: Lp lch thu thmay hng thng
2.1 Pht biu bi ton.
C mt hp ng may ca i tc bn Mko di trong T
thng, ngi qun l cn phi lp lch s dng thmay mi thng
cho dn. Bit rng:
sthmay ti thiu cn trong thng thi l Scn[i];
tin dch vkhi thu 1 thmay mi l DV;
tin n b khi sa thi mt thmay l ST; lng thng mi thmay phi trl LT
Cn phi thu hay sa thi bao nhiu thmay mi thng
tng chi ph thmay ca dn l nhnht.
Gi thit Kt lun
T = 3DV=4; ST= 5; LT=6 Scn={11; 9;
10}
26511 10 10
2.2 tng 30s.
Lc bt u sdng nhiu thmay hon thnh l hng v
iu chnh theo tng thng. Nhc im tn thi gian, khng phi
lc no cng tm c sthmay cn thit.
2.3 Lp h thc.
Tham sthhin kch thc bi ton l sthng T
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
25/75
Tng chi ph thmay trong T thng c tnh ttng chi ph
thmay ca
T-1 thng cng thm chi ph trthmay ca thng thT.
Chi ph trthmay ca thng thT bao gm :
Tin lng trcho sthmay ca thng T v
Tin dch vnu s thmay ca thng T ln hn s
th may thng T-1 hay tin sa thi nu s th may
trong thng T nhhn sthmay ca thng T-1.
Kch thc bi ton phthuc vo 2 tham s: sthng v sthmay
ca thng
2.4 Thut ton.
Lp cng thc quy.
Scn[i] luu scng nhn cn thu cho thng thi Smax l scng nhn ca thng cn nhiu ngui nht
Bi ton con nhnht ng vi i = 1 (thng du tin):
C(1, j) = j * (DV + LT) vi j = Scn[1]..Smax
C(i, j) l chi ph ti thiu ca i thng du tin nu ti thng th
i c j cng nhn duc thu.
C(i, j) = Min{ C(i-1, k) + chi ph dtk ngui thnh j ngui }
( i=2..T; j =Scn[i]..Smax; k = Scn[i-1]..Smax)
Kt qubi ton l: Kq = Min{C(T, j) + chi ph sa thi j
ngui}
j=Scn[T]..Smax
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
26/75
Xy dng bi ton cha C(i,j)
Mng C[1..T+1, 1..Smax]: C[i, j] ghi nhn gi trC(i, j)
C(1, j) = j * (DV + LT) vi j = Scn[1]..Smax
C(i, j) = Min{ C(i-1, k) + chi ph dtk ngui thnh j ngui }
( i=1..T; j =Scn[i]..Smax; k = Scn[i-1]..Smax)
C(T+1, j) = C(T, j) + (j * ST)j=Scn[T]..Smax
Scn i \ j 9 10 11
11 1 999 2 99+45+12=1
99+50+6=1
99+55=164
10 3 155+50=205 155+55+4=214
4 205+60=265 2144+66=280
Mng Truoc[1..T, 1..Smax]: Truoc[i, j] := k l snguithu thng thi-1 dc C[i, j]
Scn i \ j 9 10 1111 1 99
9 2 99+45+12=156
99+50+6=155 99+55=164
10 3 155+50=205 155+55+4=214
4 205+60=265 2144+66=280
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
27/75
Thut ton to bng phng n C v Truoc:
{
for(j=Scn[1]; j
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
28/75
2.5 Tnh ng n.
Trong bi ton ny ta sdng t tng quy hoch ng vo xy dng cngthc truy hi, v kim tra li bng quy cng mt kt qu. Nn gii thut chng tasdng trn lun cho kt qung.
2.6 phc tp thut ton
phc tp quy Quy hoch ngQuy hoch ng
ci tin
Khng gian O(2n) O(2n) O(n)
Thi gian O(2n) O(n2) O(n)
2.7 ng dng
Lp lch cho cng vic.
Lp lch cho trong my tnh.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
29/75
3 Bi ton: Dy con c tng chia ht cho k
3.1 Pht biu bi ton.
Cho dy s gm n s nguyn dng a1 , a2 , , an. Hy m xem c bao
nhiu dy con ( cc phn t lien tip) c tng chia ht cho k.
INPUT:
Dng 1: gm 2 s nguyn dng n v k.
Dng 2: cha n s nguyn dng.
OUTPUT: ghi kt qu tm c.
3.2 tng sau 30s
Sdng phng php vt cn gii bi ton. Lit k tt ccc phng n
c thxy ra. Chn 2 im bt k lm 2 u ca dy, v c n snn c n*(n-1)/2phng n. Mi dy con cn tnh tng ca dy xem c chia ht cho k hay khng,
phc tp l O(n) . Nh vy phc tp ca tng vt cn l O(n3).
3.3 Phng php quy hoch ng
INPUT OUTPUT
5 3
1 2 3 4 5
7
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
30/75
Ci tin tphng php vt: Ta thy, mun tnh tng 1 on (i,j) bt k ta c
thtnh ton n gin hn bng mt php tnh B[j]- B[i-1] vi mng B ngha l Bi
l tng cc st1 n i. Mng B c xy dng vi cng thc B[i]=B[i-1] + A[i],
phc tp cho bc ny l O(n).Nhn xt vmng B: Nu Bi v Bjng d khi chia cho k (i
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
31/75
V n xc nh nn khi (i=n) th chng trnh s dng => thut ton c tnh
dng.
Chng minh tnh ng n:
Ta c Cil slng strong mng B khi chia cho k c sd l i, tc ltrong mng B tn ti Cischia k d i. Vi Cista c tt cCi*(Ci-1)/2 cp s, mi
cp gm 2 s, tng ng vi Ci*(Ci-1)/2 cp (u,v) no m tng cc s trong
on (u+1,v) chia ht cho k (u thut ton lun ng.
3.6 phc tp thut ton
- Vkhng gian (bnh) : sdng 3 mng 1 chiu A, B, C kch thc N .
- Vthi gian:
Nhp dliu : O(n)
Xy dng mng B : O (n)
Xy dng mng C : O(n)
Tnh kt qu: O(n)
phc tp O(n)
So snh gia 2 phng php: vt cn v quy hoch ng
Vt cn Quy hoch ng
phc tp khng gian O(n) O(n)
phc tp thi gian O( n3) O(n)
3.7 ng dng :
Bi ton rn luyn t duy, v l thi Olympic tin hc.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
32/75
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
33/75
4
Bi ton: Tng ca n stnhin sp theo trt tkhng tng.
4.1 Pht biu bi ton
Hy tnh scch biu din stnhin mthnh tng ca nstnhin sp
theo trt tkhng tng. Th d, vi m= 7, n= 4 ta c:
7 = 7 + 0 + 0 + 0 = 6 + 1 + 0 + 0 = ...
4.2 tng 30s
Lit k tt ccc cch biu din . Th d, vi sm = 7, v sn= 4 sc 11
cch biu din tng ca m = 7 vi n = 4. l:
7 = 7 + 0 + 0 + 0
7 = 6 + 1 + 0 + 0
7 = 5 + 2 + 0 + 0
7 = 5 + 1 + 1 + 0
4.3 Lp h thc
Gi Bieudien(i, j) l scch biu din stnhin i cho j stnhin, ta thy:
Nu khng c s t nhin no (j = 0) th khng c cch biu din no
(Bieudien = 0).
Nu khng c stnhin no (i = 0) th chc mt cch biu din (Bieudien
= 1- mi stnhin nhn 0 stnhin). Ta cng quy c Bieudien(0, 0) =1.
Nu sstnhin t hn sstnhin (i < j) th trong mi phng n , ts
tnhin thi + 1 tri skhng c nhn stnhin no:
Bieudien(i, j) = Bieudien(i, i) nu i < j.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
34/75
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
35/75
Ta xt tt ccc phng n biu din trong trng hp i j. Ta tch cc phng
n biu din thnh hai nhm khng giao nhau da trn sstnhin m stnhin
nhnht, stnhin thj, c nhn:
Nhm thnht gm cc phng n trong stnhin thj khng c biudin, tc l i stnhin chbiu din cho (j1) stnhin v do , scchbiu din, tc l sphn tca nhm ny sl: Bieudien(i, j1).
Nhm thhai gm cc phng n trong s tnhin thj cng c nhn
thng. Khi , do stnhin nhnht c biu din th mi stnhin khc
cng scbiu din. Do s tnhin no cng c biu din nn ta bt
mt stnhin (coinh biu din ), sstnhin cn li (i j) sc
biu din cho j stnhin. Scch biu din khi sl Bieudien(i j, j).Tng scch biu din cho trng hp i j sl tng sphn tca hai nhm,
ta c:
Bieudien(i,j) = Bieudien(i,j - 1) + Bieudien(i -j,j)
4.4 Thut ton
Ta c phng n u tin ca gii thut Bieudien nh sau:
quy
function Bieudien(i,j: integer):longint;
begin
if j = 0 then Bieudien:=0
else {j > 0}
if i = 0 then {i = 0; j > 0}
Bieudien:=1
else {i,j > 0}
if i < j then {0 < i < j}
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
36/75
Bieudien:=Bieudien(i,i)
else {i >= j > 0}
Bieudien:=Bieudien(i,j-1)+Bieudien(i-j,j);
end;
Biu din vi s t nhin (m = 7) v 4 s t nhin (n = 4). Th d, hm
Bieudien(1,1) s c gi 9 ln, Tng s ln gi hm Bieudien l 79. 79 ln gi
hm sinh ra kt qu 11 l qu tn km. Ta c phng n u tin ca gii thut
Bieudien nh sau:
Kh d trin khai nhng chng trnh s chy rt lu, bn hy th gi
Bieudien(66,32) tri nghim c iu trn. Mun thchng ta tnh sn cc gi
tr ca hm theo cc tr ca u vo khc nhau v in vo mt mng hai chiu
Mang. Mng Mang c m tnh sau:
Gioihan
MN = 90;{gioi han tren cua m va n}
Kieuml1 = array[0..MN ] of longint;
ml2 = array[0..mn ] of ml1;
var Mang: ml2;
Ta quy c Mang[i, j] cha scch biu din i stnhin cho j stnhin.
Theo phn tch ca phng n 1, ta c:
Mang[0, 0] = 1; Mang[i, 0] = 0, vi i:=1..m.
Mang[i, j] = Mang[i, i], nu i < j
Mang[i, j] = Mang[i, j - 1]+Mang[i -j, j], nu i j
T ta suy ra quy trnh in tr vo bng Mang nh sau:
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
37/75
Khi tr
Mang[0, 0]:= 1;
vi i:=1..m: Mang[i, 0]:= 0;
in bng: Ln lt in theo tng ct j:= 1..n. Ti mi ct j ta t:
vi i:=0..j-1: Mang[i,j ]:= Mang[i, i];
vi i:= j..m: Mang[i, j]:= Mang[i, j-1] + Mang[i-j, j];
Nhn kt qu: Sau khi in bng, gi trMang[m, n] chnh l kt qucn tm.
Lm tt 1:Dng mng 2 chiu
Mang[i,j] = scch biu din i stnhin cho j stnhin
function Bieudien2(m,n: integer):longint;
var i,j: integer;
begin
Mang[0,0 ]:=1;
for i:=1 to m do Mang[i,0]:=0;
for j:=1 to n do
begin
for i:=0 to j-1 do Mang[i,j ]:=Mang[i,i ];
for i:=j to m do Mang[i,j ]:=Mang[i,j-1 ]+Mang[i-j,j ];
end;
Bieudien2:=Mang[m,n];
end;
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
38/75
Lm tt ln 2:Dng mng hai chiu chng ta ch c th tnh ton c vi d liu
nh. Bc ci tin sau y kh quan trng: chng ta dng mng mt chiu. Quan
st k quy trnh gn tr cho mng hai chiu theo tng ct chng ta d pht hin ra
rng ct th j c th c tnh ton t ct th j - 1. Nu gi c l mng mt chiu sdng, ta cho s s t nhin tng dn bng cch ln lt tnh j bc, vi j:= 1..n. Ti
bc th j, c[i] chnh l s cch biu din i s t nhin cho j s t nhin. Nh vy,
ti bc th j ta c:
c[i] ti bc j = c[i] ti bc (j 1), nu i < j. T y suy ra on c[0..(j
1)] c bo lu.
c[i] ti bc j = c[i] ti bc (j 1) + c[ij] ti bc j, nu i j.Biu thc th hai cho bit khi cp nht mng c t bc th j 1 qua bc
th j taphi tnh t trn xung, ngha l tnh dn theo chiu tng ca i:= j...m.
Mng c c khi tr bc j = 0 nh sau:
c[0] = 1; c[i] = 0, vi i:= 1..m.
Vi ngha l, nu c 0 s t nhin th biu din 0 s t nhin cho 0 s t
nhin s c quy nh l1. Nu s s t nhin m khc 0 th biu din m s tnhin cho 0 s t nhin s c 0 phng n.
Ta c phng n 3, dng mt mng mt chiu c nh sau:
Lm tt ln 3:dng mng 1 chiu c.
Ti bc th j, c[i ] = s cch biu din i s t nhin cho j s t
nhin.
function Bieudien1(m,n: integer):longint;
var i,j: integer;
begin
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
39/75
fillchar(c,sizeof(c),0);
c[0 ]:=1;
for j:=1 to n do
for i:=j to m do c[i ]:=c[i ]+c[i-j ];
Bieudien1:=c[m ];
end
4.5 Tnh ng n
Trong bi ton ny ta sdng t tng quy hoch ng vo xy dng cng
thc truy hi, v kim tra li bng quy cng mt kt qu. Nn gii thut chng
ta sdng trn lun cho kt qung.
4.6 phc tp thut ton
quy Quy hoch ng Quy hoch ngci tin
Khng gian O(2n) O(m.n) O(m)
Thi gian O(2n) O(n2) O(n)
4.7 ng dng thc tin :
Lp lch cng vic, hoc lp lch cho my tnh
Lit k mt dy tng dn, hoc gim dn.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
40/75
5 Bi ton: Khai trin nhthc Newton
5.1 Pht biu bi ton
Hy trin khai nhthc Newton (a + b) khi bit gi trn.
Input: snguyn duong n.
Output: nhthc (a + b)n c trin khai.
V d: vi n = 5 ta c khai trin sau:
(a + b)5 = a5+ 5a4b + 10a3b2+ 10a2b3+ 5ab4+ b+5
5.2 tng 30s
Vi sn cho trc b th ta c ththtnh bng tay, nhng vi sn ln th
xem ra khng khthi. V vy ta thxem c cch no gii quyt bi ton ny tt
hn khng.
5.3 Lp h thc
Nhthc
Newton c khi
trin theo cng thc
sau:
Vi
0
( )n
n k n k k
n
k
a b C a b
( 1) ( 1) !
! !( )!
k
n
n n n k nC
k k n k
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
41/75
Nh vy mun khai trin nhthc Newton th phi tnh Cknvi 0 k n.
Cng thc tnh thp chp n ca k nh sau:
1
1 1
1 0;
1 1
k
n k k
n n
k k nC
C C k n
5.4 Thut ton
Ta ci tin thut ton trn bng phng php quy hoch ng tnhCkn
nh sau:
Sdng mng C[0..n, 0k] lu cc kt qutnh C[i, j] trc ,
trong C[i, j] l tnh gi trca Cji
C[i, j] c tnh:
1 0; j 1
1, 1 1, 1
k
n
jC
C i j C i j j
Ta c thut ton quy hoch ng nh sau:
ProcedureC[n, k]
begin
{ Sdng mng 2 chiu C[0..n,0..k]}fori from0 ton - k doC[i, 0] = 1 endfor (* )
fori from0 tok doC[i, i] = 1 endfor (* * )
{tnh tng ct}
forj from1 tok do
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
42/75
fori fromj + 1 tonk + j do
C[i, j] = C[ i- 1, j - 1] + C[i - 1, j] ( * * * )
endfor
endforreturnC[n, k]
end
Sdng thtc trn dta to duc mng C[0..n, 0..k]. khai trin nhthc
ta ta cn dng nCkn(1 k n-1). Khi Cknchnh l phn tC[n, k] trong
mng
5.5 Chng minh tnh ng n
Trong bi ton ny ta sdng t tng quy hoch ng da trn cng thc
c sn nn gii thut chng ta sdng trn lun cho kt qung.
5.6 phc tp thut ton
phc tp vmt khng gian l O(n.k)
phc tp vmt thi gian l O(n.k)
5.7 ng dng
Bi ton rn luyn t duy.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
43/75
6 Bi ton: Tng sln chuyn ghra v chuyn ghvo
6.1 Pht biu bi ton.
Cn b tr k nhm hc sinh vo k trong s n phng hc chuyn sao cho
nhm c s hiu nh c xp vo phng c s hiu nh hn phng cha nhm c
s hiu ln. Vi mi phng c nhn hc sinh, cc gh tha phi c chuyn ra
ht, nu thiu gh th phi ly t kho vo cho mi hc sinh mt gh. Bit s hc
sinh trong mi nhm v s gh trong mi phng. Hy chn phng n b tr sao
cho tng s ln chuyn gh ra v chuyn gh vol t nht.
D liu vo ghi trong tp vn bn :
Dng u tin l hai tr kv n.
T dng th hai tr i l cc gi tr v[i,j] trong khong 0..10, vi i = 1..k
vj = 1..n; 1 k n100.
D liu ra ghi trong tp vn bn gm hai dng: dng u tin l tng s ln
chuyn gh ra v chuyn gh vo t nht. T dng th hai l dy k s hiu nhm
c chn cho mi phng hc.
Cc s liu vo v ra u l s t nhin v c ghi cch nhau bi du cch
trn midng.
6.2 tng 30s.
tng u tin l ta thv lit k tt cc phng n xp k nhm hc vo
n phng. Sau so snh cc kt quxem cch no l s ln chuyn ghl t
nht. Song c vcch ny khng khthi.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
44/75
kt qu241 3 4 6
V d:
Kt qu cho bit tng s ln chuyn gh ra v chuyn gh vo t nhtnu :
-
Nhm 1 xp vo lp 1;
-Nhm 2 xp vo lp 3;
-Nhm 3 xp vo lp 4;
-Nhm 4 xp vo lp 6.
6.3 Lp h thc.
Gi T(i,j) l tng s ln chuyn gh ra v chuyn gh vo khi gii bi tonvi inhm hc sinh m s 1..iv jlp m s 1..j, tc l thm m thu c khi
xp ht inhm hc sinh u tin vojlp u tin, ta thy:
a) Nu s nhm hc sinh nhiu hn s lp, i>jth khng c cch xp no.
T(i,j) = 0
b) Nu s nhm hc sinh bng s lp (i= j) th ch c mt cch xp l nhm no
vo lp .
c) Ta xt trng hp s nhm hc sinh t hn hn s lp (i
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
45/75
Nu lp thj c chn xp nhm hc sinh i th i1 nhm hc sinh u
tin sc phn phi vo j1 lp u tin. Tng sln chuyn ghra v
chuyn ghvo s khi sl
T(i1, j1) + v[i, j]. Nu lp thjkhng c chn cho phng n ti u th inhm hc sinh
phi c xp voj1 lp u tin v do tng sln chuyn ghra v
chuyn ghvo sl
T(i,j1).
Tng hp li ta c gi tr ti u khi xp inhm hc sinh vojlp l:
T(i,j) = max {T(i-1,j-1)+v[i,j],T(i,j-1)}
6.4 Thut ton.
Nu dng mng hai chiu T th ta c th tnh nh trong bng di y:
Ct j 1 Ct j
Dng i1 [i-1,j-1]
Dng i [i,j-1] [i,j]
T(i,j) = max {T(i-1,j-1)+v[i,j],T(i,j-1)}
Ngoi ra, ta cn cn t trong mi ca bng trn mt mng d liu bao
gm nphn t nh du lp no c chn cho mi tnh hung. Gi mng d
liu l L[i,j], ta d thy l nn in bng ln lt theo tng ct, ti mi ct ta
in bng t di ln theo lut sau:
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
46/75
Nu T[i1,j1] + v[i,j] > T[i,j1] th ta phi thc hin hai thao tc:
t li tr T[i,j]:= T[i1,j1] + v[i,j].
Ghi nhn vic chn lp jtrong phng n mi, c th ly phng n
chn lp (i1,j1) ri b sung thm thng tin chn lp jnh sau: tL[i,j]:=L[i1,j1] v nh du phn tjtrong mngL[i,j].
Nu T[i1,j1] + v[i,j] T[i,j1] th ta s khng chn lpj xp nhm
hc sinh iv do ch cn sao L[i, j1] sang L[i, j], tc l ta bo lu
phng n (i,j1).
Lm tt.
Phng n dng mng hai chiu tn km v min nh. Ta c th dng mt
mng mt chiu T[0..100] xem nh mt ct ca bng T ni trn. Ta duyt jbc.
Ti bc th j, gi tr T[i] s l tr ti u khi xp ht inhm hc sinh vo j lp.
Nh vy, ti bc thjta c:
Nu T[i1] ti bc j1 + v[i,j] > T[i] ti bc j 1 th ta phi thc hin
hai thao tc: t li tr T[i] ti bc j:= T[i1] ti bc j1 + v[i,j].
Ghi nhn vic chn lp jtrong phng n mi, c th ly phng n
chn lp (i1) bcj1 ri b sung thm thng tin chn lpjnh
sau: tL[i] ti bcj:=L[i1] ti bc j1 v nh du phn tj
trong mngL[i].
Nu T[i1] ti bcj1 + v[i,j] T[i] ti bcj1 th ta khng phi
lm g v s bo lu phng n c.
Biu thc so snh cho bit khi cp nht mng T t bc th j1 qua bc
thjta phi tnh t di ln, ngha l tnh dn theo chiu gim ca i:=j..1.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
47/75
nh du cc lp ta dng mng L[0..MN] mi phn tL[i] li l mt dy
sbyte. Nu dng mt bit cho mi lp th s byte cn dng nh du ti a MN
lp phi l:
kk = (MN+7) div8Vi MN = 101 ta tnh c
kk = (101+7) div8 = 13
Khi cn nh du lp th jtrong dyL[i] ta bt bit thjtrongL[i]. Khi cn
xem lp thjc c chn hay khng ta gi hm GetBit ly tr (0 hoc 1) ca
bitjtrong dy bitL[i].
Ta ch ti hai biu thc sau:
xc nh byte th my trong dy cha bitjta tnh:
b:= j div8;
xc nh v tr ca bitjtrong byte th bta tnh:
p:= j mod8;
//Cho gia tri bit thu j trong day byte L[i ]
functiongetbit(i,j: byte):byte;
varb,p: byte;
begin
b:= j div8;
p:= j mod8;
getbit:=(L[i ][b ] shrp) and1;
end;
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
48/75
//Gan tri 1 cho bit j trong day byte L[i ]
procedurebatbit(i,j:byte);
varb,p: byte;
begin
b:= j shr3;
p:= j and7;
L[i ][b ]:= L[i ][b ] or(1 shlp);
end;
Vi j= 0, tc l khi khng c lp no v khng c nhm hc sinh no ta
khi tr:
fillchar(L[0 ],16,0);
T[0 ]:=0;
Vi mij= 1..n, ta lu s nhm hc sinh phi khng ln hn s lp, tc l
ij. Vi i=jta s xp mi nhm vo mt lp. thc hin iu ny ta lu rng
phn tL[j1] ti bc trc cho bit j1 lp u c nhm hc sinh do tach cn nh du lp thjcho bcj:
L[j ]:=L[j-1 ];
batbit(j,j);
Nh vy ta cn chia qu trnh duyt theo cc lp t 1..nthnh hai giai on.
Giai on 1:Duyt t lp 1 n lp k, trong kchnh l s nhm hc sinh
v theo u bi, kn.
Giai on 2:Duyt nt nklp cn li.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
49/75
Phng n quy hoch ng vi mng mt chiu khi s nh sau:
procedurexuly;
vari,j: byte;
begin
{1. Khoi tri}
fillchar(L,sizeof(L),0);
{danh dau cac lop duoc chon}
T[0 ]:=0; {dotong so cach}
{Vi co k nhom hoc sinh nen xet k lo dau tien}
forj:=1 tok do
begin
L[j ]:=L[j-1];
batbit(j,j);
T[j ]:= T[j-1 ]+v[j,j ];
fori:=j-1 downto1 do
i fT[i ] < T[i-1 ]+v[i,j ] then
begin
T[i ]:= T[i-1 ]+v[i,j ];
L[i ]:= L[i-1 ];
batbit(i,j);
end;
end;{xet cac lop con lai}
forj:=k+1 ton do
fori:= k downto1 do
ifT[i ] < T[i-1 ]+v[i,j ] then
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
50/75
begin
T[i ]:= T[i-1 ]+v[i,j ];
L[i ]:= L[i-1 ];
batbit(i,j);end;
end;
6.5 Tnh ng n.
Trong bi ton ny ta sdng t tng quy hoch ng vo xy dng cngthc truy hi, v kim tra li bng quy cng mt kt qu. Nn gii thut chng
ta sdng trn lun cho kt qung.
6.6 phc tp thut ton
phc tp quy Quy hoch ngQuy hoch ng
ci tin
Khng gian O(2n) O(2n) O(n)
Thi gian O(2n) O(n2) O(n)
6.7 ng dng
Bi ton rn luyn t duy, v l thi Olympic tin hc.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
51/75
7
Bi ton: Cp scng
Pht biu bi ton7.1
Cho mt tp vn bn gm N (N rt ln) snguyn a1, a2, a3,..,anvi ia 30
000. Hy tm trong dy A mt dy con di nht lp thnh mt dy cp scng
c cng sai l d. Vi 0 < d 100.
Dliu vo:
-Dng u ghi sN
- N dng tip theo ghi cc sng vi dy A
Dliu ra:- Dng u ghi sM l sphn tv cng sai ca dy cp scng
- M dng tip theo ghi schsca cc sthuc cp scng.
tng 30s7.2
Nu dliu nhN=10000 th ta c thdng phng php duyt n thun
gii bi ton trn mt cch ddng, nhng vi dliu N
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
52/75
Suy ra: Fx[i]=Fx[i-d]+1;
V bit cng sai l d nn khi nhp c sk no th mun to thnh
cp scng tn cng bng k th strc phi l (k-d). Nh vy chiu di di
nht ca dy cp scng tn cng bng k sbng chiu di di nht ca dy cp scng tn cng l k-d cng 1.
Ta c thkhai bo nh sau:
Type arr=array[0..30000] of word;
var a,b :^arr;
Nhn xt chiu di ti a ca dy cp scng l 60001 nn ta khai bo word
l va .
Vi mng a dng cho cc skhng m,mng b dnh cho cc sm.
A[i] l chiu di di nht ca dy cp scng tn cng bng i,
B[i] l chiu di di nht ca dy cp scng tn cng bng -i,
Vy gii quyt bi ton cp scng ta chcn duyt vi tng cng sai t1 n
100 l c.
Thut ton7.4y l thut ton sdng phng php quy hoch ng.
procedure QHD;
var i:integer;
begin
max:=0;
for i:=1 to 100 do
begin
openf;
New(a);
New(b);
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
53/75
readln(f);
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
while not eof(f) dobegin
d:=max;
readln(f,k);
s:=k-i;
if s>=0 then [k]:=[s]+1
else
begin
if k>=0 then a[k]:=b^[abs(s)]+1
else b^[abs(k)]:=b^[abs(s)]+1;
end;
if max
if max
if dmax then
begin
luu:=i;
sc :=k;
end;
end;
dispose(a);dispose(b);
closef;
end;
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
54/75
end;
Chng minh tnh ng n7.5
Ta sdng cng thc tng qut tm ra dy con c cp scng. Vic s
dng phng php quy hoch ng l chng ta lu li cc gi tr tnh trong m
khng phi gi li nhiu ln. Nn r rng cng thc ny lun ng.
phc tp thut ton7.6
phc tp khng gian O(n)
phc tp thi gian O(n)
ng dng7.7
y l mt bi th trong Olypic tin hc.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
55/75
8 Bi ton: Xa t nht k tca mt xu c xu i xng.
Pht biu bi ton8.1
Dy k ts c gi l i xng nu cc phn tcch u u v cui ging
nhau. Cho dy s to bi n k tgm cc chci hoa v thng phn bit v cc
chs. Hy cho bit cn xo i ts t nht l bao nhiu k tthu c mt dy
i xng. Githit rng sau khi xo bt mt sk tts th cc k tcn li st
ng xch li st nhau.
tng 30s8.2
Dliu vo ghi trong tp vn bn vi cu trc nh sau:
Dng u tin l gi trn, 1 n 1000.
Dng thhai l n k tca dy vit lin nhau.
Ta c thchn phng n lit k, thtt ccc cch xa thu c dy con
i xng.
Th d, vi dy s gm 9 k t, s = 'baeadbadb' th cn xo t nht 4 k t,
chng hn, cc k tth5, 7, 8 v 9 sthu c dy i xng chiu di 5 l baeab:
baeadbadb baeab
Dnhin l c nhiu cch xo. Th d, c thxo cc k tth2, 3, 4 v 6 t
dy s thu c dy con i xng khc l bdadb vi cng chiu di 5:
baeadbadb bdadb
Tuy nhin p sl st nht cc k tcn loi bkhi s th l duy nht v
bng 4.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
56/75
Bi ton ny c nhiu bn c cng bli gii vi mt mng hai chiu
kch thc n2hoc vi ba mng mt chiu kch thc n, trong n l chiu di ca
dliu vo.
Vi mt nhn xt nhta c thpht hin ra rng chcn dng mt mng mtchiu kch thc n v mt vi bin n l .
Gi dy dliu vo l s. Ta tm chiu di ca dy con i xng v di nht
trch ts. Khi sk tcn xo ts sl t = length(s) - length(v). Dy con y
c hiu l dy thu c ts bng cch xo i mt sphn ttrong s. Th dvi
dy s =baeadbadb th dy con i xng di nht ca s sl baeab hoc bdadb,
Cc dy ny u c chiu di 5.
Lp h thc:8.3
Gi p(i, j) l chiu di ca dy con di nht thu c khi gii bi ton vi d
liu vo l on s[i..j]. Khi p(1, n) l chiu di ca dy con i xng di nht
trong dy n k ts[1..n] v do sk tcn loi bkhi dy s[1..n] sl
n-p(1,n) chnh l p sca bi ton.
Ta lit k mt stnh cht quan trng ca hm hai bin p(i, j). Ta c:
Nu i > j, tc l ch s u tri ln hn ch s u phi, ta quy c t
p(i, j) = 0.
Nu i = j th p(i, i) = 1 v dy kho st chcha ng 1 k tnn n l i
xng.
Nu i j v s[i] = s[j] th p(i, j) = p(i + 1, j 1) + 2. V hai k tu v cui
dy s[i, j] ging nhau nn chcn xc nh chiu di ca dy con i xng
di nht trong s[i + 1, j1] ri cng thm 2 n vng vi hai k tu v
cui dy l c.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
57/75
Nu i j v s[i] s[j], tc l hai k tu v cui ca dy con s[i..j] l khc
nhau th ta kho st hai dy con l s[i..(j1)] v s[(i + 1)..j] ly chiu di
ca dy con i xng di nht trong hai dy ny lm kt qu:
p(i,j) = max(p(i,j-1),p(i+1,j))
Vn t ra l cn tnh p(1, n). M mun tnh c p(1, n) ta phi tnh
c cc p(i, j) vi mi i, j = 1..n.
Thut ton8.4
Phng n quy
Phng n quy di y nh m ttrong hm nguyn rec(i, j) tnh trctip gi trp(i, j) theo cc tnh cht lit k. p scho bi ton khi sl
n-rec(1,n).
function rec(i,j: integer): integer;
begin
if i > j then rec:=0
else if i = j then rec:=1
else {i < j}
if s[i ] = s[j ] {i < j & s[i ] = s[j ]}
then rec:=rec(i+1,j-1)+2
else {i < j & s[i ] s[j ]}
rec:=max(rec(i,j-1),rec(i+1,j));
end;
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
58/75
Ta c bng m tnh sau:
Dng mt mng hai chiu
Gi quy spht sinh cc li gi hm trng lp nh phn tch trong bi
ton. Ta khc phc iu ny bng cch sdng mt mng hai chiu tnh trc
cc gi trca hm p(i, j), mi gi trc tnh ti a mt ln. Nu dng mt mng
hai chiu, th dmng p[0..n, 0..n] th gi trca p[i, j] sc in ln lt theo
tng ct, tct th1 n ct thn. Ti mi ct ta in tdi ln trn. Ta lu :
Phn tti ct i, dng j l gi trp[i, j] l chiu di ca dy con di
nht khi kho st dy con s[i..j].
Vi cc tri > j, ta quy nh p[i, j] = 0. Nh vy na tam gic di ca
ma trn p scha ton 0.
Nu i = j th p[i, j] = 1. Nh vy, mi trtrn ng cho chnh ca ma
trn p sl 1.
Vi cc cn li to(i, j) sthoiu kin i < j, nn p[i, j] sc
tnh nh sau:
if s[i ] = s[j ] then p[i,j ] = p[i+1,j-1 ]+2
else p[i,j]:= max(p[i,j-1],p[i+1,j ])
Bn hy thin mt vi gi trcho bng trn rt ra quy lut.
Hy bt u vi ct 1: p[1, 1] = 0;
Sau n ct 2:
p[2, 2] = 1; p[1, 2] = max(p[1, 1], p[2, 2]) = 1, v s[1] s[2].
Ri n ct 3:
Dng i [i,j-1] [i,j]
Dng i+1 [i+1,j-1] [i+1,j]
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
59/75
p[3,3]=1; p[2,3] = max(p[2, 2], p[3, 3]) = 1, v s[2] s[3];
p[1,3] = max(p[1,2], p[2,3]) = 1, v s[1] s[3],
Dng hai mng mt chiu
Ta skhng theo ui phng n dngmng hai chiu m hy cn cvo
quy lut in mng hai chiu vn dng cho hai mng mt chiu l v[0..(n + 1)]
v d[0..(n + 1)]. Theo kinh nghim, ta nn khai bo kch thc mng rng hn
chng hai phn tsdng cc phn tny nh nhng lnh canh cha cc gi tr
khi u phc vcho cc trng hp chsi, j nhn cc gi tr0 hoc n + 1.
Gismng v cha cc gi tr in ca ct j 1 trong mng hai chiu p.
Ta sin cc gi trcho ct j ca mng p vo mng mt chiu d. Nh vy, phntv[i] sng vi phn tp[j1, i] cn phn td[i] sng vi p[j, i]. Thtc
in trcho ct d ti bc j da theo kt qulu trong ct v ca bc j1 khi
snh sau:
for i:=j-1 downto 1 do
begin
if s[i ]=s[j ] then d[i ]:=v[i+1 ]+2
else d[i ]:=max(v[i ],d[i+1 ]);
end;
Sau mi ln lp vi j:=1..n ta chuyn gi tr ca d cho v chun b cho
bc tip theo.
procedure QHD2;
var i,j: integer;
begin
fillchar(v,sizeof(v),0);
for j:=1 to n do
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
60/75
begin
d[j ]:=1;
for i:=j-1 downto 1 do
begin
if s[i ]= s[j ] then d[i ]:=v[i+1 ]+2
else d[i ]:=max(v[i ],d[i+1 ]);
end;
v:=d;
end;
writeln(nl,n-d[1 ]); {dap so}
end;
Dng mt mng mt chiu
C thchsdng mt mng mt chiu d cho bi ton ny vi nhn xt sau
y. Ti bc cp nht thj, vi mi i = (j1)..1 ta c d[i] = p[i, j] v c tnh
nh sau:
Nu s[i] = s[j] th d[i] ti bc j bng d[i + 1] ti bc j1 cng vi 2.
Nu s[i] s[j] th
d[i] ti bc j bng max(d[i] ti bc j1, d[i + 1] ti bc j).
Nu ta tnh tdi ln, tc l tnh d[i] vi i = n..1 th d[i + 1] c sbghi .
Ta dng hai bin pht v tr bo lu gi trny.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
61/75
procedure QHD1;
var i,j,t,tr: integer;
begin
for j:=1 to n do
begin
tr:=0;
d[j ]:=1;
for i:=j-1 downto 1 do
begin
t:=d[i ];
if s[i ]=s[j ] then d[i ]:=tr+2
else d[i ]:=max(d[i ],d[i+1 ]);
tr:=t;
end;
end;
writeln(nl,n-d[1 ]); {dap so}
end;
D nhin phng n dng mt mng mt chiu sc coi trng tit kim
c min nh. Tuy nhin, tinh mt cht, bn spht hin ra rng thi gian tnh
ton
D nhin phng n dng mt mng mt chiu sc coi trng tit kim
c min nh. Tuy nhin, tinh mt cht, bn spht hin ra rng thi gian tnhton theo phng n ny khng t hn phng n dng hai mng mt chiu. Tht
vy, tnh mi phn tta phi dng thm hai php gn, trong khi dng hai mng
mt chiu ta ch phi thm mt php gn cho mi phn t. Hn na, dng hai
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
62/75
mng mt chiu thng trnh c nhm ln, do nhiu ngi thng chn
phng n ny.
Tnh ng n.8.5
Trong bi ton ny ta sdng t tng quy hoch ng vo xy dng cng
thc truy hi, v kim tra li bng quy cng mt kt qu. Nn gii thut chng
ta sdng trn lun cho kt qung.
phc tp thut ton8.6
phc tp
quy
Quy hoch ng
Quy hoch ng
ci tin
Khng gian O(2n) O(n.m) O(m)
Thi gian O(2n) O(n.m) O(n.m)
Bi ton vi ba phng n, quy, dng hai mng mt chiu v dng mt
mng mt chiu khi snh sau.
Dliu kim th Kt qudkin
9
baeadbadb
4
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
63/75
9 Bi ton: Ngi nng dn
Pht biu bi ton9.1
Mt ngi nng dn c mt scnh ng, mi cnh ng c bao quanh
bi cc hng cy bch. Ngoi ra ng ta c tp cc di t, mi mt di t c mt
hng cy bch. Trn cnh ng v gii t, xen gia hai cy bch l mt cy oliu.
Tt ccc cy bch hoc bao quanh cnh ng hoc nm trn di t v tt ccy
oliu u trng xem gia hai cy bch lin tip.
Mt ngy nngi nng dn m nng v cm thy sp phi i xa. Vi ngy
trc khi qua i ng gi ngi con trai ln nht n v ni vi anh ta Ta cho con
chn Q cy bch bt kv tt ccy oliu nm gia 2 cy bch lin tip m con
chn u thuc vcon.Ngi con c thchn thp cc cy bch bt ktcnh
ng v di t, v ngi con trai ny rt thch cy oliu nn anh ta chn Q cy bch
sao cho tha hng c nhiu cy bch nht c th.
Trong hnh di githit, gisngi con chn c 17 cy bch (Q=17)
c c scy oliu ln nht anh ta phi chn trong cnh ng 1 v cnh ng 2,
vi cch chn ny anh ta stha hng c 17 cy oliu. Cho trc thng tin vcnh ng, di t v scy bch ngi con c chn. Hy xc nh scy oliu
ln nht m ngi con c chn.
tng 30s9.2
Phng php u tin ta ngh n l thri lit k tt ccc trng hp cy
oliu. Nhng vi s 17 cy bch chng hn th s t hp ca n cng rt ln ta
khng thno tnh c. Liu c cch no gii quyt bi ton ny hiu quhn
khng.
Input:
Dng u tin bao gm snguyn Q ( 0 < Q 150000): l scy bch
ngi con c chn.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
64/75
Sau snguyn M l scc cnh ng.
Tip theo l snguyn K s cc di t.
Dng th2 cha M snguyn N1,N2NM(3 N1,NM 150) l s
cc cy bch trn cnh ng.
Dng th2 cha K snguyn N1,N2NM(2 R1,RM 150) l s
cc cy bch trn di t.
Ch : tng scy bch trn cnh ng v di t t nht cng bng Q.
Output:
L mt snguyn scy oliu duy nht m ngi con c thhng.
Input Output
17 3 3
13 4 8
4 8 6
17
Lp cng thc9.3
Dthy rng mnh t thi c aicy oliu v di t thj c bj1 cy oliu.
Coi cc mnh t v cc di t l cc vt, vt thk c khi lng wk(s
cy bch) v vk(l scy oliu). Nu k l mnh t i th wk= vk= a i, nu k l di
t th wk = biv vk= bj1. Ta cn tm cc vt sao cho tng khi lng ca
chng khng vt qu Q v tng gi tr l ln nht. y chnh l bi ton ci ti
trong trng hp thnht.
Thut ton9.4
Void inputdata ()
{
ifstream fi( input)
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
65/75
fi >> q >>m >> n;
for ( int i =0; i > w[i];
v[i] = w[i];
}
for ( int i = m + 1; i > w[i];
v[i] = w[i]1;}
fi.close();
}
Void outputdata
{
Ofstream fo( output);
fo b) return a;
Else return b;
}
Void process()
{
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
66/75
for ( j = 0; j
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
67/75
10
Bi ton nhn ma trn
Pht biu bi ton10.1
Nh bit, tnh ca ma trn A ikkch thc m.n vi ma trn Bkjkch thc
n.p l ma trn Cijkch thc m.p vi cc phn t c tnh theo cng thc:
1
q
ij jk ki
k
c a b
1 i m, 1 j p.
Nhn mt ma trn kch thc Am.nvi mt ma trn Bn.p, s php nhn phi
thc hin l m.n.p. Mt khc php nhn cc ma trn c tnh kt hp, tc l:
(A.B).C = A.(B.C)
Do khi tnh tch nhiu ma trn, ta c th thc hin theo cc trnh t khc
nhau, mi trnh t tnh s quyt nh s php nhn cn thc hin.
Cho N ma trn A1,A2An, ma trn Aic kch thc l di.di+1. Hy xc nh
trnh t nhn ma trn A1.A2Ansao cho s php nhn cn thc hin l t nht.
Input:
-
n: s ma trn- n+1 s ln lt l kch thc ca cc ma trn theo quy tc: kch
thc ca ma trn th I l di.di+1.
Output:
- Trnh t nhn v s php nhn
V d: Tnh tch M = ABCD ca bn ma trn, trong A c kch thc
13 x 5, B c kch thc 5 x 89, C c kch thc 89 x 3 v D c kch thc 3 x 34. Input: n=4
D[5] = 13.5 .89.3.34
Output:
M = (A(BC))D 2856
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
68/75
tng 30s10.2
tm phng php hiu qu nht, chng ta c th lit k tt c cc cch in
du ngoc vo biu thc tch ma trn cho v tnh s lng php nhn i hi
theo mi cch.
K hiu T(n) l s cch in ccdu ngoc vo biu thc tch ca n ma trn.
Gi s ta nh t du ngoc phn tch u tin vo gia ma trn th i v ma trn
th (i + 1) trong biu thc tch, tc l:
M = (M1 M2 Mi)(Mi+1Mi+2 Mn)
Khi c T(i) cch t du ngoc cho tha s th nht (M1 M2 Mi) v T(n-i)
cch t du ngoc cho tha s th hai (M i+1Mi+2 Mn) v t T(i)T(n-i) cchtnh biu thc (M1 M2 Mi)(Mi+1Mi+2 Mi). Do i c th nhn bt c gi tr no
trong khong t 1 n n-1, suy ra ta c cng thc truy hi sau tnhT(n):
1
1
( ) ( ) ( )n
i
T n T i T n i
Bng di y cho mt s gi tr ca T(n).
n 1 2 3 4 5 10 15
T(n) 1 1 2 5 14 4862 2674440
Gi tr ca T(n) c gi l s Catalan. Cng thc sau y cho php tnh T(n)
qua h s t hp:
12 21( )
nnT n C
n
n 2.
T T(n) = 4nn2. Nh vy, phng php duyt ton b khng th s dng
tm cch tnh hiu qu biu thc tnh ca n ma trn, khi n ln.
Lp h thc10.3
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
69/75
Ta nhn thy rng: nu t du ngoc u tin gia ma trn th i v th
(i+1) ca biu thc tch l ti u, th c hai tch con (M1M2 Mi) v (Mi+1Mi+2
Mn) cng phi c tnh mt cch ti u. Khi tng s php nhn cn phi thc
hin s bng tng s php tnh nhn hai dy con (M1M2 Mi) v (Mi+1Mi+2Mn) cng vi s php tnh nhn haima trn tng ng vi hai dy con ny.
ti u vic nhn dy ma trn (M1M2 Mn) ta quy v vic ti u nhn
hai tch con (M1M2 Mi) v (Mi+1Mi+2 Mn)
Gi mijl s php nhn t nht cn thc hin tnh tch
(Mi+1Mi+2 Mj) , 1 i j n
Li gii cn tm s lm.n
Gi s kch thc ca cc ma trn c cho bi vc t d[1, 2, ., n, n+1],
trong ma trn Mic kch thc di.di+1, i = 1, 2, 3, n. Ta s xy dng bng gi
tr mijln lt theo tng ng cho, trong ng cho th s cha cc phn t
mi j tho mn j i = s.
s = 0 : ji = 0
s = 1 : ji = 1: tch ca 2 ma trn lin tip
s = 2 : ji = 2: tch ca 3 ma trn lin tip
.....
s = n - 1: ji = n1 : tch ca n ma trn lin tip
tnh bng gi tr mi jta c th s dng quy tc sau y:
s = 0; mi j= 0 i = 1, 2, , n
s = 1; mi j= di.di+1.di+2 , i = 1, 2, , n - 1
1 < s < n; mij= min{mik+ mk+1,s+ di.dk+1.ds+1 : 1 k
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
70/75
m13 = min(m11+ m23+ 13 x 5 x 3, m12+ m33+ 13 x 89 x 3)
= min(1530, 9256) = 1530
m24 = min(m22+ m34+ 5 x 89 x 34, m23+ m44+ 5 x 3 x 34)
= min(24208, 1845) = 1845Vi s = 3
m14 = min(m11+ m24+ 13 x 5 x 34), {k = 1}
m12+ m34+ 13 x 89 x 34, {k = 2}
m13+ m44+ 13 x 3 x 34, {k = 3}
= min(4055, 54201, 2856) = 2856.
Bng gi trmijc cho trong hnh v di y
tm li gii ti u, ta dng 2 mng truoc[] v sau[] lu v tr ngoc.
Quan st bng mijtrn, ta thy v tr t du ngoc l v tr ng vi gi tr min ca
tng ng cho.V d:
Vi s = 1, min = 1335 ng vi m23, vy truoc[1] = 2 v sau[1] = 3.
Ta c M = A.(B.C).D
Vi s = 2, min = 1530 ng vi m13, vy truoc[2] = 1 v sau[2] = 3
Ta c M = (A.(B.C)).D
j=1 2 3 4
i=1 0 5785 1530 2856
2 0 1335 1845 s=3
3 0 9078 s=2
4 0 s=1
s=0
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
71/75
Thut ton10.4
procedure Matri x-Chain(d,n)
{m[i,j] - chi ph ti u thc hin nhn dy Mi. . . Mj;
}
begin
for i: = 1 to n do m[i,j]: = 0; //khi to
for s: = 1 to n do // s = chs ca ng cho
for i: = 1 to n - s do
begin
j: = i + s - 1; m[i,j] =
for k: = i to j - 1 do
begin
q: = m[i,k] + m[k+1,j] + d[i-1]*d[k]*d[j];
if(q
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
72/75
Nh nu trn, ti u vic nhn dy ma trn (M1 M2 Mn) ta quy v
vic ti u nhn hai tch con (M1 M2 Mi) v (Mi+1Mi+2 Mn).
T cng thc :
mij= min{mik+ mk+1,s+ di.dk+1.ds+1 : 1 k 0, c n s phn t trn ng cho cn tnh, tnh mi phn
t ta cn so snh s gi tr s tng ng vi cc gi tr c th ca k. T suy ra
s php ton cn thc hin theo thut ton l c
1 1 12
1 1 1
2
3
3
( )s
( 1) / 2 ( 1)(2 1) / 6
( ) / 6
0( )
n n n
s s s
n s n s s
n n n n n
n n
n
V cn mng 2 chiu lu tr gi tr mij, nn chi ph khng gian l O(n2), chi ph
thi gian l O(n3). y l bi ton c chi ph ln nht trong tt c cc bi ton
QH thng gp.
ng dng ca ma trn10.7
Ma trn c rt nhiu ng dng trong thc t:
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
73/75
Solving systems of linear equations
Gii h phng trnh tuyn tnh
Trong ha my tnh, X l nh
Cc m hnh trong k ngh v khoa hc tnh ton
Tnh ton lng t,
Bi vy vic tnh ton nhanh tch ca cc ma trn c ng dng v ngha rt
ln trong thc tin.
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
74/75
Kt lun
Quy hoch ng l mt phng php hay v hiu qu, n cthgii c
hu ht cc bi ton ti u. Tuy nhin, khi gii bi ton theo hng quy hoch
ng, ta cn phi tm cng thc truy hi tht chnh xc v hng minh chnh xc
tin cy ca n. Cho n nay, vn cha c mt nh l no cho bit chnh xc mt
bi ton ti u no c thgii quyt hiu qubng quy hoch ng. Tuy nhin,
bit c bi ton c thgii bng phng php quy hoch ng hay khng, ta c
thtt cu hi: Mt nghim ti u ca bi ton ln c phi l phi hp cc
nghim ti u ca cc bi ton con hay khng? v Liu c thno lu trcnghim cc bi ton con di mt hnh thc no phi hp tm nghim ca
bi ton ln?
-
8/10/2019 Bo Co Seminar - Phng php quy hoch ng
75/75