quy hoạch Động

267
Quy hoạch động Thuật toán qui hoạch động Bá Hiệp Trong quá trình học tập, chúng ta gặp rất nhiều các bài tập về Toán-Tin. Các bài tập dạng này rất phong phú và đa dạng. Thực tế chưa có thuật toán hoàn chỉnh có thể áp dụng cho mọi bài toán. Tuy nhiên người ta đã tìm ra một số thuật toán chung như chia để trị, tham ăn, quay lui,... Các thuật toán này có thể áp dụng để giải một lớp khá rộng các bài toán hay gặp trong thực tế. Trong bài viết này, tôi muốn đề cập với các bạn một thuật toán khác, đó là thuật toán quy hoạch động. Tư tưởng cơ bản của thuật toán là: Để giải một bài toán ta chia bài toán đó thành các bài toán nhỏ hơn có thể giải một cách dễ dàng. Sau đó kết hợp lời giải các bài toán con, ta có được lời giải bài toán ban đầu. Trong quá trình giải các bài toán con đôi khi ta gặp rất nhiều kết quả trùng lặp của các bài toán con. Để tăng tính hiệu quả, thay vì phải tính lại các kết quả đó, ta lưu chúng vào một

Upload: rptdnmqs12

Post on 09-Nov-2015

12 views

Category:

Documents


2 download

DESCRIPTION

vấn đề quy hoạch động trong tin học

TRANSCRIPT

Quy hoch ng

Thut ton qui hoch ng

