Professional Documents
Culture Documents
e. Vit ti liu
Ti liu trnh by cc ni dung lin quan n m t bi ton, thut ton, cu trc d liu,
thit k chng trnh v hng dn s dng. Ti liu (bao gm c cc ch thch trong chng
trnh) l cn thit khng nhng cho ngi dng c th khai thc tt chng trnh, xut
phng n hon thin chng trnh m cn cho chnh ngi lp trnh hoc ngi c
chng trnh d dng chnh sa, nng cp chng trnh khi cn thit
II. PHN TCH THUT TON
1. phc tp ca thut ton:
Mt trong nhng tiu ch thng c ly nh gi thut ton l thi gian thc hin thut
ton. Vy, lm th no o c thi gian thc hin ca mt chng trnh (m t mt thut
ton)?
a. Dng mu chun
y l cch rt t nhin v thng c s dng. Da vo thi gian thc t thc hin cc
chng trnh vit bng cng mt ngn ng lp trnh cho cc thut ton khc nhau vi cng cc
b d liu vo Input nh nhau, trn cng mt h thng my tnh kt lun thut ton no
nhanh, thut ton no chm. Tuy nhin vic ny cng d mc li v khi thc hin chng trnh,
ngoi yu t thut ton cn cc yu t khc ca h thng, c trng d liu chy th cng c
nh hng n thi gian chy ca chng trnh. V th so snh chnh xc hn cn xy dng
cc b d liu vo Input theo cc mu chun (benchmark) sao cho c th tha nhn mt
chng trnh thc hin tt trn mu chun th c coi l tt trn mi d liu vo.
b. Phn tch thut ton
Mt cch khc nh gi chng trnh (thut ton) l da vo mi cu lnh ca chng
trnh ngun s thc hin bao nhiu ln trn mt tp d liu vo. Phn ln cc mi trng lp
trnh u c b m lnh (statement couter) l cng c thc hin php o .
Mc tiu ca phn tch thut ton khng ch l so snh, nh gi gip cho vic la chn
thut ton tt m cn da vo kt qu phn tch nh gi hiu chnh, ci tin thut ton
c c tt hn. Nhiu chng trnh cho thy, tng thi gian thc hin mt chng trnh ln
thng tiu ph cho nhng phn nh ca chng trnh. V nguyn tc, s cc thao tc tru
tng trong thut ton l rt ln. Tuy nhin thng th tnh nng ca thut ton ch phc thuc
vo mt vi i lng. Khi nh gi thi gian thc hin thut ton ta ch c bit n cc
php ton m s ln thc hin khng t hn cc php ton khc (cha trong cc phn nh ca
chng trnh).
Vic ch n cc php ton c thc hin nhiu ln l iu cn thit khi ci t thut
ton bng chng trnh. V d, ngi lp trnh cn quan tm ln ci tin cc vng lp
trong v cc php ton trong l cc php ton c thc hin lp li nhiu ln nht.
Cch nh gi thi gian thc hin thut ton c lp vi h thng my tnh dn ti khi
nim phc tp ca thut ton. Thi gian thc hin thut ton ph thuc rt nhiu yu t.
Mt yu t rt quan trng l kch thc ca d liu vo. D liu cng ln th thi gian thc
hin thut ton cng ln. Ta k hiu T(n) l hm o s lng cc php ton c bn xut hin
khi thc hin thut ton v s nguyn phc tho ngc l kch thc d liu vo
3
Thut ng
phc tp hng s
phc tp lgarit
phc tp tuyn tnh
phc tp nlogn
phc tp a thc
phc tp hm m
phc tp giai tha
Trc ht, ta phn loi cu lnh trong ngn ng lp trnh bc cao. C cc loi cu lnh
thng dng sau:
- Cu lnh n thc hin mt thao tc, v d cu lnh gn n gin (khng cha li gi
hm trong biu thc), c/ghi n gin, cu lnh chuyn iu khin n gin (break, goto,
continue, return)
-
Cc cu lnh lp
nh gi thi gian thc hin chng trnh, cn thit phi bit nh gi thi gian thc hin
cc cu lnh. lm iu ta p dng cc quy tc tnh phc tp thut ton trnh by
mc trn, c th:
-
Thi gian thc hin mt lnh n khng ph thuc vo kch thc d liu nn s l O(1)
max
Thi gian thc hin mt cu lnh hp thnh s c tnh theo quy tc cng v quy tc
- Thi gian thc hin cu lnh IF: gi s thi gian thc hin hai cu lnh thnh phn dng
l f(n) v g(n) th thi gian thc hin ca cu lnh IF s c tnh theo quy tc max nn s l
O(max(f(n),g(n))).
5
- Thi gian thc hin cu lnh lp s p dng theo quy tc nhn, ngha l O(k(n)f(n)),
trong k(n) l s ln lp v f(n) l thi gian thc hin cu ln bn trong vng lp
6. Mt s v d
Phn tch thi gian thc hin ca cc on chng trnh sau:
V d 1:
VAR i, j, n: longint;
s1, s2: longint;
BEGIN
{1} Readln(n);
{2} s1:=0;
{3} FOR i:=1 TO n DO
{4}
s1:=s1+i;
{5} s2:=0;
{6} FOR j:=1 TO n DO
{7}
s2:=s2+j*j;
{8} writeln(1+2++,n,=,s1);
{9} writeln(1^2+2^2+..+,n,^2=,s2);
END.
c:=0;
FOR i:=1 TO 2*n DO
c:=c+1
FOR i:=1 TO n DO
FOR j:=1 TO n DO
c:=c+1
Cu lnh {1}. {3}, {6} c thi gian thc hin l O(1). Lnh lp FOR {2} c s ln lp l 2n
nn lnh {2} c thi gian thc hin l O(n). Lnh lp 5 c s ln lp l n nn lnh {5} c thi
gian thc hin l O(n). Lnh lp {4} c s ln lp l n v n ch cu lnh lp {5} nn thi c
thi gian thc hin l O(n2).
Vy thi gian thc hin ca on chng trnh trn l
Max(O(1), O(n), O(n2)) = O(n2)
6
V d 3:
{1}
{2}
{3}
FOR i:=1 TO n DO
FOR j:=1 TO i DO
c:=c+1
Cu 2.
FOR i := 1 TO n DO
FOR j := 1 TO n DO
BEGIN
c[i,j] := 0;
FOR k := 1 TO n DO
c[i,j] := c[i,j] + a[i,k] * b[k,j];
END;
7
Cu 3.
j:=n;
d:=0;
REPEAT
j:=j div 2;
d:=d+1;
UNTIL j<1
Cu 4.
FOR i:=1 TO n DO
IF i mod 2 =0 THEN c:=c+1
ELSE c:=c+2;
Cu 5.
FOR i:=1 TO n DO
IF i mod 2 = 0 THEN
FOR j:=1 TO n DO DO c:=c+1;
Cu 6.
D:=0
FOR i:=1 TO n-2 DO
FOR j:=i+1 TO n-1 DO
FOR k:=j+1 TO n DO d:=d+1;
PROCEDURE Try(i)
BEGIN
<xc nh Si>
FOR xi Si DO BEGIN
<ghi nhn thnh phn th i>
IF (tm thy nghim) THEN <a ra nghim>
ELSE Try(i+1)
<loi phn t th i>
END;
END;
C kn
n!
k!(n k)!
L mt vector x =(x1,x2,xk)
xi ly gi tr trong tp {1,2,n}
b. Chnh hp lp:
Chnh hp lp chp k ca n l mt dy k thnh phn, mi thnh phn l mt phn t ca tp n
phn t, c xt n th t v khng yu cu cc thnh phn khc nhau.
S lng chnh hp lp chp k ca n c tnh theo cng thc sau:
k
An n k
Mt v d d thy nht ca chnh hp lp l cc dy nh phn. Mt dy nh phn di m l
mt chnh hp lp chp m ca tp 2 phn t {0,1}. Chng hn 101 l mt dy nh phn di
3. Ngoi ra ta cn c 7 dy nh phn di 3 na l 000, 001, 010, 011, 100, 110, 111. V c
xt th t nn dy 101 v dy 011 l 2 dy khc nhau.
Nh vy, bi ton xc nh tt c cc chnh hp lp chp k ca tp n phn t yu cu tm
cc nghim nh sau:
-
L mt vector x =(x1,x2,xk)
xi ly gi tr trong tp {1,2,n}
n : integer;
x : array[1..max] of integer;
{===============================}
PROCEDURE Input;
BEGIN
clrscr;
write('n = '); readln(n);
writeln('Cac day nhi phan DO dai ',n);
END;
{===============================}
PROCEDURE print;
VAR i : integer;
BEGIN
FOR i := 1 TO n DO write(' ',x[i]);
writeln;
END;
{===============================}
PROCEDURE try(i:integer);
VAR j : integer;
BEGIN
FOR j := 0 TO 1 DO
BEGIN
x[i] := j;
IF i = n THEN Print ELSE try(i+1);
END;
END;
{===============================}
PROCEDURE solve;
BEGIN
try(1);
END;
{===============================}
BEGIN
Input;
solve;
END.
A kn
n!
(n k)!
Cc gi tr xi ly trong tp {1,2,..n}
PROCEDURE solve;
BEGIN
try(1);
END;
{===============================}
BEGIN
Input;
solve;
END.
3. Bi ton 8 qun hu
Yu cu bi ton: Cho bn c vua nxn. Hy xp n con hu ln bn c sao cho khng con
no khng ch con no. Hai 2 con hu khng ch nhau nu chng trn cng mt hng, mt
ct hoc mt ng cho.
Chng hn khi n =8 ta c mt cch t sau, cc en l cc v tr t hu:
- Rng buc: cc gi tr x[i] khc nhau tng i mt v khng c 2 con hu trn cng
mt ng cho.
ci t bi ton ny, chng ta s phn tch chi tit v cc rng buc trn.
Rng buc th nht l cc gi tr x[i] phi khc nhau. Ta c th dng mt mng nh du
nh thut ton hon v m bo iu ny.
Rng buc th 2 l cc con hu khng c nm trn cng mt ng cho chnh v ph.
Ta d dng nhn ra rng 2 v tr (x1,y1) v (x2,y2) nm trn cng ng cho chnh nu:
x1y1=x2y2=const.
Tng t, 2 v tr (x1,y1) v (x2,y2) nm trn cng ng cho ph nu:
x1y1=x2y2=const
15
BEGIN
Fillchar(cot,sizeof(cot),0);
Fillchar(dcc,sizeof(dcc),0);
Fillchar(dcp,sizeof(dcp),0);
Xephau(1);
Readln;
END;
- Lt th n-1: th dy c sp xp xong
V d: Sp xp mng gm 10 mu tin c kha l cc s nguyn: 5, 6, 2, 2, 10, 12, 9, 10, 9
v 3
Bng sau ghi li cc gi tr kho tng ng vi tng lt thc hin thut ton trn.
Kha
a[1] a[2]
a[7] a[8]
a[9] a[10]
Ban u
10
12
10
Lt 1
10
12
10
10
12
10
10
12
10
10
10
12
10
10
12
10
10
12
10
10
12
10
10
12
10
12
10
12
Lt
Lt 2
Lt 3
Lt 4
Lt 5
Lt 6
Lt 7
Lt 8
Lt 9
Kt qu
10
19
* Chng trnh:
PROCEDURE BubbleSort;
VAR i,j: integer;
BEGIN
FOR i := 1 TO n-1 DO
FOR j := n DOWNTO i+1 DO
IF a[j].key < a[j-1].key THEN
Swap(a[j],a[j-1]);
END;
* nh gi phc tp:
S php ton so snh a[j].key > a[j-1].key c dng nh gi hiu sut v mt thi gian
cho thut ton sp xp ni bt. Ti lt th i cn n i php so snh. Nh vy tng s php so
snh cn thit l:
n 1
T(n) (n i) (n 1) (n 2) ... 1
i 1
n(n 1)
O( n 2 )
2
20
Bng sau ghi li cc gi tr kho tng ng vi tng lt thc hin thut ton trn.
Kha
Lt
Ban u
Lt 1
Lt 2
Lt 3
Lt 4
Lt 5
Lt 6
Lt 7
Lt 8
Lt 9
Kt qu
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
5
2
6
6
2
2
5
5
3
2
2
6
6
5
10
10
10
10
10
6
12
12
12
12
12
12
9
9
9
9
9
9
9
12
9
10
10
10
10
10
10
10
10
10
10
9
9
9
9
9
9
9
12
12
10
10
3
3
3
5
6
10
10
10
10
12
12
* Chng trnh:
PROCEDURE SelectionSort;
VAR i,j,LowIndex: integer;
LowKey: KeyTYPE;
BEGIN
{1} FOR i := 1 TO n-1 DO
BEGIN
{2}
LowIndex := i;
{3}
LowKey := a[i].key;
{4}
FOR j := i+1 TO n DO
{5}
IF a[j].key < LowKey THEN
BEGIN
{6}
LowKey := a[j].key;
{7}
LowIndex := j;
END;
{8}
Swap(a[i],a[LowIndex]);
END;
END;
* nh gi phc tp:
Cc lnh: {2}, {3}c thi gian thc hin l O(1).
Vng lp FOR {4} {7} thc hin n-i ln v j chy t i+1 n n, mi ln lp thc hin ht
O(1) thi gian nn n tn O (n-i) thi gian. Mc khc vng lp {1} thc hin n-1 ln nn thi
gian tng cng thc hin chng trnh l
21
n 1
T(n) (n i) (n 1) (n 2) ... 1
i 1
n(n 1)
O( n 2 )
2
a[1]
a[2]
a[3]
5
5
2
2
2
2
2
2
2
2
6
6
5
2
2
2
2
2
2
2
10
12
10
6
5
5
5
5
5
5
3
6
6
6
6
6
6
5
10
10
9
9
9
6
12
10
10
9
9
12
10
10
9
12
10
10
12
10
12
22
* Chng trnh:
PROCEDURE InsertionSort;
VAR i,j: integer;
BEGIN
{1} FOR i := 2 TO n DO
BEGIN
{2}
J := i;
{3}
WHILE (j>1) AND (a[j].key < a[j-1].key) DO
BEGIN
{4}
swap(a[j], a[j-1]);
{5}
j := j-1;
END;
END;
END;
* nh gi phc tp:
Vng lp {1} c i chy t 2 n n nn nu gi T(n) l thi gian sp n phn t th ta c
n 1
T(n) (n i)
i 1
n(n 1)
O( n 2 )
2
* nh gi phc tp
QuickSort s hot ng rt km trong trng hp dy c sp sn. Khi phi mt n
N ln gi quy v mi ln ch loi c 1 phn t. Thi gian thc hin trong trng hp xu
nht ny l khong N2/2 c ngha l O(N2)
Trong trng hp tt nht phn chia s c hai na dy bng nhau. Khi thi gian thc
hin ca thut ton T(N) s c tnh l
T(N) = 2T(N/2) + N
Hay T(N) NlogN ngha l O(NlogN)
Trong trng hp trung bnh thut ton cng c phc tp khong 2NlogN = O(NlogN).
6. Thut ton sp xp ha nhp (trn) hai ng trc tip (MergeSort):
tng ca thut ton ny bt ngun t vic trn hai dy c sp xp thnh mt dy
mi cng c sp xp.
a. Trn hai dy sp xp:
Bi ton: Cho hai mng A v B c sp xp theo chiu khng gim. T hai mng
cho hy a cc gi tr ca A v B vo mng C m vn m bo trt tr sp xp.
Gi s ta c hai dy sp xp nh sau:
17
32
49
89
06
25
53
24
gii quyt bi ny ta dng hai bin duyt t u mi dy. Ti mi bc, tin hnh so
snh gi tr ca hai phn t ti v tr ca hai bin duyt. Nu phn t no nh hn ta a
phn t xung di dy mi v tng bin duyt tng ng ln 1. Qu trnh c lp li
cho ti khi tt c cc phn t ca hai dy c duyt v xt
M phng thut ton ca v d trn:
Ban u:
Bc 1:
Bc 2:
Bc 3:
Bc 4:
Bc 5:
Bc 6:
25
Bc 7:
L,
R:
BI TP
Cu 1. Cho mng A[1..N, 1..M] cha cc s nguyn. Hy sp xp li cc gi tr ca cc
trong A sao cho
* A[i,1] A[i,2] A[i,M]
* A[1,j] A[2,j] A[N,j]
D liu: cho file MANG.INP gm N+1 dng
+ Dng 1: cha hai s N v M
+ Dng i+1 (1 i N): ghi M s A[i,1], A[i,2], ..., A[i,N]
Cc s ghi trn cng mt dng cch nhau t nht mt du cch.
Kt qu ghi vo file c tn MANG.OUT
27
V d:
MANG.INP
58
13983245
52416179
43341032
53816354
82121134
MANG.OUT
11111111
22222233
33333344
44445555
66788899
0 1 1 1 1 3 2 3 4 1
1 5 4 3 2 5 3 4 5 1
Cho trc mt s nguyn dng N, vit chng trnh in ra mi phn s ti gin thuc
F(N) theo th t tng dn ca gi tr.
Cu 3. Cho N (N<=300) on s nguyn [ai, bi] hy tm mt s m s thuc nhiu on
s nguyn nht.
V d, c 5 on [0,10], [2,3], [4,7], [3,5], [5,8], ta chn s 5 thuc 4 on [0,10], [4,7],
[3,5], [5,8].
Cu 4. Cho 2 dy s: A c n phn t, B c m phn t, cc phn t l cc s nguyn x
Tm s lng gi tr trong A m c mt trong B
Yu cu: Vit s lng tm ra c
D liu vo: file AB.IN c dng u l hai s n, m.
T dng th 2 ln lt l cc s ca A sau l cc s ca B. (0<n,m<10^6, |x|<10^9)
Kt qu ra: File AB.OUT gm 1 dng ghi s lng tm c
V d:
AB.IN
34
2567556
AB.OUT
2
V d:
T_IN.TXT
T_OUT.TXT
1 2 20 4 45 62 3
122234445
2 4 55 2 4 5 100
20 45 55 62 100
Cu 6. Ngi ta c N on dy xch (N<=20000), mi on dy xch l mt chui cc mt
xch c ni vi nhau. Cc on dy xch ny tch ri nhau. Mi on c khng qu 20000
mt xch.
Bng cch ct ra mt mt xch, sau hn li, ta c th ni hai dy xch thnh mt on.
Thi gian ct v hn mi mt xch l 1 n v thi gian v c xem l bng nhau vi
mi mt xch.
Nhim v ca bn l phi ni chng li thnh mt on xch duy nht vi thi gian t
nht (hay s mt xch b ct v hn li l t nht).
Input:
D liu cho trong file NOIXICH.IN c cu trc nh sau:
Dng u tin l s N, s on xch.
Nhng dng tip theo ghi N s nguyn dng, s th i l s mt xch
c trong on xch th i (1<= i <= N)
Hai s cnh nhau trn mt dng cch nhau t nht l mt du cch.
Output:
Kt qu ghi vo file NOIXICH.OUT mt s duy nht l s n v thi gian m bn cn
ni N on xch cho.
V d:
NOIXICH.IN
3
47
6
NOIXICH.OUT
2
NOIXICH.IN
4
578
9
NOIXICH.OUT
3
V d:
DOAN.INP
-3 5 4
-8 -2 8 20 -1 3 4 6
DOAN.OUT
YES
-2 -1
34
30
Chuyn :
31
Bit:
F1 = 1 ;
F2 = 1
vi i > 2
Fi = Fi-1+ Fi-2
Gii thut:
vi i > 2
1
1
2
1
3
2
4
3
5
5
6
8
7
13
8
21
9
34
10
55
2. T hp chp k ca n phn t:
bi: Tnh cc phn t ca mng C[n, k] = C nk = s t hp chp k ca n phn t, vi
0 k n 20.
Bit
Cn0 Cnn 1
Cnk Cnk11 Cnk1
Gii thut:
+ Tnh nghim ca bi ton trong trng hp ring n gin nht:
FOR i := 1 TO n DO
BEGIN
C[0, i] := 1;
C[i, i] := 1;
END;
+ Tm cc cng thc quy biu din nghim ti u ca bi ton ln thng qua nghim
ti u ca cc bi ton con.
FOR i := 2 To n Do
FOR j := 1 To i-1 Do C[i, j] := C[i-1,j-1] + C[i-1,j];
n\k
1
2
3
4
5
0
1
1
1
1
1
1
1
2
3
4
5
1
3 1
6 4
10 10
1
5
1
33
6 -7
-3
15
Gii thut:
+ T chc d liu:
Gi A l dy ban u.
Gi B[i] l s phn t ca dy con di nht trong dy c i phn t u tin A[1] .. A[i] v
A[i] c chn lm phn t cui. (i [1, n])
C l dy con khng gim di nht tm c.
Truoc[i] l ch s ca phn t trc phn t i (cc phn t gi li C).
+ Gii thut to bng: (Tnh mng B v mng Truoc)
Trng hp n gin nht: dy ch c 1 phn t, th B[1] := 1;
FOR i = 2 to n Do
Vi mi (j < i) v (A[j] <= A[i]),
B[i] := Bmax + 1;
Trc[i] := j; {j l ch s ng vi BMax tm c}
Trong v d trn ta c bng sau:
i
1
2
3
4
5
A[i]
2
6
-7
5
8
B[i]
1
2
1
2
3
Truoc[i]
0
1
0
3
4
Dy con khng gim di nht c 4 phn t: -7
6
1
2
3
-3
7
-3
2
3
5
8
5
3
7
9
9
15
4
8
10
9
4
8
PROCEDURE TaoBang;
VAR i, j, BMax, chiSo :byte;
BEGIN
B[1] := 1; truoc[1]:=0;
FOR i := 2 TO n DO
BEGIN
BMax := 0; chiso:=0;
FOR j := i-1 DOwnTO 1 DO
IF (A[j] <= A[i]) and (B[j] > BMax) THEN
BEGIN
BMax := B[j];
chiSo := j;
END;
B[i] := BMax + 1; Truoc[i] := chiSo;
END;
END;
35
5. Bi ton bal 1:
bi: Cho n mn hng (n 50). Mn th i c khi lng l A[i] (s nguyn). Cn
chn nhng mn hng no b vo mt ba l sao tng khi lng ca cc mn hng
chn l ln nht nhng khng vt qu khi lng W cho trc. (W 100). Mi mn ch
chn 1 hoc khng chn.
Input:
n
A[1] A[2]
A[n]
V d:
4 10
5
Output:
Tng khi lng ca cc mn hng b vo ba l.
Khi lng ca cc mn hng chn.
Trong v d trn:
Tng khi lng ca cc mn hng b vo ba l l 10
Khi lng cc mn hng c chn: 5
Hng gii:
36
+ T chc d liu:
Fx[k, v] l tng khi lng ca cc mn hng b vo ba l khi c k mn hng u tin
chn v khi lng ti a ca ba l l v.
Vi k [1, n], v [1, W].
Ni cch khc: Khi c k mn chn, Fx[k, v] l khi lng ti u khi khi lng ti a
ca ba l l v.
Khi lng ti u lun nh hn hoc bng khi lng ti a:
Fx[k,v] v.
V d: Fx[4, 10] = 8 Ngha l trong trng hp ti u, tng khi lng ca cc mn
hng c chn l 8, khi c 4 mn u tin chn (t mn th 1 n mn th 4) v khi
lng ti a ca ba l l 10. Khng nht thit c 4 mn u c chn.
+ Gii thut to bng:
Trng hp n gin ch c 1 mn chn: Ta tnh Fx[1, v] vi mi v.
Nu c th chn (ngha l khi lng ti a ca ba l >= khi lng ca cc mn hng
th 1), th chn: Fx[1, v] := A[1];
Ngc li ( v < A[1] ), khng th chn, ngha l Fx[1, v] := 0;
* Gi s ta tnh c Fx[k1 , v ] n dng k1, v [1, W]. Khi c thm mn th k
chn, ta cn tnh Fx[k , v] dng k, v [1,W].
Nu c th chn mn hng th k (v >= A[k]), th c 2 trng hp:
Trng hp 1: Nu chn thm mn th k b vo ba l th:
Fx[k, v] := Fx[k1, u ] + A[k]; Vi u l khi lng cn li sau khi chn mn th k.
u = v A[k]
Trng
hp
2:
Fx[k, v] := Fx[k1, v ];
Ngc
li,
khng
chn
mn
th
k,
th
k\v
1
2
3
4
1
0
0
0
0
2
0
2
2
2
3
0
2
2
3
4
0
2
4
4
5
5
5
5
5
6
5
5
6
6
7
5
7
7
7
8
5
7
7
8
9
5
7
9
9
10
5
7
9
10
37
PROCEDURE TaoBang;
VAR k ,v : integer;
BEGIN
FOR v:=1 TO W DO
IF v >= A[1] THEN Fx[1, v] := A[1] ELSE Fx[1, v] := 0;
FOR k:= 2 TO n DO FOR v:=1 TO W DO
IF v >= A[k] THEN
Fx[k,v]:= Max(Fx[k-1,v-A[k]]+ A[k], Fx[k-1,v])
ELSE Fx[k,v]:=Fx[k-1,v];
END;
6. Bi ton ba l 2
bi: Cho n mn hng (n 50). Mn th i c khi lng l A[i] v gi tr C[i] (s
nguyn). Cn chn nhng mn hng no b vo mt ba l sao tng gi tr ca cc mn
38
hng chn l ln nht nhng tng khi lng ca chng khng vt qu khi lng W
cho trc (W 100). Mi mn ch chn 1 hoc khng chn.
Input:
nW
A[1] C[1]
A[2] C[2]
A[n] C[n]
V d:
5 13
34
45
56
23
11
Output:
Tng gi tr ca cc mn hng b vo ba l.
Khi lng v gi tr ca cc mn hng chn.
Trong v d trn:
Tng gi tr ca cc mn hng b vo ba : 16
Cc mn c chn:
1(3, 4) 2(4, 5) 3(5, 6) 5(1, 1)
Hng dn gii:
Tng t bi ba l 1, nhng Fx[k, v] l gi tr ln nht ca ba l khi c k mn hng u
tin chn v khi lng ti a ca ba l l v.
Cng thc quy l:
If v >= A[k] Then
Fx[k,v]:= Max(Fx[k-1, v-A[k]] + C[k], Fx[k-1,v])
Else
Fx[k,v]:=Fx[k1,v];
Ch : ch khc bi bal 1 ch dng C[k] thay cho A[k]
39
1
0
0
0
0
1
2
0
0
0
3
3
3
4
4
4
4
4
4
4
5
5
5
5
5
4
5
6
7
7
6
4
5
6
8
8
7
4
9
9
9
9
8
4
9
10
10
10
9
4
9
11
12
12
10
4
9
11
13
13
11
4
9
11
14
14
12
4
9
15
15
15
13
4
9
15
15
16
7. Bi ton ba l 3
bi: Cho n loi hng (n 50). Mi mn hng thuc loi th i c khi lng l A[i] v
gi tr C[i] (s nguyn). S lng cc mn hng ca mi loi khng hn ch. Cn chn nhng
mn hng ca nhng loi hng no b vo mt ba l sao tng gi tr ca cc mn hng
chn l ln nht nhng tng khi lng ca chng khng lt qu khi lng W cho trc
(W 100). Mi loi hng c th hoc khng chn mn no, hoc chn 1 mn, hoc chn
nhiu mn.
Input:
nW
A[1] C[1]
A[2] C[2]
A[n] C[n]
V d:
5 13
34
45
56
23
11
Output:
Tng gi tr ca cc mn hng b vo ba l.
S lng ca cc loi hng chn.
Trong v d trn:
Tng gi tr ca cc mn hng b vo ba l: 19
Cc mn c chn:
Chn 1 mn hng loi 1, mi mn c khi lng l 3 v gi tr l 4
40
1
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
1
3
0
0
0
0
1
4
4
4
4
4
4
1
0
0
0
0
4
4
4
4
5
5
1
0
0
0
1
4
5
5
7
7
6
1
1
0
1
0
8
8
8
8
8
2 8 2 8 2
0 9 1 9 1
0 9 0 10 1
0 10 2 11 1
0 10 0 11 0
9
12
12
12
13
13
3
0
0
3
0
10
12 3
13 1
13 0
14 2
14 0
11
12 3
14 2
14 0
16 4
16 0
12
16 4
16 0
16 0
17 3
17 0
13
16 4
17 1
17 0
19 5
19 0
41
PROCEDURE TaoBang;
VAR xk, yk, k: Byte;
FMax, XMax, v : Word;
BEGIN
FOR v:= 1 TO W DO
BEGIN
X[1, v] := v div A[1];
F[1, v] := X[1, v] * C[1];
END;
FOR k:= 2 TO n DO
FOR v:= 1 TO W DO
BEGIN
FMax := F[k-1, v] ;
XMax := 0;
yk := v div A[k];
FOR xk:= 1 TO yk DO
IF(v-xk*A[k]>0)andF[k-1,v-xk*A[k]]+xk*C[k]>FMax) THEN
BEGIN
FMax := F[k-1, v - xk * A[k]] + xk * C[k];
XMax:= xk;
END;
F[k, v] := FMax;
X[k, v] := XMax;
END;
END;
V d
XauChung.INP
XauChung.OUT
CEACEEC
AECECA
AEEC
Hng dn:
+ T chc d liu
Mng hai chiu L[0..Max, 0..Max] lu kt qu cc bi ton con.
+ To bng
Gi L[i,j] l di ln nht ca dy con chung ca hai dy khi dy A c i phn t v dy
B c j phn t chn A1...Ai v B1..Bj. Vi i<=m v j<=n (m,n l di hai xu).
+ Trng hp n gin: nu i=0 hoc j=0 (mt trong hai xu rng) th L[i,j] =0.
+ Cng thc quy
Nu (i>0) and (j>0) and (Ai<>Bj)
th c L[i,j] =Max(L[i-1,j], L[i,j-1])
Nu (i>0) and (j>0) and (Ai=Bj) th L[i,j] = 1+ L[i-1,j-1]
+ To bng
PROCEDURE Taobang;
VAR i,j:byte;
BEGIN
Fillchar(L,sizeof(L),0);
FOR i:=1 TO m DO
FOR j:=1 TO n DO
IF A[i]=B[j] THEN L[i,j]:= 1 + L[i-1,j-1]
ELSE L[i,j]:=Max(L[i-1,j],L[i,j-1]);
END;
+ Tra bng
Xu chung C:=
Xut pht t L[n,m] hng v L[0,0].
Nu A[i]=B[j] chn A[i] hoc B[j] a vo u dy C ri li v L[i-1,j-1]
Nu Ai<>Bj th:
Nu L[i-1,j] > L[i,j-1] li v L[i-1,j]
Nu L[i-1,j] <= L[i,j-1] th li v L[i,j-1]
43
PROCEDURE Trabang;
VAR i, j:byte;
BEGIN
C:=;
I:=m; j:=n;
REPEAT
IF A[i]=B[j] THEN
BEGIN
C:= A[i]+C;
Dec(i); Dec(j);
END
ELSE IF L[i,j-1] > L[i-1,j] THEN j:=j-1 ELSE i:=i-1
UNTIL (i=0) or (j=0);
END;
9. Bi ton chia ko
bi: Cho n gi ko (n 50). Gi th i c A[i] vin ko. Cn chia cc gi ko ny cho
2 em b sao cho tng s vin ko mi em nhn c chnh lch t nht. Mi em nhn
nguyn gi. Khng m gi ko ra chia li. Hy lit k s ko trong cc gi ko mi em
nhn c.
Input:
n
A[1] A[2] A[n]
Output: S ko trong cc gi ko mi em nhn c, v tng s ko mi em nhn c.
Hng dn gii:
Gi S l tng s vin ko S := A[1] + A[2] + + A[n];
S2 l na tng s ko: S2 := S div 2;
Cho em b th nht chn trc nhng gi ko sao cho tng s vin ko m em nhn
c l ln nht nhng khng vt qu s ko S2.
Gi ko no em b th nht khng chn th em b th hai chn.
Bi ton c a v Bi ton ba l 1( hng dn trn).
10. Bi ton i tin
bi: Cho n loi t giy bc. T giy bc th i c mnh gi A[i]. S t mi loi khng
gii hn. Cn chi tr cho khch hng s tin M ng. Hy cho bit mi loi tin cn bao
nhiu t sao cho tng s t l t nht. Nu khng i c, th thng bo KHONG DOI
DUOC. N < 50; A[i] < 256; M < 10000.
Input:
nM
A[1] A[2] A[n]
44
V d:
3 18
3 10 12
Output: Tng s t phi tr. S t mi loi.
Hng dn gii: Tng t Bi ton ba l 3
Gi Fx[i, j ] l s t t nht c dng tr s tin j ng khi c i loi tin t loi 1 n
loi i. Vi i = 1 .. n; j = 1 .. M.
X[i, j] l s t giy bc loi th i c dng chi tr s tin j ng.
* Trng hp n gin ch c 1 loi tin chn: Ta tnh Fx[1, j] vi mi j
F[1,j]
F[1,j]
CAYKHE.OUT
63
3124
MUADAT.OUT
30
4321
Bi 3: Xy thp
C N khi hnh hp ch nht. Ngi ta mun xy mt ci thp bng cch chng cc
khi ny ln nhau. m bo an ton, cc khi c t theo nguyn tc:
+ Chiu cao ca mi khi l kch thc nh nht trong ba kch thc
+ Cc mp ca cc khi c t song song vi nhau sao cho khng c phn no
ca khi nm trn b cha ra ngoi so vi khi nm di.
Hy tm phng n xy dng thp t c cao nht.
D liu vo: Cho trong file TOWN.INP:
Dng u tin l s N
N dng tip, mi dng ghi 3 s nguyn dng l kch thc ca mt khi . Cc
khi c nh s t 1 theo trnh t xut hin trong file.
46
TOWN.OUT
4
1575
9555
5551
4242
Dng th ba cha cc s nguyn dng A[1]], A[2], ..., A[n] (hai s lin tip trn
dng c ghi cch nhau bi du cch; A[i]2000000, i=1,2,...,N)
V d:
TOURISM.INP
4
300
250 310 550 590
TOURISM.OUT
500
2
24
Bi 5: Duyt im
Xt li vung to thnh t n*n dng, cc ng ca li c nh s t 1 n n
t tri qua phi v t trn xung di (1n20000). mi hng th i, ngi ta cho on
thng xc nh bi hai im li v ri (1lirin, i=1n).
Yu cu: Xc nh di ca ng i ngn nht dc theo cc cnh ca li t im
(1,1) n im (n,n) v tho mn cc iu kin:
Ch i sang phi, sang tri hoc xung di
i qua tt c cc im thuc cc on thng cho
D liu: Vo t file vn bn VISIT.INP:
Dng u tin cha s nguyn dng n
Dng th i trong n dng sau cha hai s nguyn dng li, ri
Kt qu: a ra file vn bn VISIT.OUT mt s nguyn duy nht l di ca ng i
ngn nht tm c.
V d:
VISIT.INP
6
26
34
13
12
36
45
VISIT.OUT
24
48
WTOE.OUT
9
21
49
Chuyn :
L THUYT TH
I. MT S KHI NIM
Mt th (Graph) G (V,E) bao gm mt tp hp hu hn V cc nt hay nh (Vertices)
v mt tp hu hn E cc cp nh m ta gi l cung (edges)
V d: Trong thc t ta bt gp nhiu th nh mng my tnh, mng in, mng giao
thng.Bng hnh v, th c th m t nh sau:
a)
b)
Hnh 1: th
51
Hnh 2: th c trng s
+ i vi th v hng G=(V,E). Xt mt cnh e E. nu e=(u, v) th ta ni hai nh u v
v l k nhau v cnh e ny lin thuc vi nh u v nh v
+ Vi mt nh v trong th v hng, ta nh ngha bc (degree) ca v, k hiu l deg(v)
l s cch cnh lin thuc vi v
II. BIU DIN TH
1. Danh sch nh k
i vi mi nh trong th trong hnh 3, ta c danh sch cc nh k tng ng:
Hnh 3
nh
A
B
C
D
E
F
Cc nh k
B, F
A, C, , F
B, D
B, C, E, F
D F
A, B, D, E
Danh sch cc nh k
lu tr th trong file, ta c th s dng danh sch cc nh k. Vi th trong
hnh 3, cu trc ca file lu tr n trong file DOTHI.INP nh sau:
DOTHI.INP
Gii thch
6
- Dng u l s nh ca th
BF
- Dng th 2 l cc nh k ca nh A
ACDF
- Dng th 3 l cc nh k ca nh B
BD
.
BCEF
- Dng th 7 l cc nh k ca nh F
DF
ABDE
52
2. Ma trn k
Danh sch cc nh k ca th hnh 3 c th c biu din li bng mt ma trn A
c kch thc 6x6 trong gi tr ca (i,j) th nh i v j k nhau. Quy c nh sau:
A
B
C
D
E
A
0
0
0
1
0
B
1
0
1
0
0
C
1
0
0
0
0
D
0
1
1
0
1
E
1
0
0
0
0
Hnh 4
+ Ma trn biu din th v hng l ma trn i xng, iu ny khng ng vi th
c hng
3. Danh sch cnh
Ngoi hai cch biu din trn ta c th biu din th bng cch a ra tt c cc cnh
ca th
th trong hnh 3 c biu din trong file DOTHI.INP nh sau
DOTHI.INP
AB
AF
BC
BD
BF
CD
DE
DE
EF
Gii thch
Mi dng l mt
cnh ca th
ni hai nh k
nhau
53
III. DUYT TH
Cho th G=(V,E), duyt th l cch thm tt c cc nh ca th theo mt trt t
no
V d: Cho th hnh 5.a th ta c hai trt t thm cc nh ca th l tm kim theo
chiu su (hnh 5.b) v tm kim theo chiu rng (hnh 5.c) vi nh xut pht l nh 1
a)
b)
c)
Hnh 5
1. Tm kim theo chiu su
a. tng:
Xut pht t mt nh u trong th, ta ln lt duyt qua tt c cc ln cn v ca u, nu
v cha c thm th thc hin thm v. Qu trnh duyt th c tip tc vi nh v sao
cho tt c cc nh ca th u c thm.
b. Gii thut
PROCEDURE DFS(u);
{u l mt nh ca th G}
BEGIN
Thm u;
FOR cc nh k v ca u DO
IF v cha c thm THEN DFS(v)
END;
c. Chng trnh:
vit c chng trnh da vo gii thut trn, ta cn tr li cc cu hi
+ Thm u l thc hin cng vic g? y l cu lnh mang tnh tng qut, vic thm u
cn ty thuc vo tng yu cu c th thc hin cc cng vic khc nhau
+ Lm th no xc nh c v l nh k ca u? Nu ta biu din th bng ma trn
A th ch cn kim tra gi tr A[u,v], nu bng 1 th v l nh k ca u
54
c. Chng trnh:
Tham kho th tc sau y
PROCEDURE BFS(u:integer);
VAR v,dinh,dau:integer;
chon:Array[0..100]of boolean;
Q:Array[0..100] of integer;
56
BEGIN
Fillchar(chon,sizeof(chon),false);
dinh:=1;
dau:=1;
write(u:3);
Q[1]:=u;
chon[u]:=true;
WHILE dinh>=dau DO
BEGIN
u:=Q[dau];
dau:=dau+1;
IF chon[u]=false THEN write(u:3);
chon[u]:=true;
FOR v:=N DOWNTO 1 DO
IF(A[u,v]=1)and(chon[v]=false)THEN
BEGIN
dinh:=dinh+1;Q[dinh]:=v;
END;
END;
END;
THEN
57
Trong hai thnh phn lin thng u tin c 4 nh, thnh phn cn li ch c mt nh
duy nht. Ta d dng thy rng trong thnh phn lin thng u tin c 4 nh (1, 2, 3, 4) v
t 1 nh bt k trong 4 nh ny c th i n cc nh cn li nhng khng c ng i
n cc nh 5, 6, 7, 8, 9. nh 9 cng c xem l mt thnh phn lin thng v n khng
c ng i n tt c cc nh cn li.
Hai gii thut DFS v BFS ch thc hin thm c cc nh trong mt thnh phn lin
thng nn ta c th s dng hai gii thut ny lit k cc thnh phn lin thng trong
th.
on chng trnh sau lit k tt c cc thnh phn lin thng ca th:
58
FOR u=1 TO N DO
IF nh u cha c thm THEN
BEGIN
DFS(u); {BFS(u)}
Writeln;
END;
Cc nh
trong ng
i n
0
1
1, 2
1, 2, 3
nh k c
trong ng i
n
0
1
2
3, 1
Chu
trnh
Khng
Khng
Khng
C
59
61
Bc
Khi
to
1
2
3
4
5
Tp S
nh
c
chn
Rng
1
1, 6
1, 6, 5
1, 6, 5, 4
1, 6, 5, 4,
3
6
5
4
3
20
11
20
20
17
17
11
10
10
10
7
7
7
7
2
2
2
2
16
16
D[6]+A[6,i]=
x
2+ 2+ 2+
2+
2+5
* Lu : nh 1 a vo tp S nn ta khng thc hin tnh D[6]+A[6,1]
Trong bng trn ta thy D[6]+A[6,5] (=7)<D[5](= ) nn gn li D[5]= D[6]+A[6,5],
cc gi tr khc gi nguyn
Sau khi gn li, ta c gi tr ca mng D l
i=
1
2
3
4
5
6
D[i]=
20
11
7
2
62
63
Bc
Khi
to
1
2
3
4
5
Tp S
nh
c
chn
1
1, 6
1, 6, 5
1, 6, 5, 4
1, 6, 5, 4, 3
1, 6, 5, 4, 3,
2
6
5
4
3
20(1)
20(1)
17(4)
17(4)
(5)
(5)
16(4)
16(4)
11(1)
10(5)
10(5)
10(5)
7(6)
7(6)
7(6)
7(6)
2(1)
2(1)
2(1)
2(1)
2. Mt ngun mi ch
Bi ton: Cho th G=(V,E) c cc nh c nh s th t t 1 n N. Yu cu tm
ng i ngn nht t nh u n tt c cc nh cn li.
T bi ton mt ngun mt ch ta c th p dng tm ng i ngn nht t mt nh
ngun u n tt c cc nh cn li bng cu lnh: FOR i:=1 TO n DO Dijkstr(A,u,i); Tuy
nhin, trong v d trn, thut ton Dijkstra p dng cho vic tm ng i ngn nht t nh
1 n nh 2, tt c cc nh c a vo tp S, iu ny cng ng ngha vi vic trong
mng D, gi tr D[i] l di ng i ngn nht t nh 1 n nh i v trong mng Luu
cng tm c ng i ngn nht t nh 1 n cc nh cn li. V d:
+ nh 1 n nh 6: 61 ( di 2)
+ nh 1 n nh 5: 561 ( di 7)
+ nh 1 n nh 4: 4561 ( di 10)
64
+ nh 1 n nh 3: 34561 ( di 16)
gii quyt mt bi ton trn ta ch cn sa li thut ton Dijkstra nh sau:
PROCEDURE SHORTEST-PATH(A,u);
BEGIN
S=rng;
D[i]:=A[u,i];luu[i]:=u; (1iN)
a u vo S
m:=u;
WHILE s nh trong S<N DO
BEGIN
Chn m sao cho m S v m=min(D[i]) (1iN)
a m vo S
FOR tt c ln cn i ca m DO
IF i S v D[i]>D[m]+A[m,i] THEN
BEGIN
D[i]:=D[m]+A[m,i]
Luu[i]:=m;
END;
END;
END;
Ngoi cch p dng gii thut Dijkstra ngi ta thng dng n gii thut Floyd tm
ng i ngn nht gia tt c cc nh trong th
65
a)
b)
c)
Hnh 6
Hnh 6.b v 6.c l hai cch xy dng cc con ng sao cho t mt nh trong th
c ng i n tt c cc nh cn li. Ta c bi ton tng qut: Cho th lin thng
G=(V,E), trong E c mt s cnh. Hy tm cch loi b mt s cnh sao cho th vn
lin thng nhng khng c chu trnh n. Ta ni y l bi ton tm cy khung ca mt
th. th 6.b v 6.c l hai cy khung tm kim theo chiu su v tm kim theo chiu rng
ca th c nh xut pht l A. Ngoi ra ta c th lit k mt s cy khung khc ca th
hnh 6
SAU.OUT
12
24
48
85
86
63
37
RONG.OUT
12
13
24
25
36
37
48
Khi duyt th theo DFS, ta s c c mt cy khung theo chiu su, tuy nhin th tc
trn ch a ra th t cc nh c duyt. Trong bi ton v d cn phi a ra cc cung
ca cy khung, do vy khi nh v tha mn yu cu l nh k ca u v v cha c thm th
ta a ra cung (u,v) l mt cung trong cy khung cn tm. Th tc DFS c sa li:
PROCEDURE
DFS_KH(u:integer);
BEGIN
nh du u c chn
FOR cc ln cn v ca u DO
IF v cha c chn THEN
BEGIN
In cung (u, v);
DFS(v);
END;
END;
67
3. Cy khung cc tiu
a. Khi nim
i vi bi ton tm cy khung ta khng quan tm n vic c phi l th G c
trng s hay khng v ch cn tm ra mt th lin thng khng c chu trnh n c y
cc nh ca G l c. Tuy nhin trong th c trng s, cc cy khung li c gi tr khc
nhau, gi tr ca cy khung l tng trng s ca cc cung trong cy khung , vn l phi
tm ra cy khung c gi tr nh nht. Cy khung nh vy gi l cy khung cc tiu
b. Bi ton:
Cho th c trng s G= (V,E) gm N nh v M cung. Yu cu tm ra cy khung c gi
tr nh nht ca G
V d: th hnh 7 v cy khung cc tiu tng ng vi n
a. th G
b. Cy khung cc tiu
Hnh 7
68
PARTY.OUT
1
3
6
2
4
5
PARTY.INP
10
AX
BI
ABTX
AS
IK
KS
BE
AB
EK
AK
PARTY.OUT
1
3
2
5
6
4
8
7
9
10
PARTY.INP
6
AB
BC
CD
DE
EF
FG
PARTY.OUT
NO SOLUTION
Hng dn:
Ta chuyn bi ton v th: Mi nh khoa hc tng ng vi mt nh ca th, trn
th c cung (i,j) nu nh khoa hc th i c chung 1 lnh vc vi nh khoa hc th j.
Sau khi chuyn v th ta ch cn p dng thut ton tm kim chu trnh i qua tt c
cc nh
Bi 2: Ba tic
Mt ba tic ln c N khch tham d trong mt cn nh c nhiu phng, mi ngi
khch u c pht mt phiu n c ghi s th t khi n tham gia. Tuy nhin h c th
khng quen nhau. trnh vic xp mt ngi khch vo mt phng m ngi khng
bit tt c mi ngi trong phng, ban t chc quyt nh lp ra danh sch nhng ngi
quen bit nhau sau sp xp h vo cng mt phng. Danh sch nhanh chng c lp ra
di dng hai ngi quen nhau s c ghi trn mt dng bng s th t ca h, tuy nhin
cng vic chia nhm li gp kh khn v s lng khch tham d qu ng. Da vo danh
71
sch c, hy gip ban t chc chia nhm v cho bit s lng khch ca nhm ng nht.
Kch thc v s lng ca phng khng hn ch
D liu vo: Tp tin vn bn NHOM.INP
+ Dng u ghi s nguyn dng N (2N10000)
+ Cc dng tip theo ghi hai s x v y vi ngha hai ngi khch c s th t x v y
quen nhau
D liu ra: Ghi vo tp tin vn bn NHOM.OUT
+ Danh sch mi nhm c ghi trn mt dng
+ Dng cui cng l s lng ca nhm khch ng nht
Cc s cch nhau t nht mt du cch
V d:
NHOM.INP
10
16
17
23
28
38
39
45
4 10
5 10
89
NHOM.OUT
167
2389
4 5 10
4
Hng dn: p dng gii thut tm kim trn th xc nh cc thnh phn lin
thng
Bi 3: Cy khung
Cho th G=(V,E) c N nh v M cung. Yu cu vit chng trnh tm cy khung theo
chiu su v cy khung theo chiu rng ca th G.
D liu vo: tp tin vn bn CAYKHUNG.INP
+ Dng u gm 2 s nguyn N v M
+ M dng tip theo, mi dng 2 s nguyn l mt cung ca G
D liu ra: tp tin vn bn CAYKHUNG.OUT
+ N-1 dng u tin, mi dng ghi hai s nguyn l mt cung trong cy khung theo chiu
su
72
+ N-1 dng tip theo, mi dng ghi hai s nguyn l mt cung trong cy khung theo
chiu rng
V d:
CAYKHUNG.INP
68
12
15
23
26
36
34
46
56
CAYKHUNG.OUT
12
23
34
46
65
12
15
23
26
34
Hng dn: S dng gii thut tm kim theo chiu rng v tm kim theo chiu su
tm cy khung tng ng
Bi 4: Ni mng
Cho N my tnh c nh s t 1 n N. Chi ph ni mng gia my i v my j l Cij.
Yu cu: Tm cch ni dy cp sao cho cc my tnh trong mng l u kt ni c vi
nhau v chi ph l nh nht
D liu vo: c t file vn bn NOIMANG.INP c ni dung
+ Dng u l s nguyn N
+ Tip theo l mt ma trn kch thc NxN gm cc s nguyn, trong gi tr ca (i,j)
cho bit khong cch t my i n my j. Trn cng mt dng cc s cch nhau mt du
cch
Gii hn: 2N1000
D liu ra: Ghi vo file vn bn NOIMANG.OUT gm
+ Dng 1 l chi ph nh nht
+ T dng 2 tr i mi dng l mt cp cnh c ni
NOIMANG.INP
6
0 16 3 12 0 0
16 0 12 0 7 0
NOIMANG.OUT
37
13
25
73
3 12 0 13 16 10
32
12 0 13 0 0 5
36
0 7 16 0 0 16
64
0 0 10 5 16 0
Hng dn: p dng gii thut Karuskal hoc Prim tm cy khung cc tiu
Bi 5: Trong lng c mt ph ng ni ting khoe khoang, mt hm thy m tr con ang
chi, khe rung t ca mnh, ph ng thch : Ph ng c rt nhiu rung t, cc
tha rung c nh s t 1 n N v u c ng i n nhau, tr con hy ch ra tt
c cc cch ng ta c th i t tha rung th i n tha rung th j sao cho mi tha
rung c i qua khng qu 1 ln. m tr ln lt k ra cc ng i nhng do s lng
rung t ca ph ng qu nhiu nn k mi m khng ht.
Yu cu: Hy lp trnh gip tr con trong lng thc hin lit k cc ng i theo yu
cu ca ph ng
D liu vo: file vn bn DD.INP
+ Dng u gm 3 s nguyn N, u, v (2N1000; 1u,vN)
+ Cc dng tip theo gm 2 s nguyn i v j l mt cung trong th G, hai s cch nhau
bng 1 du cch
D liu ra: file vn bn DD.OUT
+Mi ng i c ghi trn mt dng
+ Hai s trn mi dng cch nhau bng 3 k t -->
V d:
DD.INP
515
12
13
14
24
25
34
45
DD.OUT
1-->2-->4-->5
1-->2--> 5
1-->3--> 4-->2-->5
1-->3--> 4--> 5
1-->4-->2-->5
1-->4-->5
DIADIEM.OUT
36
6
653
75
MC LC
Chuyn : PHN TCH THIT K THUT TON................................................................... 1
PHN 1: THUT TON V PHN TCH THUT TON ........................................................ 1
I. KHI NIM BI TON V THUT TON ......................................................................... 1
1. Khi nim bi ton ................................................................................................................... 1
2. Khi nim thut ton: ............................................................................................................... 1
3. Cc bc gii bi ton trn my tnh:....................................................................................... 1
a. Xc nh bi ton: ............................................................................................................ 1
b. Thit k hoc la chn thut ton: ................................................................................... 2
c. Vit chng trnh:............................................................................................................. 2
d. Kim th v hiu chnh: ................................................................................................... 2
e. Vit ti liu........................................................................................................................ 3
II. PHN TCH THUT TON................................................................................................... 3
1. phc tp ca thut ton: ...................................................................................................... 3
a. Dng mu chun .............................................................................................................. 3
b. Phn tch thut ton ......................................................................................................... 3
2. K php phc tp ca thut ton .......................................................................................... 4
3. Cc cch xc nh phc tp ca thut ton.......................................................................... 4
a. Quy tc hng s ................................................................................................................ 4
b. Quy tc cng ..................................................................................................................... 4
c. Quy tc ly max ................................................................................................................ 4
d. Quy tc nhn .................................................................................................................... 5
4. Cc thut ng thng dng cho phc tp thut ton ........................................................... 5
5. nh gi thi gian thc hin chng trnh .............................................................................. 5
6. Mt s v d ............................................................................................................................. 6
BI TP .......................................................................................................................................... 7
PHN 2: THIT K THUT TON .............................................................................................. 9
I. THUT TON DUYT ............................................................................................................. 9
1. Phng php: ............................................................................................................................ 9
2. Gii cc bi ton cu hnh t hp bng thut ton duyt........................................................ 10
a. T hp: ........................................................................................................................... 10
b. Chnh hp lp: ................................................................................................................ 12
c. Chnh hp khng lp: ..................................................................................................... 13
3. Bi ton 8 qun hu ................................................................................................................ 15
BI TP ........................................................................................................................................ 17
II. THUT TON SP XP....................................................................................................... 18
1. Tm quan trng ca bi ton sp xp: .................................................................................... 18
2. Sp xp trong v sp xp ngoi .............................................................................................. 18
3. Pht biu bi ton: .................................................................................................................. 18
4. Cc thut ton sp xp n gin: ............................................................................................ 19
a. Sp xp ni bt (sp xp tro i - Bubble Sort): .......................................................... 19
b. Sp xp chn (Selection Sort): ....................................................................................... 20
c. Sp xp thm dn (sp xp xen - Insertion Sort): ........................................................... 22
5. Thut ton sp xp nhanh (QuickSort): .................................................................................. 23
6. Thut ton sp xp ha nhp (trn) hai ng trc tip (MergeSort): ................................... 24
a. Trn hai dy sp xp: ................................................................................................ 24
b. Ha nhp hai ng trc tip ...................................................................................... 26
BI TP ........................................................................................................................................ 27
76
b. Bi ton: ......................................................................................................................... 68
c. Gii thut Prim ............................................................................................................... 69
d. Gii thut Karuskal ........................................................................................................ 70
e. So snh Prim v Karuskal .............................................................................................. 70
BI TP ........................................................................................................................................ 70
[2].
[3].
[4].
[5].
[6].
[7].
[8].
[9].
78