Chng ta u bit rng iu kh nht gii mt bi ton quy hoch ng (QH) l bit rng n l mt bi ton QH v tm c cng thc QH ca n. Rt kh nu ta m mm t u, nhng nu chng ta a c bi ton cn gii v mt bi ton QH kinh in th s d dng hn nhiu. Do , tm hiu m hnh, cng thc v cch ci t nhng bi ton QH kinh in l mt vic rt cn thit. Trong chuyn ny, ti xin gii thiu mt s bi ton QH kinh in v nhng bin th ca chng.Ch yu tp trung vo gii thiu m hnh, cng thc v mt s gi trong ci t ch khng i chi tit vo vic pht biu bi ton, m t input/output, chng minh cng thc hay vit chng trnh c th. Mc d rt mun minh ho cho cc bi ton bng cc hnh v trc quan nhng khun kh c hn nn ti khng th a vo. Hn na phn gi ci t ch c gi cho phn tnh bng phng n, phn ln vt cn c cc cu trc d liu v nhng k thut x l phc tp xin dnh li cho cc bn. I. Dy con n iu di nht 1. M hnh Cho dy a 1 ,a 2 ,..a n . Hy tm mt dy con tng c nhiu phn t nht ca dy. c trng: i) Cc phn t trong dy kt qu ch xut hin 1 ln. V vy phng php lm l ta s dng vng For duyt qua cc phn t a i trong dy, khc vi cc bi ton ca m hnh 4(c trng l bi ton i tin), cc phn t trong dy c th c chn nhiu ln nn ta thc hin bng phng php cho gi tr cn quy i tng dn tng n v. ii) Th t ca cc phn t c chn phi c gi nguyn so vi dy ban u. c trng ny c th mt i trong mt s bi ton khc ty vo yu cu c th. Chng hn bi Tam gic bao nhau. 2. Cng thc QH Hm mc tiu : f = di dy con. V di dy con ch ph thuc vo 1 yu t l dy ban u nn bng phng n l bng mt chiu. Gi L(i) l di dy con tng di nht, cc phn t ly trong min t a 1 n a i v phn t cui cng l a i . Nhn xt vi cch lm ny ta chia 1 bi ton ln (dy con ca n s) thnh cc bi ton con cng kiu c kch thc nh hn (dy con ca dy i s). Vn l cng thc truy hi phi hp kt qu ca cc bi ton con. Ta c cng thc QH tnh L(i) nh sau: L(1) = 1. (Hin nhin) L(i) = max(1, L(j)+1 vi mi phn t j: 0<j<i v a j a i ). Tnh L(i) : phn t ang c xt l a i .Ta tm n phn t a j <a i c L(j) ln nht. Khi nu b sung a i vo sau dy con ...a j ta s c dy con tng dn di nht xt t a 1 ...a i . Trang 2 3. Ci t Bng phng n l mt mng mt chiu L lu tr cc gi tr ca hm QH L(i). on chng trnh tnh cc gi tr ca mng L nh sau: for i := 1 to n do begin L[i] := 1; for j:=1 to i1 do if (a[j]<=a[i]) and (L[i]<L[j]+1) then L[i]:=L[j]+1; end; Nh vy chi ph khng gian ca bi ton l O(n), chi ph thi gian l O(n 2 ). C mt phng php ci t tt hn so vi phng php trn, cho chi ph thi gian l O(nlogn), bn c c th tham kho trong bi bo ca thy Trn Hng trn tp ch THNT s thng 10 nm 2004. 4. Mt s bi ton khc Bi ton dy con n iu tng di nht c bin th n gin nht l bi ton dy con n iu gim di nht, tuy nhin chng ta c th coi chng nh l mt. Sau y l mt s bi ton khc. a) B tr phng hp( mt tnh th t so vi dy ban u) C n cuc hp, cuc hp th i bt u vo thi im a i v kt thc thi im b i . Do ch c mt phng hi tho nn 2 cuc hp bt k s c cng b tr phc v nu khong thi gian lm vic ca chng ch giao nhau ti u mt. Hy b tr phng hp phc v c nhiu cuc hp nht. Hng dn: Sp xp cc cuc hp tng dn theo thi im kt thc (b i ). Th th cuc hp i s b tr c sau cuc hp j nu v ch nu j<i v b j <=a i . Yu cu b tr c nhiu cuc hp nht c th a v vic tm dy cc cuc hp di nht tho mn iu kin trn. b) Cho thu my Trung tm tnh ton hiu nng cao nhn c n t hng ca n khch hng. Khch hng i mun s dng my trong khong thi gian t a i n b i v tr tin thu l c i . Hy b tr lch thu my tng s tin thu c l ln nht m thi gian s dng my ca 2 khch hng bt k c phc v u khng giao nhau (c trung tm ch c mt my cho thu). Hng dn: Tng t nh bi ton a), nu sp xp cc n t hng theo thi im kt thc, ta s a c bi ton b) v bi ton tm dy con c tng ln nht. Bi ton ny l bin th ca bi ton tm dy con tng di nht, ta c th ci t bng on chng trnh nh sau: for i:=1 to n do begin L[i]:=c[i]; for j:=1 to i1 do if (b[j]<=a[i]) and (L[i]<L[j]+c[i]) then L[i]:=L[j]+c[i]; end; c) Dy tam gic bao nhau Cho n tam gic trn mt phng. Tam gic i bao tam gic j nu 3 nh ca tam gic j u nm trong tam gic i (c th nm trn cnh). Hy tm dy tam gic bao nhau c nhiu tam gic nht. Hng dn: Sp xp cc tam gic tng dn v din tch. Khi tam gic i s bao tam gic j nu j<i v 3 nh ca j nm trong i. T c th a v bi ton tm dy tng di nht. Trang 3 Vic kim tra im M c nm trong tam gic ABC khng c th da trn phng php tnh din tch: im M nm trong nu S(ABC) = S(ABM) + S(ACM) + S(BCM). Bi ton c mt s bin th khc nh tm dy hnh tam gic, hnh ch nht bao nhau c tng din tch ln nht. d) Dy i du Cho dy a 1 , a 2 ,a n . Hy dy con i du di nht ca dy . Dy con con i du a i1 ,a i2 ,a ik phi tho mn cc iu kin sau: a i1 <a i2 >a i3 < hoc a i1 >a i2 <a i3 > cc ch s phi cch nhau t nht L: i 2 i 1 L, i 3 i 2 L. chnh lch gia 2 phn t lin tip nh hn U: |a i1 a i2 |U, |a i2 a i3 |U Hng dn: Gi L(i) l s phn t ca dy con i du c phn t cui cng l a i v phn t cui cng ln hn phn t ng trc. Tng t, P(i) l s phn t ca dy con i du c phn t cui cng l a i v phn t cui cng nh hn phn t ng trc. Ta d dng suy ra: L(i) = max(1, P(j)+1): jiL v a i Ua j <a i . P(i) = max(1, L(j)+1): jiL v a i <a j a i +U. f) Dy s WAVIO: Dy s Wavio l dy s nguyn tha mn cc tnh cht : cc phn t u sp xp thnh 1 dy tng dn n 1 phn t nh sau gim dn. V d dy s 1 2 3 4 5 2 1 l 1 dy Wavio di 7. Cho 1 dy gm N s nguyn, hy ch ra mt dy con Wavio c di ln nht trch ra t dy . Hng dn: L1[i] l mng ghi di ln nht ca 1 dy con tng dn trch ra t dy N phn t k t phn t 1 n phn t a i . L2[i] : mng ghi di ln nht ca dy con gim dn trch ra t dy N phn t k t phn t a N n a i . Ta tm phn t j trong 2 mng L1, L2 tha mn L1[j]+L2[j] ln nht. g) Thp Babilon ( Tnh cht duy nht ca cc phn t trong phng n ti u b vi phm) h) Xp cc khi : Cho N khi (N5000) Cc khi u c dng hnh hp ch nht v c c trng bi 3 kch thc: di, rng, cao. Mt cch xy dng thp l mt cch t mt s cc khi trong cc khi cho chng ln nhau theo quy tc: Chiu cao mi khi l kch thc nh nht trong 3 kch thc. Cc mp ca khi c t song song vi nhau sao cho khng c phn no ca khi trn nm cha ra ngoi khi di. a) Hy ch ra cch xy dng c mt ci thp sao cho s khi c dng l nhiu nht. b) Hy ch ra cch xy dng c mt ci thp sao cho chiu cao ca ci thp l cao nht D liu vo TOWER.INP c cu trc nh sau : Dng u l s N. N dng sau dng i ghi 3 s nguyn 255 l 3 kch thc ca khi i . D liu ra : TOWER1.OUT, TOWER2.OUT ghi theo quy cch : Dng u ghi s cc khi c chn theo th t dng xy thp t chn ln nh. Trang 4 Cc dng sau ghi cc khi c chn, mi khi ghi 4 s T, D, R, C trong T l s th t ca mi khi . D, R, C l kch thc ca khi tng ng. II. Vali (B) 1. M hnh C n vt, vt th i c trng lng a[i] v gi tr b[i]. Hy chn ra mt s cc vt, mi vt mt ci xp vo 1 vali c trng lng ti a W sao cho tng gi tr ca vali l ln nht. 2. Cng thc Hm mc tiu : f: tng gi tr ca vali. Nhn xt : gi tr ca vali ph thuc vo 2 yu t: c bao nhiu vt ang c xt v trng lng ca cc vt. Do bng phng n s l bng 2 chiu. L[i,j] : tng gi tr ln nht ca vali khi xt t vt 1..vt i v trng lng ca vali cha vt qu j. Ch rng khi xt n L[i,j] th cc gi tr trn bng phng n u c ti u. Tnh L[i,j] : vt ang xt l a i vi trng lng ca vali khng c qu j. C 2 kh nng xy ra : Nu chn a i a vo vali, trng lng vali trc phi j-a[i]. V mi vt ch c chn 1 ln nn gi tr ln nht ca vali lc l L[i-1,j-a[i]) + b[i] Nu khng chn a i , trng lng ca vali l nh c (nh lc trc khi chn a i ): L[i-1,j]. Tm li ta c L[i,j]=max(L(i-1,j-a[i]) + b[i], L[i-1,j]). 3. Ci t For i:=1 to n do For j:=1 to W do If b[i]<=j then L[i,j]:=max(L(i-1,j-a[i]) + b[i], L[i-1,j]) else L[i,j]:=L[i-1,j]; 4. Mt s bi ton khc a) Dy con c tng bng S: Cho dy a 1 ,a 2 ,..a n . Tm mt dy con ca dy c tng bng S. Hng dn t L[i,t)=1 nu c th to ra tng t t mt dy con ca dy gm cc phn t a 1 ,a 2 ,..a i . Ngc li th L[i,t)=0. Nu L[n,S)=1 th p n ca bi ton trn l c. Ta c th tnh L[i,t] theo cng thc: L[i,t]=1 nu L[i1,t]=1 hoc L[i1,ta[i]]=1. Ci t Nu p dng lun cng thc trn th ta cn dng bng phng n hai chiu. Ta c th nhn xt rng tnh dng th i, ta ch cn dng i1. Bng phng n khi ch cn 1 mng 1 chiu L[0..S] v c tnh nh sau: L[t]:=0; L[0]:=1; for i := 1 to n do for t := S downto a[i] do if (L[t]=0) and (L[ta[i]]=1) then L[t]:=1; Trang 5 D thy chi ph khng gian ca cch ci t trn l O(m), chi ph thi gian l O(nm), vi m l tng ca n s. Hy t kim tra xem ti sao vng for th 2 li l for downto ch khng phi l for to. b) Chia ko Cho n gi ko, gi th i c a i vin. Hy chia cc gi thnh 2 phn sao cho chnh lch gia 2 phn l t nht. Hng dn: Gi T l tng s ko ca n gi. Chng ta cn tm s S ln nht tho mn: ST/2. C mt dy con ca dy a c tng bng S. Khi s c cch chia vi chnh lch 2 phn l T2S l nh nht v dy con c tng bng S trn gm cc phn t l cc gi ko thuc phn th nht. Phn th hai l cc gi ko cn li. c) Market (Olympic Balkan 2000) Ngi nh c Clement bt c n con c, khi lng mi con l a i , em bn ngoi ch. ch c, ngi ta khng mua c theo tng con m mua theo mt lng no . Chng hn 3 kg, 5kg V d: c 3 con c, khi lng ln lt l: 3, 2, 4. Mua lng 6 kg s phi ly con c th 2 v v th 3. Mua lng 3 kg th ly con th nht. Khng th mua lng 8 kg. Nu bn l ngi u tin mua c, c bao nhiu lng bn c th chn? Hng dn: Thc cht bi ton l tm cc s S m c mt dy con ca dy a c tng bng S. Ta c th dng phng php nh du ca bi chia ko trn ri m cc gi tr t m L[t]=1. d) in du Cho n s t nhin a 1 ,a 2 , ...,a n . Ban u cc s c t lin tip theo ng th t cch nhau bi du "?": a 1 ?a 2 ?...?a n . Cho trc s nguyn S, c cch no thay cc du "?" bng du + hay du c mt biu thc s hc cho gi tr l S khng? Hng dn: t L(i,t)=1 nu c th in du vo i s u tin v cho kt qu bng t. Ta c cng thc sau tnh L: L(1,a[1]) =1. L(i,t)=1 nu L(i1,t+a[i])=1 hoc L(i1,ta[i])=1. Nu L(n,S)=1 th cu tr li ca bi ton l c. Khi ci t, c th dng mt mng 2 chiu (lu ton b bng phng n) hoc 2 mng mt chiu ( lu dng i v dng i1). Ch l ch s theo t ca cc mng phi c c phn m (tc l t T n T, vi T l tng ca n s), v trong bi ny chng ta dng c du nn c th to ra cc tng m. Bi ny c mt bin th l t du sao cho kt qu l mt s chia ht cho k. Ta c thut gii tng t bi ton trn bng cch thay cc php cng, tr bng cc php cng v tr theo mun k v dng mng nh du vi cc gi tr t 0 n k1 (l cc s d c th c khi chia cho k). p s ca bi ton l L(n,0). e) Expression (ACM 10690) Cho n s nguyn. Hy chia chng thnh 2 nhm sao cho tch ca tng 2 nhm l ln nht. Trang 6 Hng dn: Gi T l tng n s nguyn . Gi s ta chia dy thnh 2 nhm, gi S l tng ca mt nhm, tng nhm cn li l TS v tch ca tng 2 nhm l S*(TS). Bng phng php nh du ta xc nh c mi s S l tng ca mt nhm (nh bi Market) v tm s S sao cho S*(TS) t max. III. Bin i xu: 1. M hnh Cho 2 xu X,F. Xu ngun c n k t X 1 X 2 ...X n , xu ch c m k t F 1 F 2 ...F m .C 3 php bin i : Chn 1 k t vo sau k t th i :I i C Thay th k t v tr th i bng k t C : R i C. Xo k t v tr th i. D i Hy tm s t nht cc php bin i bin xu X thnh xu F. Hng dn: Hm mc tiu : f: s php bin i. D thy s php bin i ph thuc vo v tr i ang xt ca xu X v v tr j ang xt cu xu F. Do vy ci t cho bang phng n ta s dng mng 2 chiu Gi L(i,j) l s php bin i t nht bin xu X(i) gm i k t phn u ca X (X(i)= X[1..i]) thnh xu F(j) gm j k t phn u ca F(F(j) =F[1..j]). D thy F(0,j)=j v F(i,0)=i. C 2 trng hp xy ra: Nu X[i]=F[j] : X 1 X 2 ...X i-1 X i F 1 F 2 ...F j-1 X i th ta ch phi bin i xu X(i-1) thnh xu Y(j-1). Do F(i,j)=F(i-1,j-1). Ngc li, ta c 3 cch bin i: Xo k t X[i]: X 1 X 2 ...X i-1 X i F 1 F 2 ...F j-1 Fj Xu X(i-1) thnh F(j). Khi F(i,j)=F(i-1,j)+1.(Cng 1 l do ta dng 1 php xa) Thay th X[i] bi F[j] : X 1 X 2 ...X i-1 Fj F 1 F 2 ...F j-1 Fj Xu X(i-1) thnh F(j-1). Khi F(i,j)=F(i-1,j-1)+1. Chn F[j] vo X(i): X 1 X 2 ...X i-1 X i Fj F 1 F 2 ...F j-1 Fj Xu X(i) thnh Y(j-1). Khi F(i,j)=F(i,j-1)+1. Tng kt li, ta c cng thc QH: F(0,j)=j F(i,0)=i Trang 7 F(i,j) =F(i1,j1) nu X[i] = Y[j]. F(i,j) = min(F(i1,j),F(i,j1),F(i1,j1))+1 nu X[i]Y[j]. Bi ny ta c th tit kim bin hn bng cch dng 2 mng 1 chiu tnh ln nhau v mt mng nh du 2 chiu truy vt. 4. Mt s bi ton khc a) Xu con chung di nht Cho 2 xu X,Y. Hy tm xu con ca X v ca Y c di ln nht. Cng thc QH Gi L(i,j) l di xu con chung di nht ca xu X(i) gm i k t phn u ca X (X(i)= X[1..i]) v xu Y(j) gm j k t phn u ca Y (Y(j) =Y[1..j]). Ta c cng thc quy hoch ng nh sau: L(0,j)=L(i,0)=0. L(i,j) = L(i1,j1)+1 nu X[i] = Y[j]. L(i,j) = max(L(i1,j), L(i,j1)) nu X[i]Y[j]. Ci t Bng phng n l mt mng 2 chiu L[0..m,0..n] lu cc gi tr ca hm QH L(i,j). on chng trnh ci t cng thc QH trn nh sau: for i:=0 to m do L[i,0]:=0; for j:=0 to n do L[0,j]:=0; for i:=1 to m do for j:=1 to n do if X[i]=Y[j] then L[i,j]:=L[i1,j1]+1 else L[i,j]:=max(L[i1,j],L[i,j1]]); Nh vy chi ph khng gian ca bi ton l O(n 2 ), chi ph thi gian l O(n 2 ). C mt phng php ci t tt hn, ch vi chi ph khng gian O(n) da trn nhn xt sau: tnh L[i,j] ca bng phng n, ta ch cn 3 L[i1,j1],L[i1,j] v L[i,j1]. Tc l tnh dng L[i] th ch cn dng L[i1]. Do ta ch cn 2 mng 1 chiu lu dng va tnh (P) v dng ang tnh (L) m thi. Cch ci t mi nh sau: for j:=0 to n do P[j]:=0; for i:=1 to m do begin L[0] := 0; for j:=1 to n do if X[i]=Y[j] then L[i,j]:=P[j1]+1 else L[i,j]:=max(P[j], L[j1]); P := L; end; c) Bc cu Hai nc Anpha v Beta nm hai bn b sng Omega, Anpha nm b bc v c M thnh ph c nh s t 1 n m, Beta nm b nam v c N thnh ph c nh s t 1 n n (theo v tr t ng sang ty). Mi thnh ph ca nc ny thng c quan h kt ngha vi mt s thnh ph ca nc kia. tng cng tnh hu ngh, hai nc mun xy cc cy cu bc qua sng, mi cy cu s l nhp cu ni 2 thnh ph kt ngha. Vi yu cu l cc cy Trang 8 cu khng c ct nhau v mi thnh ph ch l u cu cho nhiu nht l mt cy cu, hy ch ra cch bc cu c nhiu cu nht. Hng dn: Gi cc thnh ph ca Anpha ln lt l a 1 ,a 2 ,a m ; cc thnh ph ca Beta l b 1 ,b 2 ,...b n . Nu thnh ph a i v b j kt ngha vi nhau th coi a i bng b j . cc cy cu khng ct nhau, nu ta chn cp thnh ph (a i ,b j ) xy cu th cp tip theo phi l cp (a u ,b v ) sao cho u>i v v>j. Nh vy cc cp thnh ph c chn xy cu c th coi l mt dy con chung ca hai dy a v b. Bi ton ca chng ta tr thnh bi ton tm dy con chung di nht, y hai phn t bng nhau nu chng c quan h kt ngha. d) Palindrom (IOI 2000) Mt xu gi l xu i xng (palindrom) nu xu c t tri sang phi hay t phi sang tri u nh nhau. Cho mt xu S, hy tm s k t t nht cn thm vo S S tr thnh xu i xng. Hng dn: Bi ton ny c mt cng thc QH nh sau: Gi L(i,j) l s k t t nht cn thm vo xu con S[i..j] ca S xu tr thnh i xng. p s ca bi ton s l L(1,n) vi n l s k t ca S. Ta c cng thc sau tnh L(i,j): L(i,i)=0. L(i,j)=L(i+1,j1) nu S[i]=S[j] L(i,j)=max(L(i+1,j), L(i,j1)) nu S[i]S[j] Bn c d dng c th kim chng cng thc . Ta c th ci t trc tip cng thc bng phng php quy c nh. Tuy nhin khi chi ph khng gian l O(n 2 ). C mt phng php ci t tit kim hn (bn c c th tham kho bi bo trn ca thy Trn Hng), tuy nhin phng php kh phc tp. Ta c thut ton n gin hn nh sau: Gi P l xu o ca S v T l xu con chung di nht ca S v P. Khi cc k t ca S khng thuc T cng l cc k t cn thm vo S tr thnh i xng. p s ca bi ton s l nk, vi k l di ca T. V d: S=edbabcd, xu o ca S l P=dcbabde. Xu con chung di nht ca S v P l T=dbabd. Nh vy cn thm 2 k t l e v c vo S tr thnh xu i xng. IV. Vali (A) 1. M hnh Cho n vt, vt i nng a i v c gi tr b i . Hy chn ra mt s vt cho vo bal sao cho tng khi lng khng vt qu W v tng gi tr l ln nht. Ch rng mi vt c th c chn nhiu ln. 2. Cng thc Gi L(i,j) l tng gi tr ln nht khi c chn i vt t 1 n i cho vo bal vi tng khi lng khng vt qu j. L(n,W) s l p s ca bi ton (l gi tr ln nht c c nu chn n vt v tng khi lng khng vt qu W). Cng thc tnh L(i,t) nh sau: Trang 9 L(i,0)=0; L(0,j)=0. L(i,j)=L(i,j) nu t<a i . L(i,t)=max(L(i-1,j), L(i,ja i )+b i ) nu t a i . Trong : L(i1,j) l gi tr c c nu khng a vt i vo bal, L(i,ja i )+b i l gi tr c c nu chn vt i. 3. Ci t Ta c th dng mt mng 2 chiu lu bng phng n, tuy nhin da trn nhn xt rng tnh dng i ca bng phng n ch cn dng i1, ta ch cn dng 2 mng mt chiu P v L c ch s t 0 n m lu 2 dng . on chng trnh con tnh bng phng n nh sau. L[t] := 0; {vi mi t} for i := 1 to n do begin P:=L; for t := 0 to m do if t<a[i] then L[t]:=P[t] else L[t] := max(P[t],P[ta[i]]); end; Nu k bn s thy rng on trnh trn ch vit ging cng thc QH ch cha ti u. Chng hn c lnh gn P:=L, sau li c gn L[t]:=P[t] vi cc gi tr t<a[i] l khng cn thit. Bn c c th t ci tin chng trnh ti u hn. Chi ph khng gian ca cch ci t trn l O(m) v chi ph thi gian l O(n.m). 4. Mt s bi ton khc a) Farmer (IOI 2004) Mt ngi c N mnh t v M di t. Cc mnh t c th coi l mt t gic v cc di t th coi nh mt ng thng. Dc theo cc di t ng ta trng cc cy bch, di t th i c a i cy bch. ng ta cng trng cc cy bch trn vin ca cc mnh t, mnh t th j c b j cy bch. C trn cc mnh t v di t, xen gia 2 cy bch ng ta trng mt cy liu. ng ta cho con trai c chn cc mnh t v di t tu vi iu kin tng s cy bch khng vt qu Q. Ngi con trai phi chn th no c nhiu cy liu (loi cy m anh ta thch) nht. Hng dn: D thy mnh t th i c a i cy liu v di t th j c b j 1 cy liu. Coi cc mnh t v di t l cc vt, vt th k c khi lng w k v gi tr v k (nu k l mnh t i th w k =v k =a i , nu k l di t j th w k =b j , v k =b j 1). Ta cn chn cc vt, sao cho tng khi lng ca chng khng vt Q v tng gi tr l ln nht. y chnh l bi ton xp bal trnh by trn. b) i tin t nc Omega ngi ta ch tiu tin xu. C N loi tin xu, loi th i c mnh gi l a i ng. Mt ngi khch du lch n Omega du lch vi s tin M ng. ng ta mun i s tin ra tin xu Omega tin tiu dng. ng ta cng mun s ng tin i c l t nht (cho ti tin nng khi i y i ). Bn hy gip ng ta tm cch i tin. Hng dn: Bi ton ny kh ging bi ton xp bal (khi lng l mnh gi, gi tr l 1), ch c mt s thay i nh: s ng xu mi loi c chn tu (trong bi ton xp bal mi vt ch c chn 1 ln) v tng gi tr yu cu l nh nht. Trang10 Do ta cng xy dng hm QH mt cch tng t: Gi L(i,t) l s ng xu t nht nu i t ng ra i loi tin xu (t 1 n i). Cng thc tnh L(i,t) nh sau: L(i,0)=0; L(0,t)= vi t>0. L(i,t)=L(i1,t) nu t<a i . L(i,t)=min(L(i1,t), L(i,ta i )+1) nu t a i . Cng thc ny khc cng thc ca bi xp bal ch: dng hm min ch khng phi hm max (v cn tm cch chn t hn) v nu chn ng xu th i th L(i,t)=L(i,ta i )+1 (v ta vn cn c chn ng xu th i na), khc vi khi xp bal l: nu chn vt th i th L(i,t)=L(i1,ta i )+b i v vt i ch c chn mt ln. V. Nhn ma trn 1. M hnh Nhn mt ma trn kch thc mn vi mt ma trn np, 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 A 1 ,A 2 A n , ma trn A i c kch thc l d i1 d i . Hy xc nh trnh t nhn ma trn A 1 .A 2 A n sao cho s php nhn cn thc hin l t nht. 2. Cng thc Gi F(i,j) l s php nhn tnh tch cc ma trn t A i n A j (A i .A i+1 ....A j ). F(i,i)=0. F(i,i+1)=d i1 .d i .d i+1 F(i,j) = min(F(i,k)+F(k+1,j)+d i1 .d k .d j vi k=i+1,i+2,...j1) Cng thc hi phc tp nn ti xin gii thch nh sau: F(i,i)=0 l hin nhin. F(i,i+1) l s php nhn khi nhn A i v A i+1 . A i c kch thc d i1 d i , A i+1 c kch thc d i d i+1 , do F(i,i+1)=d i1 .d i .d i+1 . Vi j>i+1 th ta thy c th tnh A i .A i+1 ....A j bng cch chn mt v tr k no t ngoc theo trnh t: A i .A i+1 ....A j = (A i ..A k ).(A k+1 ..A j ) Ma trn kt qu ca php nhn (A i ..A k ) c kch thc d i1 d k , ma trn kt qu ca php nhn (A k+1 ..A j ) c kch thc d k d j . Vi cch t ta s mt F(i,k) php nhn c kt qu trong du ngoc th nht, mt thm F(k+1,j) php nhn c kt qu trong du ngoc th hai, v cui cng mt d i1 .d k .d j nhn 2 ma trn kt qu . T tng s php nhn ca cch t l: F(i,k)+F(k+1,j)+d i1 .d k .d j . Ta chn v tr k cho s php nhn t nht. Trang11 3. Ci t Bng phng n l mt mng 2 chiu F lu F(i,j). Ch khi ci t l tnh c F(i,j), ta phi tnh F(i,k) v F(k+1,j) trc. Phng php n gin lm iu l phng php quy c nh. Tuy nhin da vo nhn xt l trong cng thc QH: ji ln hn ki v jk, ta c th tnh theo trnh t khc: tnh cc phn t F(i,j) vi ji t nh n ln (khng phi l tnh cc gi tr F(i,j) vi i,j t nh n ln nh vn lm). Vi cch , khi tnh n F(i,j) th ta c F(i,k) v F(k+1,j). on chng trnh tnh bng phng n nh sau: for i:=1 to n do F[i,i]:=0; for i:=1 to n1 do F[i,i+1] := d[i1]*d[i]*d[i+1]; for m:=2 to n1 do begin for i:=1 to nm do begin j:=i+m; F[i,j]:=oo; for k:=i+1 to j1 do F[i,j]:=min(F[i,j], F[i,k]+F[k+1,j]+d[i1]*d[k]*d[j]); end; end; Vi cch ci t trn,chi ph khng gian l O(n 2 ), chi ph thi gian l O(n 3 ) (y l bi ton c chi ph ln nht trong tt c cc bi ton QH thng gp). 4. Mt s bi ton khc a) Chia a gic Cho mt a gic li N nh. Bng cc ng cho khng ct nhau, ta c th chia a gic thnh N2 tam gic. Hy xc nh cch chia c tng cc ng cho ngn nht. Hng dn: n gin ta coi mi on thng ni 2 nh u l ng cho (nu ni 2 nh trng nhau hoc 2 nh lin tip th c di bng 0). Gi F(i,j) l tng di cc ng cho khi chia a gic gm cc nh t i n j thnh cc tam gic. Nu j<i+3 th a gic c t hn 4 nh, khng cn phi chia nn F(i,j)=0. Ngc li ta xt cch chia a gic bng cch chn mt nh k nm gia i,j v ni i,j vi k. Khi F(i,j)=F(i,k)+F(k,j)+d(i,k)+d(k,j); d(i,k) l di ng cho (i,k). Tm li cng thc QH nh sau: F(i,j)=0 vi j<i+3. F(i,j)=min(F(i,k)+F(k,j)+d(i,k)+d(k,j) vi k=i+1,...j1). F(1,n) l tng ng cho ca cch chia ti u. b) Biu thc s hc (IOI 1999) Cho biu thc a 1 a 2 a n , trong a i l cc s thc khng m v l mt php ton + hoc cho trc. Hy t cc du ngoc biu thc thu c c kt qu ln nht. Hng dn: Gi F(i,j) l gi tr ln nht c th c ca biu thc a i a i+1 a j . D thy nu i=j th F(i,j)=a i , nu j=i+1 th F(i,j)=a i a j . Nu j>i+1 th c th tnh biu thc a i a i+1 a j bng cch chia thnh 2 nhm: (a i a i+1 a k )(a k+1 a j ), Khi F(i,j)=F(i,k)F(k+1,j). Tm li, cng thc QH l: Trang12 F(i,i)=a i F(i,i+1)=a i a i+1 F(i,j)=max(F(i,k)F(k+1,j) vi k=i+1,i+2,..j1). (Ch l l cc hng t ca dy u khng m v cc php ton l + hoc nn F(i,k) v F(k+1,j) t max th F(i,k)F(k+1,j) cng t max). VI. Ghp cp 1.M hnh C n l hoa sp thng hng v k b hoa c nh s th t t nh n ln. Cn cm k b hoa trn vo n l sao cho hoa c s th t nh phi ng trc hoa c s th t ln. Gi tr thm m tng ng khi cm hoa i vo l th j l v(i,j) Hy tm 1 cch cm sao cho tng gi tr thm m l ln nht. Ch rng mi b hoa ch c cm vo 1 l v mi l cng ch cm c 1 b hoa. (IOI 1999) 2. Cng thc : Nhn xt rng bi ton nu trn l mt bi ton ghp cp c yu cu v th t nn ta c th gii quyt bng phng php QH. Hm mc tiu : f: tng gi tr thm m ca cch cm. Gi tr thm m ph thuc vo cc hoa v cc l ang c xt nn ta s dng mng 2 chiu lu bng phng n. L(i,j): tng gi tr thm m ln nht khi xt n hoa i v l j. Khi tnh L(i,j) hoa ang xt s l hoa i v l j. Nu i = j. Ch c mt cch cm L(i,i):= v[1,1]+v[2,2]+...v[i,i] Nu i>j . Khng c cch cm hp l Nu i<j : C 2 trng hp xy ra: Cm hoa i vo l j. Tng gi tr thm m l L(i-1,j-1)+v(i,j). (Bng tng gi tr trc khi cm cng vi gi tr thm m khi cm hoa i vo l j) Khng cm hoa i vo l j (c th cm vo l trc j), gi tr thm m ca cch cm l nh c : L(i,j-1) 3. Ci t : L[i,j]:= -maxint; For i:=1 to k do For j:=i to n do If i = j then L[i,j]:=sum(i) else if i<j then L[i,j]:=max(L[i-1,j-1]+v[i,j],L[i,j-1]); 4. Mt s bi ton khc a) Cu lc b:( thi chn HSG Tin H Ni nm 2000) C n phng hc chuyn v k nhm hc c nh s th t t nh n ln. Cn xp k nhm trn vo n phng hc sao cho nhm c s hiu nh c xp vo phng c s hiu nh, nhm c s hiu ln phi c xp vo phng c s hiu ln.Vi mi phng c ch hc sinh, cc gh tha phi c chuyn ra ht, nu thiu gh th ly vo cho gh .Bit phng i c Trang13 a(i) gh ,nhm j c b(j) hc sinh. Hy chn 1 phng n b tr sao cho tng s ln chuyn gh ra v vo l t nht. Hng dn : Khi xp nhm i vo phng j th s ln chuyn gh chnh l chnh lch gia s gh trong phng i v s hc sinh trong nhm. t v[i,j]:=|a(i)-b(j)| b) Mua giy ( QG bng B nm 2003) Trong hiu c n i giy, i giy i c kch thc h i . C k ngi cn mua giy, ngi i cn mua i giy kch thc s i . Khi ngi i chn mua i giy j th lch s l |h(i)-s(j)|. Hy tm cch chn mua giy cho k ngi trn sao cho tng lch l t nht. Bit rng mi ngi ch mua 1 i giy v 1 i giy cng ch c mt ngi mua. Hng dn : Lp cng thc gii nh bi Cu lc b. Ch chng minh tnh ng n ca b heuristic sau :Cho 2 dy tng dn cc s dng a 1 a 2 ...a n , b 1 b 2 ...b n . Gi c 1 c 2 ...c n l mt hon v ca dy {b n }. Khi : |a(1)-b(1)|+ |a(2)-b(2)|+...+ |a(n)-b(n)|< |a(1)-c(1)|+ |a(2)- c(2)|+...+ |a(n)-c(n)| VII. Di chuyn 1. M hnh Cho bng A gm MxN . T (i,j) c th di chuyn sang 3 (i+1,j), (i+1,j1) v (i+1,j+1). Hy xc nh mt l trnh i t hng 1 n hng M sao cho tng cc i qua l ln nht. 2. Cng thc Gi F(i,j) l gi tr ln nht c c khi di chuyn n (i,j). C 3 c th i n (i,j) l (i 1,j), (i1,j1) v (i1,j+1). Do ta c cng thc QH nh sau: F(1,j)=A[1,j] F(i,j)=max(F(i1,j),F(i1,j1),F(i1,j+1))+A[i,j] vi i>1 3. Ci t Bng phng n l bng 2 chiu F[0..m,0..n]. (Tt c cc trn bin u cho gi tr bng 0). Qu trnh tnh nh sau: for i:=1 to m do for j := 1 to n do F[i,j]=max[F[i1,j],F[i1,j1],F[i1,j+1]]+A[i,j]; Cch ci t ny cho chi ph khng gian v thi gian u l O(n 2 ). Ta c th tit kim khng gian nh bng cch tnh trc tip trn mng A. 4. Mt s bi ton khc a) Tam gic (IOI 1994) Cho mt tam gic gm cc s nguyn khng m. Hy tnh tng ln nht cc s trn ng i t nh tam gic xung mt im no y tam gic no . Ti mi ta ch c i thng xung, sang bn tri hoc bn phi. Hng dn: M t cc phn t ca tam gic s nh mt ma trn, A[i,j] l phn t th j trn dng i (vi 1iN v 1ji). C 2 c th di chyn n (i,j) l (i1,j1) v (i1,j). Gi F(i,j) l tng ln nht c th c khi i n (i,j) ta c: Trang14 F(1,1)=A[1,1] F(i,1)=F(i1,1)+A[i,1] F(i,j)=max(F(i1,j1),F(i1,j))+A[i,j] b) Con kin C mt ng hnh tr, khi tri phng ra c th l mt bng MxN . Gi tr A[i,j] l lng thc n c dng i ct j. Mt con kin xut pht t mt mp bn tri ca hnh tr v b sang mp bn phi. T (i,j) kin c th b sang 1 trong 3 (i1,j+1), (i,j+1) hoc (i+1,j+1). (Ch : v ng hnh tr nn kin ang dng 1 c th b xung dng M v ngc li). B qua no th kin mang theo ton b lng thc n . Hy tm ng i m kin kim c nhiu thc n nht. Hng dn: x l tnh hung hnh tr, ta lu dng 0 l dng M v dng M+1 l dng 1. Khi tng t nh bi ton ban u, gi F(i,j) l lng thc n kin c c khi b n (i,j), ta thit lp c cng thc QH sau: F(i,1)=A[i,1] F(i,j)=max(F(i1,j1),F(i,j1),F(i+1,j+1))+A[i,j] vi j>1 ------------------ Bi vit c s h tr ca Nguyn Thanh Tng, L Minh Hong - GV trng HSP H Ni.