B HipTrong qu trnh hc tp, chng ta gp rt nhiu cc bi tp v Ton-Tin. Cc bi tp dng ny rt phong ph v a dng. Thc t cha c thut ton hon chnh c th p dng cho mi bi ton. Tuy nhin ngi ta tm ra mt s thut ton chung nh chia tr, tham n, quay lui,... Cc thut ton ny c th p dng gii mt lp kh rng cc bi ton hay gp trong thc t. Trong bi vit ny, ti mun cp vi cc bn mt thut ton khc, l thut ton quy hoch ng. T tng c bn ca thut ton l: gii mt bi ton ta chia bi ton thnh cc bi ton nh hn c th gii mt cch d dng. Sau kt hp li gii cc bi ton con, ta c c li gii bi ton ban u. Trong qu trnh gii cc bi ton con i khi ta gp rt nhiu kt qu trng lp ca cc bi ton con. tng tnh hiu qu, thay v phi tnh li cc kt qu , ta lu chng vo mt bng. Khi cn li gii ca mt bi ton con no ta ch cn tim trong bng, khng cn tnh li.T tng ca thut ton quy hoch ng kh n gin. Tuy nhin khi p dng thut ton vo trng hp c th li khng d dng(iu ny cng tng t nh nguyn tc Dirichlet trong ton vy). Khi gii bi ton bng phng php ny, chng ta phi thc hin hai yu cu quan trng sau:- Tm cng thc truy hi xc nh nghim bi ton qua nghim cc bi ton con nh hn. - Vi mi bi ton c th, ta ra phng n lu tr nghim mt cch hp l t c th truy cp mt cch thun tin nht. minh ho thut ton, ta xt mt vi v d.V d 1:Cho hai dy s nguyn (a1,a2,...,am), (b1,b2,...,bn). Tm dy con chung c di ln nht ca hai dy trn (coi dy khng c s nguyn no l dy con ca mi dy v c di bng 0).Li giiChng ta c th thy ngay rng phc tp ca bi ton trn ph thuc vo hai s m, n. Xt hai trng hp:+Trng hp1:m=0 hoc n=0.y l trng hp c bit, c duy nht mt dy con chung ca hai dy c di? bng 0. V vy dy con chung c di ln nht ca chng c di bng 0.+Trng hp 2:m0 v n0.Trong trng hp ny, ta xt cc bi ton nh hn l tm dy con chung c di ln nht ca hai dy (a1,a2,...,ai), (b1,b2,...,bj) vi 0 i m, 0 j n. Go.i l[i,j] l di ca dy con chung ln nht ca hai dy (a1,...,ai), (b1,...,bj). ; Nh vy ta phi tnh tt c cc l[i,j] trong 0 = 2 th S[i] c tnh bng cng thc truy hi sau:S[i]:=Max(S[j]+1) vi j=i-1,... 1 m aj< ai. ly li dy con cc i ta dng mt mng Truoc vi ngha: Truoc[i] l ch s ca phn t trc phn t i trong dy con cc i ly trong dy a1,a2,... ai.By gi chng ta phi tm v tr i sao cho S[i] t max. Ta lu v tr vo bin Luu.Nh vy: S[Luu] chnh l s lng phn t ca dy con cc i ca dy cho. V bng mng Truoc ta c th ly li ch s cc phn t thuc dy con .n y ta gp mt vn : Mng Truoc ch cho php ta ln ngc t cui v u d in ra cc ch s theo th t tng dn ta phi dng thm mt mng ph P v in ngc li ca mng P:dem:=0;i:=Luu;While i0 doBeginInc(dem);P[dem]:=i; i:=Truoc[i];End;Ch s theo th t tng dn ca dy con cc i c in ra bng dng lnh:For i:=dem downto 1 do Write(P[i],' ');Tuy nhin lm nh trn c v di dng trong khi chng ta nhn ra tnh quy trong vic ly ngc li. V th tc in ra dy con rt ngn gn v sng sa:Procedure Print(i:Integer);BeginIf i>0 thenBeginPrint(Truoc[i]);Write(i,' ');End;End;Cng vic in ra ch cn mt li gi: Print(Luu);Ta c ton vn chng trnh:{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+}{$M 65500,0,655360}Uses Crt;Const fi = 'DAYSO.INP';MaxN=5000;Var A : Array[1..MaxN] of Integer;S : Array[1..MaxN] of Integer;Truoc : Array[1..MaxN] of Integer;i,j,Luu : Word;N : Word;Procedure Init;BeginFillchar(S,SizeOf(S),1);Fillchar(Truoc,SizeOf(Truoc),0);End;Procedure Readfile;Var f:Text;BeginAssign(f,fi);Reset(f);Readln(f,N);For i:=1 to N do Read(f,A[i]);Close(f);End;Procedure Find;BeginFor i:=2 to N doBeginFor j:=i-1 downto 1 doIf (A[j]< (S[i]BeginS[i]:=S[j]+1;Truoc[i]:=j;End;End;End;Procedure Print(i:Word);BeginIf i >0 thenBeginPrint(Truoc[i]);Write(a[i],' ');End;End;Procedure OutputResult;BeginLuu:=N;For i:=N-1 downto 1 doIf S[i]>S[Luu] then Luu:=i;Print(Luu);End;BEGINClrscr;Init;Readfile;Find;OutputResult;Readln;END.Qua v d trn chng ta hiu cch m thut ton th hin. By gi chng ta s xt tip mt bi ton sp xp trnh t phc v khch hng m cch gii u s dng thut ton Quy hoch ng trn mng mt chiu.Ta xt tip mt v d sau:Bi ton 2:Ti thi im 0, ng ch mt my tnh hiu nng cao nhn c n t hng thu s dng my ca n khch hng. Cc khch hng c nh s t 1 n n. Khch hng i cn s dng my t thi im din thi im ci(di, cil cc s nguyn v 0 < di< ci< 1000000000) v s tr tin s dng my l pi(pinguyn, 0 < pi 10000000). Bn cn xc nh xem ng ch cn nhn phc v nhng khch hng no sao cho khong thi gian s dng my ca hai khch c nhn phc v bt k khng c giao nhau ng thi tng tin thu c t vic phc v h l ln nht.D liu vo:T file vn bn THUE.INPDng u tin ghi s n (0 < n =< 1000);- Dng th i+1 trong s n dng tip theo ghi 3 s di, ci, picch nhau bi du trng (i = 1, 2,... n).Kt qu:Ghi ra file vn bn THUE.OUT-Dng u tin ghi hai s nguyn dng theo th t l s lng khch hng nhn phc v v tng tin thu c t vic phc v h.-Dng tip theo ghi ch s ca cc khch hng c nhn phc v.V d:THUE.INPTHUE.OUTTHUE.INPTHUE.OUT

3150 500 1501 200 100400 800 802 1802 34400 821 800200 513 500100 325 200600 900 6002 11002 4

Bi ton ny chng ta phi ch ch: dng thut ton Quy hoch ng ti u tng bc th trc ht chng ta phi sp xp cc citheo th t tng dn:Gi s c1 c2... cN.Tng t bi ton trn: Gi F[k] l s tin ln nht khi phc v mt s khch hng t 1 n k.Vi mi F[k] ta c:- Nu chp nhn phc v khch k th F[k]:=F[t]+pk(vi t l ch s max tho mn khong thi gian [dt, ct[dk,ck] =).- Nu khng chp nhn phc v k th F[k]:=F[k-1].Nh vy hm quy hoch ng ca F[k] s l:F[k]:=Max{F[t]+pk,F[k-1]} vi k = 2, 3,... N v t c ngha nh trn. ly li ch s cc khch hng c phc v chng ta li dng mng Truoc nh v d trn.Trn y l nhng g ti mun trnh by vi cc bn. Theo ti, thut ton tuy n gin nhng tm ng dng ca n rt phong ph m nu nm vng n l rt c li cho t tng thut ton ca cc bn.Gii thut quy hoch ng

CongHiep_87@yahocomi vi cc bn yu thch mn lp trnh th c l gii thut qui hoch ng tng i quen thuc trong vic gii quyt cc vn tin hc. Tuy nhin, s tht l kh c th tm c c c v cng thc cho vic s dng qui hoch ng. Chnh v vn ny, qui hoach ng li tr thnh khng ph bin. i vi nhng bi ton nh vy, chng ta li c gng i tm cch gii khc v d nh vt cn hay tham lam....iu tht l d! Chnh v vy, ti mun a ra mt s bi ton p dng qui hoch ng mong rng sau bi bo ny, cc bn s yu thch gii thut ny hn.Trc ht cc bn phi lun nh rng, gii thut qui hoch ng c xut pht t nguyn l Bellman: nu 1 cu hnh l ti u th mi cu hnh con ca n cng l ti u. Chnh v vy xy dng 1 cu hnh ti u, ta hy xy dng dn cc cu hnh con sao cho cc cu hnh con ny cng phi ti u y chnh l ng li ch o cho mi bi ton qui hoch ng. Sau y l mt s bi ton c gii quyt bng qui hoch ng.I. Cc bi tonBi 1:Trc tin chng ta hy xt 1 bi ton tht n gin v quen thuc l tm gi tr ln nht trong n s l a1, a2, ..., an. Gii quyt bi ton ny, ta s xy dng cc cu hnh con ti u bng cch ln lt tm s ln nht trong k s u tin vi k chy t 1 n n:K=1: max1:=a1;K=2: max2:=max(max1,a2);K=3: max3:=max(max2,a3);..............................................K=n: maxn:=max(maxn-1,an);Nh vy khi k t ti n th maxnchnh l gi tr ln nht trong n s ch Vic ci t chng trnh ht sc n gin nh sau:Uses crt;Var a: array[1..100] of integer;n,k,max: integer;BeginWrite('Cho so luong phan tu: ');readln(n);For i:=1 to n do begin write('a[',i,']= ');readln(a[i]);end;Max:=a[1];For k:=2 to n doIf a[k]>max then max:=a[k];Write('Gia tri lon nhat cua day cac so da cho la: ',max);ReadlnEnd.By gi chng ta xt n bi ton 2 c phn hp dn hn. y chnh l mt trong nhng bi ton in hnh cho gii thut qui hoch ng:Bi 2:Bi ton ci ti: Cho n loi vt (1n100) vi mt vt loi th i (1in) c trng lng l a[i] v gi tr s dng l c[i]. Mt nh thm him cn mang theo mt s vt vo ti ca mnh sao cho tng trng lng cc vt em theo khng vt qu sc chu ng ca ti l w (1w250) v tng gi tr s dng t cc vt em theo l ln nht. Hy tm mt phng n mang cho nh thm him vi gi s rng s lng vt ca mi loi l lun dng.* Thut gii bng qui hoch ng c m t nh sau:Ta xy dng mt mng 2 chiu f vi f[i,j] l gi tr s dng ln nht c c bi j vt t 1 n j m tng trng lng khng vt qu j.Khi to : f[i,1]:=0 vi i < a[1]F[i,1]:=c[1]*(i div a[1]) vi i > =a[1]; (i = 1..w);Ta ln lt cho i t ti w v j t ti n bng cch sau:For j:=2 to n doFor i:=1 to w doIf i >= a[i] then f[i,j]:=Max(f[i-a[j],j]+ c[j],f[i-1,j])Else f[i,j]:=f[i-1,j].Nh vy cho n f[w,n] ta s thu c gi tr ln nht c th t c t n loi vt cho sao cho trng lng khng vt qu w. H thc ton trn c gi l h thc Dantzig. C th rt d hiu c thut ton nh sau:Phn khi to: f[i,1] c ngha l gi tr ln nht nu ch c 1 loi vt ( y l vt 1) m trng lng khng qu Nh vy nu i < a[1] th r rng khng th mang theo vt no v gi tr f=0. Ngc li nu i a[1] th s vt c php mang theo i s l i div a[1] v gi tr t c l f= c[1]*(i div a[1]).Phn xy dng: chng ta xt n f[i,j] c ngha l xt n gi tr ln nht c th t c t j loi vt (1,,j) m trng lng khng qa i. Vy th r rng l nu i < a[j] th c ngha l vt j khng th mang i hay vi trng lng l i th ta vn khng th ci thin c gi tr f v f vn nhn gi tr f[i,j-1]. Ngc li nu i a[j] th chng ta xt vic nu mang thm vt j th s c li hn vic khng mang hay khng, iu c ngha l xt Max(f[i-a[j],j]+ c[j],f[i-1,j]).Chng trnh ci t gii quyt bi ton ci ti rt n gin nh sau:Uses crt;Var value,weight:array[1..30]of 0..500;{value: gia tri;weight: trong luong}f:array[0..500,0..30] of 0..10000;w,w1,sl:integer;fi:text;Procedure Init;Var i:byte;Beginclrscr;assign(fi,'tutxt');reset(fi);readln(fi,w,sl);w1:=w;for i:=1 to sl do readln(fi,weight[i],value[i]);End;{***********************************************}Procedure Solve;Var i,j:word;Beginfor j:=1 to sl do f[0,j]:=0;for i:=1 to w do f[i,1]:=(i div weight[1])*value[1];for j:= 2 to sl dofor i:=1 to w dobeginif i else beginf[i,j]:=f[i,j-1];if (value[j]+f[i-weight[j],j])>f[i,j] thenf[i,j]:=(value[j]+f[i-weight[j],j]);end;end;(************************************************}Procedure Print_rerult;Var i:byte;Beginwrite('* Gia tri cao nhat dat duoc la: ',f[w,sl]);writeln;End;(*************************************************)BeginInit;Solve;Print_result;Readln;End.Ch : chng trnh trn c c d liu t file.II. Vn cng thc truy hii vi mt bi ton qui hoch ng th cng thc truy hi cng l mt phn rt quan trng. Nu chng ta ch xy dng c gi tr ti u th i khi vn l cha . Vn c t ra l lm th no xc nh c cu hnh ti gii quyt vn ny ta li phi xc nh c cng thc truy h Thc t l xc nh c cng thc truy hi ny th cng khng phi qu kh bi t cng thc qui hoch ng chng ta cng c th suy ngay ra c cng thc truy hTi xin tr li vi bi ton ci ti nu trn xy dng cu hnh ti u cho bi ton ci ti c ngha l phi mang nhng loi vt no v mi loi vt l bao nhiu c c gi tr s dng max: Xy dng hm ph choose[i,k] vi ngha t c gi tr tt nht ti f[i,k] th cn phi s dng n loi vt no (i=1..w,k=1..n) bng cac cng thc sau:Choose[i,1]:=0 nu iTa ln lt cho k chy ti n v i chy ti w xy dng mng choose nh sau:Nu f[i,k]=f[i,k-1] th choose[i,k]:=choose[i,k-1] (do khng mang vt k)Nu khng th n choose[i,k]:=k (c ngha mang theo vt k)Khi xy dng n choose[w,n] th ta ch cn ch n ct cui cng ca mng choose v bt u truy hi. Gi s mng number[i] (i=1..n) s cho ta s lng loi vt i c mang theo. Ta s ci thin chng trnh gii bi ton ci ti trn nh sau:Program Bai_toan_cai_tui;Uses crt;Var value,weight,number:array[1..20]of 0..1000;{value:gia tri}f,choose:array[0..1200,0..12]of 0..10000;w,w1,sl:0..2000;fi:text;Procedure Init;Var i:byte;Beginclrscr;assign(fi,'tui.txt');reset(fi);readln(fi,w,sl);w1:=w;for i:=1 to sl do readln(fi,weight[i],value[i]);End;{***********************************************}Procedure Solve;Var i,j:word;Beginfor j:=1 to sl do begin f[0,j]:=0;choose[0,j]:=0;end;for i:=1 to w dobeginf[i,1]:=(i div weight[1])*value[1];if i>=weight[1] then choose[i,1]:=1else choose[i,1]:=0;end;for j:= 2 to sl dofor i:=1 to w dobeginchoose[i,j]:=choose[i,j-1];if i else beginf[i,j]:=f[i,j-1];if (value[j]+f[i-weight[j],j])>f[i,j] thenbeginf[i,j]:=(value[j]+f[i-weight[j],j]);choose[i,j]:=j;end;end;end;for i:=1 to sl do number[i]:=0;while choose[w1,sl]0 dobeginnumber[choose[w1,sl]]:=number[choose[w1,sl]]+1;w1:=w1-weight[choose[w1,sl]];end;End;{**************************************************}Procedure Print;Var i:byte;Beginwrite('* Gia tri cao nhat dat duoc la: ',f[w,sl]);writeln;write('* Khoi luong da dung la: ',w-w1);writeln;writeln;writeln('* Nha tham hiem can dem nhu sau: ');for i:=1 to sl doif number[i]0 thenbegin write(' - ',number[i],' vat ',i, ' voi trong luong ',number[i]*weight[i],' va gia tri: ',number[i]*value[i]);writeln;end;End;{************* Main **********************}BeginInit;Solve;Print;Readln;End.III. Bn lunV bi ton ci ti cn rt nhiu li gi Ta cng c th gii quyt bi ton ci ti bng thut ton nhnh cn. u im ln nht ca thut ton nhnh cn l c th ch ra c mi cu hnh ti u ca bi tan, tuy nhin trong trng hp xu nht, nhnh cn li chnh l vt cn. Chnh v vy, thi gian thc hin chng trnh bng nhnh cn s rt lRt tic rng, gii thut qui hoch ng lun lun ch nu ra c mt cu hnh ti u. Nu chng ta gii bng qui hoch ng nh trn, thi gian chy chng trnh rt nhanh chng. Chng trnh trn hon ton c th ci thin c bng cch thay v dng mng 2 chiu f v choose ta c th ch dng 4 mng 1 chiu l f1, f2, choose1, choose2 bi thc cht ti ct j ca f th ta ch c th lin quan n ct j-1 ca f. Chnh v vy, 2 mng f1,f2 c th dng th ln lt cho nhau tng ng dng mng 2 chiu f. Khi chng trnh s c th chy vi b d liu c vi nghn!Thut ton qui hoch ng cn c ng dng trong rt nhiu bi ton, ti xin c nu ra thm mt s bi ton khc na :Bi 3:Mt tam gic c to bi cc s x v sp xp nh hnh bnHy tm ng i t nh xung y sao cho: tng cc s i qua lln nht. Cho bit:- x l cc s nguyn bt k t 0 n 99.- tam gic c s hng 0 dobeginrepeatdec(i);until s[i]=(;s1:=copy(s,i+1,pos( ),s)-i-1);delete(s,i,pos( ),s) -i+1;insert(numbertostr(Tinh_gia_tri_bieu_thuc_khong_dau_ngoac(s1)),s,i);i:=pos( -,s);end;Tinh_gia_tri_bieu_thuc_khong_co_ngoac:=Tinh_gia_tri_bieu_thuc_khong_dau_ngoac(s);end;

7.X l li ca biu thc: ta ch cn sa li cht t cc on m lnh trn th ta s pht hin c tt cc cc li m biu thc c chn hn nh: sai c php, xut hin k t l, chia cho 0

8.M rng php ton: vi phng php nu trn cc bn d dng b sung thm mt s php ton vo biu thc nh: ^, log, Ln, sin, cos,

9.Tnh biu thc di:ta c th dng mng lu tr biu thc thay v chui.

Trong qu trnh vit bi c th c xut hin mt s sai st. Mong bn c thng cm v t khc phc (nu c) hoc lin h vi tc gi ca bi vit b sung.Dijtra - thut ton tt gii cc bi ton ti u

Giang LmBi ton ti u l mt bi ton mun thu trong tin hc bi n c ng dng thc t cao. V d nh lm th no hon thnh mt cng vic no vi chi ph t nht, hay i nh th no n ch sm nht, vv... Cng vi s tr gip ca my tnh v cc thut ton hiu qu gip chng ta gii quyt bi ton ti u mt cch d dng v chnh xc. Mt trong s cc thut ton hiu qu l thut ton Dijkstra- thut ton tm ng i ngn nht trn th c trng s khng m.Chc hn cc bn u khng xa l g vi thut ton Dijkstra. y l mt ci tin t thut ton Ford_Bellman. Trong trung hp trng s trn cc cung l khng m, thut ton do Dijkstra ngh gii bi ton tm ng i ngn nht t nh s n cc nh cn li ca th lm vic hiu qu hn nhiu so vi thut ton Ford_Bellman. Thut ton c xy dng trn c s gn cho cc nh cc nhn tm thi. Nhn ca mt nh cho bit cn trn ca di ng i ngn nht t s n n. Cc nhn ny s c bin i theo mt th tc lp, m mi mt bc lp c mt nhn tm thi tr thnh nhn c nh. Nu nhn ca mt nh no tr thnh nhn c nh th n s cho ta khng phi l cn trn m l ng i ngn nht t nh s n n. Thut ton c m t c th nh sau:

u vo: th c hng G = (V,E) vi n nh, s thuc V l nh xut pht, ma trn trng s a[u,v], a[u,v] 0, u,v thuc V.u ra: di ng i ngn nht t s n tt cc nh cn li: d[v], v thuc V.truoc[v], v thuc V, ghi nhn nh i trc v trong ng i ngn nht t s n v

Procedure Dijkstra;Beginfor v thuc V do begin d[v] := a[s,v]; truoc[v] := s; end; (* Khi to *)d[s] := 0; T := V {s} (* T l tp cc nh c nhn tm thi *)(* Bc lp *)while T doBeginTm nh u thuc T tho mn d[u] = Min {d[z] : z thuc T}T := T{u} (* C nh nhn ca nh u *)for v thuc T do (* Cp nht li nhn cho cc nh trong T *)if d[v] > d[u] + a[u,v] thenbegin d[v] := d[u] + a[u,v]; truoc[v] := u; end;

end;end;Thut ton Dijkstra tm c ng i ngn nht trn th sau thi gian c O(n2). Nu ch cn tm ng i ngn nht t s n mt nh t no th c th kt thc thut ton khi nh t tr thnh nh c nhn c nh. Vic ci t thut ton chc khng c g kh khn. iu kh nht l trong cc bi ton c th ta phi a c n v m hnh th nh th no, nh l g, 2 nh c cung ni khi no, trng s l g, nh xut pht l g, nh kt thc l g, vv..T mi p dng thut ton c bn gii. Sau y l mt s bi ton hay ng dng thut ton Dijkstra gii.

Bi 1: Chuyn HngBn mt kho hng hnh ch nht kch thc mxn c chia thnh cc vung n v (m hng, n ct: cc hng nh s t trn xung di, cc ct c nh s t tri qua phi). Trn cc vung ca bn c mt s k hiu:- Cc k hiu # nh du cc c mt kin hng xp sn.- Mt k hiu *: nh du ang c mt rbt.- Mt k hiu $: nh du cha kin hng cn xp.- Mt k hiu @: nh du v tr m cn phi xp kin hng vo $ vo .- Cc k hiu du chm ".": Cho bit trng.Ti mt thi im, r bt c th thc hin mt trong s 6 ng tc k hiu l:- L, R, U, D: Tng ng vi php di chuyn ca r bt trn bn : sang tri, sang phi, ln trn, xung di. Thc hin mt php di chuyn mt 1 cng- +, : Ch thc hin khi rbt ng bn cnh kin hng $. Khi thc hin thao tc +, rbt ng yn v y kin hng $ lm kin hng ny trt theo hng y, n khi chm mt kin hng khc hoc tng nh kho th dng li. Khi thc hin thao tc , r bt ko kin hng $ v pha mnh v li li 1 theo hng ko. Thc hin thao tc y hoc ko mt C cng. R bt ch c di chuyn vo khng cha kin hng ca kho.

Hy tm cch hng dn rbt thc hin cc thao tc a kin hng $ v v tr @ sao cho s cng phi dng l t nht.D liu:Vo t file vn bn CARGO.INP- Dng 1: Ghi ba s nguyn dng m, n, C ( m, n 100; C 100)- m dng tip theo, dng th i ghi n k kiu trn hng i ca bn theo ng th t tri qua phi.Cc k hiu c ghi lin nhau.Kt qu:Ghi ra file vn bn CARGO.OUT- Dng 1: Ghi s cng cn thc hin- Dng 2: Mt dy lin tip cc k t thuc {L, R, U, D, +, -} th hin cc ng tc cn thc hin ca r bt.Rng buc: Lun c phng n thc hin yu cu bi.V d:

Phn tch:Thut ton:Ta s dng thut ton Dijkstra gii bi ton ny.*M hnh th:Mi nh ca th y gm 3 trng phn bit vi cc nh khc:- i: Ta dng ca kin hng (i = 1..m)- j: Ta ct ca kin hng (j = 1..n)- h: Hng ca r bt ng cnh kin hng so vi kin hng (h = 1..4: Bc, ng, Nam, Ty).

Bn c th quan nim mi nh l (i,j,u,v): trong i,j: ta ca kin hng; u,v: ta ca rbt ng cnh kin hng. Nhng lm th s rt lng ph b nh v khng chy ht c d liu. Ta ch cn bit hng h ca rbt so vi kin hng l c th tnh c ta ca rbt bng cch dng 2 hng mng lu cc s ra:dx : array[1..4] of integer = (-1,0,1,0)dy : array[1..4] of integer = (0,1,0,-1)Khi , ta (u,v) ca rbt s l : u := i + dx[h]; v := j + dy[h];

- Hai nh (i1,j1,h1) v (i2,j2,h2) c gi l k nhau nu qua 1 trong 2 thao tc + hoc - kin hng c rbt y hoc ko t (i1, j1) n (i2, j2) v rbt c th di chuyn c t (u1,v1) n (u2,v2) ( u1 = i1+dx[h1]; v1=j1+dy[h1]; u2=i2+dx[h2]; v2= j2+dy[h2]). Tt nhin cc (i2,j2) v (u2,v2) phi u khng cha kin hng.- Trng s gia 2 nh l C (s cng m r bt y kin hng t (i1,j1) n (i2,j2) ) cng vi cng r bt di chuyn t (u1,v1) n (u2,v2).Gi s kin hng cn xp ang (is,js) v hng ca rbt ng cnh kin hng l hs v cn xp kin hng vo l (ie, je). Khi , ta s dng thut ton Dijkstra tm ng i ngn nht t nh (is,js,hs) n nh (ie,je,he) vi he thuc {1..4}.Mng d s l 1 mng 3 chiu: d[i,j,h]: di ng i ngn nht t nh xut pht (is,js,hs) n nh (i,j,h). Kt qu ca bi ton s l d[ie,je,he] vi he thuc {1..4}. ghi nhn phng n ta s dng 3 mng 3 chiu tr1, tr2, tr3. Khi ta di t nh (i1,j1,h1) n nh (i2,j2,h2) th ta s gn: tr1[i2,j2,h2]:= i1; tr2[i2,j2,h2]:= j1; tr3[i2,j2,h2] := h1 ghi nhn cc thng tin: ta dng, ct, hung ca dnh trc nh (i2,j2,h2). T 3 mng ny ta c th d dng ln li ng i.

Bi 2: Hnh trnh r nht:Thnh ph Peace va a vo p dng mt h thng in t t ng tnh l ph s dng l ph ng giao thng. Mt h thng c trin khai pht hin xe ca bn r tri, r phi, i thng hoc quay u v mi thao tc nh vy phi tr mt l ph tng ng. l 1 $ cho mi ln r tri, 5$ cho mi ln r phi, i thng v pha trc l min ph, quay u xe l b cm, ngoi tr tnh hung cui ph khi khng cn c th i thng, r tri, hoc r phi c na. Trong trng hp ngoi l bt buc phi quay u xe, bn phi tr l ph 10$. Bn c mi thit k v a ra ch dn cho ngi i xe i sao cho phi tr l ph l t nht gia 2 im bt k trong thnh ph. Rt may h thng ng giao thng ca Peace c dng bn c.V d:

v d trn k t # ch ra on ng ph, cn k t . ch ra on ng khng l ng. Cc on ng ph u c th i c 2 chiu. K t E ch ra v tr xut pht ca xe t c u xe hng v pha ng, cn k t F ch ra v tr kt thc. L trnh phi tr l 8$, trong ta phi thc hin 3 ln r tri v 1 ln r phi n ch. Ta c th thc hin cch i r phi 2 ln n ch, nhng cch l ph phi tr l 10$.

Chiu cao v chiu rng ca bn t nht l 4 v khng qu 30. Bn c ng 1 im xut pht v 1 im kt thc. Lun c ng i t im xut pht n im kt thc. Lun c mt khung gm ton k t . vin bn khng th vt ra ngoi bn .D liu:Vo t file vn bn ERP.INP gm cc dng:- Dng th nht cha 2 s nguyn dng h, w theo th t l chiu cao h v chiu rng ca bn .- Mi dng trong h dng tip theo cha w k t. Mi k t ch l mt trong s cc k t sau:- .: v tr khng c ng- #: v tr c ng ca bn .- E: v tr xut pht, xe hng u v pha ng.- W: v tr xut pht, xe hng u v pha Ty.- N: v tr xut pht, xe hng u v pha Bc.- S: v tr xut pht, xe hng u v pha Nam.- F: v tr kt thc.Trong bn c ng 1 trong 4 k t E, W, N, S. V ng 1 k t F.Kt qu ghi ra file vn bn ERP.OUT duy nht mt s l l ph ca l trnh r nht i t v tr xut pht n v tr kt thc.Phn tch:

M hnh th:Mi nh ca th y gm 3 trng phn bit vi cc nh khc:- i: Ta dng ca nt m t ang ng( i = 1..h)- j: Ta ct ca nt m t ang ng (j = 1..w)- h: Hng ca u t (h=1..4)

Ta s xt xem 1 (i,j) c phi l 1 nt khng. d hnh dung, ta s quan nim 1 nt y cng ging nh 1 nt giao thng nh trong thc t. Ta s xy dng mt mng nut (nut(i,j)=true: (i,j) l 1 nt ) nh sau:- iu kin cn (i,j) l 1 nt l (i,j) phi l ng.- Cc xut pht v kt thc u l nt.- Nu mt (i,j) c 2 k theo hng 1 v 3 (hoc 2 v 4) l ng v 2 k theo hng 2 v 4 (hoc 1 v 3) khng l ng th (i,j) khng l 1 nt. Ngc li (i,j) l 1 nt.- Khi ta ang ng (i1,j1) v t ang quay u v hng h1 ta s tm nh k bng cch i theo 4 hng(1..4).Khi i theo hng h2 ta gp mt (i2,j2) l 1 nt. Khi nh (i1,j1,h1) v (i2,j2,h2) c gi l k nhau. mi hng ta s i cho n khi gp khng l ng.- Trng s y s c lu tr trong 1 hng mng cp(u,v) vi ngha cp(u,v) l chi ph phi tr t ang quay u theo hng u chuyn sang quay u theo hng v. Khi , trng s gia 2 nh (i1,j1,h1) v (i2,j2,h2) l cp(h1,h2).Hng mng chi ph nh sau:cp :array[1..4,1..4] of integer= ( (0,5,10,1),(1,0,5,10),(10,1,0,5),(5,10,1,0) );- Mng d(i,j,h) s lu tr chi ph t nht i t nh xut pht (is,js,hs) n nh (i,j,h). Kt qu ca bi ton s l d(ie,je,he) vi (ie,je) l kt thc, he=1..4.

Bi tp:Bi 1: ng i trong m cung.Mt m cung gm MxN vung (M dng, N ct, M, N 100). Mi vung c th c t 0 n 4 bc tng bao quanh. Cn phi i t bn ngoi vo m cung, bt u t pha Ty, qua cc ca m cung v thot ra khi m cung v pha ng. Ch c php di chuyn theo 4 hng ng, Ty, Nam, Bc v i qua ni khng c tng chn.1. Trong trng hp c ng i, hy tm ng i qua t nht.2. Trong trng hp tri li, hy tm cch ph b t nht mt s bc tng c ng i. Nu c nhiu phng n nh vy, hy ch ra mt phng n ng i qua t nht.Trng thi ca 1 c cho bi mt s nguyn trong khong 0 n 15 theo quy tc: bt u l 0 (Khng c tng), cng thm 1(nu c bc tng pha Ty), cng thm 2 (nu c bc tng pha Bc), cng thm 4 (nu c bc tng pha ng), cng thm 8 (nu c bc tng pha Nam).

D liu vo c cho bi file vn bn MECUNG.INP bao gm:- Dng u ghi 2 s M, N- Cc dng tip theo ghi ma trn trng thi ca cc gm M dng, N ct, trong gi tr dng i ct j m t trng thi ca [i,j].Cc gi tr ghi trn 1 dng cch nhau t nht 1 du cch.Kt qu ghi ra file vn bn MECUNG.OUT:1. Trng hp tm thy ng i:- Dng u ghi s m ng i i qua- Dng tip theo ghi thng tin v ng i gm ta dng xut pht, sau cch 1 du trng, l xu k t m t ng i( theo hng) vit lin tip nhau, gm cc k t D(ng), B(bc), N(nam), T(ty).2. Trng hp khng tm thy ng i:- Dng u ghi s 0- Dng th 2 ghi s bc tung phi ph- Dng th ba ghi s m ng i i qua- Dng cui ghi thng tin v ng di theo quy cch ging nh trng hp 1.

Vid 1:

Cc bn thy y, mt bi ton tng chng nh rt kh, nhng sau khi phn tch v a n v m hnh th ta c th gii n d dng bng thut ton Dijkstra. Phn ci t cc bi ton trn, ti cc bn t lm. Nu mun c chng trnh hoc c g khng hiu, xin lin h vi to son hoc ti v ti s cho bn thy sc mnh ca thut ton Dijkstra! Chc cc bn thnh cngK thut tm kim nh phn gii mt s bi ton ti u

Nguyn Thanh TngC l ai trong chng ta cng bit v thut ton tm kim nh phn v s hiu qu ca n. S dng k thut tm kim tng t trong mt s bi ton ta cng t c kt qu rt kh quan. Sau y l mt s bi ton nh vy.I. Bi ton v d.Thng tin v mng giao thng gm n thnh ph cho bi mng A kch thc n?n gm cc phn t aijl mt gi tr nguyn dng ch ti trng ca tuyn ng ni 2 thnh ph i,j. Nu aij=0 th gia i,j khng c ng ni.Ti trng ca mt l trnh t thnh ph s n thnh ph t (c th i qua mt s thnh ph trung gian) l ti trng ca tuyn ng c ti trng nh nht thuc l trnh.Cho trc 2 thnh ph s v t. Gi thit lun c l trnh t s n t, hy tm mt l trnh t s n t c ti trng ln nht.Thut giit kmin= min {aij: aij>0}; kmax= max {aij: aij>0}Vi k thuc kmin..kmax, ta xy dng th G(k) gm:n nh ng vi n thnh ph.2 nh i,j c cnh ni nu aijkNu G(k) c mt ng i t s n t th ta ni mng giao thng c "l trnh ti thiu k" (V mi cnh ca G(k) u c trng s k nn nu G(k) c mt ng i t s n t th ng i c ti trng k).Bi ton c chuyn thnh vic tm gi tr k ln nht thuc kmin..kmax sao cho mng giao thng c "l trnh ti thiu k". Khi ng i t s n t tm c chnh l ng i c ti trng ln nht cn tm.Ta s dng k thut tm kim nh phn da trn nhn xt:nu mng c "l trnh ti thiu p" v k l gi tr ln nht c "l trnh ti thiu k" th k thuc p..kmax. Ngc li (nu mng khng c "l trnh ti thiu p") th k thuc kmin..p 1.Th tc Search thc hin vic tm kim nh phn c dng nh sau:procedure search(x);beginl := kmin; r := kmax;repeatk := (l + r) div 2;check(k);if ok then l := k else r := k - 1;until l>=r;end;Trong th tc Check (k) thc hin:1. Xy dng th G(k) nh m t trn.2. Dng thut ton DFS kim tra xem c ng i t s n t khng. Nu c th t Ok l true, ngc li th Ok l false.Chng trnh mu bn c tin theo di, ti xin cung cp chng trnh mu ca bi ton ny. x l li, mt s on chng trnh hi phc tp so vi mu trn.program weight;constinp = weight.inp;out = weight.out;max = 100;typemang1 = array[1..max] of integer;mang2 = array[1..max, 1..max] of LongInt;varn,s,t,z : integer;k,l,r : LongInt;a : mang2;,kq : mang1;ok : boolean;(*********************)procedure nhap;vari,j : integer;f : text;beginassign(f, inp);reset(f);readln(f, n, s, t);for i := 1 to n do beginfor j := 1 to n do read(f,a[i,j]);readln(f);end;close(f);end;(*********************)procedure chbi;vari,j : integer;beginl := maxLongInt; r := 0;for i := 1 to n dofor j := 1 to n doif a[i,j] > 0 then beginif l > a[i,j] then l := a[i,j];if r < a[i,j] then r := a[i,j];end;end;(*********************)procedure dfs(i : integer);varj : integer;beginfor j := 1 to n doif ([j] = 0) and (a[i,j] > = k) then begin[j] := i;dfs(j);end;end;(*********************)procedure check;beginfillchar(,sizeof(),0);[s] := -1;dfs(s);if [t] = 0 then ok := falseelse ok := true;end;(*********************)procedure search;beginrepeatk := (l+r) div 2;check;if ok then l := kelse r := k-1;until (l=r) or (l = r-1);if l = r-1 then begink := r;check;if ok then exit;end;k := l;check;end;procedure trace;vari : integer;beginif not ok then exit;z := 0; i := t;repeatinc(z); kq[z] := i;i := [i];until i = -1;end;(*********************)procedure xuly;beginsearch;trace;end;(*********************)procedure inkq;varf : text;i : integer;beginassign(f, out);rewrite(f);writeln(f, k);for i := z downto 1 dowrite(f, ,kq[i]);close(f);end;(*********************)beginnhap;chbi;xuly;inkq;end.Nhn xta.Vi k thut tm kim nh phn, gii thut trn ch cn thc hin c log2(kmaxkmin) ln kim tra (gi th tc check). Do hn ch aijl nguyn dng maxLongInt nn kmax kmin< 232. Th tc check s dng thut ton DFS c phc tp tnh ton l O(n2) nn gii thut c thi gian thc thi c C.O(n2) vi C < 32.b.Ta khng cn phi xy dng G(k) mt cch tng minh(tnh hn thnh ma trn k) m ch cn thay biu thc kim tra c cnh (i,j) khng bng biu thc aij k (trong th tc DFS).c.Gi tr ti u l mt trong cc phn t ca A. Trong bi ny do aij l s nguyn nn ta xc nh c khong tm kim l min nguyn kmin..kmaxv thc hin vic tm kim nh phn trn min .Nu aij l s thc khng th k thut tm kim nh phn khng p dng c trn min thc [kmin, kmax]. p dng c ta phisp xp tng dn cc phn t dng ca A (ti a c n2phn t) ri thc hin tm kim nh phn trn dy tng dn . Khi th tc search cn thay i: l khi to bng 1, r khi to bng n2v th tc check c gi vi tham s l d[k]: check(d[k]) trong d dy tng dn cha n2phn t ca A.Cng c th lm th khi aij l s nguyn, tuy nhin s khng hiu qu v s tn thi gian sp xp dy v tn khng gian lu tr dy sp.II. Mt s bi ton p dng1. Bi ton 1 ( thi HSGQG nm hc 1999-2000)C n cng nhn v n cng vic. Nu xp cng nhn i nu lm vic j th phi tr tin cng l aij. Hy tm mt cch xp mi ngi mt vic sao cho tin cng ln nht cn tr trong cch xp vic l nh nht.Thut giiNu bi ton yu cu l tm cch xp vic sao cho tng tin cng phi tr l nh nht th l bi ton tm cp ghp y trng s cc tiu. Tuy nhin bi ny l tm cch xp vic sao cho tin cng ln nht l nh nht. Ta c tng nh sau: tm s k b nht sao cho tn ti mt cch sp xp n ngi, n vic v cc yu cu v tin cng u k.D thy vic tm kim c th thc hin bng k thut tm kim nh phn, v vic kim tra s k c tho mn khng chnh l vic kim tra th 2 pha G(k) c b ghp y hay khng. th th 2 pha G(k) c xc nh nh sau:G(k) = (X,Y,E) Trong : X l tp n nh ng vi n cng nhn, Y l tp n nh ng vi n cng vic. Vi i thuc X, j thuc Y nu aij k th cho (i,j) thuc E (2 nh i,j ch c ni vi nhau nu aijk) .Nu k l s nh nht m G(k) c b ghp y th b ghp chnh l cch xp vic cn tm.Ta cng c mt s bi ton dng tng t:Bi ton 2. Thi gian hon thnhC n cng nhn v n cng vic. Nu xp cng nhn i nu lm vic j th thi gian hon thnh l Tij. Hy tm mt cch xp mi ngi mt vic sao tt c cc cng vic hon thnh trong thi gian sm nht (cc cng vic c tin hnh song song).Bi ton 3. Nng sut dy truynDy truyn sn xut c n v tr v n cng nhn (u c nh s t 1..n). aijl nng sut (s sn phm sn xut c trong mt n v thi gian) ca cng nhn i khi lm vic ti v tr j. Vi mi cch b tr dy truyn (cng nhn no lm v tr no) nng sut ca mt v tr l nng sut ca cng nhn lm vic ti v tr . Nng sut chung ca dy truyn l nng sut ca v tr km nht trn dy truyn. Hy tm cch b tr dy truyn c nng sut cao nht.Ch : trong bi ny ta phi tm s k ln nht G(k) c b ghp y v 2 nh i,j ch c ni vi nhau nu aijk.2. Bi ton 4 ( thi HSGQG nm hc 1998-1999)Mt on ng quc l c n ca hng, pi l khong cch ca n so vi u ng. Nu mt ca hng c kho th khng cn phi i ly hng, ngc li th phi n ly hng ca hng c kho gn nht. Hy chn k ca hng t kho sao cho qung ng i ly hng di nht trong s cc cc ca hng cn li l ngn nht.Thut giiBi ny c th lm bng vt cn (duyt cc t hp). Ngoi ra cn c phng php quy hoch ng. Tuy nhin chng hon ton khng hiu qu khi n ln. Ta c th p dng k thut tm kim nh phn kt hp tham lam nh sau.Th tc search tm kim nh phn gi tr d trong min dmin..dmaxtng t bi ton 1. Ring th tc check(d) s thc hin khc. Thay v kim tra xem c th b tr k kho sao cho qung ng i ly hng ca mi ca hng khng c kho u d khng, ta s lm ngc li:ln lt b tr cc kho sao cho qung ng i ly hng ca mi ca hng khng bao gi vt qu d.Cch lm nh sau:Gi dijl khong cch gia 2 ca hng i,j: dij= |pipj|Dng 2 ca hng gi c ch s l 0 v t = n+1 lm bin sao cho di0= dit= vi mi i. t 2 kho (gi) ti 2 ca hng .Vi mi ca hng i t 1 n n: nu i c kho th chuyn sang ca hng tip theo, ngc li th:1. Tm ca hng x c kho gn i nht v pha bn tri (x thuc 0..i).2. Tm ca hng y c kho gn i nht v pha bn phi (y thuc i..t).Nu dix hoc diy d th qung ng i ly hng ca i d (tho mn). Ngc li tm ca hng j cha c kho xa i nht v pha phi (j thuc i..y) m dij d. t kho ti j.Sau qu trnh trn m s kho (tt nhin khng tnh 2 kho 0 v t). Nu s kho k th t Ok l true.3. Bi ton 5 ( thi Olympic Tin hc SV 2004)C N hnh khch, M khch sn v K xe bus. Mi hnh khch cn v mt khch sn v mi xe bus s i qua mt s khch sn no . Xe bus i c q[i] ch ngi. Hy sp xp hnh khch ln xe bus sao cho:1. Mi xe bus khng cha nhiu hnh khch hn s gh ca n.2. Tt c hnh khch u ln xe bus c i qua khch sn mnh cn n.3. S xe bus cn dng l t nht.Thut giiBi ny c mt thut gii p dng k thut tm kim nh phn nh sau: ta s tm s T nh nht sao cho: ch dng T xe bus l ch c ht khch tho mn 3 iu kin trn.T s c tm bng phng php nh phn trong min t 1 n K. kim tra gi tr T c tho mn khng, ta s tm mt t hp T xe bus trong s K xe bus sao cho c th sp xp N hnh khch ln T xe bus tho mn 3 iu kin trn.Ta chn T xe bus bng phng php duyt t hp v kim tra t hp c c c tho mn khng bng thut ton cp ghp (hoc lung trn th 2 pha). Thut ton lung thc thi nhanh hn, c m t nh sau:1. Xy dng th 2 pha G(X,Y,E). Trong : X l cc khch sn, Y l cc xe bus c chn (T xe bus). Kh nng thng qua ca mi nh thuc X l s hnh khch n khch sn . Kh nng thng qua ca mi nh thuc Y l s ch ngi ca xe bus . Nu xe bus j i qua khch sn i th t kh nng thng qua trn cnh (i,j) l N, ngc li th t bng 0.2. Tm lung cc i trn th G. Nu gi tr lung qua mi nh X bng kh nng thng qua ca n th vic la chn t hp T xe bus l tho mn yu cu. T gi tr lung ta cng d dng tm c cch sp xp hnh khch.Nu cc bn khng quen vi thut ton lung th c th ci bng thut ton cp ghp:1. Xy dng th 2 pha G(X,Y,E). Trong : X l cc hnh khch, Y l cc ch ngi trn cc xe bus c chn (c T xe bus c chn, xe t c q[t] ch th ta sinh q[t] nh trong Y). Nu xe bus tng ng ca j i qua khch sn ca i th a cnh (i,j) vo E.2. Tm b ghp y trn th G. Nu c th vic la chn t hp T xe bus l tho mn yu cu v b ghp chnh l cch sp xp hnh khch.Ta rt ra mt s nhn xt sau:1. Vic tm kim nh phn lm gim s t hp phi duyt rt nhiu. Nu vt cn thun tu th phi duyt ti a 2Kt hp. Tuy nhin dng phng php tm kim nh phn, nu duyt xong gi tr T th ta khng cn phi kim tra cc t hp nhiu hn T phn t (nu T tho mn) hoc t hn T phn t (nu T khng tho mn).2. Ta ch cn tm mt t hp tho mn, nn s t hp cn duyt cn t hn na (tm thy mt t hp tho mn th khng cn tm cc t hp khc cng s phn t na). V ta c th p dng mt s k thut tham lam trong khi duyt nh: u tin chn cc xe bus ch c nhiu khch, i qua nhiu khch sn, khng xt cc xe bus khng i qua khch sn no trong s cc khch sn c hnh khch cn n3. Cn gim min tm kim kminkmaxxung cng nhiu cng tt (kt hp vi phng php tham lam chng hn). Mt khc ghi nhn li nhng gi tr T xt trnh phi xt li mt cch v ch.Ta cng c mt bi ton gii bng k thut tng t:Bi ton 6. Mng my tnhMng gm N my tnh, mt s cp my c ni vi nhau bng cp. C mt chng trnh iu khin, my no c ci t chng trnh th c th iu khin tt c cc my khc c cp ni trc tip vi n (tt nhin c th iu khin chnh n). Cn chn ra mt s t my nht ci chng trnh sao tt c cc my u c iu khin.Thut giiBi ny ch gii c bng cch duyt tt c cc t hp. Tuy nhin p dng phng php tm kim nh phn s gip gim s t hp cn duyt rt nhiu (lp lun nh bi 5). Bn c c th ci theo c 2 phng php so snh.Trn y l mt s bi ton p dng c k thut tm kim nh phn. Li gii khng km chng trnh mu m dnh cho bn c t ci t va trnh bi vit di mt cch khng cn thit va bn c rn luyn k nng lp trnh. Bn c no c nhu cu v chng trnh mu tham kho, xin lin h vi tc gi qua email:[email protected] phc tp thut ton v t chc d liu

Trn HngTrong Tin hc, khi phn tch mt bi ton ngi ta cng tm gi thit v kt lun. Gi thit l nhng d liu a vo my tnh x l km theo cc iu kin rng buc chng (gi l input) v kt lun l nhng thng tin thu c sau x l (gi l output). Bi ton trong Tin hc c th hiu l bt c cng vic g c th giao cho my tnh thc hin: v mt ch, mt hnh trn mn hnh cng l bi ton! Phng php gii bi ton c th ci t thnh chng trnh my tnh (vit bng ngn ng lp trnh) gi l thut ton. Thut ton c th hin l dy cc thao tc c th t v hu hn sau khi thc hin dy thao tc ny, t input ca bi ton s nhn c output ca bi ton.Mt bi ton c th c gii bng mt vi thut ton khc nhau. Ngi ta cn la chn thut ton thch hp v do cn nh gi thut ton. nh gi thut ton ngi ta da vo khi nim phc tp thut ton. phc tp ca thut ton l i lng nh gi lng thi gian v khng gian b nh dnh cho thc hin thut ton.T ngha thc tin ca cc bi ton khc nhau, c khi ngi ta quan tm ti thut ton i hi t thi gian thc hin, nhng cng c khi li quan tm nhiu hn ti thut ton cho php ci t d liu chim t khng gian b nh. phc tp v khng gian b nh ca thut ton ph thuc phn ln vo cu trc d liu c s dng khi ci t thut ton. phc tp v thi gian thc hin (cn gi l phc tp tnh ton) c nh gi s b da vo s lng cc thao tc c bn (gn, so snh 2 s nguyn, cng, nhn 2 s nguyn ). S lng cc thao tc ny l mt hm s ca kch c d liu input. Nu kch c d liu input l N th thi gian thc hin thut ton l mt hm s ca N. Vi mt thut ton trn cc b d liu input khc nhau (cng kch c N) c th cc hm s ny l khc nhau; song iu quan tm hn c lmc tngca chng nh th no khiN tng ng k.V d:Xt thut ton tm gi tr ln nht trong dy N s sau y:Input. S nguyn dng N, dy N s A1, A2, , ANOutputmax{A1, A2,, AN}Bc 1. max A1Bc 2.fori 2toNdoIfmax < Aithenmax AiBc 3. Hin maxTrng hp xu nht: d liu vo l dy sp tng, th s thao tc c bn l f(N)=2N+1Trng hp tt nht: gi tr ln nht ngay u dy, th thao tc c bn l g(N)= N.Khi N ln ng k th f(N) v g(N) coi nh xp x nhau v xp x hm bc nht ca N. Vy trong trng hp ny ta k hiu phc tp thi gian ca thut ton trn l O(N).Ngi ta phn lp cc bi ton theo phc tp thut ton. C th lit k mt s lp sau c phc tp tng dn:- phc tp hng O(1)- phc tp lgarit O(logN)- phc tp tuyn tnh O(N)- phc tp NlogN O(NlogN)- phc tp a thc O(Nk) k: hng nguyn- phc tp lu tha O(aN) a: c s nguyn dng khc 1- phc tp giai tha O(N!)Tnh hiu qu (v thi gian) ca thut ton l nh gi v thc hin thut ton trong mt khong thi gian cho php. Tnh hiu qu c nhn xt gin tip qua phc tp tnh ton ca thut ton. phc tp ln th thi gian thc hin lu hn.Chng ta xt hai bi ton quen thuc sau y lm v d v la chn thut ton v ci t d liu:

Bi ton 1.Dy n iu tng di nhtCho mng N) gm N phn t nguyn. Hy xo i mt s t nht cc phn t ca mng nhng phn t cn li lp thnh dy tng di nht.D liuvo t file vn bn DAYTANG.INDng u l s nguyn N (1 N 30000)Tip theo l N s nguyn ln lt t phn t u n phn t cui ca mng.Kt qughi ra file vn bn DAYTANG.OUTDng u l s K l s lng cc phn t cn gi liTip theo l K dng, mi dng ghi 2 s: s th nht l gi tr phn t gi li, s th hai l ch s (trong mng ban u) ca phn t c gi li ny.DAYTANG.IN101 2 8 10 5 9 4 3 6 7DAYTANG.OUT51 12 25 56 97 10Bi ton ny thng c gii bng Qui hoch ng. C th ci t d liu nh sau:Xy dng 2 mng mt chiu T v mng D vi ngha sau:D[i] l di ca dy kt qu khi bi ton ch xt dy A1, A2,, Aiv n c tnh theo cng thc truy hi:D[i] = Max { D[i], D[j] +1 vi mi j m j < i v AjAi} (1)T[i]=j l ch s (trong dy A ban u) ca phn t ng ngay trc Aitrong dy kt qu.Cch tm T[i]: duyt mng A t v tr 1 n v tr i-1, v tr j tho mn c D[j] ln nht v A[j]A[i].Khi tr: T[1]:= 0 ; D[1]:= 1; V d:

Khi duyt ngc tm kt qu ta tin hnh nh sau:Tm phn t ln nht trong D, gi s l D[i], ta i du ca D[i] coi nh nh du n, tm tip phn t j = T[i], li i du D[j], qu trnh c nh th li ch s j n khi j=0

Kt qa c dy con di nht l : 3 4 7 9 10 phc tp tnh ton ca thut ton trn l O(N2). Vi N=30000 th mc d c th t chc cc mng ng mt chiu ci t d liu thc hin thut ton nhng cng khng th chp nhn c v thi gian thc hin thut ton qu lu!

Ta tm kim mt thut ton khc (vn bng qui hoch ng):V ci t d liu:+ Mng mt chiu A l dy s cho ban u.+ Mng mt chiu L dng lu cc ch s (trong dy A ban u) ca mt s phn t ca A xp theo gi tr tng dn (to thnh mt dy trung gian l H) da vo H ta c th tm ra gi tr mng Tr.+ Mng Tr c ngha nh sau: Tr^[k] l ch s (trong dy A ban u) ca phn t ng trc phn t Aktrong dy kt qu. Da vo mng Tr s tm ra dy kt qu.+ Dng bin d theo di di dy kt quThut ton:- Ban u dy kt qu c di d=1, phn t u ca dy H l A1. Xc nhn ch s (trong dy A ban u) ca phn t u dy H l L[1]:=1, ch s (trong dy A ban u) ca phn t cui dy H l L[d]=1. Cha c phn t trc A1nn tm coi ch s ca phn t trc A1l 0 (gn Tr^[1] :=0;)- Duyt tuyn tnh cc phn t t A2n AN. Gi s xt n Ak.+ Nu Ak< A th thay phn t u ca dy H bng Aknh gn li L[1]:=k; Tr^[k]:= 0;+ Nu Ak> = AL[d]th thm Akvo cui dy H(iu ny tng ng vi s kin dy kt qu c ko di thm 1 phn t na v phn t Akc ch s k > L[d]. Tuy nhin, ch rng dy H khng ng nht vi dy kt qu). Gn Tr^[k]:= L[d]; Inc(d); L[d]=k;+ Trng hp cn li: dng phng php tm kim nh phn bit v tr Aktrong dy H={AL[1], AL[2], , AL[d]). Gi s tm c ch s t sao cho AL[t-1] Ak AL[t]th ta gn Tr^[k] :=L[t-1]; L[t] := k;- Da vo mng Tr^ tm ngc dy kt qu (di bng d). Ch rng phn t cui cng ca dy kt qu l AL[d]

Th tc chnh ca chng trnh theo thut ton trn l:

procedure lam;var l : mg;i,j,k,t : integer;f : text;beginnew(tr);{ tr^[i]=j ngha l trong dy tng kt qu: lin trc A[i] l A[j] }fillchar(l,sizeof(l),0);fillchar(tr^,sizeof(tr^),0);l[1]:=1;{Xc nhn phn t u ca dy H c ch s l 1 }d:=1;{d: s lng phn t ca dy kt qa}for k:=2 to n do{duyt dy A, t phn t th 2}beginif [k]beginl[1]:=k;{phn t u ca dy H l [k]}tr^[k]:=0;{[k] c th l phn t u ca dy kt qu}endelseif [k]>=[l[d]] thenbegintr^[k]:=l[d];{xc nhn l[d] l ch s ca phn t c th ng trc [k] trong dy kt qu }inc(d);l[d]:=k;{thm phn t [k] vo cui dy H}endelse{bng tm kim nh phn v tr ca [k] trong dy H}begini:=1;j:=d;while i< do>begint:=(i+j)div 2;if [k]>=[l[t]] then i:=t+1else j:=t;end;t:=(i+j) div 2;tr^[k]:=l[t-1];l[t]:=k;{phn t th t trong H l [k]}end;end;

k:=l[d];{tm vt dy kt qu, ln t cui dy}fillchar(l,sizeof(l),0);assign(f,fo);rewrite(f);writeln(f,d);while k>0 do{ghi li vt dy kt qu}beginl[k]:=1;k:=tr^[k];end;for k:=1 to n doif l[k]=1 then writeln(f,[k],#32,k);{ghi kt qu vo file output}close(f);end;

phc tp thi gian ca thut ton ny l O(NlogN) nn c th chp nhn v thi gian cho php khi N=30000.

Bi ton 2. Palindrome (time limit 2s)Mt xu c gi l xu i gng nu c t tri qua phi cng ging nh c t phi qua tri. V d xu "madam" l mt xu i gng. Bi ton t ra l cho mt xu S gm cc k t thuc tp M=[a..z], hy tm cch chn vo xu S cc k t thuc tp M ti cc v tr bt k vi s lng k t chn vo l t nht xu S thnh xu i gng. V d: xu: "adbhbca" ta s chn thm 2 k t (cvd) c xu i gng "adcbhbcda".D liu vo trong file PALIN.IN c dng:Dng th nht l mt s nguyn dng T (T 1 then breakelse continue;inc(n);end;readln(f);dec(n);end;procedurebatbit(i,j :integer);var v,k :integer;beginv:=j div 8;k:=j mod 8;d[i,v]:=d[i,v] or (1 shl k);end;procedureinit_data;var i,j,k :integer;beginfillchar(d,sizeof(d),0);fillchar(c1,sizeof(c1),0);fillchar(c2,sizeof(c2),0);fillchar(c3,sizeof(c3),0);for i:=1 to n-1 do{xt cc xuch gm 2 k t lin tip a[i] v a[i+1]}beginj:=i+1;if a[i]a[j] thenbeginc3[i]:=1;{phi chn vo 1 k t}batbit(i,j);{nh du hin tng chn ny: chn a[i] vo bn tri a[i+1]}end;end;end;procedureprocess;var k,i,j :integer;begininit_data;for k:=3 to n dobegin{c1 lu trng thi ca c2}move(c2,c1,sizeof(c2));{ c2 lu trng thi ca c3}move(c3,c2,sizeof(c3));for i:=1 to n-k+1 dobeginj:=i+k-1;if a[i]=a[j] thenbeginc3[i]:=c1[i+1];{khng cn chn thm k t no}endelsebeginif c2[i]beginc3[i]:=c2[i]+1;{chn a[i] vo bn tri a[j]}batbit(i,j);{nh du hin tng chn ny}endelsec3[i]:=c2[i+1]+1;{chn a[j] vo bn phi a[i] }end;end;end;end;functiongetbit(i,j :integer):byte;var p,k,v :integer;beginv:=j div 8;k:=j mod 8;p:=d[i,v] and (1 shl k);getbit:=ord( p>0 );end;procedureprint;var i :integer;procedurefind(left,right :integer);var k :byte;beginif left>right then exit;if a[left]=a[right] thenbegininc(dau); kq[dau]:=a[left];if leftbegindec(cuoi);kq[cuoi]:=a[right];end;find(left+1,right-1);exit;end;k:=getbit(left,right);if k=1 thenbegininc(dau);kq[dau]:=a[right];dec(cuoi);kq[cuoi]:=a[right];find(left,right-1);endelse begindec(cuoi);kq[cuoi]:=a[left];inc(dau);kq[dau]:=a[left];find(left+1,right);end;end;beginfillchar(kq,sizeof(kq),0);sol:=c3[1];dau:=0;cuoi:=n+sol+1;find(1,n);{Tm li kt qu bng qui }for i:=1 to n+sol do write(g,kq[i]);writeln(g);end;BEGINassign(f,fi); reset(f);assign(g,fo); rewrite(g);readln(f,sotest);for test:=1 to sotest dobeginreadinp;process;print;end;close(f); close(g);END.

Qua hai bi ton trn, nhn thy rng khi c gng tm ti, la chn thut ton v ci t d liu c th gii c nhng bi ton quen thuc t yu cu tt hn trc: thi gian thc hin nhanh v thch ng c vi cc b d liu vo c kch c ln hn.Trn Hnggio vin PTTH Nguyn Hu H TyQui hoch ng vi cc bi ton c d liu ln

Cao Minh AnhNh chng ta bit khi gii mt bi ton th vn thi gian v d liu l ct li. V th trong cc k thi chng ta thng gp cc bi c d liu ln. Nhng bi nay thng rt kh bi v ta va phi gii quyt vn d liu, va phi gii quyt vn thi gian. V th khi c c mt thut ton hay ti u vn cha chc gii c nhng bi ny, ti u cha m cn phi c phng php ci t tt c th gii quyt v mt d liu. Quy hoch ng tng trng cho s ti u ho v thi gian v th ti xin trnh by mt s bi ton d liu ln dng quy hoch ng gii v cch thc x l ca tng bi ton.

Bi 1: Tm s ln nht.Cho n s nguyn (nmax then max:=k;end;end;

procedure Print;beginwriteln(g,max);end;

beginclrscr;Openf;Main;Print;Closef;end.

Bi 2:Cho N s t nhin nm trong khong [0..9], hy tm dy tng di nht di nht.D liu vo:Filedaytang.inpgm dng u tin l s N.N dng tip theo l N s t nhin.D liu ra:Filedaytang.outgm 2 s M l chiu di ca dy tng di nht.V d:

- Nu bi trn vi d liu N khong 10000 th ta c th gii quyt theo cch sau:+ Nhp N s trn vo mng a.+ Gi Fx[i] l chiu di di nht ca dy tng kt thc l phn t a[i].Nh vy ta c chng trnh quy hoch n gin nh sau:procedure Quyhoach;var i,j:integer;beginfor i:=1 to n do fx[i]:=1;for i:=2 to n dofor j:=i-1 downto 1 doif a[j]max then max:=fx[i];end;

procedure Xuat;var i:integer;beginwriteln(g,max);end;

beginclrscr;openf;Quyhoach;Findmax;Xuat;Closef;end.Chng ta c th dng vi cc s t nhin ln hn khng nht thit l t [0..9] ch cn khai bo mng Fx ln hn l c.Sau y chng ta chuyn qua mt bi ton dng qui hoch ng rt hay l bi Cp s cng.

Bi 3: Cp s cng ( thi quc gia bng Bm).Cho mt tp vn bn gm N (N rt ln) s nguyn a1, a2, a3,..,an vi Abs(ai)1 thenbeginfor i:=1 to sl-1 dofor j:=i+1 to sl doif b[i]begink:=b[i]; b[i]:=b[j]; b[j]:=k;k:=danhsach[i];danhsach[i]:=danhsach[j];danhsach[j]:=k;end;end;if sl>lim then sl:=lim;end;

procedure nap(i: byte);{chn mn i, xc nhn nhng yu cu do mn i p ng}var j : byte;begininc(so_mon_chon);kq[so_mon_chon]:=i;dx_mon[i]:=1;for j:=1 to n doif (a[i,j]=1) and (dx_yeucau[j]=0) thenbegindx_yeucau[j] := so_mon_chon;inc(so_yc_dx);end;end;

procedure bo(i: byte);{Khng chn mn i, xc nhn li nhng yu cu cha c p ng}var j : byte;beginfor j:=1 to n doif dx_yeucau[j]=so_mon_chon then dx_yeucau[j]:=0;dec(so_mon_chon);dx_mon[i]:=0;end;

procedure try;{duyt vi cc c c u tin}var i,j,sl,lso_yc_dx : byte;danhsach : km2;beginif (meml[$0:$046c]-time)/18.2>30 then exit;if so_mon_chon >= lso_mon_chon then exit;if so_yc_dx=n thenbegin toi_uu; exit; end;

tao_decu(sl,danhsach);lso_yc_dx:=so_yc_dx;{lu li s yu cu p ng trc khi chn c, phc v bc quay lui}for i:=1 to sl do{ch duyt vi s lng c l sl}beginnap(danhsach[i]);{xc nhn c th i trong danh sch u tin}try;bo(danhsach[i]);{Quay lui: xo xc nhn c}so_yc_dx:=lso_yc_dx;{Ly li s yu cu p ng trc khi chn c }end;end;

procedure hien_kq;begin{Ghi vo file output s mn chn t nht l lso_mon_chon v s hiu cc mn c chn l gi tr cc phn t ca mng lkq}end;

BEGINclrscr;read_in;lso_mon_chon:=m+1;{Khi tr s mn c chn t nht l m+1}time:= meml[$0:$046C];try;hien_kq;END.

2. Duyt vi su hn ch.Phng php ny c cc tc gi inh Quang Huy v c ng trnh by rt r rng trong bi 'Chin lc tm kim su lp', s bo Tin hc v Nh trng thng 8/2003. Sau y chng ti ch minh ho bng mt chng trnh gii bi ton nu trong bi bo :Bi ton. (Bin i bng s)Xt bng A c NxN vung (Nmso-char-type: 5), trong bng c mt cha s 0, cc cn li mi cha mt s nguyn dng tu . Gi P l php i gi tr ca s 0 vi k cnh vi n.Yu cu t ra l: Cho trc bng A v bng B (B nhn c t A sau mt s php bin i P no ). Hy tm li s php bin i P t nht t bng A c th bin i thnh bng B.D liu vo t file vn bn 'BDBANG.IN':Dng u l s nguyn dng NN dng sau, mi dng N s nguyn khng m th hin bng AN dng tip theo, mi dng N s nguyn khng m th hin bng BKt qu ghi ra file vn bn 'BDBANG.OUT': Nu khng th bin i c (do iu kin thi gian hoc b nh) th ghi -1. Nu bin i c th ghi theo qui cch sau:Dng u l s nguyn khng m K l s php bin i t nht c dy bin i A=A0A1A2?AK= BTip theo l mt dng trngTip theo l K+1 nhm dng, mi nhm l mt bng Ai(0 i K), gia hai nhm cch nhau mt dng trng.V d:BDBANG.IN32 8 31 6 47 0 51 2 38 0 47 6 5BDBANG.OUT5

2 8 31 6 47 0 5

2 8 31 0 47 6 5

2 0 31 8 47 6 50 2 31 8 47 6 5

1 2 30 8 47 6 5

1 2 38 0 47 6 5Chng trnh.uses crt;const fi = 'bdbang.in';fo = 'bdbang.out';max = 5;dktamchapnhanvn = 25;limit = 200;dxy : array[0..3,0..1] of integer = ((0,-1),(-1,0),(1,0),(0,1));type item = array[0..max,0..max] of integer;m1 = array[0..limit] of item;m2 = array[0..limit] of integer;var a,b : item;l,kq : m1;depth,pre : m2;top,n,ok,t : integer;

function cmp(x,y : item): integer;{so snh hai bng x v y}var i,j : byte;begincmp := 0;for i:=0 to n-1 dofor j:=0 to n-1 doif x[i,j]y[i,j] then exit;cmp := 1;end;

procedure a(x : item);{Np thm bng x vo stack L }begininc(top);l[top] := x;end;

procedure get(var x : item);{Ly khi nh stack L mt bng gn cho x}beginx := l[top];dec(top);end;

procedure read_inp;var i,j : integer;f : text;beginassign(f,fi);reset(f);readln(f,n);

for i:=0 to n-1 do{c bng ngun}beginfor j:=0 to n-1 do read(f,a[i,j]);readln(f);end;

for i:=0 to n-1 do{c bng ch}beginfor j:=0 to n-1 do read(f,b[i,j]);readln(f);end;close(f);end;

procedure pos0(w: item;var x,y : integer);{Tm to x v y ca 0 trong bng}var i,j : integer;beginfor i:=0 to n-1 dofor j:=0 to n-1 doif w[i,j]=0 thenbeginx := i;y := j;exit;end;end;

procedure swap(var x,y : integer);{Tro i hai gi tr x v y}var c : integer;beginc := x;x := y;y := c;end;

{Duyt theo chiu su, vi su hn ch ti a l d}procedure DLS(d : integer);var c : item;pre_c,k,x,y,u,v : integer;begintop := -1;a(a);{coi bng xut pht l nh gc ca cy tm kim}depth[top]:=0;{coi su ca nh xut pht l 0}kq[0] := a;{mng ghi nhn cc bng thu c trong qu trnh bin i }while (top>=0) dobeginif top=-1 then break;t := depth[top];{bc bin i th t = su ca bng ang xt}pre_c := pre[top];{hng ca bin i bng trc (bng 'ch) thnh bng ang xt}get(c);{c: bng ang xt}

kq[t] := c;{ghi nhn bng thu c bc th t}if (cmp(c,b)=1) then{nu c l bng ch th dng tm kim}beginok := 1;break;end;if (t 0;S(h,0) = 0.Nhn xt 2: cao ti a ca snch s l 9*n, do ta tS(h,n)=0 nuh> 9*n.Nhn xt 3:S(h,1) = 1 vi 0 h 9.Nhn xt 4: Nu 101 l s cao h = 2 th 999-101 = 898 l s cao h = 27-2 = 25. Tng qut ha nhn xt ny ta thu c cng thcS(h,n) =S(9*n-h,n). Nh vy, theo th d trn ta tnh cS(25,3) =S(3*9-25,3) =S(2,3) = 6 vi cc s 997, 988, 979, 898, 889, 799 (bn nh thm 0 vo bn tri cc s cho nch s).R rng l tnhS(2,3) s d chu hnS(25,3). Vy th trc ht ta chnh li gi tr ca tham shtrongS(h,n) nh sau:if h > 9*n div 2 then h := 9*n - h;Nhn xt 5: tnhS(h,n) ta qui nh b cc s 0 vo bn tri sao cho mi s u c ngnch s v d nhin chng c cng caoh. Ta chia tp ton th cc s thnh 10 lp khng giao nhau cn c vo ch s cui cng? ch s thn, l ch s hng n v. Gi ch s li, ta thy, tngn-1ch s cn li s lh-i. Nh vy s lng cc s thuc lpi(c ch s cui cng li) s lS(h-i,n-1). D nhinS(h-i,n-1) s c ngha khih-i 0 vn-1> 0. Ta thu c cng thc sau:

Vy l ch cn dng mt mng mt chiu S[0..MN] x l theo n bc lp: bc lp th j s tnh cho cc s c khng qu j ch s. Nn chn MN = 9*9 = 81, l cao ti i ca s c 9 ch s. Ti bc j ta cn tnh, vi mi k = h..1 gi tr S[k] l s lng cc s cao k c khng qu j ch s. Bn c t l gii v sao phi tnh ngc cc gi tr S [k]. Nguyn tc chung xc nh trt t x l l:khng ghi vo ni cha x l. Bn thy ging y chang vi nguyn tc lau nh:Khng bc vo ni lau.Hm S(h,n) s c trin khai nh sau:if h > 9*n div 2 then h := 9*n - h;fillchar(S,sizeof(S),0);{Khi tr cho cc s c 1 ch s}for i:=0 to 9 do S[i]:=1;for j:=2 to n dofor k:=h downto 1 dofor i:=1 to min(k,9) doS[k]:=S[k]+S[k-i];Bi 2 - S pS t nhin h mbc 2kch s c gi l s p loi (b,k,h) nu tngkch s u bng tngkch s cui v bngh. Vi ba gi trb, kvhcho trc hy cho bit c bao nhiu s p loi (b,k,h). Th d, [1][0 ][19][0 ][0][20 ] l mt s p loi (25,3,20), trong mi ch s * ca h m 25 c ghi trong cp ngoc: [*].Gi : Mi s p loi (b,k,h) c ghp bi 2 sxvy, trong xl s caohc ngkch s,yl s caohc khng qukch s (nu cn ta thm 0 u tri sy). Hy thc hin on trnh trn mt ln duy nht thu c ngay kt qu.Bi 3 - Chia on( thi Tin hc Quc gia Bulgary 2004)Cho hai dy s nguyn dnga[1..n] vb[1..m]. Hy chia mi dy thnhkon, k hiu ln lt t tri qua phi l 1, 2,...,k, mi on phi cha t nht mt phn t ca dy tng ng. Vi mi on i = 1, 2,...,kmso-ansi-language: VI'>hy tnh hmC(i) = (t(a,i) ?s(a,i))*(t(b,i)-s(b,i))Trong t(a,i) l tng cc phn t ca dyatrong oni,s(a,i) l s lng phn t ca dyatrong oni,t(b,i) l tng cc phn t ca dybtrong oni,s(b,i) l s lng phn t ca dybtrong oni.Cui cng ta tnh tr

Hy cho bit gi tr nh nht caC?

Th d, via= (1,2,3),b= (1,2), nu chnk=2 v chia hai dyavbnh sau:a= ((1,2),(3)),b= ((1),(2)) thC(1) = ((1+2)-2)*(1-1) = 1*0 = 0,C(2) = (3-1)*(2-1) = 2*1 = 2,C=C(1)+C(2) = 0+2 = 2.Phn tch:Nhn xt 1: Nu gim mi phn t ca hai dy a v b i 1 n v th cng thc tnh C(i) s c rt gn nh sau:C(i) =t(a,i) *t(b,i)Bn hy t gii thch iu ny.Nhn xt 2: K hiu F(i,j) l tr ti u ca hm C i vi hai dy a[1..i] v b[1..j]. Ta xt on cui cng, on th k. Gi s on cui cng ny cha p1 phn t ca dy a vi tng l s1 v p2 phn t ca dy b vi tng l s2. Khi F(i,j) = min {F(i-p1,j-p2) + s1*s2}Cho i, j, p1 v p2 bin thin ta tnh c F. Tip cn ny i hi phc tp O(N4).Nhn xt 3: Vi mi on k, p1 v p2 khng th ng thi ln hn 1. Tht vy, nup1 > 1 v p2 > 1 th ta c th tch on k thnh hai on con k1 v k2 vi cc tng cc phn t ln lt cho a v b l s1 = s11+s12 v s2 = s21+s22. Khi C(k) = s1*s2 = (s11+s12)*(s21+s22) = s11*s21 + s12*s22 +... s11*s21 + s12*s22 = C(k1)+C(k2).Theo nhn xt ny, mi on trong php chia ti u ch c th l mt trong 3 dng sau:i) cha 1 phn t ca a v 1 phn t ca b,ii) cha 1 phn t ca a v p2 > 1 phn t ca b,iii) cha p1 > 1 phn t ca a v 1 phn t ca b,Vy ta cF(i,j) = min {F(i-1,j-1) + a[i]*b[j], F(i-1,j-p2)+ a[i]*s2, F(i-p1,j-1)+ s1*b[j] }Nhn xt 4: Ta c a[i]*s2 = a[i]*(b[i-p2+1]+...+b[j-1]+b[j]) = a[i]*(b[i-p2+1]+...+b[j-1]) + a[i]*b[j], do , F(i-1,j-p2)+a[i]*s2 F(i,j-1) + a[i]*b[j].V tng t, F(i-p1,j-1)+s1*b[j] F(i-1,j) + a[i]*b[j].Vy ta c,F(i,j) = min {F(i-1,j-1) + a[i]*b[j], F(i,j-1)+ a[i]*b[j], F(i-1,j)+ a[i]*b[j] }a hng t amso-ansi-language: VI'>[i]*b[j] ra ngoi ta c mt h thc tht p v d tnh v ch cn phc tp O(N2).F(i,j) = min {F(i-1,j-1), F(i,j-1), F(i-1,j)} + a[i]*b[j]Bn thy trt t tnh tan gim ng k phc tp, t bc 4 xung bc 2.Gi : tnh hm F theo cng thc trn cn mt mng hai chiu. Liu bn c cch no thay bng hai mng mt chiu?Bi 4 - S duy nht( thi Tin hc cc quc gia Baltic, BOI 2004)Cho N s t nhin trong c duy nht mt s x xut hin ng 1 ln, cc s cn li u xut hin ng K > 1 ln. Tm s duy nht x?Th d, vi 7 s 123, 123, 45, 123, 45, 405, 45 ta phi tm c x = 405.Nhn xt 1: Nu K l s chn th ta dng php ton XOR bit N s cho, kt qu s cho ngay s x cn tm. Tuy nhin bi ton khng cho bit K l bao nhiu.Nhn xt 2: Ta c th tm c s K bng cch m s ln xut hin ca s u tin (k hiu l x) trong dy. Nu K=1 th ta c ngay x l s cn tm. Ngc li, nu K > 1 th chnh l s ln xut hin ca cc s cn li. Vy l yn tm.Nhn xt 3: Vi hai nhn xt u tin chng ta d b tc trong m cung tm kim. Hy th suy ngh v trt t xem sao. Trt t g? Trt t cc s khng cho ta thm gii php no. Ta th tm cch gii theo trt t ca cc ch s. ng vy, t hng ngn nm trc cc nh ton hc c Hy Lp nh csimet v clid ni rng cng l ch s 1 nhng nu t v tr khc nhau th ch s mang cc gi tr khc nhau, khi th l 1, khi l 10, khi l 100. Nh vy chng ta phi m xem trong N s cho cc ch s trong tng hng xut hin bao nhiu ln. Ta dng mt mng hai chiu a ghi nhn cc s m, a[c,j] cho bit s ln xut hin ca ch s c ti v tr j. Ta thy a[c,j] ch c th chia ht cho K hoc chia cho K d 1. Bn hy gii thch iu ny.V ch quan tm n cc ch s nn ta c th c cc dng ca tpinputvo cc bin string. Ngoi ra ta cng c th x l cc ch s theo cc v tr tnh t phi qua tri.Ta gi thit l s di nht trong dy cho c MN=20 ch s.MN = 20;var a: array['0'..'9',1..MN] of word;x,y: string;c: char;N,K: word;f,g: text;1. M cc tp inpyt f v output g.fillchar(a,sizeof(a),0);readln(f,N);readln(f,x); K:=1;for j:=1 to length(x) do inc(a[x[j],j]);for i:=2 to N dobeginreadln(f,y);if y=x then inc(K);for j:=1 to length(y) do inc(a[y[j],j]);end;if K > 1 thenbeginx:='';for j:=1 to MN dofor c:='0' to '9' doif a[c,j] mod K 0 thenbeginx:=x+c;break;end;end;writeln(g,x);close(f); close(g);Bi 5 - Dy k t duy nhtCho N xu k t trn bng ch ci a..z trong c duy nht mt xu x xut hin ng M ln, cc xu cn li u xut hin ng K > M ln. Tm xu x?Bi sau y cc bn ch nn gii vo chiu 30 tt.Bi 6- Qua cu(Tng qut ha thi tuyn nhn vin ca hng Microsoft)Mt n con nt i chi m giao tha vi 1 chic n lng. Gp mt cy cu mng manh. Cc em phi a nhau qua cu. Cu yu, ch chu c sc nng ca 2 em mi lt, ngoi ra, cu trn v gp gnh nn buc phi soi n mi i c. Mi em qua cu vi thi gian khc nhau. Hy tm cch cc em qua cu nhanh nht. Gi thit cho n em vi thi gian vt cu ca mi em ln lt l t1, t2,?,tn.Th d, c 4 em vi thi gian vt cu ln lt l 1, 2, 5 v 10 pht. Theo phng n sau y ta phi cn 19 pht: Cho em nhanh nht? em s 1 cm n dn tng ngi qua cu:1. Em 1 dn em 2: 2 ph.2. Em 1 cm n v: 1 ph.3. Em 1 dn em 3: 5 ph.4. Em 1 cm n v: 1 ph.5. Em 1 dn em 4: 10 ph.Nu theo phng n sau y ta c li gii ti u: 17 ph.1. Em 1 dn em 2: 2 ph.2. Em 1 cm n v: 1 ph.3. Em 1 giao n cho em 3 v 4 qua cu: 10 ph.4. Em 2 cm n v: 2 ph.5. Em 1 dn em 2: 2 ph.Nhn xt 1: Mt em qu chm i cng em qu nhanh s lm 'h em i nhanh, do khi qua cu nn c hai em chm nht.Nhn xt 2: Khi cm n chy v nn giao cho em i nhanh nht.Ch vi hai nhn xt trn chng ta lp c trt t gii bi ton trn nh sau:Gi ni tp hp cc em nh trc khi qua cu l T (bn tri cu), ni cn n l P (bn phi cu).Trc ht tm hai em i nhanh nht an l a v b.Lp cc bc 1-6 cho n khi T rng:1. a v b qua P,2. a cm n v T,3. a giao n cho 2 em chm nht x v y T,4. x v y qua P,5. x v y giao n cho b P,6. b tr v T.Bn cn lu trng hp n=1. Ngoi ra mi khi n P bn cn kim tra ngay xem cn ai T khng, mi khi T bn li phi kim tra xem cn bao nhiu ngi cha qua cu, c nh vy vng lp mi kt thc ng lc.Chc cc bn mt nm mi khe mnh, thng minh, bm my l chy.

Cch nhn khc i vi mt s lp bi ton quen thuc

Cao Minh AnhCc bn bao gi thch th khi tm ra mt cch nhn nhn mi cho nhng bi mnh bit? Tht l th v nu ta tm cho mnh mt phng php khc m tnh ti u vn khng gim.

Sau y ti s trnh by vi cc bn mt cch nhn nhn khc i vi lp bi ton nh xc nh hon v th k, nh phn th k,

T tng thut ton

- Gi s cn tm 1 trng thi no gm n phn t ca mt dng xc nh. bi cho bit c im ca trng thi trn l M.

- Vi M ta c th xc nh phn t u tin ca trng thi, nhng n-1 phn t cn li th khng xc nh c. Vn by gi l lm sao tm c n-1 trng thi cn li. Rt n gin, bi v nu bit c M ta s xc nh c phn t u tin, ti sao ta khng th n-1 phn t cn li c phi thuc mt trng thi no gm n-1 phn t c c im M1. T M1 ny ta suy c phn t u tin ca trng thi mi, tc l tm c phn t th 2 ca trng thi ban u. C lm nh th ta s tm c ht cc phn t ca trng thi ban u.

- Ci kh ca thut ton trn l i hi ngi lp trnh phi tm c cch xc nh phn t u tin da vo c im M, th hai l phi tm c cc c im M1, M2,..., Mn-1tng ng vi cc trng thi mi c t phn t hn.

Bi ton 1Xc nh dy nh phn th k gm n phn t (n200).File nhiphan.inpn kFile nhiphan.outa1a2a3.. an(dy nh phn th k)V dnhiphan.inp4 7nhiphan.out0 1 1 0

Thut ton

Da vo v d di ta nhn thy rng:

- C 1 na trng thi u tin c s 0 ng u, cn na cn li l s 1 ng u. Hay c 2n-1trng thi u tin bt u l s 0, cn li 2n-1trng thi bt u l s 1. Nh vy ch cn so snh k vi 2n-1th ta c th bit c phn t u tin ca dy nh phn th k l 0 hay 1.

If k>2n-1then a[1]=1 else a[1]=0.

- Vn cn li l lm sao xc nh c n-1 phn t cn li.

- Ta nhn thy rng nu phn t u tin l 0 th n-1 phn t cn li ging vi cc phn t ca dy nh phn th k c n-1 phn t, cn nu phn t u tin l 1 th n-1 phn t cn li ging vi cc phn t ca dy nh phn th (k-2n-1) c n-1 phn t. By gi ta li lm bi ton nh hn l xc nh dy nh phn th k no gm n-1 phn t. C lm nh th ta s tm c ht cc phn cn li.

T nhng nhn xt trn ta c chng trnh n gin nh sau:For I:=n downto 1 doBeginIf k>1 shl (I-1) thenBeginWrite(1);K:=k-(1 shl (I-1));EndElse write(0);End;V bi ny d liu ln, ta ch cn lm thm chng trnh nhn s ln tnh 2h, v hm so snh 2 xu k vi 2h.

Bi 2Tm hon v th k gm n phn t (n200).Thut ton

Nhn xt- (n-1)! Trng thi u tin c phn t u tin l 1, tip theo (n-1)! Tip l 2, tip ti l 3, v cui cng l 4.- Da vo k ta c th xc nh phn t u tin. Nu tm c phn t u tin l h th dng mng b nh du h, n-1 phn t cn li khng c h.- By gi cn xc nh v tr k ca n-1 phn t cn li.- K = k-v (vi v l v tr u tin bt u bng s h). Vic tnh v rt d dng.y l phn gii tm vi d liu k232.

Fillchar(b,sizeof(b),1);T:=1;For I:=1 to n do T:=T*I;For I:=n downto 1BeginT:=T div I;For j:=1 to n doIf b[j] thenBeginif K>T then k:=k-Telsebeginwrite(j:4);b[j]:=false;break;end;end;end;

Ta c th nng d liu ln n1000, ch cn lm chng trnh nhn s ln v hm so snh hai s ln l xong.

Bi 3( 2 - dy nh phn olympic tin hc sinh vin khi chuyn tin)

Xt tp S cc dy nh phn di N trong khng c hai bit 1 no k nhau. Cc dy ny c xp theo chiu tng dn ca s nguyn m n biu din, theo th t mi dy c mt s hiu, chng hn n=5.

Cho s nguyn dng N100 hy nh phn c s hiu M.V dBINSEQ.inp5 5BINSEQ.out0 0 1 0 1

Thut tony l mt bi rt kh ta xc nh cch xc nh phn t u tin.

Nhn xt:Vi n=5 c 13 dy tt c. Trong c 8 dy u tin bt u bng 0,5 dy cn li bt u bng 1. Vi n=6 th c tt c 21 dy, 13 ci u l 0,8 ci sau l 1. Ta thy n c lin quan n s fibonaci.

Ch cn kim tra M vi a[n-1], nu M>a[n-1] th l s 0 u tin, ngc li l s 1 u tin. Nu s u tin l 0 th trng thi mi cn tm gm n-1 phn t c s hiu vn l M, ngc li c s hiu l M-a[n-1].

Bi lm rt n gin nh sau:

a[0]:=1;a[1]:=1;For I:=2 to n do a[I]:=a[I-1]+a[I-2];(To cc s fibo)For I:=n downto 1 doBeginIf M>a[I-1] thenBeginWrite(1);M:=M-a[I-1];EndElse write(0);End;Tht l n gin phi khng cc bn? Vn ch phi tm ra c im xc nh phn t u tin v c im ca cc phn t cn li. Hi vng cc bn s nhn thm c kinh nghim no t bi vit ny.Quan h sinh d liu v tip cn Quy hoch ng

L nh ThanhChng ta bit quy hoch ng (QH) l mt phng php gii ton rt hiu qu mt khi n c s dng. ng nh tc gi Nguyn Thanh Tng - trong bi Mt s bi ton quy hoch ng kinh in, Tp ch Tin hc v Nh trng S 1, Nm 2005- nhn xt: iu kh nht gii mt bi ton bng QH l bit rng n c th gii theo QH v tm c cng thc QH ca n. Ni cch khc, vn kh nht ca vic gii mt bi ton QH l tmdu hiu nhn bit QHv tmquy lut quy hoch d liuca bi ton . Trong bi bo ny, ti a ra mt cch tip cn theoquan h sinh dliu gii quyt hai vn ni trn. y khng phi l cch tip cn ti u nhng n gii quyt c mt lp ln cc bi ton quy hoch ng.Cc gp xin gi v a ch: [email protected]. Quan h sinh d liu tuyn tnh v kh nng quy hoch ngNhn xt sau xut pht t chnh nh ngha v quy hoch ng:Gi s P l bi ton ang cn gii quyt trn mu d liu D, v gi thit t D ta c th to ra cc mu d liu Di, (i = 1, 2...) l mu con ca D v ng dng vi D. V d, D l dy s t nhin v Di l cc dy con ca n, D l m vch c chiu di L v Dil cc m vch c chiu di nh hn L.Cng p dng yu cu ca bi ton trn cc mu Dita c cc bi ton Pi(i = 1, 2...) cng dng vi P v nh hn P. Pil cc bi ton con ca P. Gi Oi(i = 1, 2...) ld liu c sinh rabi Pi, v gi O l d liu c sinh ra bi P. t G = {O} U {Oi, i = 1, 2...}. Nu trn G ta lp c 2 quan h lquan h sinhvquan h th tth bi ton P c th gii quyt bng QH, trong quan h sinh l kh nng d liu c sinh ca mt bi ton ny c th to ra t cc d liu sinh ca cc bi ton khc v quan h th t l tnh kh sinh (hiu theo ngha ton hc).Ta hnh dung mi Oihay O nh mt nh ca th v Ojl mt trong cc d liu ra c dng sinh Ok (Okng sau Ojtrong quan h th t) c biu din bng mt cung c hng t nh j n nh k, th th c to l th c hng, phi chu trnh. D liu c quy hoch trn th bt u t cc nh khng c cung vo. Khi mt nh c xt (mt bi ton con c gii quyt), ta xa lun cc cung ra t nh . Mt s nh mi li tr thnh nh khng c cung vo. Qu trnh c lp li cho n khi nh tng ng vi bi ton P c gii quyt.Mt trng hp khc, t D khng to c cc Di l con ca D nhng c th to ra ccbi ton tng tP trn D. Gi cc bi ton tng t l Qj(j = 1,2...). Nu trn cc d liu sinh ca cc bi ton tng t cng cquan h sinhvquan h th tth bi ton cho cng c th gii quyt bng gii thut QH.2. Phng php tip cnT phn tch trn, ta a ra cc bc tip cn nhn bit mt bi ton QH v tm cng thc quy hoch cho n nh sau:b1. To v chn cc mu d liu con ng dng vi mu d liu cn x l, p dng cng yu cu ca bi ton i vi nhng mu d liu con c cc bi ton con, nu c, hoc s dng yu cu ca bi ton trn cc th hin khc nhau ca d liu c cc bi ton tng t.b2. Gi s tt c cc bi ton con hoc tng t (k c bi ton ban u) c gii quyt v bit c d liu sinh ca chng, tm quan h sinh v quan h th t gia cc d liu sinh. Nu tn ti 2 quan h va nu, gii bi ton cho bng QH nh m t bc 3. Ngc li, xt li bc 1 hoc tm li gii theo phng php khc.b3. Phn tch v thu gn quy tc sinh d liu. Lp quy tc QH da trn quy tc sinh thu gn.3. Cc v dV d 1. M vchMt m vch l mt dy gm M vch trng v vch en lin tip, trong vch u tin v vch cui cng l cc vch en, rng cc vch bng nhau, ng thi khng c qu N vch cng mt mu lin nhau. Hy tm chiu di ti thiu M s m vch sinh ra khng nh hn K.Tip cnb1. Vi mi s t nhin i, Pi l yu cu tnh s cc m vch c chiu di i. Ta c mt lp bi ton tng t. Thc hin tip bc 2.b2. Gi s V l mt m vch c chiu di i, bng cch thm t vch na vo mt u ca V, ta c mt on vch c chiu di i+t. on vch ny l mt m vch nu on mi thm v on tip ni gia m vch c vi on thm tha mn tnh cht ca m vch. Bng cch thm vch vo mt u m vch sinh m vch mi ta c quan h sinh v quan h sinh ny th hin quan h th t. Thc hin tip bc 3.b3. K hiu Vi l tp cc m vch c chiu di i. Yu cu ca bi ton l tm i nh nht card(Vi) K, trong card(Vi) l lc lng ca Vi. Gi s v l mt m vch thuc Vi, v gi s sau khi thm t vch vo mt u ca v ta c mt m vch u thuc Vi+t(hnh).Nu ct u ti vch en u tin tnh t u va thm v tr vch ngoi cng ta s c mt m vch s thuc Vi+j(j < k). Nhu+ va^.y, u cu~ng co' the^? ddu+o+.c ta.o tu+` s ba(`ng ca'ch the^m mo^.t so^' va.ch tra('ng va` mo^.t va.ch dden ngoa`i cu`ng.Nhn xt trn cho ta quy tc sinh:Mt m vch c chiu di i c to ra t mt v ch mt m vch ngn hn bng cch thm vo mt u mt s vch trng cng mt vch en ngoi cng.Tm quy tc QH:R rng s vch trng c thm ch c th l 0, 1, , N. Nu c vch trng c thm vo th cch thm lun hp l (c m vch mi). Trng hp ch thm mt vch en, nu N vch u tin u c thm ca m vch c u en th php thm khng hp l. Bi vy ta c quy hoch:card(Vi) = card(Vi-1-t) I, I l s cc m vch c chiu di i-1 v c N vch en u c thm,(t = 0, 1, , N)By gi ta xt cc m vch c chiu di l i -1 v c N vch en u c thm. R rng, vch tip theo l vch trng. S vch trng lin tip ch c th l 1, 2, , N. Gi s c k vch trng lin tip, nu ct N vch en u v k vch trng k tip, ta c mt m vch c chiu di i-1-N-k. Nhn xt cho ta quy hoch:I = card(Vi-1-N-k), vi k = 1, 2, , N.Bi vy, ta c cng thc quy hoch ng:card(Vi) = card(Vi-1-t) - card(Vi-1-N-k), vi t = 0, 1, , N v k = 1, 2, , N.V d 2. Dy con n iu di nhtCho dy a1,a2,..an. Hy tm mt dy con tng c nhiu phn t nht ca dy.Tip cnb1. Gi L l dy cho v Li(i = 1,..., n) l dy lin tip cc phn t bt u t a1n ai(L = Ln). P v Pil yu cu tm dy con tng c nhiu phn t nht ca dy L, Litng ng.b2. Gii s S, Sil cc xu con tm c khi gii P, Pi. Ta thy Sic to t Sjno vi 0 < j < i va` aj ai.b3. Si= max(Sij), trong Sij= Sj+ [ai], 0 < j < i va` aj aiv max tnh theo chiu di dy l quy tc sinh, ng thi l cng thc quy hoch ng.V d 3. Chia koCho dy a1, a2,.. an. Tm mt dy con ca dy c tng bng S.Tip cnb1. Gi L l dy cho v Li(i = 1,..., n) l dy lin tip cc phn t bt u t a1n ai(L = Ln). P v Pil yu cu tm dy con ca dy L, Li, tng ng, c tng bng S.b2. Gi s Ail cc tng c th to ra t dy Li. E+ai+1s l mt tng c th to t Li+1nu E thuc Ai. ai+1cng l mt phn t thuc Ai+1.b3. A1= {a1}, t Aisinh Ai+1, i = 1,..., n-1, nu S cha c trong Ail quy tc sinh cng l quy tc quy hoch ng.V d 4. Tm ng i ngn nht trong thCho n th c trng G gm N nh. Hy tm ng i ngn nht t nh u n nh v.Tip cnb1. Gi s cc nh c nh s t 1 n N v hai nh u, v c th t tng ng l i, j. Nu gi bi ton tm ng i ngn nht t nh i n nh j l Pijhoc n gin l Pjth cc bi ton tm ng i ngn nht t nh i n nh k l Pikhoc Pk. R rng ta c N bi ton tng t Pt, t = 1,.., N.b2. Gi s Ctl tng chiu di ca ng i ngn nht t nh i n nh t v k l nh lin trc t trong ng i . D thy ng i ngn nht t i n t b i cung cui cng (cung ni nh k vi nh t) l ng i ngn nht t nh i n nh k. Bi vy, Ct= Ck+ w(k, t), trong w(k, t) l trng s cung (k,t).b3. Quy tc sinh v quy hochCi= 0,T tp cc nh bit ng i ngn nht xut pht t i, tm nh k tip cc nh c tng ng i ngn nht n nh bit v di cung ni tng ngs nh nht:T tp cc Ck bit, Ct= min(Ck+ w(k, t) ).Chia s mt thut ton hay

Nguyn Duy Hm1. t vn .Trong rt nhiu bi ton khi c ln yu cu ta u c ngay thut ton gii quyt n, song cc thut ton pht sinh nu khng phn tch k v tinh t nhn dng th ch gii quyt c khi kch c d liu u vo l kh nh c ngha l ch gii quyt c bi ton trong nhng trng hp rt hn ch. Trong lp cc bi ton nh vy y ti xin gii thiu mt s bi ton khc nhau song cch gii quyt li kh ging nhau.2. Bi ton.Bi ton 1:Cho file vn bn gm rt nhiu dng, mi dng 80 k t. Cc k t ca file vn bn gm * v . Cc k t * trong vn bn to nn cc ch ci T,E,F,I. hy m cc s lng cc ch ci T,E,F,I c trong vn bn gi s d liu vo l ng.V d file input nh sau:.*********..**********************.*..*.**...*******......*.*******.******...*.........................**..*...*...*..**********Th c 2 ch T,1 ch E, 1 ch F, v 1 ch I.Bi ton 2:Bi ton tng t m ti mun gii thiu y l bi ton trong k thi OLIMPIC Tin hc Sinh vin Vit Nam ln th 14 nm 2005 ti TP.H Ch Minh va qua. y l bi ton khng kh, nhng vt qua ht test ca BGK li l mt iu khng d. Bi ton i nh sau:nh chp mt ngi sau khi x l l 1 bng vung A kch thc NxN (10 < N < 800). Vi mi (i,j) c gi tr t 0 n 255 l mc xm ca nh ti ny (trong 0 l mu nn). xc nh v tr l mt ngi, ta cn thng k cc c trng c dng hnh vung kch thc k x k (1 < K 40) trong cc gi tr trong hnh vung u phi khc 0.Yu cu: T 1 nh chp mt ngi m tt c cc c trng c trong nh .3. Cch gii quyt.Vi bi ton th nht ta thy rng vic c d liu vo mt mng 2 chiu l iu khng th, v khng bit trc s dng ca vn bn s l bao nhiu? b nh c ch hay khng? M nu c c c i chng na thi chc g c cch no hay gii! Ta hy i tm cc c trng ca cc ch T,E,F,I. Ta thy rng cc ch ci ny u c 1 trc thng ng. C th vi ch I c 1 trc thng khng c gch nm ngang no, vi ch T c 1 gch nm ngang, ch F c 2 gch nm ngang, ch E c 3 gch nh vy ch I c 1 nt, ch T c 2 nt, ch F c 3 nt v ch E c 4 nt. Ta s m s nt ca ch xc nh l ch g! m cc nt ca ch ta s dng 1 mng 1 chiu d[1..80], ban u ta clear cc gi tr ca mng ny=0, ta s dng 1 mng dem[1..4] m s lng cc ch ci, trong dem[1] l s lng ch I, dem[2] l s lng ch T, dem[3] l s lng ch F v dem[4] l s lng ch E. Ta s x l 2 dng (st1,st2) lin nhau trong vn bn:Ta xt cc trng hp sau:1.(St1[i]=*^st1[i+1]=*^St2[i]=*^st2[i+1]=.)->d[i]:=d[i]+12.(St1[i-1]=.^St1[i]=*^st1[i+1]=*^St2[i]=.^d[i]0)->d[i]:=d[i]+2;3.(St1[i-1]=.^St1[i]=*^st1[i+1]=.^St2[i]=.) -> d[i]:=d[i]+1Trng hp 2 v 3 l cc trng hp kt thc ca 1 ch ci, do vy ta s tng dem[d[i]] ln 1 trong cc trng hp , ng thi d[i]:=0;C nh vy cho n khi kt thc file v gi tr ca dem[1..4] s cho ta s lng cc ch I,T,F,E m c. Phi ch rng khi c ht file input th st1 cha dng cui cng v st2 cha 1 chui cc k t . xt ln cui cng. Nh vy bi ton 1 c gii quyt.Vi bi ton th 2: Cch n gin nht m ta ngh n khi c bi c th l cch p tt c cc hnh vung KxK ln bng vung NxN ri xt v m. cch tt hn na l trc khi p hnh vung ta c th nh du cc c gi tr 0 v cc nm trn cng 1 hnh vung KxK vi , v cch tt hn cch ny na l hnh vung k tip c xt bng cch bt ct bn tri thm ct bn phi, hoc bt hng bn trn thm hng bn di nh vy ta ch cn xt trn cc ct thm hoc hng thm ny m thisong chng ta phi ch rng bi ny i hi chy trong 2 giy v d liu ti a l 800x800. Thc t d liu 800x800 l 1 gi ca bi ton chng ta bit rng khng th c ton b bng vung vo mng 2 chiu c, nhng nh vy li c bn c tng phn 1 x l, tuy nhin nu th li khng p ng c thi gian chy ca chng trnh.V cch gii quyt y l hon ton n gin, chng ta p dng nh cc gii quyt ca bi TEFI trn.Nh vy ta s c tng dng ca bng A vo chui st v s dng mng d[1..801] (phn t th 801 dng lm lnh canh) kiu word x l. Gi tr d[i] s l s cc khc 0 lin tc tnh t dng ang xt tr ln ct ica bng A. Ban u ta clear cc ga tr ca mng d[1..801].//Khi to ban uProcedureKhoitao;beginFillchar(a,sizeof(d),0);dem:=0;d[n+1]:=0;//phn t lnh canhend;//X l d liu c voProcedureXuly;Var x,j,i : word;BeginAssign(f,xulyanh.out);Reset(f);For j:=1 to n doBeginFori:= 1 to n doRead(f,x);Ifx0 then inc(d[i])Elsed[i]:=0;End;If j>=k then Duyet;readln(f);End;Close(f);End;//X l mng trn d c vit nh sau:ProcedureDuyet;Var j,i : word;BeginFori:= 1 to n-k doBeginJ:=0;While (d[i+j]>k ) and (jk then inc(dem);End;End;X l d liu trn mng d theo cch vit trn l cha ti u, ch mang tnh m t ta d hiu cch lm. Ta nn vit li Procedure Duyet nh sau:Procedure Duyet;Var j,i : word;Begini:=1;RepeatWhile d[i] < k do inc(i);if i < n-k thenBeginj:=0;While (d[i+j]>=k) and (jk thenBegininc(dem); i:=i+k+1;while(d[i]>=k) doBegininc(i);inc(dem);End;EndElse i:=i+j;End;Until i>n-kEnd;Thot khi vng lp ny bin dem s tr v s cc c trng tm thy ca nh! Nh vy bi ton c gii quyt 1 cch trn vn.4. Bi ton m rng.1. Cho file vn bn cha cc k t 0 v 1 file gm rt nhiu dng, mi dng c 1000 k t. Hy xc nh to hnh vung ln nht trong vn bn ch cha hoc l k t 0 hoc l k t 1. Yu cu a ra to u v di ca cnh hnh vung tm c.2. Quay li bi ton 1 nu cc ch ci T,E,F,I ca chng ta c th quay 900,1800, 2700th chng ta s m cc ch ci ny nh th no?Xin hn cc bn mt bi ton khc. Mi gp , trao i xin lin h qua [email protected].. Xin chn thnh cm n!Tm kim u tin chiu rng - Mt s bi tp p dng

Ng Minh cTrnh by s lcTm kim u tin chiu rng , hay cn gi l loang, l mt trong nhng thut ton duyt th n gin nht. tng ca n c s dng trong nhiu thut ton, chng hn thut ton Prim tm cy khung nh nht, thut ton Dijkstra tm ng i ngn nht, v.v...Loang ch yu c s dng tm ng i ngn nht theo s cnh gia hai nh ca mt th. Ta hnh dung t mt nh ngun s, ban u thut ton loang khm ph cc nh n c t s, l lp th nht, sau li khm ph cc nh cha thm v n c t lp th nht, l lp th hai, v.v... Ngha l cc nh n t c khong cch k t s lun c khm ph trc cc nh c khong cch k+1 t s.Sau y l m gi ca thut ton loang: (thc ra l m Pascal)For i:=1 to n do {n l s nh}Trace[i]:=0;Trace[s]:=-1; {s l nh ngun}d[s]:=0; {d[i] l khong cch t ngun n nh i}i:=1; j:=1; q[i]:=s; {q l hng i}While iv chnh l ng knh ca cyTrng thi xa nhtTr chi 8-puzzle gm mt khay hnh vung vi 8 mnh vung c t ln 8 vung. vung cn li rng. Mi mnh c ghi mt con s. Mt mnh k vi rng c th c y sang rng ny. Mt vn chi bao gm trng thi bt u v trng thi kt thc. Ngi chi phi bin i n trng thi kt thc bng cch di chuyn cc mnh vung. Bi ton 8-puzzle yu cu phi bin i vi s bc t nht

Nhng trong bi ton ny (bi ton trng thi xa nht), bn c cho mt trng thi bt u. Hy tm trng thi xa nht (theo ngha s bc i) trong tt c cc trng thi n c.Hng dn: y cng l mt bi ton loang. Nhng hi kh khn ch lu vt, v c n 9!=362880 trng thi => khng b nh. C th khc phc bng cch dng k thut bm. Cch lm nh sau: cho tng ng (1-1) gia mi trng thi vi mt s nguyn trong khong 1->362880, sau dng mt bng bm vi kch thc sao cho b nh. Tip nh x mi trng thi vo mt khe trong bng bm (c th dng php ng d) lu.M cungCho mt m cung c kch thc WxH (1max){max=k[i];cuoi=i;//cui dy}}dau=c[cuoi];return max;}Vi thut ton trn phc tp l O(n) vi ch 1 vng lp n ln duy nht. Nh vy, c th ni ta ti u xong v mt thi gian t phc tp O(n3) xung cn O(n). V khng gian b nh, cch lm trn ta s dng thm 2 mng k v c mi mng n phn t, nu khng gian u vo khng phi hn ch 10.000 m l 20.000 thm ch 30.000 th sao? Chc chn s khng khng gian b nh s dng 2 mng k v c nh trn. Vy gii quyt th no? Ta s d dng b mng k i khi s dng tnh ton hon ton trn mng a, vy c th b nt mng c i khng? nu b i th ta s xc nh gi tr u ca mi dy nh th no?Cch th 4:Ti mi v tr ang xt ta s so snh tm ra dy c tng ln nht ngay nh trn, v nh vy ta s s dng 1 bin lu gi tr u ca dy tm c! tng th hin qua on m sau:int Findmax(int a[],int &dau,int &cuoi){dau=cuoi=luu=0;max=a[0];for(i=1;ia[i]+=a[i-1];if (a[i]a[i]-=a[i-1];dau=i;}//tm tng ln nhtif (a[i]>max){max=a[i];cuoi=i;//cui dyluu=dau;//u dy}}dau=luu;return max;}Cch lm trn qu tht rt hiu qu, tuy nhin n lm bin i dy s ban u(mng a). Lm sao c th gi nguyn dy s, khng dng thm mng ph, vn p ng c yu cu bi. Vi mt ci tin nh ta s thy on m sau tht tuyt vi:int Findmax(int a[],int &dau,int &cuoi){dau=luu=cuoi=0;max=s=a[0];for(i=1;is+=a[i];if (ss=a[i];dau=i;}//tm tng ln nhtif (s>max){max=s;cuoi=i;//cui dyluu=dau;//u dy}}dau=luu;return max;}Vi ci tin cui cng ny mi yu cu ca bi ton c gii quyt trit . Chc cc bn thnh cng. Hn gp li mt vn khc, mi trao i, gp xin lin h qua [email protected] dng phng php quy np ton hc

Nguyn Duy KhngTrong ton hc, quy np l mt phng php n gin nhng hiu qu chng minh cc bi ton. bi vit ny ti xin a ra mt ng dng nh ca n trong vic gii cc bi ton tin hc:1. Thut ton quy np quy np(nhc li):Gi s c bi ton F cn chng minh ng vi mi nN. Ta chng minh bi ton ng bng cch quy np, cn tin hnh cc bc sau:- n = 1: mnh cn chng minh ng.- Gi s n = k: mnh cn chng minh ng.- n = k + 1: ta cn chng n cng ng. Vy theo nguyn l quy np bi ton ng vi mi N.Trong tin hc, thut ton nay cng c p dng. Tuy thut ton n gin nhng n li c p dng mt cch rt linh ng v kho lo trong cc bi ton tin.2. Pht biu bi ton tng qut gii bng quy np:Thng thng bi ton gii bng quy np khng phi l mt bi ton ti u ho. N ch n gin l bi ton cn ch ra cch bin i theo quy lut cho trc thu c kt qu mong i. V bi ton thng c pht biu nh sau: Cho N i tng v mt s thao tc bin i. Yu cu s dng cc thao tc bin i thu c kt mong i.Cch lm thng thng:- Nu n = 0; 1: ta lun c cch bin i ng.- Nu c n > 1 m ta lun ch ra mt cch bin i sao cho gin bt c s i tng m iu kin bi ton vn khng thay i.- Nh vy v s i tng trong mt bi ton tin hc lun l hu hn nn sau mt s hu hn bc th s lng i tng bng 1 hoc 0. Suy ra bi ton c gii quyt mt cch hon ton.3. Cc v d c th:P1. Cho N vecto v1, v2, , vn di nh hn L cho trc. Cn t trc cc vecto mt du cng hoc tr sao cho vecto tng thu c c di nh hn cn 2 nhn L. Input: Segment.In- Dng u ghi s N ( 1 < N 10000) v L (0 < L 15000.00)- N dng tip theo mi dng ghi mt cp s xi, yi l to ca vecto th i. (|xi|, |yi| 10000).Ouput: Segment.out- Dng th nht ghi YES n c th t cc du cng tr tho mn yu cu bi ton, NO trong trng hp ngc li.- Nu l YES dng th hai ghi N k t cng hoc tr cn t trc cc vecto sao cho tng vecto nh hn sprt(2)*L.V d:

Thut gii:- n = 1 bi ton ng.- n = 2 c trng hp xy ra vi hai vecto:+ gc gia hai vecto nh hn 90 , ly vecto 1 tr cho vecto 2 lc ta thu c 1 vecto co di nh hn sqrt(2) * L.+ gc gia hai vecto ln hn hoc bi mt 90 , ly vecto 1 cng cho vecto 2 lc ta thu c 1 vecto c di nh hn sqrt(2) * L.- n 3 suy ra lun c 2 vecto m gc gia hai phng ca vecto nh hn hoc 60 bng c hai trng xy ra:+ gc gia hai vecto nh hn hoc bng 60 , tr vecto 1 cho vecto 2 thay hai vecto bng vecto mi nhn c.+ gc gia hai vecto ln hn hoc bng 120 , cng vecto 1 cho vecto 2 thay hai vecto bng vecto mi nhn c. Lu sau ny nu tr vecto mi nhn c phi tr (i du) ton vecto b hnh thnh ln n, vecto mi nhn c c di nh hn L, s on thng gim 1.Nh vy y l bi ton lun c li gii, phc tp O(N^2) nu x l kho c th gin xung O(n*log(n)). Chng trnh m t thut gii:

Procedure Xuly (n: integer //* s i tng *//);BeginIf n