You are on page 1of 14

MT S BI TON QUY HOCH NG IN HNH.

I. Dy con n iu di nht
1. M hnh
Cho dy a1,a2,..an. 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 aitrong 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 a1 n ai v phn t cui cng l ai. 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 ajai). Tnh L(i) : phn t ang c xt l ai .Ta tm n phn t aj <ai c L(j) ln nht. Khi nu b sung ai vo sau dy con ...aj ta s c dy con tng dn di nht xt t a1...ai.

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(n2). C mt phng php ci t tt hn so vi phng php trn, cho chi ph thi gian l O(nlogn

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 ai v kt thc thi im bi. 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 (bi). Th th cuc hp i s b tr c sau cuc hp j nu v ch nu j<i v bj<=ai. 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 ai n bi v tr tin thu l ci. 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 2

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 a1, a2,an. Hy dy con i du di nht ca dy ai1,ai2,aik phi tho mn cc iu kin sau: ai1<ai2>ai3< hoc ai1>ai2<ai3> cc ch s phi cch nhau t nht L: i2i1L, i3i2L. chnh lch gia 2 phn t lin tip nh hn U: |ai1ai2|U, |ai2ai3|U Hng dn: Gi L(i) l s phn t ca dy con i du c phn t cui cng l ai 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 ai 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 aiUaj<ai. P(i) = max(1, L(j)+1): jiL v ai<ajai+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 ai. L2[i] : mng ghi di ln nht ca dy con gim dn trch ra t dy N phn t k t phn t aN n ai. 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. . Dy con con i du

Trang 3

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 ai vi trng lng ca vali khng c qu j. C 2 kh nng

xy ra :
Nu chn aia 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 ai , trng lng ca vali l nh c (nh lc trc khi chn ai ): 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 a1,a2,..an. 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 a1,a2,..ai. 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 4

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 ai 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 ai, 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 a1,a2, ...,an. Ban u cc s c t lin tip theo ng th t cch nhau bi du "?": a1?a2?...?an. 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 5

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 X1X2...Xn , xu ch c m k t F1F2...Fm .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] : X1X2...Xi-1 F1F2...Fj-1
X i 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]: X1X2...Xi-1 F1F2...Fj-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] : X1X2...Xi-1 F1F2...Fj-1 Chn F[j] vo X(i):
Fj Fj X i

Xu X(i-1) thnh F(j-1). Khi F(i,j)=F(i-1,j-1)+1. X1X2...Xi-1XiFj F1F2...Fj-1 Tng kt li, ta c cng thc QH: F(0,j)=j F(i,0)=i Trang 6
Fj

Xu X(i) thnh Y(j-1). Khi F(i,j)=F(i,j-1)+1.

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]
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]]);

lu cc gi tr ca hm QH L(i,j).

on chng trnh ci t cng thc QH trn nh sau:

Nh vy chi ph khng gian ca bi ton l O(n2), chi ph thi gian l O(n2). 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 7

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 a1,a2,am; cc thnh ph ca Beta l b1,b2,...bn. Nu thnh ph ai v bj kt ngha vi nhau th coi ai bng bj. cc cy cu khng ct nhau, nu ta chn cp thnh ph (ai,bj) xy cu th cp tip theo phi l cp (au,bv) 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, 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.

y hai phn t

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(n2). 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 ai v c gi tr bi. 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 8

L(i,0)=0; L(0,j)=0. L(i,j)=L(i,j) nu t<ai. L(i,t)=max(L(i-1,j), L(i,jai)+bi) nu t ai. Trong : L(i1,j) l gi tr c c nu khng a vt i vo bal, L(i,jai)+bi 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 ai cy bch. ng ta cng trng cc cy bch trn vin ca cc mnh t, mnh t th j c bj 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 ai cy liu v di t th j c bj1 cy liu. Coi cc mnh t v di t l cc vt, vt th k c khi lng wk v gi tr vk (nu k l mnh t i th wk=vk=ai, nu k l di t j th wk=bj, vk=bj1). 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 ai 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.

Trang 9

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<ai. L(i,t)=min(L(i1,t), L(i,tai)+1) nu t ai.
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,tai)+1 (v ta vn

cn c chn ng xu th i na), khc vi khi xp bal l: nu chn L(i,t)=L(i1,tai)+bi v vt i ch c chn mt ln.

vt th i th

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 A1,A2An, ma trn Ai c kch thc l di1di. Hy xc nh trnh t nhn ma

trn A1.A2An 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 Ain Aj (Ai.Ai+1....Aj). F(i,i)=0. F(i,i+1)=di1.di.di+1 F(i,j) = min(F(i,k)+F(k+1,j)+di1.dk.dj 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 Ai v Ai+1. Ai c kch thc di1di, Ai+1 c kch thc didi+1, do F(i,i+1)=di1.di.di+1. Vi j>i+1 th ta thy c th tnh Ai.Ai+1....Aj bng cch chn mt v tr k no t ngoc theo trnh t: Ai.Ai+1....Aj = (Ai..Ak).(Ak+1..Aj) Ma trn kt qu ca php nhn (Ai..Ak) c kch thc di1dk, ma trn kt qu ca php nhn (Ak+1..Aj) c kch thc dkdj. 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 di1.dk.dj nhn 2 ma trn kt qu . T tng s php nhn ca cch t l: F(i,k)+F(k+1,j)+di1.dk.dj. Ta chn v tr k cho s php nhn t nht. Trang10

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(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).

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 a1a2an, trong ai 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 aiai+1aj. D thy nu i=j th F(i,j)=ai, nu j=i+1 th F(i,j)=aiaj. Nu j>i+1 th c th tnh biu thc aiai+1aj bng cch chia thnh 2 nhm: (aiai+1ak)(ak+1aj), Khi F(i,j)=F(i,k)F(k+1,j). Tm li, cng thc QH l: Trang11

F(i,i)=ai F(i,i+1)=aiai+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

Trang12

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 hi. C k ngi cn mua giy, ngi i cn mua i giy kch thc si . 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 a1a2...an , b1b2...bn. Gi c1c2...cn l mt hon v ca dy {bn}. 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(n2). 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:

Trang13

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

Trang14

You might also like