Professional Documents
Culture Documents
NGUYN CH TRUNG
NGUYN TH THU THY
H NI 2010
MC LC
TI LIU THAM KHO............................................................................................................... 4
Chng 1. CC KHI NIM C BN ........................................................................................ 5
1. Thut ton (gii thut, thut gii) ............................................................................................ 5
1.1. nh ngha ........................................................................................................................ 5
1.2. Cc c trng ca thut ton ............................................................................................ 5
2. Phn tch thut ton ................................................................................................................. 5
2.1. Ti sao phi phn tch thut ton.................................................................................... 10
2.2. Thi gian thc hin thut ton ....................................................................................... 11
2.3. Khi nim ph1 phc tp thut ton ........................................................................... 15
3.1. Qui tc hng s............................................................................................................... 15
3.2. Qui tc cng ................................................................................................................... 16
3.3. Qui tc ly max .............................................................................................................. 16
3.4. Qui tc nhn ................................................................................................................... 17
3. Cc k thut nh gi phc tp thut ton ....................................................................... 17
3.1. Cu lnh n .................................................................................................................. 17
3.2. Cu lnh hp thnh......................................................................................................... 17
3.3. Cu lnh lp vi s ln lp bit trc for-do.................................................................. 18
3.4. Cu lnh r nhnh if ....................................................................................................... 19
3.5. Cu lnh lp vi s ln lp cha bit trc while, repeat .............................................. 19
4. Mt s v d minh ha thit k thut ton v nh gi phc tp...................................... 21
Bi ton 1.1. Tnh gi tr gn ng ca exp(x) theo khai trin Taylor.................................. 21
Bi ton 1.2 Thut ton tm kim tun t.............................................................................. 22
Bi ton 1.3 Thut ton tm kim nh phn ........................................................................... 22
Bi ton 1.4 Thut ton sp xp chn la ............................................................................. 23
5. Phn tch chng trnh (con) qui ...................................................................................... 24
5.1. Khi nim v qui ....................................................................................................... 24
5.2. Chng trnh (con) qui .............................................................................................. 25
5.3. Xy dng phng trnh (cng thc) qui.................................................................... 25
5.4. Gii phng trnh qui v nh l Th........................................................................ 26
BI TP CHNG 1 .............................................................................................................. 30
Chng 2 CHIA TR .............................................................................................................. 33
1. S chung ca thut ton chia tr .................................................................................. 33
1.1. Thut ton ................................................................................................................... 33
1.2. Thut ton .................................................................................................................... 34
1.3. Thut ton tng qut .................................................................................................... 35
2. Mt s v d minh ha Chia tr......................................................................................... 35
2.1. Thut ton sp xp trn (Merge Sort) ............................................................................ 35
2.2. Thut ton sp xp nhanh (QuickSort)........................................................................... 37
2.3. Nhn s nguyn ln........................................................................................................ 39
2.4. Mng con trng s ln nht............................................................................................ 40
BI TP CHNG 2 .............................................................................................................. 43
Chng 3. QUY HOCH NG ................................................................................................ 45
1. Gii thiu phng php qui hoch ng ............................................................................... 45
2. Phng php chung ca qui hoch ng............................................................................... 45
3. Mt s v d minh ha........................................................................................................... 46
3.1. Dy con tng dn di nht .............................................................................................. 46
T thut ton (algorithm) xut pht t tn ca quc gia chu trung tm c xa l Khorezm, v sau l cc nc
cng ha x hi ch ngha Kazakh, Turkmen, and Uzbek. Vo khong nm 825 sau cng nguyn, nghin cu chnh
v i s v h thng khi nim s hc n c vit bi Mohammed, l con trai ca Musa (Khorez); ting
Lattinh ngha l bi Mohamed ibn Musa al-Khowarizmi. Vo nm 857, on vn bn ting ny c dch sang
ting Anh l "Algoritmi. T y, xut pht t cm t al-Khowarizmi, Hisab al-jabrw'sal-muqabalah
(Mathematics-al-jabrw'sal muqabalah) m chng ta c t algebra (i s)
Ax = b ,
(1)
xi =
i
,
(i =1,..., n),
(2)
I n = x n e x 1dx (n 1) .
0
I n = x n e x 1 10 n x n1e x 1dx = 1 nI n1 .
0
Ngoi ra ta c
1
I1 = xe x1dx = e x1 ( x 1)
1
0
1
0.3679.
e
0.2642
0.2073
0.1709
0.1455
0.1268
0.1124
0.1009
0.0916
0.0839
0.0774
0.0718
0.0669
0.0627
0.0590
0.0555
0.0572
-0.0295
1.5596
-30.1924
0 I n x n dx =
0
1
.
n +1
1
0.3679 b khuych i trong qu trnh tnh. C th nh sau: Thay v tnh chnh
e
1
~
xc I1 = ta tnh xp x ca n l I 1 = I 1 + , trong l sai s. Gi s cc tnh ton tip theo
e
khng mc phi sai s. Vi n = 2 ta c
tnh I 1 =
~
~
I 2 = 1 2 I 1 = 1 2( I 1 + ) = (1 2 I 1 ) 2 = I 2 2 .
~
~
Thu c I 2 vi sai s | I 2 I 2 |= 2 . Tng t, bc th n thay cho gi tr ng I n ta thu
~
~
c gi tr gn ng I n vi sai s | I n I n |= n! . Do , d c b th khi n ln, sai s vn
ln v ta khng th nhn c gi tr chp nhn c l gn ng cho I n .
Tn nhiu b nh
iu ny cng dn n cn phn tch thut ton. Khi phn tch thut ton, ta thng xem xt v
thi gian v b nh chi ph cho thut ton, trong ch yu phn tch v mt thi gian.
10
S ln thc hin
1.
write(n = );
2.
readln(n);
3.
T := 0;
for i := 1 to n do
begin
11
write(x = );
5.
readln(x);
6.
T := T + x;
end;
7.
T := T/n;
Phn tch v nh gi: Cc lnh 1, 2, 3 v 7 c thc hin mt ln. Thn vng lp gm cc lnh
4, 5, 6 c thc hin n ln. Vy T(n) = 3n + 4.
nh ngha 1.3. C ba loi thi gian tnh:
Thi gian tnh tt nht: L thi gian thc hin nhanh nht ca thut ton vi mt b d
liu vo no .
Thi gian tnh ti nht: L thi gian thc hin chm nht ca thut ton vi mt b d
liu vo no .
Thi gian tnh trung bnh: L trung bnh cng ca cc thi gian thc hin thut ton i
vi tt c cc trng hp thc hin thut ton (ng vi mt b d liu vo y ).
Cho dy s (a) gm n phn t a1, a2, ..., an. Hy tm v tr ca phn t c gi tr bng x cho trc
trong dy.
1.
i := 1;
1 ln
2.
found := false;
1 ln
found := true;
else
4.
i := i + 1;
if found then
5.
1 ln
else
6.
Phn tch v nh gi: Mi cu lnh 1, 2 lun thc hin 1 ln. Mt trong hai lnh 5 hoc 6 thc
hin mt ln. Vy thi gian thc hin thut ton lun c dng T(n) = 3 + k, trong k l s ln
thc hin cc cu lnh 3 v 4. Khi ta c th tm thi khng cn xem xt cc cu lnh 1, 2, 5, 6
na m ch cn xem xt cc cu lnh 3 v 4.
12
3n +
n(n + 1)
+3+ n
n 2 + 9n + 6
2
=
n +1
2(n + 1)
Phn tch thut ton theo ngha hp y l xc nh T(n) trong trng hp xu nht. Phn tch
thut ton theo ngha rng l vic la chn thut ton tt: tn t b nh, v c thi gian tnh
trong trng hp xu nht l chp nhn c (tc l tha mn tnh kh thi).
Mt s vn t ra: Khi phn tch thut ton, ngi ta t khi quan tm n tnh chnh xc ca
hm thi gian tnh m thng quan tm n tng ca hm ny.
V d 1.3 nh gi hm thi gian khi n tng
13
f ( n)
= C1
g ( n)
n
f ( n)
=
g ( n)
f ( n)
=0
g ( n)
Theo nh ngha trn, nh gi thi gian ti nht ca thut ton chnh l vic tnh O(.), nh gi
thi gian tt nht ca thut ton l vic tnh (.).
nh ngha 1.5. Khi hm thi gian tnh T(n) ca thut ton c biu din qua k hiu big-O th
T(n) c gi l phc tp thut ton (Complexity of Algorithms).
V d 1.4 Biu din hm thi gian theo cc k php big-O, omega, theta
Xt hm T(n) = 60n2 + 9n + 1,
1) Tnh O(.)
Ta c 60n2 + 9n + 1 60n2 + 9n2 + n2 = 70n2 vi n 1
Chn C1 = 70, g(n) = n2, N1 = 1 T(n) C1.g(n) hay T(n) = O(n2)
2) Tnh (.)
Ta c 60n2 60n2 + 9n + 1 vi n 1
Chn C2 = 60 , N2 = 1 T(n) = (n2)
3) Tnh (.)
V O(n2) = T(n) = (n2) T(n) = (n2).
Cc hm nh gi thng dng:
14
Hm
Tn gi: phc tp
O(C), O(1)
Hng s
O(log2n)
logarit
O(n)
tuyn tnh
O(nlogn)
nlog2n
O(n2)
bc 2
O(n3)
bc 3
O(nk)
a thc
O(an)
hm m
O(n!)
giai tha
nh gi
Chp nhn c
Khng chp
nhn c
n(n + 1) n 2 n
=
+
2
2 2
n2 + 1
2
= n 1+
n +1
n +1
Ta c n 1 +
V v
2
n n 1 , t C1=1; N1=1 th f(n) = O(n)
n +1
1
2
n n 1+
n 1 nn t C2 = 1/2; N2=2 th f(n) = (n)
2
n +1
15
n 2 + 9n + 6
(Trong V d 1.2). Ta c
2(n + 1)
16
T ( n) =
6
n 2 + 9n + 6 n 2 + 9n + 6
= n + 9 + n + 9n0 n N 0 = 6
2(n + 1)
n
n
T ( n) = O ( n )
Vy thut ton tm kim tun t c phc tp tuyn tnh.
c) T(n) = 60n2 + 9n + 9 (Trong V d 1.3). Ta c T(n) = O(n2)
s := sqrt(n)
1 ln
2.
readln(x);
1 ln
17
if s > x then
3.
s := s - x;
else
s := x - s;
end;
Hin nhin T(n) = 1 + 1 + 1 = 3 (ng nh qui tc cng) T(n) = O(1)
V d 1.8 Minh ha qui tc max i vi cu lnh hp thnh
n ln
write(i*i:6);
writeln;
1 ln
end;
D thy T(n) = 1 + n T(n) = O(n)
ng nh qui tc max: T(n) = O(max(1, n)) = O(n)
T (n) = n.t
V d 1.9. nh gi thi gian tnh ca vng lp khi P(i) l hng s
for i := 1 to n do begin
1.
write(x = );
2.
readln(x);
3.
S := S + x;
P(i)
end;
T(P(i)) = 3. Do T(n) = n.3 T(n) = O(n)
18
T (n) = t (i )
i =1
for i := 1 to n do begin
for j:=1 to i do
1.
P(i)
write(j:5);
2.
writeln;
end;
T ( P(i )) = i + 1
n
T (n) = (i + 1) = n + i = n +
i =1
i =1
n(n + 1) 1 2 1
= n + n
2
2
2
T ( n) = O ( n )
2
if n < 1 then
1.
2.
n ln
write(i : 5);
1.
i := n;
1 ln
19
S := 0;
1 ln
write(x = );
4.
readln(x);
5.
S := S + x;
6.
i : = i - 1; end;
P(i) ln
1.
i := n;
1 ln
2.
S := 0;
1 ln
write(x = );
P(i)
4.
readln(x);
5.
S := S + x;
gm 4
cu lnh
c bn
6.
i : = i div 2;
end;
1.
i := n;
1 ln
20
S := 0;
l ln
for j := 1 to i do
4.
write(j:5);
5.
writeln;
6.
i := i div 2;
P(i )
end;
Phn tch, nh gi: P(i) gm hai cu lnh c bn 5 v 6, v mt cu lnh c bn 4 thc hin i
ln.
-
T ( n ) = 2 + 2 k + n (1 +
21
s := 1; p := 1;
for i :=1 to n do begin
3.
p := p * x/i;
4.
s := s + p;
P(i)
end;
b) T(n) = 2 + 2*n T(n) = O(n)
i := 2; found := false;
1 ln
4.
else i := i + 1;
5.
6.
P(i)
1 ln
Trong trng hp xu nht, lnh r nhnh - thn vng lp while thc hin n-1 ln. Do ta c
T(n) = 2 + (n-1) + 1 = n + 2 T(n) = O(n).
d := 1;
1 ln
2.
c := n;
1 ln
3.
found := false;
1 ln
22
k := (d+c) div 2;
5.
6.
7.
P(i)
8.
9.
1 ln
Trong trng hp xu nht, khng c x trong dy, ta cn tnh s ln thc hin khi lnh P(i)
trong thn vng lp, gm 2 lnh c bn. V mi ln i qua vng lp di ca dy gim i mt
na, nn sau vng lp th k di ca dy cn l n/2k. Vng lp kt thc ti ln th k m di
cn li ca dy l n/2k = 1 hay k = log2n. Khi :
T(n) = 4 + 2k = 4 + 2log2n log2n + 2log2n vi n N0 = 3. T(n) 3log2n T(n) = O(log2n).
n-1 ln
2.
n-1 ln
for j := i + 1 to n do
P(i)
k := j;
4.
5.
a[k] := a[i];
n-1 ln
6.
n-1 ln
23
n-1 ln
for j := i + 1 to n do
p ln
2.
3.
4.
tg := a[i];
5.
a[i] := a[k];
6.
n-1 ln
end;
Do T2(n) = 2(n-1) + n(n-1)/2 = (1/2)n2 + (3/2)n - 2.
Vy T2(n) = O(n2).
Ta thy khi thay i thut ton, phc tp khng thay i nhng thi gian tnh ton t hn.
24
f ( n) =
n. f (n 1) if n > 0
Nh vy bi ton T tnh f(n) c gii da vo bi ton T tnh f(n-1) c dng ging nh T. Bi
ton T tnh f(n-1) li c gii da vo bi ton T tnh f(n-2) c dng ging nh T (hoc nh
T), c tip tc qu trnh qui v cui cng n phn neo, ta nhn c bi ton Tn c
gii hon ton khc, l f(0) = 1.
25
T ( n) =
T (n 1) + c if n > 0
V d 1.18 Vit phng trnh quy tnh s hng Fibonaci th n
f ( n) =
f (n 1) + f (n 2) if
n>2
T ( n) =
T (n 1) + T (n 2) + c if
n>2
Trong hng s dng c l thi gian thc hin php cng v php gn.
26
T ( n) =
T (n 1) + c if n > 0
Gii:
T(n) = T(n-1) + c
= T(n-2) + 2c
= T(n-3) + 3c
=
= T(n-n) + n.c = T(0) + nc = 2 + n.c
T(n) = O(n).
V d 1.20 phc tp qui khi li gi qui gim 1/2 kch thc d liu u vo
c1 if n = 1
= T(n/22) + 2c
bc 3 :
= T(n/23) + 3c
bc k
= T(n/2k) + k.c
= T(1) + k.c
c1 if n = 1
= 22T(n/22) + 2c.n
bc 3 :
= 23T(n/23) + 3c.n
bc k
= 2kT(n/2k) + k.c.n
27
(1)
(2)
S dng phng trnh c trng (2) nh gi phc tp ca thut ton qui c phng
trinh qui (1) da vo hai trng hp sau y :
Nu phng trnh (2) c hai nghim phn bit r1 v r2 th phng trnh qui c dng :
T(n) = .r1n + .r2n
(3)
(4)
T ( n) =
6 if n = 1
5T (n 1) 6T (n 2) if
n >1
Gii
Xt phng trnh qui
T(n) = 5T(n-1) - 6T(n-2)
(1)
(2)
Phng trnh (2) c hai nghim phn bit r1 = 2 v r2 = 3. Do phng trnh qui (1) c th
vit di dng
T(n) = r1n + r2n
Cc h s , c xc nh bi cc iu kin neo v iu kin u
V T(0) = 2, T(1) = 6, do :
28
1
1
2 + 3 = 6
= 2
T (1) = r1 + r2 = 6
Vy T(n) = 0. 2n + 2.3n = 2.3n T(n) = O(3n)
V d 1.22 nh gi phc tp thut ton qui bng phng trnh c trng
T ( n) =
7 if n = 1
6T (n 1) 9T (n 2) if
n >1
Gii
Xt phng trnh qui
T(n) = 6T(n-1) - 9T(n-2)
(1)
(2)
Phng trnh (2) c hai nghim kp r0 = 3. Do phng trnh qui (1) c th vit di dng
T(n) = .r0n + .n.r0n
Cc h s , c xc nh bi cc iu kin neo v iu kin u
V T(0) = 1, T(1) = 7, do :
=1
T (0) = r10 + .0.r20 = 1
=1
1
1
3 + 3.1. = 7
= 4 / 3
T (1) = r1 + .1.r2 = 7
Vy T(n) = 1. 3n + (4/3).n.3n T(n) = O(n3n)
c) S dng nh l th
nh l th
(1)
29
BI TP CHNG 1
Phn tch thi gian thc hin thut ton v nh gi phc tp thut ton ca cc on chng
trnh sau:
1.
30
for i := 1 to n do
if i mod 2 = 0 then c1 := c1 + 1
else c 2 :+ c2 + 1;
3.
for i :=1 to n do
if i mod 20 = 0 then
for j := 1 to n do c := c + 1;
4.
a := 0;
b := 0;
c := 0;
for i :=1 to n do
begin a := a + 1;
b := b + i;
c := c + i*i;
end;
5.
i := n;
d := 0;
while i > 0 do
begin i := i - 1;
d := d + i;
end;
6.
i := 0;
d := 0;
repeat
31
d := 0;
for i := 1 to n - 1 do
for j := i + 1 to n do d := d + 1;
8.
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;
9.
d := 0;
while n > 0 do
begin n := n div 2;
d := d + 1;
end;
10. a ra mt thut ton tm phn t ln nht ca mt dy hu hn s thc.
32
Chng 2 CHIA TR
tng ca phng php chia tr (Divide & Conquer) l gii quyt bi ton thnh 3 bc
-
Gi s thi gian chia v tng hp cc bi ton con l tuyn tnh, tc l c phc tp a thc
O(n) hay d.n.
Khi :
T = cn2
= (3/4)cn2 + (1/4)cn2
T = 3T + dn = 3c(n/2)2 + dn = (3/4)cn2 + dn
T(n) = O(n2)
T(n) = O(n2)
(Tc l T bng tng ca thi gian tr (3/4)cn2 + thi gian tng hp dn).
T , nu dn < (1/4)cn2 d < cn2/4 n > 4d/c th thut ton nhanh hn thut ton . iu
ny lun ng vi n ln. Tuy nhin ta thy thut ton mi ch thay i c nhn t hng
s cha thay i c bc nhng cng hiu qu khi n ln. Ni cch khc, phc tp thut ton
khng thay i, nhng thi gian thc hin thut ton c ci thin.
Th tc Beta di y th hin thut ton
procedure
Beta(n)
begin
i. Chia bi ton thnh ba bi ton con kch thc n/2;
ii. Gii mi bi ton con bng thut ton ;
iii. Tng hp li gii ca cc bi ton con;
33
Vic chia tr r rng c xu hng lm gim thi gian tnh ton. V th cc bi ton con nn
tip tc c chia nh nh th khi cn c li, tc l khi cn tha mn iu kin n > 4dc. Ni
cch khc, cc bi ton con s tip tc c chia nh cho n khi vic chia khng lm gim
thi gian tnh (tc l khi n 4dc) th dng li. iu ny c th hin trong thut ton di
y.
Gamma(n)
begin
if n n0 then {vic chia khng cn li na th gii trc tip}
Gii bi ton mt cch trc tip, bng thut ton
else begin
i. Chia bi ton thnh ba bi ton con kch thc n/2;
ii. Gii mi bi ton con bng thut ton ;
iii. Tng hp li gii ca cc bi ton con;
end;
end;
Nhn xt:
- Nu bi ton P gii bi thut ton th khng c chia tr.
- Nu bi ton P gii bng thut ton th c vic chia tr c thc hin mt ln, trong
c 3 bi ton con c chia, v c gii bng thut ton .
- Nu bi ton P c gii bng thut ton (thay v thut ton ) th qu trnh chia tr c
thc hin nhiu ln nu thi gian tnh vn tt hn, mi bi ton con s dng chnh thut ton
ca bi ton m, tc l thc hin bi mt li gii qui.
Ta c phng trnh qui sau:
4d
2
cn
if
n
c
T ( n) =
4d
n
3T ( ) + dn if n >
2
c
34
T (n) = (nlog b a )
Thut ton thu c c thi gian tnh l tt hn c thut ton v thut ton . Hiu qu thu
c trong thut ton c c l nh ta khai thc trit hiu qu ca vic s dng thut
ton .
begin
if n <= n0 then
Gii bi ton mt cch trc tip, bng thut ton
else begin
i. Chia bi ton thnh r bi ton con kch thc n/k;
ii. for (r bi ton con) do DivideAndConquer(n/k);
iii. Tng hp li gii ca cc bi ton con;
end;
end;
2. Mt s v d minh ha Chia tr
2.1. Thut ton sp xp trn (Merge Sort)
Bi ton 2.1 Cho dy (a) gm n phn t a1, a2, ..., an. Hy sp xp dy (a) theo th t khng
gim bng thut ton sp xp kiu trn.
35
(* Tr *)
k := k + 1;
if U[i]<V[j] then
begin
T[k]:=U[i];
i:=i+1;
end else
begin
T[k]:=V[j];
j:=j+1;
end;
end;
if n < m then <Ni on cn li ca mng V vo cui mng T>
else <Ni on cn li ca mng U vo cui mng T>;
end;
Gii thut sp xp ny minh ho tt c cc kha cnh ca chia tr. Khi s lng cc phn t
cn sp l nh th ta thng s dng cc gii thut sp xp n gin. Khi s phn t ln th ta
chia mng ra hai phn, tip n tr tng phn mt v cui cng l kt hp cc li gii.
36
c if n = 1
T ( n) =
n
2T ( 2 ) + dn if n > 1
Phng trnh qui c dng T(n) = a.T(n/b) + c.nk tha mn iu kin ca nh l th vi a = 2,
b = 2, c = d v k = 1. Mt khc, v 2 = a = bk = 2 nn nh l th ri vo trng hp th hai, do
T (n) = (n k . log2 n) T (n) = (n log 2 n) .
Khi xt thut ton sp xp kiu vun ng (HeapSort) ta thy hiu qu ca MergeSort tng t
HeapSort. Trong thc t sp xp trn c th nhanh hn vun ng mt t nhng n cn nhiu b
nh hn cho cc mng trung gian U v V. Ta nh li HeapSort c th sp xp ti ch (in-place),
v cm gic n ch s dng mt t bin ph. Theo l thuyt, MergeSort cng c th lm c
nh vy, tuy nhin chi ph v thi gian sp xp c tng mt cht.
QuickSort c pht minh bi Hoare, da theo nguyn tc chia tr. Khng ging nh
MergeSort, QuickSort quan tm n vic gii cc bi ton con hn l s kt hp gia cc li gii
ca chng.
tng ca thut ton QuickSort nh sau: Nu on cn sp xp ch c mt phn t th on
c sp xp, ngc li ta chn mt phn t x trong on lm phn t cht, mi phn t
nh hn cht c xp vo v tr ng trc cht, mi phn t ln hn cht c xp vo v tr
ng sau cht. Sau php ton chuyn nh vy th on c chia thnh hai on con m on
trc gm cc phn t nh hn cht, on sau gm cc phn t ln hn cht. Tip tc p dng
thut ton lm (nh i vi on u tin) cho hai on con, v c tip tc mt cch qui
nh th ta s thu c ton on c sp.
tng c th nh sau: Gi s cn sp xp on c ch s t L (Left) n R (Right):
- Chn x lm phn t ngu nhin trong on L ..R, c th chn x l phn t gia on, tc l
phn t x = a[(L+R) div 2]
- Cho i chy t L sang phi; j chy t R sang tri, nu gp mt cp phi t sai th t, tc i j m
a[i] > x v a[j] < x th tin hnh i ch hai phn t . Qu trnh ny cn tip tc khi i > j th
dng.
- Tip tc lm nh th i vi 2 on t L n j v t i n R.
Thut ton vn dng cho thut ton QuickSort c din t trong th tc QuickSort sau y i
vi mng a t v tr L n R:
37
Vic chn phn t cht phn on s quyt nh hiu qu ca thut ton. Trong trng hp
xu nht (on c chia thnh mt on con 1 phn t v on con kia c n-1 phn t) th
phc tp thut ton c O(n2).
Gi T(n) l thi gian trung bnh dng Quicksort sp mng n phn t a[1..n]. Trng hp ring
nh thut ton trn, thi gian xc nh phn t cht v tr m = (L+R) div 2 bng hng s c;
trng hp tng qut, phn t cht v tr m nm trong on t 1 n n, c xc sut l 1/n, v
thi gian tm m c th xc nh bi mt hm tuyn tnh g(n). Gi s thi gian dng qui
sp xp hai mng con kch thc (m - 1) v (n - m) tng ng l T(m-1) v T(n-l). Nh vy vi
n ln ta c:
T ( n) =
1 n
1 n
2 nm
(
g
(
n
)
+
T
(
m
1
)
+
T
(
n
m
))
=
g
(
n
)
+
T (k )
n m =1
n m =1
n k =0
2 nm
T (k ) vi n > n0.
n k =0
38
Gi s X = x1x2...xn v Y = y1y2yn
Nu thc hin thut ton m phng php nhn X*Y nh vic thc hin php nhn bng tay
thng thng th phc tp tnh ton d tm c l O(n2).
Ta s tm cch xy dng thut ton chia tr cho vic thc hin php nhn X*Y c c
phc tp tnh ton nh hn.
Chia i mi s ta c:
X1 = x1x2xn/2 v X2 = xn/2xn
Y1 = y1y2yn/2 v Y2 = yn/2yn.
Ta c X = X110n/2 + X2 v Y = Y110n/2 + Y2. Do
Z = X*Y = (X110n/2 + X2)*(Y110n/2 + Y2) = = X1Y110n + (X1Y2 + X2Y1)10n/2 + X2Y2
(1)
Gi T(n) l thi gian thc hin thut ton Nhan(X, Y, n) thc hin php nhn hai s X v Y vi
s ch s n; Thi gian gii mi bi con (4 bi ton con) thc hin php nhn hai s X v Y vi
39
T ( n) =
4T (n / 2) + dn if n > 1
Phng trnh qui c dng T(n) = a.T(n/b) + c.nk tha mn iu kin ca nh l th vi a = 4,
b = 2, c = d v k = 1. Mt khc, v 4 = a > bk = 2 nn nh l th ri vo trng hp th nht, do
T (n) = (nlogb a ) T (n) = (nlog2 4 ) = (n 2 ) .
Nhn xt: Vic tnh Z trong cng thc (1) dn n cn gii 4 bi ton con tnh M, N, P, Q. Ta c
th thay 4 bi ton con ny bng 3 bi ton con sau y:
U := X1.Y1;
V := X2*Y2 v
W := (X1 + X2) * (Y1 + Y2)
v khi cng thc (1) c th vit li di dng :
Z = U.102 + (W-U-V).10n/2 + V
Khi phng trnh quy ca thut ton Chia thnh 3 bi ton Tr s l:
c if n = 1
T ( n) =
3T (n / 2) + dn if n > 1
Phng trnh qui c dng T(n) = a.T(n/b) + c.nk tha mn iu kin ca nh l th vi a = 3,
b = 2, c = d v k = 1. Mt khc, v 3 = a > bk = 2 nn nh l th vn ri vo trng hp th nht,
v T (n) = (nlogb a ) T (n) = (nlog 2 3 ) < (n 2 ) .
40
Cch th hai: Ci tin vic lit k ton b (ci tin duyt ton b)
procedure maxsub(n, var p, q);
begin
max := -;
for i := 1 to n do
begin
s := 0;
for j := i to n do
begin (*xet mng con a[i..j]*)
s := s + a[j]; (*cu lnh c trng*)
if max < s then
begin
max := s; p := i; q := j:
end;
end;
end;
end;
Cu lnh c trng ca mt (on) thut ton l cu lnh c s ln thc hin nhiu nht.
41
MaxSubArray(a,i,j);
begin
if ( i = j) return a[i]
else
begin
M
:= (i+j)/2;
WL := MaxSubArray(a,i,m);
WR := MaxSubArray(a,m+1,j);
WM := MaxLeftArray(a,i,M) + MaxRightArray(a,M+1,j);
Return Max(WL, WR, WM );
end
end;
MaxLeftArray(a,i,j);
begin
42
BI TP CHNG 2
1. Cho mng s liu sau :
44
45
3. Mt s v d minh ha
3.1. Dy con tng dn di nht
Bi ton 3.1: Cho dy (a) gm n phn t a1, a2, ..., an. Hy tm dy con khng gim c di
ln nht (nhiu phn t nht).
46
10
ai
f(i)
(1)
47
10
ai
f(i)
48
b) K thut mng lu vt
10
ai
f(i)
pred[i]
-1
-1
49
(2)
50
(3)
j = i 1, i 2,...,1}, if
i >1
(4)
Mng lu vt pred[1..n] c tnh tng t nh trn, tuy nhin pred[i] := j vi j ly theo max ca
c(j) hay ly theo max ca d(j) l ty theo ci no ln hn, v nu hai gi tr ny bng nhau th u
tin ly theo c(j)
T suy ra
51
s[1] := a[1];
imax : = 1;
for i: = 2 to n do
begin
u := e + a[i];
v := a[i];
if (u > v) then e := u else e := v;
if (e > s[i-1]) then
begin
s[i] = e;
imax: = i;
end
else s[i] := s[i-1]
end;
end;
52
Thut ton trc tip gii l duyt tt c cc xu con ca X v kim tra xem mi xu nh vy
c l xu con ca Y, v gi li xu con di nht. Mi xu con ca X tng ng vi dy ch s
<i1,i2, , ik> l tp con k phn t ca tp ch s {1, 2, , m}, v th c tt c 2m xu con ca X.
Nh vy thut ton trc tip i hi thi gian hm m v khng th ng dng c trn thc t.
Ta s p dng quy hoch ng xy dng thut ton gii bi ton ny.
b) Phng php quy hoch ng
Bc 1. Nu gi nh v hm qui hoch ng
Gi C(i, j) l di ca xu con chung di nht ca hai xu:
Xi = x1x2xi v Yj = y1y2yj
vi mi 0 i m v 0 j n
Nh vy ta phn bi ton cn gii ra thnh (m + 1)(n + 1) bi ton con. Bn thn bi ton xut
pht l bi ton con c kch thc ln nht c(m, n).
Bc 2: Tm nghim ca cc bi ton con n gin
thun li, ta ng nht hm c(i,j) vi mng C[0..m, 0..n]. R rng nu mt trong hai xu
rng, khng c phn t chung th xu con chung cng l rng. V vy ta c
C[0, j] = 0 j, j = 0, 1,, n v
C[i, 0] = 0 i, i = 0, 1,, m.
Bc 3: Xy dng cng thc qui hoch ng
Gi s i > 0, j > 0 ta cn tnh C[i, j] l di ca xu con chung ln nht ca hai xu Xi v Yj.
C hai trng hp:
Nu xi = yj th xu con chung di nht ca Xi v Yj s thu c bng vic b sung xi (hoc yj)
vo xu con chung di nht ca hai xu Xi-1v Yj-1
Nu xi yj th xu con chung di nht ca Xi v Yj s l xu con di nht trong hai xu con
chung di nht ca (Xi-1 v Yj) v ca (Xi-1 v Yj).
T ta c cng thc qui hoch ng sau tnh C[i, j]:
53
C[i, j ] = 1 + C[i 1, j 1]
if xi = y j
max{C[i, j 1], C[i 1, j ]} if i, j > 0 and x y
i
j
vi i = 0, 1,, m v j = 0, 1,, n.
Hoc ngn gn hn l vi i =0, 1,, m v j = 0, 1,, n th
C[i, j] = max {C[i, j-1], C[i-1, j], C[i-1, j - 1] + x}
vi x = 0 nu xi = yj v x = 1 nu xi yj
Bc 4. Vic tm li nghim
D dng ln vt da vo mng C ,bt u t v tr C[m, n].
1. Khi to i := m, j := n; z := ;
2. Lp trnh sau khi i > 0 v j > 0
2.1. Nu x[i] = y[j] th thm x[i] vo cui xu z v ng thi gim 1 n v cho c i v j
2.2. Ngc li, nu x[i] y[j] th
Nu C[i, j] = C[i-1, j] th li v hng trn bng lnh gim i := i - 1
Ngc li, nu C[i, j] = C[i, j - 1] li v ct tri bng lnh gim j := j - 1
c) M phng Pascal
54
Trong th tc m t trn ta s dng bin b[i, j] ghi nhn tnh hung ti u khi tnh gi tr
c[i, j]. S dng bin ny ta c th a ra dy con chung di nht ca hai dy X v Y nh th tc
sau y:
D dng nh gi c thi gian tnh ca thut ton LCS l O(mn).
3.4. Bi ton ci ti
Bi ton 3.4. Cho n vt (n 100), vt th i c trng lng l wi (wi 100) v c gi tr s
dng l ci (ci 100). Cn xp vt vo mt ci ti sao cho tng gi tr s dng c xp vo
ti l ln nht. Bit rng ci ti ch c th mang c trng lng khng vt qu b (b 100).
a) Phng php qui hoch ng
Bc 1. Nu gi nh v hm qui hoch ng
Gi f(i, j) l gi tr s dng ln nht ca ca cc vt c xp vo ti khi chn cc vt
{1, 2, , i} v trng lng gii hn ca ti l j. Khi gi tr nghim tt nht ca bi ton l
f(n, m).
Bc 2: Tm nghim ca cc bi ton con n gin
D thy f(0, j) = 0 vi mi j = 1, 2, , b
Bc 3: Xy dng cng thc qui hoch ng
Vi gii hn trng lng j, vic chn ti u trong cc vt {1, 2, , i - 1, i} c gi tr ln
nht c hai kh nng:
55
56
Nh bit, tnh ca ma trn A = (aik) kch thc p q vi ma trn B = (bkj) kch thc q r l
ma trn C = (cij) kch thc p r vi cc phn t c tnh theo cng thc:
q
(1)
k =1
Chng ta c th s dng on chng trnh sau y tnh tch ca hai ma trn A,B:
for i : =1 to p do
for j : =1 to r do
begin
c [i,j] = 0;
for k : = 1 to q do c[i,j] :=c[i,j] +a[i,k] *b[k,j];
end;
R rng , on chng trnh trn i hi thc hin tt c p.q.r php nhn tnh tch ca hai ma
trn.
a) Phn tch bi ton
Gi s ta phi tnh tch ca nhiu hn l hai ma trn. Ch rng do tch ma trn khng c tnh
cht giao hon, nn ta khng c thay i th t ca cc ma trn trong biu thc cho. Do
php nhn ma trn c tnh kt hp, ta c th tnh tch ca cc ma trn theo nhiu cch khc nhau.
V d 3.1. Nhn nhiu ma trn
(AB)C
10582
2. (AB)(CD)
54201
57
2856
4. A((BC)D)
4055
5. A(B(CD))
26418
Phng php hiu qu nht (phng php 3) i hi khi lng php nhn t hn gn 19 ln so
vi phng php ti nht (phng php 5).
Mi cch tnh tch cc ma trn cho i hi mt thi gian tnh khc nhau. S lng php nhn
l mt yu s nh gi kh chnh xc hiu qu ca phng php. tm phng php hiu qu
nht, chng ta c th lit k tt c cc cch in du ngoc vo biu thc tch ma trn cho v
tnh s lng php nhn i hi theo mi cch.
Gi T(n) l s cch in cc du ngoc vo biu thc tch ca n ma trn. Gi s ta nh t cp
du ngoc )( phn tch u tin vo gia ma trn th i v ma trn th (i + 1) trong biu thc tch,
tc l:
M = (M1 M2 Mi)(Mi+1 Mi+2 Mn)
Khi c T(i) cch t du ngoc cho tha s th nht (M1 M2 Mi) v T(n-i) cch t du
ngoc cho tha s th hai (Mi+1 Mi+2 Mn) v t c T(i)T(n-i) cch tnh biu thc (M1 M2
Mi)(Mi+1 Mi+2 Mn). Do i c th nhn bt c gi tr no trong khong t 1 n n-1, suy ra ta
c cng thc truy hi sau tnh T(n):
n 1
T (n) = T (i )T (n i )
(2)
i =1
(3)
T T(n) = 4nn2. Nh vy, phng php duyt ton b khng th s dng tm cch tnh hiu
qu biu thc tnh ca n ma trn, khi n ln.
By gi, ta xt cch p dng quy hoch ng gii bi ton t ra.
b) Phn r (Xc nh cu trc con ti u)
58
59
i=1
j=1
3
4
1335 1845
s=3
9078
s=2
s=1
s=0
{k = 2}
{k = 3}
60
i=1 1
s=3
s=2
s=1
3
4
s=0
Ta c s php nhn cn thc hin l f(1, 4) = 2856. Du ngoc u tin cn t sau v tr h[1, 4]
= 3, tc l M = (ABC)D. Ta tm cch t du ngoc u tin c f(1, 3) tng ng vi tch
ABC. Ta c h[1, 3] = 1, tc l tch ABC c tnh ti u theo cch: ABC = A(BC). T suy
ra, li gii ti u l: M = (A(BC))D.
d) nh gi phc tp gii thut
By gi, ta tnh s php ton cn thc hin theo thut ton va trnh by. Vi mi s > 0, c n s
phn t trn ng cho cn tnh, tnh mi phn t ta cn so snh s gi tr s tng ng vi
cc gi tr c th ca k. T suy ra s php ton cn thc hin theo thut ton l c
n 1
n 1
n 1
s =1
s =1
(n s ) s = n s s 2
s =1
= n (n 1) / 2 n(n 1)(2n 1) / 6
2
= ( n 3 n) / 6
= O ( n3 )
// s = ch s ca ng cho
for i: = 1 to n - s do
begin
j: = i + s - 1; m[i,j] = +;
for k: = i to j - 1 do
begin
61
{ X = M[i] / . . . M[k] }
Y = Mult(k+1,j);
{ Y = M[k+1] . . . M[j] }
return X*Y;
{ Nhn ma trn X v Y }
end
else
return M[i];
end;
BI TP CHNG 3
1. Tm trnh t nhn ti u tnh tch ca dy ma trn A1x A2 x A3 x A4 x A5 trong kch
thc ca A1 l 10 x 4, A2 - 4 x 5, A3 - 5 x 20, A4 - 20 x 2, v A5 -2 x 50.
2.Xt Bi ton v cc on thng khng giao nhau c trng s.
62
63
D xut,
64
Greedy;
begin
C := Tp cc ng c vin;
S := {S l li gii cn xy dng theo thut ton}
while (C ) and not Solution(S) do
begin
x Select(C);
C := C \ x;
if feasible(S x) then S := S x;
end;
if Solution(S) then Return S
end;
- Vic chng minh thut ton ng kh hn, v da vo hai cch chng minh lp lun bin
i di y.
Lp lun bin i (Exchange Argument)
65
2. Mt s v d minh ha
2.1. Bi ton tp cc on thng khng giao nhau
Pht biu bi ton
Input: Cho h cc on thng m C = {(a1, b1), (a2, b2), ..., (an, bn)}
Output: Tp cc on thng khng giao nhau c lc lng ln nht.
ng dng thc t: Bi ton xp thi gian biu cho cc hi tho, bi ton phc v khch
hnh trn mt my, bi ton la chn hnh ng (V d c n cuc hp dng chung mt
phng hp. Cuc hp th i bt u ti thi im ai v kt thc ti thi im bi. Hy la
chn cc cuc hp sao cho c nhiu cuc hp c t chc nht. Bit rng ti mt thi
im phng hp ch c th din ra mt cuc hp).
Thut ton tham lam 1:
- tng: Bt u sm th chn trc.
- Sp xp cc on thng theo th t tng dn ca u mt tri. Bt u t tp S l tp
rng, ta ln lt b sung cc on thng theo th t sp vo S nu n khng c im
chung vi bt c on no trong S. V d:
Input
1
Output
S = {1, 3}
2
3
procedure
Greedy1;
begin
C Tp cc on thng c sp tng dn theo u mt tri;
S := ;
while C do
begin (ai, bi) on u tin trong C;
66
Output
S = {1}
S = {2, 3}
Greedy2;
begin
C Tp cc on thng c sp tng dn theo di;
S := ;
while C do
begin (ai, bi) on u tin trong C;
C := C \ {(ai, bi)}
if <(ai, bi) khng giao vi bt c on no trong S> then
S := S {(ai, bi)}
end;
return S;
end;
67
Output
S = {1}
S = {2, 3}
Greedy2;
begin
C Tp cc on thng c sp tng dn theo u mt phi;
S := ;
while C do
begin (ai, bi) on u tin trong C;
C := C \ {(ai, bi)}
if <(ai, bi) khng giao vi bt c on no trong S> then
S := S {(ai, bi)}
end;
return S;
end;
Chng minh thut ton ng: Gi s Greedy3 khng cho li gii ng. Phi tm b d
liu u vo C sao cho thut ton khng cho li gii ti u. Gi s G3(C) l li gii tm
c bi Greedy3. Gi O l li gii ti u c s on thng chung vi G3(C) l ln nht.
Gi X l on thng u tin c trong G3(C) nhng khng c trong O. on ny l tn
ti, v nu tri li th hoc G3(C) O (mu thun v gi thit G3(C) O) hoc G3(C)
O (cng mu thun v khi thut ton phi chn on thng X cho O, v O cng c
sp xp ging G3(C)).
Gi Y l on u tin k t bn tri ca O khng c mt trong G3(C). on Y cng phi
tn ti (Chng minh tng t nh trn).
Khi u mt phi ca on X phi bn tri (nh hn) mt phi ca on Y, v nu
tri li thut ton s chn Y thay v X.
68
w
iI
f ( I ) = ci max
iI
Gi tr
20
16
10
Trng lng 14
Tham s ca bi ton l n = 3; b = 11
vt
Gi tr
10
16
69
10
c1 c2
c
... n
w1 w2
wn
Tuy nhin Greedy3 cng khng cho li gii ti u. Sau y l phn v d ca thut ton.
Tham s ca bi ton : n = 2; b 2.
vt
Gi tr
10
10b-1
Trng lng 1
V
c1 10 10b 1 c2
=
=
nn thut ton ch la chn c vt 1 vi tng gi tr l 10,
w1 1
b
w2
I 4 = max{
c , c , c }
iI1
iI 2
iI 3
c
iI 4
1
f*
2
Trong f* l gi tr ti u ca bi ton.
nh l ny chng t thut ton tham lam th t ny cng khng cho li gii ti u.
70
- Hnh trnh cn tm c dng: S = (x1 = 1, x2, ..., xn, xn+1 = 1), trong dy (x1, x2, ..., xn) l mt
hon v ca (1, 2, ..., n).
- Ta xy dng nghim tng bc, bt u t x1, chn x2 l thnh ph gn x1 nht, sau chn x3
l thnh ph gn x2 nht (x3 khc x1), ... Tng qut, chn xi l thnh ph cha i qua m gn xi-1
nht.
B (T ) = f (c)depth(c)
cC
Huffman(C, f);
begin
n |C|;
Q C; {X l, thay i trn Q, gi li Input C}
for i := 1 to n -1 do
begin
x, y 2 ch ci c tn sut xut hin nh nht trong Q;
To nt P vi hai con x, y ;
f(P) := f(x) + f(y);
Q Q \ {x,y} {P}
71
K t
Tn sut
0.2
0.1
0.1
0.15
0.45
M t thut ton
Cch th nht
1
0.2
0.1
0.1
0.15
0.45
3
0.2
0.2
0.2
0.15
0.45
0.1
0.1
0.35
0.45
0.2
0.15
0.1
0.1
1.00
0.55
0.55
0.45
0.2
0.35
0
0.2
0.35
1
0.15
0.2
0
0.1
0.1
72
0.45
0.2
0.15
0.1
0.1
0.2
0.1
0.1
0.15
0.45
0.2
0.2
0
0.15
0.45
0.35
0.1
0.1
0.2
0.2
0.45
0.15
0.1
0.1
1.00
0
0.45
0.2
0.45
1
0.35
0.35
0
0.55
0.55
0
0.2
0.15
0.1
0.1
0.2
0.2
1
0.15
0.1
0.1
73
Tn sut
M cch 1
M cch 2
0.2
00
000
0.1
0100
010
0.1
0101
011
0.15
011
001
0.45
74
Huffman_Decode(B);
BI TP CHNG 4
1. u vo : Tp S = {(xi, yi) | 1 i n}
75
u vo : Tp S = {(xi, yi) | 1 i n}
Hy coi rng mi khong (xi, yi) tng ng vi mt yu cu s dng phng hc bt u t thi
im xi , kt thc ti yi.
u ra : Tm cc phn b lp vo phng sao cho s phng cn s dng l t nht. Ch l mi
yu cu s dng phng cn c tha mn v khng c hai lp no s dng cng mt phng ti
cng mt thi im.
a. Xt thut ton lp sau : Phn b mt s nhiu nht c th c cc lp phng th nht, sau
phn b mt s nhiu nht c th cc lp vo phng th hai, ri n phng th 3, Hi rng
thut ton va nu c cho li gii ng ca bi ton t mu khong? Gii thch cu tr li ca
bn.
b. Xt thut ton sau : Ln lt xt cc lp theo th t tng dn ca thi im bt u. Gi s
ang xt lp C, nu c phng R c s dng xp mt lp no y v C c th xp vo
phng ny m khng mu thun vi cc lp xp vo R trc th xp C vo R. Nu tri li
xp C vo phng mi. Hi rng thut ton va nu c cho li gii ng ca bi ton t mu
khong? Gii thch cu tr li ca bn.
3. Xt bi ton i tin sau : u vo l mt s nguyn L. u ra l s lng t nht cc ng
tin i lng tin L. Cc ng tin c mnh gi l 1, 2, 22, , 21000. Gi thit rng s
lng ng tin ca mi mnh gi l khng hn ch. Xt thut ton i tin sau y:
S dng nhiu nht ng tin c mnh gi cao nht. V d L = 31 : s dng mt ng tin 24;
cn li gi tr 15, li ly mt ng tin 23; cn li gi tr 7, ly 1 ng tin 22; gi tr cn li 3
cn i bi mt ng 21 v 1 ng 20.
76
77
(i, j ) E
(i, j ) E
Nhn xt
- Ma trn k ca th yu cu O(V2) b nh, khng ph thuc vo s cnh trong th.
- Ma trn k ca th v hng th i xng, do ch cn lu phn tam gic trn (hoc di)
ca ma trn, do b nh c gim mt na.
- u im ca ma trn k l trc quan, d ci t trn my, d kim tra xem hai nh u, v ca
th c k nhau hay khng
- Hn ch ca ma trn k l tn b nh, lun tn mt ma trn n x n cho d ch c rt t cnh.
Biu din ma trn k trn Pascal
var a : array[1..n, 1..n] of boolean
78
Dng mng adj[1..n] cha cc nh, mng c chia thnh n on, on th u trong mng lu
cc nh k vi nh u.
bit mt on nm t ch s no n ch s no, dng thm mt mng head[1...n + 1] nh
du v tr phn on: head[u] bng ch s (v tr) cui cng ca on ngay trc on u, qui c
head[n+1] = 2m, vi m l s cung ca th (lu vic biu din danh sch k bng mng s
nhn i s cung ca th).
Vy on th u bt u t ch s head[u] + 1 cho n head[u+1]. Ni cch khc, cc nh k ca
u thuc phn on t adj[head[u]+1] n adj[head[u+1]]. V d nh hnh di y, cc nh k
ca u = 2 thuc phn on t adj[head[2]+1] n adj[head[3]], c th l t adj[3] n adj[6],
phn on ny tng ng vi cc nh 1, 3, 4, 5.
adj
1
2
2
4
3
1
4
3
1
head 0
5
4
6
5
2
2
2
3
6
4
8
5 6
11 14
head :
array[1..2*m] of integer;
array[1..n + 1 ] of integer;
2.
3.
head[i] := head[i+1];
79
7
2
8
5
3
9
1
10 11 12 13 14
2 5 2 3 4
4
for j := n downto 1 do
5.
6.
adj[head[i]] := j;
7.
head[i] := head[i] - 1;
8.
9.
end;
end;
Trong biu din ny, ta cho mi nh u ca th tng ng vi list[u] l cht ca mt danh sch
mc ni (hay danh sch lin kt) gm cc nh k u.
list[1]
list[2]
list[3]
list[4]
list[5]
80
Ti bc khi ng tt c cc nh ca th u c mu trng.
81
Ban u cy ny ch c mi mt gc l nh s.
Cho th v hng hoc c hng G=(V,E) c biu din bng danh sch k.
- Thut ton s dng hng i Q (theo nguyn tc FIFO vo trc ra trc) qun l tp
cc nh c mu xm.
M phng thut ton BFS bng ngn ng gi Pascal:
procedure BFS (G,s)
1 begin for each uV[G] \ {s} do
2
3
d[u]
pred[u]NIL end;
colors[s] GRAY;
d[s]0;
pred[s]NIL;
Q {s}
while Q do
10
begin u head[Q];
11
S
5
3
4
6
V
82
13
begin color[v]GRAY
14
d[v]d[u]+1;
15
pred[v]u;
16
Q v; end;
17
colors[u] BLACK;
end;
gn pred[s] nil
83
gn color[v] GRAY
84
Cc tem thi gian ny gip ch rt nhiu cho vic m t qu trnh thc hin cc bc trong thut
ton tm kim theo chiu su; c s dng nhiu trong cc thut ton th nh tm thnh phn
lin thng mnh, thut ton sp xp topo.
begin
color[u] WHITE;
time 0;
for u V[G] do
85
DFS-Visit(u); end;
procedure DFS-Visit(u)
1 begin color[u] GRAY {Trong khi mi nh v k u cha c thm}
2
5
6
DFS-Visit(v);
end;
end;
Ti mi ln gi th tc DFS-Visit(u):
Dng 2 ghi li thi im nh u bt u c thm ln u tin vo bin time sau khi tng n
ln 1.
Dng 3-6 kim tra cc nh v k vi nh u v thc hin thm v mt cch quy nu n vn
l nh trng. Vi mi nh v c xt ti dng 3, ta ni rng cnh (u,v) c thm trong
thut ton tm kim theo chiu su .
Khi tt c cc cnh i t u c thm, dng 7-8 s t mu en cho nh u v ghi li thi
im nh u duyt xong trong bin f[u].
A[v] = O( E )
vV
ngha l tng s php ton cn thc hin ti cc dng 2-5 ca th tc DFS-Visit l O(E).
V vy phc tp tnh ton ca th tc DFS s l O (V+E).
86
Pht biu bi ton: Gi s th khng c chu trnh m v c ma trn trng s l c[1..n, 1..n].
Hy tm ng i ngn nht t nh xut pht s n nh kt thc t.
gii bi ton, ta s dng k hiu (u, v) ch di ng i t nh u n nh v trong
th.
tng ca thut ton: Trc tin tm nh v1 t m (s, t) = (s, v1) + c[v1, t]. D thy lun tn
ti nh v1 v v1 l nh ng ngay trc nh t trn ng i ngn nht t s n t. Nu v1 = s
th ng i ngn nht cn tm chnh l cnh (s, t). Nu khng th vn tr thnh tm ng i
ngn nht t s n v1 v ta li tm nh v2 {t, v1} m (s, v1) = (s, v2) + c[v1, v2], C tip
tc nh vy, sau mt s hu hn bc, ta c dy t = v0 , v1, v2, , vk = s khng cha cc nh
lp li. Lt ngc th t dy nh vy ta c ng i ngn nht t s n t.
Nhn khong cch v php co
87
d[u]
c[u,v]
v
d[v]
Bc 3: Truy vt
88
89
(1) T l cy
(2) T khng cha chu trnh v c n - 1 cnh
(3) T lin thng v c n - 1 cnh
(4) T lin thng v mi cnh ca n u l cu.
(5) Hai nh bt k ca T c ni vi nhau bi ng mt ng i n.
(6) T khng cha chu trnh, nhng nu c thm vo n mt cnh th ta thu c ng
mt chu trnh.
nh ngha 3. Gi s G = (V, E) l th v hng lin thng. Cy T = (V, F) vi F E, c
gi l mt cy khung ca th G.
90
V d
2
33
18
1
17
20
16
8
6
9
4
14
8,
9,
14,
16,
17,
18,
20,
33
ba ln lp u tin, ta b sung c vo T cc cnh (3, 5), (4, 6), (4, 5). Nu tip tc b sung
cnh (5, 6) vo T th s to thnh vi hai cnh (4, 5) v (4, 6) c trong T chu trnh. Tnh hung
tip theo cng tng t xy ra i vi cnh (3, 4) trong dy. Tip theo, ta b sung cnh (1, 3) v
(2, 3) vo T v thu c cy khung T cc tiu cn tm gm 5 cnh:
T = {(3, 5), (4, 6), (4, 5), (1, 3), (2, 3)}
Vn chn cnh e a vo T khng to thnh chu trnh
91
92
93
33
17
18
20
16
14
2
C=
3
4
5
6
nh 1
nh 2
nh 3
nh 4
nh 5
nh 6
VH
Khi to
[0, 1]
[33, 1]
[17, 1]*
[, 1]
[, 1]
[, 1]
[18, 3]
[16, 3]
[4, 3]*
[, 1]
1, 3
(3, 1)
[18, 3]
[9, 5]*
[14, 5]
1, 3, 5
(3,1),(5,3)
[18, 3]
[8, 4]*
1,3,5,4
(3,1),(5,3),
(4,5)
[18,3]*
1,3,5,4, 6
(3,1),(5,3),
(4,5),(6,4)
1,3,5,4,6,2
(3,1),(5,3),
(4,5),(6,4),
(2,3)
BI TP CHNG 5
1. Cho th sau:
94
95
CC CHUYN MN HC
1. Hash table
2. Balanced Tree
3. B Tree
5. AVL Trees
6. Splay Trees
7. Skip List
8. Heap
9. Priority Queue
Ghi ch
96