You are on page 1of 109

Th.s.

NGUYN VN LINH

GII THUT
c bin son trong khun kh d n ASVIET002CNTT Tng cng hiu qu o to v nng lc t o to ca sinh vin khoa Cng ngh Thng tin - i hc Cn th

I HC CN TH - 12/2003

LI NI U

N. Wirth, mt nh khoa hc my tnh ni ting, tc gi ca ngn ng lp trnh Pascal, t tn cho mt cun sch ca ng l Cu trc d liu + Gii thut = Chng trnh. iu ni ln tm quan trng ca gii thut trong lp trnh ni ring v trong khoa hc my tnh ni chung. V l gii thut, vi t cch l mt mn hc, cn phi c sinh vin chuyn ngnh tin hc nghin cu mt cch c h thng. Mn hc Gii thut c b tr sau mn Cu trc d liu trong chng trnh o to k s tin hc nhm gii thiu cho sinh vin nhng kin thc c bn nht, nhng k thut ch yu nht ca vic PHN TCH v THIT K gii thut. Cc k thut c trnh by y c cc nh khoa hc tin hc tng kt v vn dng trong ci t cc chng trnh. Vic nm vng cc k thut s rt b ch cho sinh vin khi phi gii quyt mt vn thc t. Gio trnh ny c hnh thnh trn c s tham kho cun sch Data Structure and Algorithms ca A.V Aho, nhng kinh nghim ging dy ca bn thn v cc bn ng nghip. Mc d c nhiu c gng trong qu trnh bin son nhng chc chn cn nhiu thiu st, rt mong nhn c s ng gp ca qu bn c.
Cn th, ngy 8 thng 12 nm 2003 Nguyn Vn Linh

Gii thut MC LC

Mc lc

PHN TNG QUAN ................................................. i Chng 1: K THUT PHN TCH GII THUT .......................... 1 1.1 TNG QUAN ................................................................................................................... 1 1.2 S CN THIT PHI PHN TCH GII THUT ....................................................... 2 1.3 THI GIAN THC HIN CA GII THUT .............................................................. 2 1.4 T SUT TNG V PHC TP CA GII THUT .......................................... 3 1.5 CCH TNH PHC TP.......................................................................................... 4 1.6 PHN TCH CC CHNG TRNH QUY............................................................. 7 1.7 TNG KT CHNG 1 ............................................................................................... 16 BI TP CHNG 1 ................................................................................................................. 16 Chng 2: SP XP ............................................. 18 2.1 TNG QUAN ................................................................................................................. 18 2.2 BI TON SP XP..................................................................................................... 19 2.3 CC PHNG PHP SP XP N GIN .............................................................. 20 2.4 QUICKSORT ................................................................................................................. 25 2.5 HEAPSORT .................................................................................................................... 31 2.6 BINSORT ....................................................................................................................... 39 2.7 TNG KT CHNG 2 ............................................................................................... 44 BI TP CHNG 2 ................................................................................................................. 44 Chng 3: K THUT THIT K GII THUT ........................... 45 3.1 TNG QUAN ................................................................................................................. 45 3.2 K THUT CHIA TR ............................................................................................. 45 3.3 K THUT THAM N............................................................................................... 50 3.4 QUY HOCH NG .................................................................................................... 56 3.5 K THUT QUAY LUI ................................................................................................. 63 3.6 K THUT TM KIM A PHNG ........................................................................ 78 3.7 TNG KT CHNG 3 ............................................................................................... 82 BI TP CHNG 3 ................................................................................................................. 82 Chng 4: CU TRC D LIU V GII THUT LU TR NGOI ......... 85 4.1 TNG QUAN ................................................................................................................. 85 4.2 M HNH X L NGOI ............................................................................................ 85 4.3 NH GI CC GII THUT X L NGOI......................................................... 86 4.4 SP XP NGOI ........................................................................................................... 87 4.5 LU TR THNG TIN TRONG TP TIN ................................................................. 93 4.6 TNG KT CHNG 4 ............................................................................................. 103 BI TP CHNG 4 ............................................................................................................... 104

Gii thut

Tng quan

PHN TNG QUAN


1. Mc ch yu cu Mn hc gii thut cung cp cho sinh vin mt khi lng kin thc tng i hon chnh v phn tch v thit k cc gii thut lp trnh cho my tnh. Sau khi hc xong mn hc ny, sinh vin cn: - Nm c khi nim thi gian thc hin ca chng trnh, phc tp ca gii thut. Bit cch phn tch, nh gi gii thut thng qua vic tnh phc tp. - Nm c cc gii thut sp xp v phn tch nh gi c cc gii thut sp xp. - Nm c cc k thut thit k gii thut, vn dng vo vic gii mt s bi ton thc t. - Nm c cc phng php t chc lu tr thng tin trong tp tin v cc gii thut tm, xen, xo thng tin trong tp tin. 2. i tng s dng Mn hc gii thut c dng ging dy cho cc sinh vin sau: - Sinh vin nm th 3 chuyn ngnh Tin hc. - Sinh vin nm th 3 chuyn ngnh in t (Vin thng, T ng ho) - Sinh vin Ton-Tin. 3. Ni dung ct li Trong khun kh 45 tit, gio trnh c cu trc thnh 4 chng - Chng 1: K thut phn tch nh gi gii thut. Chng ny t vn ti sao cn phi phn tch, nh gi gii thut v phn tch nh gi theo phng php no. Ni dung chng 1 tp trung vo khi nim phc tp thi gian ca gii thut v phng php tnh phc tp gii thut ca mt chng trnh bnh thng, ca chng trnh c gi cc chng trnh con v ca cc chng trnh quy. - Chng 2: Sp xp. Chng ny trnh by cc gii thut sp xp, mt thao tc thng c s dng trong vic gii cc bi ton my tnh. S c nhiu gii thut sp xp t n gin n nng cao s c gii thiu y. Vi mi gii thut, s trnh by tng gii thut, v d minh ho, ci t chng trnh v phn tch nh gi. - Chng 3: K thut thit k gii thut. Chng ny trnh by cc k thut ph bin thit k cc gii thut. Cc k thut ny gm: Chia tr, Quy hoch ng, Tham n, Quay lui v Tm kim a phng. Vi mi k thut s trnh by ni dung k thut v vn dung vo gii cc bi ton kh ni ting nh bi ton ngi giao hng, bi ton ci ba l, bi ton cy ph ti thiu... - Chng 4: Cu trc d liu v gii thut lu tr ngoi. Chng ny trnh by cc cu trc d liu c dng t chc lu tr tp tin trn b nh ngoi v cc gii thut tm kim, xen xo thng tin trn cc tp tin . 4. Kin thc tin quyt hc tt mn hc gii thut cn phi c cc kin thc sau: - Kin thc ton hc. - Kin thc v k nng lp trnh cn bn.

Gii thut

Tng quan

Kin thc v cu trc d liu v cc gii thut thao tc trn cc cu trc d liu. Trong chng trnh o to, Cu trc d liu l mn hc tin quyt ca mn Gii thut. 5. Danh mc ti liu tham kho [1] A.V. Aho, J.E. Hopcroft, J.D. Ullman; Data Structures and Algorithms; Addison-Wesley; 1983. [2] Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998. [3] inh Mnh Tng; Cu trc d liu & Thut ton; Nh xut bn khoa hc v k thut; H ni-2001. [4] Xun Li; Cu trc d liu & Gii thut; 1995. [5] Nguyn c Ngha, T Vn Thnh; Ton ri rc; 1997. [6] Trang web phn tch gii thut: http://pauillac.inria.fr/algo/AofA/ [7] Trang web bi ging v gii thut:

http://www.cs.pitt.edu/~kirk/algorithmcourses/
[8] Trang tm kim cc gii thut:

http://oopweb.com/Algorithms/Files/Algorithms.html

Gii thut

K thut phn tch gii thut

CHNG 1: K THUT PHN TCH GII THUT


1.1 TNG QUAN 1.1.1 Mc tiu Sau khi hc chng ny, sinh vin cn phi tr li c cc cu hi sau: Ti sao cn phn tch nh gi gii thut? Tiu chun no nh gi mt gii thut l tt? Phng php nh gi nh th no? (nh gi chng trnh khng gi chng trnh con, nh gi mt chng trnh c gi cc chng trnh con khng quy v nh gi chng trnh quy).

1.1.2 Kin thc c bn cn thit Cc kin thc c bn cn thit hc chng ny bao gm:
-

Kin thc ton hc: Cng thc tnh tng n s t nhin u tin, cng thc tnh tng n s hng u tin ca mt cp s nhn, phng php chng minh quy np v cc kin thc lin quan n logarit (bin i logarit, tnh cht ng bin ca hm s logarit). K thut lp trnh v lp trnh quy.

1.1.3 Ti liu tham kho A.V. Aho, J.E. Hopcroft, J.D. Ullman. Data Structures and Algorithms. AddisonWesley. 1983. (Chapters 1, 9). Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998. (Chapter 2). inh Mnh Tng. Cu trc d liu & Thut ton. Nh xut bn khoa hc v k thut. H ni-2001. (Chng 1). Trang web phn tch gii thut: http://pauillac.inria.fr/algo/AofA/ 1.1.4 Ni dung ct li Trong chng ny chng ta s nghin cu cc vn sau: S cn thit phi phn tch cc gii thut. Thi gian thc hin ca chng trnh. T sut tng v phc tp ca gii thut. Tnh thi gian thc hin ca chng trnh.

Phn tch cc chng trnh quy.

Nguyn Vn Linh

Trang 1

Gii thut

K thut phn tch gii thut

1.2 S CN THIT PHI PHN TCH GII THUT Trong khi gii mt bi ton chng ta c th c mt s gii thut khc nhau, vn l cn phi nh gi cc gii thut la chn mt gii thut tt (nht). Thng thng th ta s cn c vo cc tiu chun sau: 1.- Gii thut ng n. 2.- Gii thut n gin. 3.- Gii thut thc hin nhanh. Vi yu cu (1), kim tra tnh ng n ca gii thut chng ta c th ci t gii thut v cho thc hin trn my vi mt s b d liu mu ri ly kt qu thu c so snh vi kt qu bit. Thc ra th cch lm ny khng chc chn bi v c th gii thut ng vi tt c cc b d liu chng ta th nhng li sai vi mt b d liu no . V li cch lm ny ch pht hin ra gii thut sai ch cha chng minh c l n ng. Tnh ng n ca gii thut cn phi c chng minh bng ton hc. Tt nhin iu ny khng n gin v do vy chng ta s khng cp n y. Khi chng ta vit mt chng trnh s dng mt vi ln th yu cu (2) l quan trng nht. Chng ta cn mt gii thut d vit chng trnh nhanh chng c c kt qu , thi gian thc hin chng trnh khng c cao v d sao th chng trnh cng ch s dng mt vi ln m thi. Tuy nhin khi mt chng trnh c s dng nhiu ln th th yu cu tit kim thi gian thc hin chng trnh li rt quan trng c bit i vi nhng chng trnh m khi thc hin cn d liu nhp ln do yu cu (3) s c xem xt mt cch k cng. Ta gi n l hiu qu thi gian thc hin ca gii thut. 1.3 THI GIAN THC HIN CA CHNG TRNH Mt phng php xc nh hiu qu thi gian thc hin ca mt gii thut l lp trnh n v o lng thi gian thc hin ca hot ng trn mt my tnh xc nh i vi tp hp c chn lc cc d liu vo. Thi gian thc hin khng ch ph thuc vo gii thut m cn ph thuc vo tp cc ch th ca my tnh, cht lng ca my tnh v k xo ca ngi lp trnh. S thi hnh cng c th iu chnh thc hin tt trn tp c bit cc d liu vo c chn. vt qua cc tr ngi ny, cc nh khoa hc my tnh chp nhn tnh phc tp ca thi gian c tip cn nh mt s o lng c bn s thc thi ca gii thut. Thut ng tnh hiu qu s cp n s o lng ny v c bit i vi s phc tp thi gian trong trng hp xu nht. 1.3.1 Thi gian thc hin chng trnh. Thi gian thc hin mt chng trnh l mt hm ca kch thc d liu vo, k hiu T(n) trong n l kch thc ( ln) ca d liu vo.
V d 1-1: Chng trnh tnh tng ca n s c thi gian thc hin l T(n) = cn trong c l mt hng s.

Nguyn Vn Linh

Trang 2

Gii thut

K thut phn tch gii thut

Thi gian thc hin chng trnh l mt hm khng m, tc l T(n) 0 n 0. 1.3.2 n v o thi gian thc hin. n v ca T(n) khng phi l n v o thi gian bnh thng nh gi, pht giy... m thng c xc nh bi s cc lnh c thc hin trong mt my tnh l tng. V d 1-2: Khi ta ni thi gian thc hin ca mt chng trnh l T(n) = Cn th c ngha l chng trnh y cn Cn ch th thc thi. 1.3.3 Thi gian thc hin trong trng hp xu nht. Ni chung th thi gian thc hin chng trnh khng ch ph thuc vo kch thc m cn ph thuc vo tnh cht ca d liu vo. Ngha l d liu vo c cng kch thc nhng thi gian thc hin chng trnh c th khc nhau. Chng hn chng trnh sp xp dy s nguyn tng dn, khi ta cho vo dy c th t th thi gian thc hin khc vi khi ta cho vo dy cha c th t, hoc khi ta cho vo mt dy c th t tng th thi gian thc hin cng khc so vi khi ta cho vo mt dy c th t gim. V vy thng ta coi T(n) l thi gian thc hin chng trnh trong trng hp xu nht trn d liu vo c kch thc n, tc l: T(n) l thi gian ln nht thc hin chng trnh i vi mi d liu vo c cng kch thc n. 1.4 T SUT TNG V PHC TP CA GII THUT 1.4.1 T sut tng Ta ni rng hm khng m T(n) c t sut tng (growth rate) f(n) nu tn ti cc hng s C v N0 sao cho T(n) Cf(n) vi mi n N0. Ta c th chng minh c rng Cho mt hm khng m T(n) bt k, ta lun tm c t sut tng f(n) ca n. V d 1-3: Gi s T(0) = 1, T(1) = 4 v tng qut T(n) = (n+1)2. t N0 = 1 v C = 4 th vi mi n 1 chng ta d dng chng minh c rng T(n) = (n+1)2 4n2 vi mi n 1, tc l t sut tng ca T(n) l n2. V d 1-4: T sut tng ca hm T(n) = 3n3 + 2n2 l n3. Thc vy, cho N0 = 0 v C = 5 ta d dng chng minh rng vi mi n 0 th 3n3 + 2n2 5n3 1.4.2 Khi nim phc tp ca gii thut Gi s ta c hai gii thut P1 v P2 vi thi gian thc hin tng ng l T1(n) = 100n2 (vi t sut tng l n2) v T2(n) = 5n3 (vi t sut tng l n3). Gii thut no s thc hin nhanh hn? Cu tr li ph thuc vo kch thc d liu vo. Vi n < 20 th P2 s nhanh hn P1 (T2<T1), do h s ca 5n3 nh hn h s ca 100n2 (5<100). Nhng khi n > 20 th ngc li do s m ca 100n2 nh hn s m ca 5n3 (2<3). y chng ta ch nn quan tm n trng hp n>20 v khi n<20 th thi gian thc hin ca c P1 v P2 u khng ln v s khc bit gia T1 v T2 l khng ng k.
Nguyn Vn Linh Trang 3

Gii thut

K thut phn tch gii thut

Nh vy mt cch hp l l ta xt t sut tng ca hm thi gian thc hin chng trnh thay v xt chnh bn thn thi gian thc hin. Cho mt hm T(n), T(n) gi l c phc tp f(n) nu tn ti cc hng C, N0 sao cho T(n) Cf(n) vi mi n N0 (tc l T(n) c t sut tng l f(n)) v k hiu T(n) l O(f(n)) (c l ca f(n)) V d 1-5: T(n)= (n+1)2 c t sut tng l n2 nn T(n)= (n+1)2 l O(n2) Ch : O(C.f(n))=O(f(n)) vi C l hng s. c bit O(C)=O(1) Ni cch khc phc tp tnh ton ca gii thut l mt hm chn trn ca hm thi gian. V hng nhn t C trong hm chn trn khng c ngha nn ta c th b qua v vy hm th hin phc tp c cc dng thng gp sau: log2n, n, nlog2n, n2, n3, 2n, n!, nn. Ba hm cui cng ta gi l dng hm m, cc hm khc gi l hm a thc. Mt gii thut m thi gian thc hin c phc tp l mt hm a thc th chp nhn c tc l c th ci t thc hin, cn cc gii thut c phc tp hm m th phi tm cch ci tin gii thut. V k hiu log2n thng c mt trong phc tp nn trong khn kh ti liu ny, ta s dng logn thay th cho log2n vi mc ch duy nht l cho gn trong cch vit. Khi ni n phc tp ca gii thut l ta mun ni n hiu qu ca thi gian thc hin ca chng trnh nn ta c th xem vic xc nh thi gian thc hin ca chng trnh chnh l xc nh phc tp ca gii thut. 1.5 CCH TNH PHC TP Cch tnh phc tp ca mt gii thut bt k l mt vn khng n gin. Tuy nhin ta c th tun theo mt s nguyn tc sau: 1.5.1 Qui tc cng Nu T1(n) v T2(n) l thi gian thc hin ca hai on chng trnh P1 v P2; v T1(n)=O(f(n)), T2(n)=O(g(n)) th thi gian thc hin ca on hai chng trnh ni tip nhau l T(n)=O(max(f(n),g(n))) V d 1-6: Lnh gn x:=15 tn mt hng thi gian hay O(1), Lnh c d liu READ(x) tn mt hng thi gian hay O(1).Vy thi gian thc hin c hai lnh trn ni tip nhau l O(max(1,1))=O(1) 1.5.2 Qui tc nhn Nu T1(n) v T2(n) l thi gian thc hin ca hai on chng trnh P1v P2 v T1(n) = O(f(n)), T2(n) = O(g(n)) th thi gian thc hin ca on hai on chng trnh lng nhau l T(n) = O(f(n).g(n)) 1.5.3 Qui tc tng qut phn tch mt chng trnh: Thi gian thc hin ca mi lnh gn, READ, WRITE l O(1)

Nguyn Vn Linh

Trang 4

Gii thut

K thut phn tch gii thut

Thi gian thc hin ca mt chui tun t cc lnh c xc nh bng qui tc cng. Nh vy thi gian ny l thi gian thi hnh mt lnh no lu nht trong chui lnh. Thi gian thc hin cu trc IF l thi gian ln nht thc hin lnh sau THEN hoc sau ELSE v thi gian kim tra iu kin. Thng thi gian kim tra iu kin l O(1). Thi gian thc hin vng lp l tng (trn tt c cc ln lp) thi gian thc hin thn vng lp. Nu thi gian thc hin thn vng lp khng i th thi gian thc hin vng lp l tch ca s ln lp vi thi gian thc hin thn vng lp.

V d 1-7: Tnh thi gian thc hin ca th tc sp xp ni bt


PROCEDURE Bubble(VAR a: ARRAY[1..n] OF integer); VAR i,j,temp: Integer; BEGIN {1} FOR i:=1 TO n-1 DO {2} FOR j:=n DOWNTO i+1 DO {3} IF a[j-1]>a[j]THEN BEGIN{hon v a[i], a[j]} {4} temp := a[j-1]; {5} a[j-1] := a[j]; {6} a[j] := temp; END; END;

V gii thut sp xp ni bt, chng ta s bn k hn trong chng 2. y, chng ta ch quan tm n phc tp ca gii thut. Ta thy ton b chng trnh ch gm mt lnh lp {1}, lng trong lnh {1} l lnh {2}, lng trong lnh {2} l lnh {3} v lng trong lnh {3} l 3 lnh ni tip nhau {4}, {5} v {6}. Chng ta s tin hnh tnh phc tp theo th t t trong ra. Trc ht, c ba lnh gn {4}, {5} v {6} u tn O(1) thi gian, vic so snh a[j-1] > a[j] cng tn O(1) thi gian, do lnh {3} tn O(1) thi gian. Vng lp {2} thc hin (n-i) ln, mi ln O(1) do vng lp {2} tn O((n-i).1) = O(n-i). Vng lp {1} lp c I chy t 1 n n-1nn thi gian thc hin ca vng lp {1} v cng l phc tp ca gii thut l
T(n) = (n i) =
i =1 n 1

n(n 1) = O(n2). 2

Ch : Trong trng hp vng lp khng xc nh c s ln lp th chng ta phi ly s ln lp trong trng hp xu nht. V d 1-8: Tm kim tun t. Hm tm kim Search nhn vo mt mng a c n s nguyn v mt s nguyn x, hm s tr v gi tr logic TRUE nu tn ti mt phn t a[i] = x, ngc li hm tr v FALSE.

Nguyn Vn Linh

Trang 5

Gii thut

K thut phn tch gii thut

Gii thut tm kim tun t l ln lt so snh x vi cc phn t ca mng a, bt u t a[1], nu tn ti a[i] = x th dng v tr v TRUE, ngc li nu tt c cc phn t ca a u khc X th tr v FALSE.
FUNCTION Search(a:ARRAY[1..n] OF Integer;x:Integer):Boolean; VAR i:Integer; Found:Boolean; BEGIN {1} i:=1; {2} Found:=FALSE; {3} WHILE(i<=n)AND (not Found) DO {4} IF A[i]=X THEN Found:=TRUE ELSE i:=i+1; {5} Search:=Found; END;

Ta thy cc lnh {1}, {2}, {3} v {5} ni tip nhau, do phc tp ca hm Search chnh l phc tp ln nht trong 4 lnh ny. D dng thy rng ba lnh {1}, {2} v {5} u c phc tp O(1) do phc tp ca hm Search chnh l phc tp ca lnh {3}. Lng trong lnh {3} l lnh {4}. Lnh {4} c phc tp O(1). Trong trng hp xu nht (tt c cc phn t ca mng a u khc x) th vng lp {3} thc hin n ln, vy ta c T(n) = O(n). 1.5.4 phc tp ca chng trnh c gi chng trnh con khng qui Nu chng ta c mt chng trnh vi cc chng trnh con khng quy, tnh thi gian thc hin ca chng trnh, trc ht chng ta tnh thi gian thc hin ca cc chng trnh con khng gi cc chng trnh con khc. Sau chng ta tnh thi gian thc hin ca cc chng trnh con ch gi cc chng trnh con m thi gian thc hin ca chng c tnh. Chng ta tip tc qu trnh nh gi thi gian thc hin ca mi chng trnh con sau khi thi gian thc hin ca tt c cc chng trnh con m n gi c nh gi. Cui cng ta tnh thi gian cho chng trnh chnh. Gi s ta c mt h thng cc chng trnh gi nhau theo s sau:
A B B1 B11

B2

B12

Hnh 1-1: S gi thc hin cc chng trnh con khng quy

Chng trnh A gi hai chng trnh con l B v C, chng trnh B gi hai chng trnh con l B1 v B2, chng trnh B1 gi hai chng trnh con l B11 v B12. tnh thi gian thc hin ca A, ta tnh theo cc bc sau:

Nguyn Vn Linh

Trang 6

Gii thut

K thut phn tch gii thut

1. Tnh thi gian thc hin ca C, B2, B11 v B12. V cc chng trnh con ny khng gi chng trnh con no c. 2. Tnh thi gian thc hin ca B1. V B1 gi B11 v B12 m thi gian thc hin ca B11 v B12 c tnh bc 1. 3. Tnh thi gian thc hin ca B. V B gi B1 v B2 m thi gian thc hin ca B1 c tnh bc 2 v thi gian thc hin ca B2 c tnh bc 1. 4. Tnh thi gian thc hin ca A. V A gi B v C m thi gian thc hin ca B c tnh bc 3 v thi gian thc hin ca C c tnh bc 1. V d 1-9: Ta c th vit li chng trnh sp xp bubble nh sau: Trc ht chng ta vit th tc Swap thc hin vic hon i hai phn t cho nhau, sau so trong th tc Bubble, khi cn ta s gi n th tc Swap ny.
PROCEDURE Swap (VAR x, y: Integer); VAR temp: Integer; BEGIN temp := x; x := y; y := temp; END; PROCEDURE Bubble (VAR a: ARRAY[1..n] OF integer); VAR i,j :Integer; BEGIN {1} FOR i:=1 TO n-1 DO {2} FOR j:=n DOWNTO i+1 DO {3} IF a[j-1]>a[j] THEN Swap(a[j-1], a[j]); END;

Trong cch vit trn, chng trnh Bubble gi chng trnh con Swap, do tnh thi gian thc hin ca Bubble, trc ht ta cn tnh thi gian thc hin ca Swap. D thy thi gian thc hin ca Swap l O(1) v n ch bao gm 3 lnh gn. Trong Bubble, lnh {3} gi Swap nn ch tn O(1), lnh {2} thc hin n-i ln, mi ln tn O(1) nn tn O(n-i). Lnh {1} thc hin n-1 ln nn
T(n) = (n i) =
i =1 n 1

n(n 1) = O(n2). 2

1.6 PHN TCH CC CHNG TRNH QUY Vi cc chng trnh c gi cc chng trnh con quy, ta khng th p dng cch tnh nh va trnh by trong mc 1.5.4 bi v mt chng trnh quy s gi chnh bn thn n. C th thy hnh nh chng trnh quy A nh sau:

Hnh 1-2: S chng trnh con A quy

Nguyn Vn Linh

Trang 7

Gii thut

K thut phn tch gii thut

Vi phng php tnh phc tp trnh by trong mc 1.5.4 th khng th thc hin c. Bi v nu theo phng php th, tnh thi gian thc hin ca chng trnh A, ta phi tnh thi gian thc hin ca chng trnh A v ci vng lun qun y khng th kt thc c. Vi cc chng trnh quy, trc ht ta cn thnh lp cc phng trnh quy, sau gii phng trnh quy, nghim ca phng trnh quy s l thi gian thc hin ca chng trnh quy. 1.6.1 Thnh lp phng trnh quy Phng trnh quy l mt phng trnh biu din mi lin h gia T(n) v T(k), trong T(n) l thi gian thc hin chng trnh vi kch thc d liu nhp l n, T(k) thi gian thc hin chng trnh vi kch thc d liu nhp l k, vi k < n. thnh lp c phng trnh quy, ta phi cn c vo chng trnh quy. Thng thng mt chng trnh quy gii bi ton kch thc n, phi c t nht mt trng hp dng ng vi mt n c th v li gi quy gii bi ton kch thc k (k<n). thnh lp phng trnh quy, ta gi T(n) l thi gian gii bi ton kch thc n, ta c T(k) l thi gian gii bi ton kch thc k. Khi quy dng, ta phi xem xt khi chng trnh lm g v tn ht bao nhiu thi gian, chng hn thi gian ny l c(n). Khi quy cha dng th phi xt xem c bao nhiu li gi quy vi kch thc k ta s c by nhiu T(k). Ngoi ra ta cn phi xem xt n thi gian phn chia bi ton v tng hp cc li gii, chng hn thi gian ny l d(n). Dng tng qut ca mt phng trnh quy s l: T(n) =
C(n) F(T(k)) + d(n)

Trong C(n) l thi gian thc hin chng trnh ng vi trng hp quy dng. F(T(k)) l mt a thc ca cc T(k). d(n) l thi gian phn chia bi ton v tng hp cc kt qu. V d 1-10: Xt hm tnh giai tha vit bng gii thut quy nh sau:
FUNCTION Giai_thua(n:Integer): Integer; BEGIN IF n=0 then Giai_thua :=1 ELSE Giai_thua := n* Giai_thua(n-1); END;

Gi T(n) l thi gian thc hin vic tnh n giai tha, th T(n-1) l thi gian thc hin vic tnh n-1 giai tha. Trong trng hp n = 0 th chng trnh ch thc hin mt lnh gn Giai_thua:=1, nn tn O(1), do ta c T(0) = C1. Trong trng hp n>0 chng trnh phi gi quy Giai_thua(n-1), vic gi quy ny tn T(n-1), sau khi c kt qu ca vic gi quy, chng trnh phi nhn kt qu vi n v gn cho Giai_thua. Thi gian thc hin php nhn v php gn l mt hng C2. Vy ta c

Nguyn Vn Linh

Trang 8

Gii thut

K thut phn tch gii thut

T(n) =

C1

nu n = 0

T(n - 1) + C 2 nu n > 0

y l phng trnh quy tnh thi gian thc hin ca chng trnh quy Giai_thua. V du 1-11: Chng ta xt th tc MergeSort mt cch phc tho nh sau:
FUNCTION MergeSort (L:List; n:Integer):List; VAR L1,L2:List; BEGIN IF n=1 THEN RETURN(L) ELSE BEGIN Chia i L thnh L1 v L2, vi di n/2; RETURN(Merge(MergeSort(L1,n/2),MergeSort(L2,n/2))); END; END;

Chng hn sp xp danh sch L gm 8 phn t 7, 4, 8, 9, 3, 1, 6, 2 ta c m hnh minh ha ca MergeSort nh sau: 7 4 8 9 3 1 6 2 7 4 8 9 3 1 6 2

7 4 7 4 8

8 9 9 3

3 1 1 6

6 2 2

4 7

8 9

1 3

2 6

4 7 8 9

1 2 3 6

1 2 3 4 6 7 8 9
Hnh 1-3: Minh ho sp xp trn

Hm MergeSort nhn mt danh sch c di n v tr v mt danh sch c sp xp. Th tc Merge nhn hai danh sch c sp L1 v L2 mi danh sch c di
n , trn chng li vi nhau c mt danh sch gm n phn t c th t. 2

Nguyn Vn Linh

Trang 9

Gii thut

K thut phn tch gii thut

Gii thut chi tit ca Merge ta s bn sau, chng ta ch rng thi gian Merge cc danh sch c di
n l O(n). 2 n 2

Gi T(n) l thi gian thc hin MergeSort mt danh sch n phn t th T( ) l thi gian thc hin MergeSort mt danh sch
n phn t. 2

Khi L c di 1 (n = 1) th chng trnh ch lm mt vic duy nht l return(L), vic ny tn O(1) = C1 thi gian. Trong trng hp n > 1, chng trnh phi thc hin gi quy MergeSort hai ln cho L1 v L2 vi di
n 2

n do thi gian gi 2

hai ln quy ny l 2T( ). Ngoi ra cn phi tn thi gian cho vic chia danh sch L thnh hai na bng nhau v trn hai danh sch kt qu (Merge). Ngi ta xc inh c thi gian chia danh sch v Merge l O(n) = C2n . Vy ta c phng trnh quy nh sau: T(n) =
C1 nu n = 1 n 2T( ) + C 2 n nu n > 1 2

1.6.2 Gii phng trnh quy C ba phng php gii phng trnh quy: 1.- Phng php truy hi 2.- Phng php on nghim. 3.- Li gii tng qut ca mt lp cc phng trnh quy.
1.6.2.1 Phng php truy hi

Dng quy thay th bt k T(m) vi m < n vo pha phi ca phng trnh cho n khi tt c T(m) vi m > 1 c thay th bi biu thc ca cc T(1) hoc T(0). V T(1) v T(0) lun l hng s nn chng ta c cng thc ca T(n) cha cc s hng ch lin quan n n v cc hng s. T cng thc ta suy ra T(n). V d 1-12: Gii phng trnh T(n) = Ta c T(n) = T(n-1) + C2 T(n) = [T(n-2) + C2] + C2 = T(n-2) + 2C2 T(n) = [T(n-3) + C2] + 2C2 = T(n-3) + 3C2 T(n) = T(n-i) + iC2 Qu trnh trn kt thc khi n - i = 0 hay i = n. Khi ta c T(n) = T(0) + nC2 = C1 + n C2 = O(n)
Nguyn Vn Linh Trang 10

C1

nu n = 0

T(n - 1) + C 2 nu n > 0

Gii thut

K thut phn tch gii thut

V d 1-13: Gii phng trnh T(n) = Ta c T(n) = 2T( ) + 2C 2 n


n 2

C1

nu n = 1

n 2T( ) + C 2 n nu n > 1 2

n n n T(n) = 2 [ 2T( ) + C 2 ] + C 2 n = 4T( ) + 2C 2 n 4 2 4 n n n T(n) = 4 [ 2T( ) + C 2 ] + 2C 2 n = 8T( ) + 3C 2 n 8 4 8


.

T(n) = 2 i T(

n ) + iC 2 n 2i n i i = 1 hay 2 = n v do i = logn. Khi ta c: 2

Qu trnh suy rng s kt thc khi

T(n) = nT(1) + lognC2n = C1n + C2nlogn = O(nlogn).


1.6.2.2 Phng php on nghim

Ta on mt nghim f(n) v dng chng minh quy np chng t rng T(n) f(n) vi mi n. Thng thng f(n) l mt trong cc hm quen thuc nh logn, n, nlogn, n2, n3, 2n, n!, nn. i khi chng ta ch on dng ca f(n) trong c mt vi tham s cha xc nh (chng hn f(n) = an2 vi a cha xc nh) v trong qu trnh chng minh quy np ta s suy din ra gi tr thch hp ca cc tham s. V d 1-12: Gii phng trnh quy T(n) =
C1 nu n = 1 n 2T( ) + C 2 n nu n > 1 2

Gi s chng ta on f(n) = anlogn. Vi n = 1 ta thy rng cch on nh vy khng c bi v anlogn c gi tr 0 khng ph thuc vo gi tr ca a. V th ta th tip theo f(n) = anlogn + b. Vi n = 1 ta c, T(1) = C1 v f(1) = b, mun T(1) f(1) th b C1 (*) Gi s rng T(k) f(k), tc l T(k) aklogk + b vi mi k < n (gi thit quy np). Ta phi chng minh T(n) anlogn + b vi mi n. Gi s n 2, t phng trnh cho ta c T(n) = 2T( ) + C2n p dng gi thit quy np vi k = T(n) = 2T( ) + C2n
n 2 n < n ta c: 2 n 2

2[a log

n 2

n + b] + C2n 2

Nguyn Vn Linh

Trang 11

Gii thut

K thut phn tch gii thut

T(n) (anlogn - an + 2b) + C2n


T(n)

(anlogn + b) + [b + (C2 - a)n] . Nu ly a C2 + b (**) ta c

T(n) (anlogn + b) + [b +(C2 - C2 - b )n ] T(n) (anlogn + b) + (1-n) b T(n) anlogn + b = f(n). (do b>0 v 1-n<0) Nu ta ly a v b sao cho c (*) v (**) u tho mn th T(n) an logn + b vi mi n. Ta phi gii h
b C1 a C 2 + b

n gin, ta gii h

b = C1 a = C2 + b

D dng ta c b = C1 v a = C1 +C2 ta c T(n) (C1 + C2)nlogn +C1 vi mi n. Hay ni cch khc T(n) l O(nlogn).
1.6.2.3 Li gii tng qut cho mt lp cc phng trnh quy

Khi thit k cc gii thut, ngi ta thng vn dng phng php chia tr m ta s bn chi tit hn trong chng 3. y chi trnh by tm tt phng php nh sau: gii mt bi ton kch thc n, ta chia bi ton cho thnh a bi ton con, mi bi ton con c kch thc
n . Gii cc bi ton con ny v tng hp kt qu li b

c kt qu ca bi ton cho. Vi cc bi ton con chng ta cng s p dng phng php tip tc chia nh ra na cho n cc bi ton con kch thc 1. K thut ny s dn chng ta n mt gii thut quy. Gi thit rng mi bi ton con kch thc 1 ly mt n v thi gian v thi gian chia bi ton kch thc n thnh cc bi ton con kch thc
n v tng hp kt qu b

t cc bi ton con c li gii ca bi ton ban u l d(n). (Chng hn i vi v d MergeSort, chng ta c a = b = 2, v d(n) = C2n. Xem C1 l mt n v). Tt c cc gii thut quy nh trn u c th thnh lp mt phng trinh quy tng qut, chung cho lp cc bi ton y. Nu gi T(n) l thi gian gii bi ton kch thc n th T( ) l thi gian gii bi ton con kch thc ton con kch thc
n b n . Khi n = 1 theo gi thit trn th thi gian gii bi ton b n b

kch thc 1 l 1 n v, tc l T(1) = 1. Khi n ln hn 1, ta phi gii quy a bi


n n , mi bi ton con tn T( ) nn thi gian cho a li gii b b

quy ny l aT( ). Ngoi ra ta cn phi tn thi gian phn chia bi ton v tng hp cc kt qu, thi gian ny theo gi thit trn l d(n). Vy ta c phng trnh quy:

Nguyn Vn Linh

Trang 12

Gii thut 1

K thut phn tch gii thut neu n = 1 n aT( ) + d(n) neu n > 1 b
(I.1)

T(n) =

Ta s dng phng php truy hi gii phng trnh ny. Khi n > 1 ta c T(n) = aT( ) + d(n) T(n)= a[aT(
n n n n 2 ) + d(n) 2 ) + d( ) ] + d(n) = a T( 2 ) + ad( b b b b n n n n n n 3 2 3 ) + d ( 2 ) ] + ad ( ) + d(n) = a T ( 3 ) + a d ( 2 ) + ad ( ) + d(n) b b b b b b n b

T(n)= a 2 [a T( =
i

........

i -1 n a = a T( i ) + j d( j ) a b b j= 0

Gi s n = bk, qu trnh suy rng trn s kt thc khi i = k. Khi ta c T(


k -1 k

n ) = T(1) = 1. Thay vo trn ta c: bk

T(n) = a + j d (b k - j ) a
j= 0

(I.2)

1.6.2.3.1 Hm tin trin, nghim thun nht v nghim ring

Trong phng trnh quy (I.1) hm thi gian d(n) c gi l hm tin trin (driving function) Trong cng thc (I.2), ak = nlogba c gi l nghim thun nht (homogeneous solutions). Nghim thun nht l nghim chnh xc khi d(n) = 0 vi mi n. Ni mt cch khc, nghim thun nht biu din thi gian gii tt c cc bi ton con. Trong cng thc (I.2),

a d (b ) c gi l nghim ring (particular solutions).


j k- j j= 0

k -1

Nghim ring biu din thi gian phi tn to ra cc bi ton con v tng hp cc kt qu ca chng. Nhn vo cng thc ta thy nghim ring ph thuc vo hm tin trin, s lng v kch thc cc bi ton con. Khi tm nghim ca phng trnh (I.1), chng ta phi tm nghim ring v so snh vi nghim thun nht. Nu nghim no ln hn, ta ly nghim lm nghim ca phng trnh (I.1). Vic xc nh nghim ring khng n gin cht no, tuy vy, chng ta cng tm c mt lp cc hm tin trin c th d dng xc nh nghim ring.

Nguyn Vn Linh

Trang 13

Gii thut
1.6.2.3.2 Hm nhn

K thut phn tch gii thut

Mt hm f(n) c gi l hm nhn (multiplicative function) nu f(m.n) = f(m).f(n) vi mi s nguyn dng m v n.


V d 1-13: Hm f(n) = nk l mt hm nhn, v f(m.n) = (m.n)k = mk.nk = f(m) f(n)

Tnh nghim ca phng trnh tng qut trong trng hp d(n) l hm nhn: Nu d(n) trong (I.1) l mt hm nhn th theo tnh cht ca hm nhn ta c d(bk-j) = [d(b)]k-j v nghim ring ca (I.2) l
a k ] -1 d(b) a -1 d(b)

a d(b ) = a [d(b)]
j k- j j j= 0 j= 0

k -1

k -1

k- j

= [d(b)]k

a [ d(b) ]
j= 0

k -1

[
j

= [d(b)]k

a k - [d(b)]k Hay nghim ring = a -1 d(b)

(I.3)

Xt ba trng hp sau: 1.- Trng hp 1: a > d(b) th trong cng thc (I.3) ta c ak > [d(b)]k, theo quy tc ly phc tp ta c nghim ring l O(ak) = O(nlogba). Nh vy nghim ring v nghim thun nht bng nhau do T(n) l O(nlogba). Trong trng hp ny ta thy thi gian thc hin ch ph thuc vo a, b m khng ph thuc vo hm tin trin d(n). V vy ci tin gii thut ta cn gim a hoc tng b. 2.- Trng hp 2: a < d(b) th trong cng thc (I.3) ta c [d(b)]k > ak, theo quy tc ly phc tp ta cnghim ring l O([d(b)]k) = O(nlogbd(b)). Trong trng hp ny nghim ring ln hn nghim thun nht nn T(n) l O(nlogbd(b)). ci tin gii thut chng ta cn gim d(b) hoc tng b. Trng hp c bit quan trng khi d(n) = n . Khi d(b) = b v logbb = 1. V th nghim ring l O(n) v do vy T(n) l O(n). 3.- Trng hp 3: a = d(b) th cng thc (I.3) khng xc inh nn ta phi tnh trc tip nghim ring: Nghim ring = [d(b)]k
[
j= 0 k -1

a j k ] =a d(b)

1 = akk (do a = d(b))


j= 0

k -1

Do n = bk nn k = logbn v ak = nlogba. Vy nghim ring l nlogbalogbn v nghim ny ln gp logbn ln nghim thun nht. Do T(n) l O(nlogbalogbn). Ch khi gii mt phng trnh quy c th, ta phi xem phng trnh c thuc dng phng trnh tng qut hay khng. Nu c th phi xt xem hm tin trin c phi l hm nhn khng. Nu c th ta xc nh a, d(b) v da vo s so snh gia a v d(b) m vn dng mt trong ba trng hp ni trn.

Nguyn Vn Linh

Trang 14

Gii thut

K thut phn tch gii thut

V d 1-14: Gii cc phng trnh quy sau vi T(1) = 1 v 1/- T(n) = 4T( ) + n 2/- T(n) = 4T( ) + n2 3/- T(n) = 4T( ) + n3 Cc phng trnh cho u c dng phng trnh tng qut, cc hm tin trin d(n) u l cc hm nhn v a = 4, b = 2. Vi phng trnh th nht, ta c d(n) = n => d(b) = b = 2 < a, p dng trng hp 1 ta c T(n) = O(nlogba) = O(nlog4) = O(n2). Vi phng trnh th hai, d(n) = n2 => d(b) = b2 = 4 = a, p dng trng hp 3 ta c T(n) = O(nlogbalogbn) = O(nlog4logn) = O(n2logn). Vi phng trnh th 3, ta c d(n) = n3 => d(b) = b3 = 8 > a, p dng trng hp 2, ta c T(n) = O(nlogbd(b)) = O(nlog8) = O(n3).
1.6.2.3.3 Cc hm tin trin khc

n 2 n 2 n 2

Trong trng hp hm tin trin khng phi l mt hm nhn th chng ta khng th p dng cc cng thc ng vi ba trng hp ni trn m chng ta phi tnh trc tip nghim ring, sau so snh vi nghim thun nht ly nghim ln nht trong hai nghim lm nghim ca phng trnh. V d 1-15: Gii phng trnh quy sau :
T(1) = 1
n 2

T(n) = 2T( ) + nlogn Phng trnh cho thuc dng phng trnh tng qut nhng d(n) = nlogn khng phi l mt hm nhn. Ta c nghim thun nht = nlogba = nlog2 = n Do d(n) = nlogn khng phi l hm nhn nn ta phi tnh nghim ring bng cch xt trc tip Nghim ring =

a d (b ) = 2 2
j k- j j j= 0 j= 0

k -1

k -1

k- j

log2 k - j = 2k - j) = 2 k (k
j= 0

k -1

k ( k + 1) = O(2kk2) 2

Theo gi thit trong phng trnh tng qut th n = bk nn k = logbn, y do b = 2 nn 2k = n v k = logn, chng ta c nghim ring l O(nlog2n), nghim ny ln hn nghim thun nht do T(n) = O(nlog2n).

Nguyn Vn Linh

Trang 15

Gii thut

K thut phn tch gii thut

1.7 TNG KT CHNG 1 Trong chng ny, chng ta cn phi nm vng cc sau: 1.- S phn tch, nh gi gii thut l cn thit la chn gii thut tt, hoc ci tin gii thut. 2.- S dng khi nim phc tp v k hiu ln nh gi gii thut. 3.- i vi cc chng trnh khng gi chng trnh con, th dng quy tc cng, quy tc nhn v quy tc chung phn tch, tnh phc tp. 4.- i vi cc chng trnh gi chng trnh con, th tnh phc tp theo nguyn tc t trong ra. 5.- i vi cc chng trnh quy th trc ht phi thnh lp phng trnh quy, sau gii phng trnh quy, nghim ca phng trnh quy chnh l phc tp ca gii thut. 6.- Khi gii mt phng trnh quy khng thuc dng phng trnh tng qut th s dng phng php truy hi hoc phng php on nghim. 7.- Khi gii mt phng trnh quy thuc dng phng trnh tng qut, nu hm tin trin d(n) l mt hm nhn th vn dng cng thc nghim ca mt trong ba trng hp xc nh nghim, cn nu d(n) khng phi l hm nhn th phi tnh trc tip nghim ring v so snh vi nghim thun nht chn nghim. BI TP CHNG 1 Bi 1: Tnh thi gian thc hin ca cc on chng trnh sau: a) Tnh tng ca cc s
{1} {2} {3} {4} Sum := 0; for i:=1 to n do begin readln(x); Sum := Sum + x; end; 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;

b) Tnh tch hai ma trn vung cp n C = A*B:


{1} {2} {3} {4} {5}

Bi 2: Gii cc phng trnh quy sau vi T(1) = 1 v a) T(n) = 3T(n/2) + n b) T(n) = 3T(n/2) + n2 c) T(n) = 8T(n/2) + n3 Bi 3: Gii cc phng trnh quy sau vi T(1) = 1 v a) T(n) = 4T(n/3) + n b) T(n) = 4T(n/3) + n2
Nguyn Vn Linh Trang 16

Gii thut

K thut phn tch gii thut

c) T(n) = 9T(n/3) + n2 Bi 4: Gii cc phng trnh quy sau vi T(1) = 1 v a) T(n) = T(n/2) + 1 b) T(n) = 2T(n/2) + logn c) T(n) = 2T(n/2) + n d) T(n) = 2T(n/2) + n2 Bi 5: Gii cc phng trnh quy sau bng phng php on nghim: a) T(1) = 2 v T(n) = 2T(n-1) + 1 vi n > 1 b) T(1) = 1 v T(n) = 2T(n-1) + n vi n > 1 Bi 6: Cho mt mng n s nguyn c sp th t tng. Vit hm tm mt s nguyn trong mng theo phng php tm kim nh phn, nu tm thy th tr v TRUE, ngc li tr v FALSE. S dng hai k thut l quy v vng lp. Vi mi k thut hy vit mt hm tm v tnh thi gian thc hin ca hm . Bi 7: Tnh thi gian thc hin ca gii thut quy gii bi ton Thp H ni vi n tng? Bi 8: Xt cng thc truy ton tnh s t hp chp k ca n nh sau:
Ck = n 1 nu k = 0 hoac k = n k C k --1 + C n -1 nu 0 < k < n n1

a) Vit mt hm quy tnh s t hp chp k ca n. b) Tnh thi gian thc hin ca gii thut ni trn.

Nguyn Vn Linh

Trang 17

Gii thut

Sp xp

CHNG 2: SP XP
2.1 TNG QUAN 2.1.1 Mc tiu Chng ny s trnh by mt s phng php sp xp. Vi mi phng php cn nm vng cc phn sau: Gii thut sp xp. Minh ha vic sp xp theo gii thut. Chng trnh sp xp. nh gi gii thut.

2.1.2 Kin thc c bn cn thit Cc kin thc c bn cn thit hc chng ny bao gm:
-

Cu trc d liu kiu mu tin (record) v kiu mng (array) ca cc mu tin. Kiu d liu tru tng danh sch v th tc xen mt phn t vo danh sch (insert). K thut lp trnh v lp trnh quy.

2.1.3 Ti liu tham kho A.V. Aho, J.E. Hopcroft, J.D. Ullman. Data Structures and Algorithms. Addison-Wesley. 1983. (Chapter 8). Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998. (Chapter 9). inh Mnh Tng. Cu trc d liu & Thut ton. Nh xut bn khoa hc v k thut. H ni-2001. (Chng 9). Xun Li. Cu trc d liu & Gii thut. 1995. (Chng 9). 2.1.4 Ni dung ct li Trong chng ny chng ta s nghin cu cc vn sau: Bi ton sp xp. Mt s gii thut sp xp n gin. QuickSort HeapSort BinSort

Nguyn Vn Linh

Trang 18

Gii thut

Sp xp

2.2 BI TON SP XP 2.2.1 Tm quan trng ca bi ton sp xp Sp xp mt danh sch cc i tng theo mt th t no l mt bi ton thng c vn dng trong cc ng dng tin hc. V d ta cn sp xp danh sch th sinh theo tn vi th t Alphabet, hoc sp xp danh sch sinh vin theo im trung bnh vi th t t cao n thp. Mt v d khc l khi cn tm kim mt i tng trong mt danh sch cc i tng bng gii thut tm kim nh phn th danh sch cc i tng ny phi c sp xp trc . Tm li sp xp l mt yu cu khng th thiu trong khi thit k cc phn mm. Do vic nghin cu cc phng php sp xp l rt cn thit vn dng trong khi lp trnh. 2.2.2 Sp xp trong v sp xp ngoi Sp xp trong l s sp xp d liu c t chc trong b nh trong ca my tnh, ta c th s dng kh nng truy nhp ngu nhin ca b nh v do vy s thc hin rt nhanh. Sp xp ngoi l s sp xp c s dng khi s lng i tng cn sp xp ln khng th lu tr trong b nh trong m phi lu tr trn b nh ngoi. C th l ta s sp xp d liu c lu tr trong cc tp tin. Chng ny tp trung gii quyt vn sp xp trong cn sp xp ngoi s c nghin cu trong chng IV. 2.2.3 T chc d liu v ngn ng ci t Cc i tng cn c sp xp l cc mu tin gm mt hoc nhiu trng. Mt trong cc trng c gi l kha (key), kiu ca n l mt kiu c quan h th t (nh cc kiu s nguyn, s thc, chui k t...). Danh sch cc i tng cn sp xp s l mt mng ca cc mu tin va ni trn. Mc ch ca vic sp xp l t chc li cc mu tin sao cho cc kha ca chng c sp th t tng ng vi quy lut sp xp. trnh by cc v d minh ha chng ta s dng PASCAL lm ngn ng th hin v s dng khai bo sau:
CONST N = 10; TYPE KeyType = integer; OtherType = real; RecordType = Record Key : KeyType; OtherFields : OtherType; end; a : array[1..N] of RecordType;

VAR

Nguyn Vn Linh

Trang 19

Gii thut
PROCEDURE VAR temp BEGIN temp x := y := END; Swap(var x,y:RecordType); : RecordType; := x; y; temp;

Sp xp

Cn thy rng th tc Swap ly O(1) thi gian v ch thc hin 3 lnh gn ni tip nhau. 2.3 CC PHNG PHP SP XP N GIN Cc gii thut n gin thng ly O(n2) thi gian sp xp n i tng v cc gii thut ny thng ch dng sp cc danh sch c t i tng. Vi mi gii thut chng ta s nghin cu cc phn: gii thut, v d, chng trnh v phn tch nh gi. 2.3.1 Sp xp chn (Selection Sort)
2.3.1.1 Gii thut

y l phng php sp xp n gin nht c tin hnh nh sau: u tin chn phn t c kha nh nht trong n phn t t a[1] n a[n] v hon v n vi phn t a[1]. Chn phn t c kha nh nht trong n-1phn t t a[2] n a[n] v hon v n vi a[2]. Tng qut bc th i, chn phn t c kho nh nht trong n-i+1 phn t t a[i] n a[n] v hon v n vi a[i]. Sau n-1 bc ny th mng c sp xp. Phng php ny c gi l phng php chn bi v n lp li qu trnh chn phn t nh nht trong s cc phn t cha c sp. V d 2-1: Sp xp mng gm 10 mu tin c kha l cc s nguyn: 5, 6, 2, 2, 10, 12, 9, 10, 9 v 3 Bc 1: Ta chn c phn t c kho nh nht (bng 2) trong cc phn t t a[1] n a[10] l a[3], hon i a[1] v a[3] cho nhau. Sau bc ny th a[1] c kho nh nht l 2. Bc 2: Ta chn c phn t c kho nh nht (bng 2) trong cc phn t t a[2] n a[10] l a[4], hon i a[2] v a[4] cho nhau. Tip tc qu trnh ny v sau 9 bc th kt thc. Bng sau ghi li cc gi tr kho tng ng vi tng bc.

Nguyn Vn Linh

Trang 20

Gii thut

Sp xp

Kha Bc Ban u Bc 1 Bc 2 Bc 3 Bc 4 Bc 5 Bc 6 Bc 7 Bc 8 Bc 9 Kt qu

a[1] 5 2

a[2] 6 6 2

a[3] 2 5 5 3

a[4] 2 2 6 6 5

a[5] 10 10 10 10 10 6

a[6] 12 12 12 12 12 12 9

a[7] 9 9 9 9 9 9 12 9 9

a[8] 10 10 10 10 10 10 10 10 10 10

a[9] 9 9 9 9 9 9 9 12 12 10 10

a[10] 3 3 3 5 6 10 10 10 10 12 12

Hnh 2-1: Sp xp chn


2.3.1.2 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;
2.3.1.3 nh gi: Phng php sp xp chn ly O(n2) sp xp n phn t.

Trc ht ta c th tc Swap ly mt hng thi gian nh ni mc 2.2.3. Cc lnh {2}, {3} u ly O(1) thi gian. Vng lp for {4} {7} thc hin n-i ln, v j chy t i+1 n n, mi ln ly O(1), nn ly O(n-i) thi gian. Do thi gian tng cng l: T(n) =

(n - i) =
i =1

n -1

n(n - 1) tc l O(n2). 2

2.3.2 Sp xp xen (Insertion Sort)


2.3.2.1 Gii thut

Trc ht ta xem phn t a[1] l mt dy c th t.

Nguyn Vn Linh

Trang 21

Gii thut

Sp xp

Bc 1, xen phn t a[2] vo danh sch c th t a[1] sao cho a[1], a[2] l mt danh sch c th t. Bc 2, xen phn t a[3] vo danh sch c th t a[1], a[2] sao cho a[1], a[2], a[3] l mt danh sch c th t. Tng qut, bc i, xen phn t a[i+1] vo danh sch c th t a[1],a[2],..a[i] sao cho a[1], a[2],.. a[i+1] l mt danh sch c th t. Phn t ang xt a[j] s c xen vo v tr thch hp trong danh sch cc phn t c sp trc a[1],a[2],..a[j-1] bng cch so snh kho ca a[j] vi kho ca a[j-1] ng ngay trc n. Nu kho ca a[j] nh hn kho ca a[j-1] th hon i a[j-1] v a[j] cho nhau v tip tc so snh kho ca a[j-1] (lc ny a[j-1] cha ni dung ca a[j]) vi kho ca a[j-2] ng ngay trc n...
V d 2-2: Sp xp mng gm 10 mu tin cho trong v d 2-1.

Bc 1: Xen a[2] vo dy ch c mt phn t a[1] ta c dy hai phn t a[1]..a[2] c th t. Vic xen ny thc ra khng phi lm g c v hai phn t a[1], a[2] c kho tng ng l 5 v 6 c th t. Bc 2: Xen a[3] vo dy a[1]..a[2] ta c dy ba phn t a[1]..a[3] c th t. Vic xen ny c thc hin bng cch : so snh kho ca a[3] vi kho ca a[2], do kho ca a[3] nh hn kho ca a[2] (2<6) nn hon i a[3] v a[2] cho nhau. Li so snh kho ca a[2] vi kho ca a[1], do kho ca a[2] nh hn kho ca a[1] (2<5) nn hon i a[2] v a[1] cho nhau. Tip tc qu trnh ny v sau 9 bc th kt thc. Bng sau ghi li cc gi tr kho tng ng vi tng bc. Kha Bc Ban u Bc 1 Bc 2 Bc 3 Bc 4 Bc 5 Bc 6 Bc 7 Bc 8 Bc 9
a[1] 5 5 2 2 2 2 2 2 2 2 a[2] 6 6 5 2 2 2 2 2 2 2 a[3] 2 6 5 5 5 5 5 5 3 a[4] 2 a[5] 10 a[6] 12 a[7] 9 A[8] 10 a[9] 9 a[10] 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

Hnh 2-2: Sp xp xen


2.3.2.2 Chng trnh

PROCEDURE InsertionSort; VAR i,j: integer;

Nguyn Vn Linh

Trang 22

Gii thut

Sp xp

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;
2.3.2.3 nh gi: Phng php sp xp xen ly O(n2) sp xp n phn t.

Ta thy cc lnh {4} v {5} u ly O(1). Vng lp {3} chy nhiu nht i-1 ln, mi ln tn O(1) nn {3} ly i-1 thi gian. Lnh {2} v {3} l hai lnh ni tip nhau, lnh {2} ly O(1) nn c hai lnh ny ly i-1. 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 T(n) =

(i - 1) =
i=2

n(n - 1) tc l O(n2). 2

2.3.3 Sp xp ni bt (Bubble Sort)


2.3.3.1 Gii thut

Chng ta tng tng rng cc mu tin c lu trong mt mng dc, qua qu trnh sp, mu tin no c kha nh s c ni ln trn. Chng ta duyt tan mng, t di ln trn. Nu hai phn t cnh nhau m khng ng th t tc l nu phn t nh hn li nm di th phi cho n ni ln bng cch i ch hai phn t ny cho nhau. C th l: Bc 1: Xt cc phn t t a[n] n a[2], vi mi phn t a[j], so snh kho ca n vi kho ca phn t a[j-1] ng ngay trc n. Nu kho ca a[j] nh hn kho ca a[j-1] th hon i a[j] v a[j-1] cho nhau. Bc 2: Xt cc phn t t a[n] n a[3], v lm tng t nh trn. Sau n-1 bc th kt thc. V d 2-3: Sp xp mng gm 10 mu tin cho trong v d 2-1. Bc 1: Xt a[10] c kho l 3, nh hn kho ca a[9] nn ta hon i a[10] v a[9] cho nhau. Kho ca a[9] by gi l 3 nh hn kho ca a[8] nn ta hon i a[9] v a[8] cho nhau. Kho ca a[8] by gi l 3 nh hn kho ca a[7] nn ta hon i a[8] v a[7] cho nhau. Kho ca a[7] by gi l 3 nh hn kho ca a[6] nn ta hon i a[7] v a[6] cho nhau. Kho ca a[6] by gi l 3 nh hn kho ca a[5] nn ta hon i a[6] v a[5] cho nhau. Kho ca a[5] by gi l 3 khng nh hn kho ca a[4] nn b qua. Kho ca a[4] l 2 khng nh hn kho ca a[3] nn b qua. Kho ca a[3] l 2 nh hn kho ca a[2] nn ta hon i a[3] v a[2] cho nhau. Kho ca a[2] by gi l 2 nh hn kho ca a[1] nn ta hon i a[2] v a[1] cho nhau. n y kt thc bc 1 v a[1] c kho nh nht l 2.

Nguyn Vn Linh

Trang 23

Gii thut

Sp xp

Bc 2: Xt a[10] c kho l 9, nh hn kho ca a[9] nn ta hon i a[10] v a[9] cho nhau. Kho ca a[9] by gi l 9 khng nh hn kho ca a[8] nn b qua. Kho ca a[8] l 9 nh hn kho ca a[7] nn ta hon i a[8] v a[7] cho nhau. Kho ca a[7] by gi l 9 nh hn kho ca a[6] nn ta hon i a[7] v a[6] cho nhau. Kho ca a[6] by gi l 9 khng nh hn kho ca a[5] nn b qua. Kho ca a[5] by gi l 3 khng nh hn kho ca a[4] nn b qua. Kho ca a[4] l 2 nh hn kho ca a[3] nn ta hon i a[4] v a[3] cho nhau. Kho ca a[3] by gi l 2 nh hn kho ca a[2] nn ta hon i a[3] v a[2] cho nhau. n y kt thc bc 2 v a[2] c kho l 2. Tip tc qu trnh ny v sau 9 bc th kt thc. Bng sau ghi li cc gi tr kho tng ng vi tng bc. Kha Bc
Ban u
a[1] 5 2 a[2] 6 5 2 a[3] 2 6 5 3 A[4] 2 2 6 5 5 a[5] 10 3 3 6 6 6 a[6] 12 10 9 9 9 9 9 a[7] 9 12 10 9 9 9 9 9 a[8] 10 9 12 10 10 10 10 10 10 10 a[9] 9 10 9 12 10 10 10 10 10 10 10 a[10] 3 9 10 10 12 12 12 12 12 12 12

Bc 1 Bc 2 Bc 3 Bc 4 Bc 5 Bc 6 Bc 7
Bc 8

Bc 9 Kt qu

Hnh 2-3: Sp xp ni bt
2.3.3.2 Chng trnh

PROCEDURE BubbleSort; VAR i,j: integer; BEGIN {1} FOR i := 1 to n-1 DO {2} FOR j := n DOWNTO i+1 DO {3} IF a[j].key < a[j-1].key THEN {4} Swap(a[j],a[j-1]); END;
2.3.3.3 nh gi: Phng php sp xp ni bt ly O(n2) sp n phn t.

Dng lnh {3} ly mt hng thi gian. Vng lp {2} thc hin (n-i) bc, mi bc ly O(1) nn ly O(n-i) thi gian. Nh vy i vi ton b chng trnh ta c: T(n)=

(n i) =
i =1

n 1

n(n 1) = O(n2). 2

Nguyn Vn Linh

Trang 24

Gii thut

Sp xp

2.4 QUICKSORT Trong phn ny chng ta s nghin cu mt gii thut sp xp c dng mt cch ph bin l Quick Sort do A.R. Hoare pht minh vo nm 1960. Quick Sort c ci tin tr thnh phng php c chn trong cc ng dng sp xp thc t khc nhau. 2.4.1 tng Chng ta vn xt mng a cc mu tin a[1]..a[n]. Gi s v l 1 gi tr kha m ta gi l cht (pivot). Ta phn hoch dy a[1]..a[n] thnh hai mng con "bn tri" v "bn phi". Mng con "bn tri" bao gm cc phn t c kha nh hn cht, mng con "bn phi" bao gm cc phn t c kha ln hn hoc bng cht. Sp xp mng con bn tri v mng con bn phi th mng cho s c sp bi v tt c cc kha trong mng con bn tri u nh hn cc kha trong mng con bn phi. Vic sp xp cc mng con bn tri v bn phi cng c tin hnh bng phng php ni trn. Mt mng ch gm mt phn t hoc gm nhiu phn t c kha bng nhau th c th t. 2.4.2 Thit k gii thut
2.4.2.1 Vn chn cht

Chn kha ln nht trong hai phn t c kha khc nhau u tin k t tri qua. Nu mng ch gm mt phn t hay gm nhiu phn t c kha bng nhau th khng c cht. V d 2-5: Chn cht trong cc mng sau Cho mng gm cc phn t c kho l 6, 6, 5, 8, 7, 4, ta chn cht l 6 (kho ca phn t u tin). Cho mng gm cc phn t c kho l 6, 6, 7, 5, 7, 4, ta chn cht l 7 (kho ca phn t th 3). Cho mng gm cc phn t c kho l 6, 6, 6, 6, 6, 6 th khng c cht (cc phn t c kho bng nhau). Cho mng gm mt phn t c kho l 6 th khng c cht (do ch c mt phn t).
2.4.2.2 Vn phn hoch

phn hoch mng ta dng 2 "con nhy" L v R trong L t bn tri v R t bn phi, ta cho L chy sang phi cho ti khi gp phn t c kha cht v cho R chy sang tri cho ti khi gp phn t c kha < cht. Ti ch dng ca L v R nu L < R th hon v a[L],a[R]. Lp li qu trnh dch sang phi, sang tri ca 2 "con nhy" L v R cho n khi L > R. Khi L s l im phn hoch, c th l a[L] l phn t u tin ca mng con bn phi.

Nguyn Vn Linh

Trang 25

Gii thut
2.4.2.3 Gii thut QuickSort

Sp xp

sp xp mng a[i]..a[j] ta tin hnh cc bc sau: Xc nh cht. Phn hoch mng cho thnh hai mng con a[i]..a[k-1] v a[k]..a[j]. Sp xp mng a[i]..a[k-1] ( quy). Sp xp mng a[k]..a[j] ( quy). Qu trnh quy s dng khi khng cn tm thy cht. V d 2-4: Sp xp mng gm 10 mu tin c kha l cc s nguyn: 5, 8, 2, 10, 5, 12, 8, 1, 15 v 4. Vi mng a[1]..a[10], hai phn t u tin c kha khc nhau l l a[1] v a[2] vi kho tng ng l 5 v 8, ta chn cht v = 8. phn hoch, khi u ta cho L := 1 (t L cc tri) v R := 10 (t R cc phi). Do a[L] c kho l 5 nh hn cht nn L := L+1 = 2 (di chuyn L sang phi), lc ny a[L] c kho l 8 = cht nn dng li. Do a[R] c kho l 4 nh hn cht nn R cng khng chuyn sang tri c. Ti cc im dng ca L v R ta c L < R (L=2 v R=10) nn hon i a[L] v a[R] (a[2] v a[10]) cho nhau. Sau khi hon i, a[L] li c kho l 4 nh hn cht nn di chuyn L sang phi (L := L+1 = 3). Kho ca a[L] l 2 nh hn cht nn li di chuyn L sang phi (L := L+1 = 4). Kho ca a[L] l 10 ln hn cht nn dng li. Vi R, kho ca a[R] by gi l 8 bng cht nn di chuyn R sang tri (R := R-1 = 9). Kho ca a[R] l 15 ln hn cht nn di chuyn R sang tri (R := R-1 = 8). Kho ca a[R] l 1 nh hn cht nn dng li. Ti cc im dng ca L v R ta c L < R (L=4 v R=8) nn hon i a[L] v a[R] (a[4] v a[8]) cho nhau. Sau khi hon i, a[L] c kho l 1 nh hn cht nn di chuyn L sang phi (L := L+1 = 5). Kho ca a[L] l 5 nh hn cht nn li di chuyn L sang phi (L := L+1 = 6). Kho ca a[L] l 12 ln hn cht nn dng li. Vi R, kho ca a[R] by gi l 10 ln hn cht nn di chuyn R sang tri (R := R1 = 7). Kho ca a[R] l 8 bng cht nn di chuyn R sang tri (R := R-1 = 6). Kho ca a[R] l 12 ln hn cht nn di chuyn R sang tri (R := R-1 = 5). Kho ca a[R] l 5 nh hn cht nn dng li. Ti cc im dng ca L v R ta c L > R (L=6 v R=5) nn ta xc nh c im phn hoch ng vi L = 6. Tc l mng cho ban u c phn thnh hai mng con bn tri a[1]..a[5] v mng con bn phi a[6]..a[10]. Hnh nh ca s phn hoch ny c biu din trong hnh sau: Ch s Kho Ban u Cp 1 1 5 5 2 8 4 4 2 1 3 2 4 10 1 v=8 5 12 8 10 15 8
Hnh 2-4 : Chn cht v phn hoch mng a[1]..a[10]

5 5

6 12

7 8

8 1 10

9 15

10 4 8

Trong bng trn, dng ch s ghi cc ch s ca cc phn t ca mng (t 1 n 10).

Nguyn Vn Linh

Trang 26

Gii thut

Sp xp

Trong dng kho ban u, cc gi tr kho dng trn (5, 8, 2, 10, 5, 12, 8, 1, 15 v 4) l cc gi tr kho ca mng cho ban u, cc gi tr kho dng di (4, 1, 10 v 8) l cc gi tr kho mi sau khi thc hin hon i a[2] vi a[10] v a[4] vi a[8]. Gi tr cht l v = 8. Dng cp cp 1, biu din hai mng con sau khi phn hoch. Mng bn tri t a[1] n a[5] gm cc phn t c kho l 5, 4, 2, 1 v 5. Mng con bn phi t a[6] n a[10] gm cc phn t c kho 12, 8, 10, 15 v 8. Tip tc sp xp quy cho mng con bn tri v mng con bn phi. Vi mng con bn tri a[1]..a[5], hai phn t u tin c kha khc nhau l l a[1] v a[2] vi kho tng ng l 5 v 4, ta chn cht v = 5. phn hoch, khi u ta cho L := 1 (t L cc tri) v R := 5 (t R cc phi). Do a[L] c kho l 5 bng cht nn khng th di chuyn L. Do a[R] c kho l 5 bng cht nn di chuyn R sang tri (R := R-1 = 4). Kho ca a[R] by gi l 1 nh hn cht nn dng li. Ti cc im dng ca L v R ta c L < R (L= v R=4) nn hon i a[L] v a[R] (a[1] v a[4]) cho nhau. Sau khi hon i, a[L] li c kho l 1 nh hn cht nn di chuyn L sang phi (L := L+1 = 2). Kho ca a[L] l 4 nh hn cht nn li di chuyn L sang phi (L := L+1 = 3). Kho ca a[L] l 2 nh hn cht nn li di chuyn L sang phi (L := L+1 = 4). Kho ca a[L] l 5 bng cht nn dng li. Vi R, kho ca a[R] by gi l 5 bng cht nn di chuyn R sang tri (R := R-1 = 4). Kho ca a[R] l 5 bng cht nn di chuyn R sang tri (R := R-1 = 3). Kho ca a[R] l 2 nh hn cht nn dng li. Ti cc im dng ca L v R ta c L > R (L=4 v R=3) nn ta xc nh c im phn hoch ng vi L = 4. Tc l mng bn tri phn thnh hai mng con bn tri a[1]..a[3] v mng con bn phi a[4]..a[6]. Hnh nh ca s phn hoch ny c biu din trong hnh sau: Ch s Kho Ban u Cp 1 Cp 2 5 1 1 4 v=5 2 5 1 5 2 8 4 4 2 1 5 5 3 2 4 10 1 v=8 5 12 8 10 15 8 5 5 6 12 7 8 8 1 10 9 15 10 4 8

Hnh 2-5 : Chn cht v phn hoch mng a[1]..a[5]

Tip tc sp xp cho cc mng con ca cp 1 v mng con bn phi ca mng ban u cho n khi dng (cc mng khng c cht). Cui cng ta c mng c sp th t. Hnh sau biu din ton b qu trnh sp xp.

Nguyn Vn Linh

Trang 27

Gii thut

Sp xp

Ch s Kho Ban u Cp 1 Cp 2 Cp 3 Cp 4 Kt qu 5

1 5

2 8 4 4 1

3 2 2

4 10 1

5 5

6 12

7 8 8 8

8 1 10 10

9 15 15

10 4 8 8 12 12

v=8 1 5 12 5 8 5 5 8

v=5 1 4 2 2 4 v=4 1 2 4 v=2 xong 1 2 xong xong 1 2 4

v = 12 10 15

xong

v = 10 8 8 10 xong xong 5 8 8 10

12 15 v =15 12 15 xong xong 12 15

Hnh 2-6 : QuickSort

2.4.3 Ci t gii thut


2.4.3.1 Hm FindPivot

Ta thit k hm FindPivot xc nh trong dy a[i]..a[j] c hay khng hai phn t c kha khc nhau. Nu khng tm thy hai phn t c kha khc nhau th tr v gi tr 0 (khng tm thy cht), ngc li hm tr v gi tr l ch s ca phn t c kha ln hn trong hai phn t c kha khc nhau u tin. Kha ln hn ny s tr thnh phn t cht m ta s xc nh trong th tc QuickSort. tin so snh ta s dng bin FirstKey lu gi kha ca phn t u tin trong mng a[i]..a[j] (FirstKey chnh l a[i].key). Ta s dng mt ch s k d tm trong mng a[i]..a[j], k t v tr i+1 n ht mng, mt phn t a[k] m a[k].key <> FirstKey. Nu khng tm thy mt a[k] nh th th hoc l mng ch gm mt phn t hoc gm nhiu phn t c kha bng nhau. Trong trng hp th khng tm thy cht v hm FindPivot s tr v 0. Ngc li ta s phi xt xem a[k].key c ln hn FirstKey hay khng, nu ng nh th th cht s l kha ca a[k] v hm FindPivot s tr v k, nu khng th cht s l kho ca a[i] v hm FindPivot s tr v i.
FUNCTION FindPivot(i,j:integer): integer; VAR FirstKey : KeyType; k : integer; BEGIN {1} k := i+1; {2} FirstKey := a[i].key; {3} WHILE (k <= j) AND (a[k].key = FirstKey) DO k:= k+1; {4} IF k > j THEN FindPivot := 0 ELSE

Nguyn Vn Linh

Trang 28

Gii thut
{5}
END;

Sp xp
IF a[k].key > FirstKey THEN FindPivot := k ELSE FindPivot := i;

Trong hm FindPivot cc lnh {1}, {2}, {3} v {4} ni tip nhau, trong ch c lnh WHILE l tn nhiu thi gian nht do thi gian thc hin ca hm FindPivot ph thuc vo thi gian thc hin ca lnh ny. Trong trng hp xu nht (khng tm thy cht) th k chy t i+1 n j, tc l vng lp thc hin j-i ln, mi ln O(1) do tn j-i thi gian. c bit khi i=1 v j=n, th thi gian thc hin l n-1 hay T(n) = O(n).
2.4.3.2 Hm Partition

Hm Partition nhn vo ba tham s i, j v Pivot thc hin vic phn hoch mng a[i]..a[j] theo cht Pivot v tr v gi tr L l ch s u tin ca mng bn phi. Hai con nhy L, R s c s dng thc hin vic phn hoch nh trnh by trong phn 2.4.2.3.
FUNCTION Partition(i,j:integer; pivot :KeyType):integer ; VAR L,R : integer; BEGIN {1} L := i; {t con nhy L cc tri} {2} R := j; {t con nhy R cc phi} {3} WHILE L <= r DO BEGIN {L tin sang phi} {4} WHILE a[L].key < pivot DO L := L+1; {R tin sang tri} {5} WHILE a[R].key >= pivot DO R := R-1; {6} IF L < R THEN Swap(a[L],a[R]); END; {7} Partition := L; {Tr v im phn hoch} END;

Trong hm Partition cc lnh {1}, {2}, {3} v {7} ni tip nhau, trong thi gian thc hin ca lnh {3} l ln nht, do thi gian thc hin ca lnh {3} s l thi gian thc hin ca hm Partition. Cc lnh {4}, {5} v {6} l thn ca lnh {3}, trong lnh {6} ly O(1) thi gian. Lnh {4} v lnh {5} thc hin vic di chuyn L sang phi v R sang tri, thc cht l duyt cc phn t mng, mi phn t mt ln, mi ln tn O(1) thi gian. Tng cng vic duyt ny tn j-i thi gian. Vng lp {3} thc cht l xt xem khi no th duyt xong, do thi gian thc hin ca lnh {3} chnh l thi gian thc hin ca hai lnh {4} v {5} v do l j-i. c bit khi i=1 v j=n ta c T(n) = O(n).
2.4.3.3 Th tc QuickSort

By gi chng ta trnh by th tc cui cng c tn l QuickSort v ch rng sp xp mng A cc record gm n phn t ca kiu Recordtype ta ch cn gi QuickSort(1,n). Ta s s dng bin PivotIndex lu gi kt qu tr v ca hm FindPivot, nu bin PivotIndex nhn c mt gi tr khc 0 th mi tin hnh phn hoch mng.
Nguyn Vn Linh Trang 29

Gii thut

Sp xp

Ngc li, mng khng c cht v do c th t. Bin Pivot s c s dng lu gi gi tr cht v bin k lu gi gi tr ca im phn hoch do hm Partition tr v. Sau khia phn hoch xong ta s gi quy QuickSort cho mng con bn tri a[i]..a[k-1] v mng con bn phi a[k]..a[j].
PROCEDURE Quicksort(i,j:integer); VAR Pivot : KeyType; PivotIndex, k : integer; BEGIN PivotIndex := FindPivot(i,j); IF PivotIndex <> 0 THEN BEGIN Pivot := a[PivotIndex].key; k := Partition(i,j,Pivot); QuickSort(i,k-1); QuickSort(k,j); END; END;

2.4.4 Thi gian thc hin ca QuickSort


QuickSort ly O(nlogn) thi gian sp xp n phn t trong trng hp tt nht v O(n2). trong trng hp xu nht.

Gi s cc gi tr kha ca mng khc nhau nn hm FindPivot lun tm c cht v quy ch dng khi kch thc bi ton bng 1. Gi T(n) l thi gian thc hin vic QuickSort mng c n phn t. Thi gian tm cht v phn hoch mng nh phn tch trong cc phn 2.4.3.1 v 2.4.3.2 u l O(n) = n. Khi n = 1, th tc QuickSort ch lm mt nhim v duy nht l gi hm Findpivot vi kch thc bng 1, hm ny tn thi gian O(1) =1. Trong trng hp xu nht l ta lun chn phi phn t c kha ln nht lm cht, lc by gi vic phn hoch b lch tc l mng bn phi ch gm mt phn t cht, cn mng bn tri gm n-1 phn t cn li. Khi ta c th thnh lp phng trnh quy nh sau:
T(n) = 1 nu n = 1 T(n - 1) + T(1) + n nu n > 1

Gii phng trnh ny bng phng php truy hi Ta c T(n) = T(n-1) + T(1) +n = T(n-1) + (n+1) = [T(n-2) + T(1) +(n-1)] + (n+1) = T(n-2) + n + (n+1) = [T(n-3) + T(1) +(n-2)] + n + (n+1) = T(n-3) +(n-1) + n + (n+1) ................. T(n) = T(n-i) + (n-i+2) + (n-i+3) + ... + n + (n+1) = T(n-i) +
n +1

j
j= n -i + 2

Nguyn Vn Linh

Trang 30

Gii thut

Sp xp

Qu trnh trn kt thc khi i = n-1, khi ta c T(n) = T(1) +


n 2 + 3n - 2 = j - 2 = = O(n2) 2 j=1
n +1

j = 1 + j
j= 3 j= 3

n +1

n +1

Trong trng hp tt nht khi ta chn c cht sao cho hai mng con c kch thc bng nhau v bng n/2. Lc ta c phng trnh quy nh sau:
T(n) = nu n = 1 n 2T( ) + n nu n > 1 2 1

Gii phng trnh quy ny ta c T(n) = O(nlogn). 2.5 HEAPSORT 2.5.1 nh ngha Heap Cy sp th t b phn hay cn gi l heap l cy nh phn m gi tr ti mi nt (khc nt l) u khng ln hn gi tr ca cc con ca n. Ta c nhn xt rng nt gc a[1] ca cy sp th t b phn c gi tr nh nht.
V d 2-5: Cy sau l mt heap.

2 6

6
Hnh 2-7: Mt heap

Nguyn Vn Linh

Trang 31

Gii thut

Sp xp

2.5.2 tng (1) Xem mng ban u l mt cy nh phn. Mi nt trn cy lu tr mt phn t mng, trong a[1] l nt gc v mi nt khng l nt l a[i] c con tri l a[2i] v con phi l a[2i+1]. Vi cch t chc ny th cy nh phn thu c s c cc nt trong l cc nt a[1],..,a[n DIV 2]. Tt c cc nt trong u c 2 con, ngoi tr nt a[n DIV 2] c th ch c mt con tri (trong trng hp n l mt s chn). (2) Sp xp cy ban u thnh mt heap cn c vo gi tr kho ca cc nt. (3) Hon i a[1] cho cho phn t cui cng. (4) Sp li cy sau khi b i phn t cui cng n tr thnh mt heap mi. Lp li qu trnh (3) v (4) cho ti khi cy ch cn mt nt ta s c mng sp theo th t gim. 2.5.3 Thit k v ci t gii thut
2.5.3.1 Th tc PushDown

Th tc PushDown nhn vo 2 tham s first v last y nt first xung. Gi s a[first],..,a[last] ng v tr (gi tr kho ti mi nt nh hn hoc bng gi tr kho ti cc nt con ca n) ngoi tr a[first]. PushDown dng y phn t a[first] xung ng v tr ca n trong cy (v c th gy ra vic y xung cc phn t khc). Xt a[first], c cc kh nng c th xy ra: Nu a[firrst] ch c mt con tri v nu kho ca n ln hn kho ca con tri (a[first].key > a[2*first].key) th hon i a[first] cho con tri ca n v kt thc. Nu a[first] c kho ln hn con tri ca n (a[first].key > a[2*first].key) v kho ca con tri khng ln hn kho ca con phi (a[2*first].key <= a[2*first+1].key) th hon i a[first] cho con tri a[2*first] ca n, vic ny c th gy ra tnh trng con tri s khng ng v tr nn phi xem xt li con tri c th y xung. Ngc li, nu a[first] c kho ln hn kho ca con phi ca n (a[first].key > a[2*first+1].key ) v kho ca con phi nh hn kho ca con tri (a[2*first+1].key < a[2*first].key) th hon i a[first] cho con phi a[2*first+1] ca n, vic ny c th gy ra tnh trng con phi s khng ng v tr nn phi tip tc xem xt con phi c th y xung. Nu tt c cc trng hp trn u khng xy ra th a[first] ng v tr. Nh trn ta thy vic y a[first] xung c th gy ra vic y xung mt s phn t khc, nn tng qut l ta s xt vic y xung ca mt phn t a[r] bt k, bt u t a[first].

Nguyn Vn Linh

Trang 32

Gii thut

Sp xp

PROCEDURE PushDown(first,last:integer); VAR r:integer; BEGIN r:= first; {Xt nt a[first] trc ht} WHILE r <= last DIV 2 DO If last = 2*r THEN BEGIN {nt r ch c con tri } IF a[r].key > a[last].key THEN swap(a[r],a[last]); r:=last; {Kt thc} END ELSE IF (a[r].key>a[2*r].key)and(a[2*r].key<= a[2*r+1].key) THEN BEGIN swap(a[r],a[2*r]); r := 2*r ; {Xt tip nt con tri } END ELSE IF (a[r].key>a[2*r+1].key)and(a[2*r+1].key<a[2*r].key) THEN BEGIN swap(a[r],a[2*r+1]); r := 2*r+1 ; {Xt tip nt con phi } END ELSE r := last; {Nt r ng v tr } END;

Th tc PushDown ch duyt trn mt nhnh no ca cy nh phn, tc l sau mi ln lp th s nt cn li mt na. Nu s nt lc u l n, trong trng hp xu nht (lun phi thc hin vic y xung) th lnh lp WHILE phi thc hin i ln sao cho 2i = n tc l i = logn. M mi ln lp ch thc hin mt lnh IF vi thn lnh IF l gi th tc Swap v gn, do tn O(1) = 1 n v thi gian. Nh vy th tc PushDown ly O(logn) y xung mt nt trong cy c n nt.
2.5.3.2 Th tc HeapSort

Vic sp xp cy ban u thnh mt heap c tin hnh bng cch s dng th tc PushDown y tt c cc nt trong cha ng v tr xung ng v tr ca n, khi u t nt a[n DIV 2], ln ngc ti gc. Lp li vic hon i a[1] cho a[i], sp xp cy a[1]..a[i-1] thnh heap, i chy t n n 2.
PROCEDURE HeapSort; VAR i:integer; BEGIN {1} FOR i := (n div 2) DOWNTO 1 DO {2} PushDown(i,n); {3} FOR i := n DOWNTO 2 DO BEGIN {4} swap(a[1],a[i]); {5} pushdown(1,i-1); END; END;

Nguyn Vn Linh

Trang 33

Gii thut

Sp xp

V d 2-6: Sp xp mng bao gm 10 phn t c kho l cc s nguyn nh trong cc v d 2.1: Ch s Kho ban u
1 5 2 6 3 2 4 2 5 10 6 12 7 9 8 10 9 9 10 3

Mng ny c xem nh l mt cy nh phn ban u nh sau:


5 1

10 5

12 6

9 7

10 8

9 9

3 10

Hnh 2-8: Cy ban u

Trong cy trn, gi tr ghi trong cc nt l kho ca cc phn t mng, gi tr ghi bn ngoi cc nt l ch s ca cc phn t mng. Vic sp xp cy ny thnh mt heap s bt u t vic y xung nt a[5] (v 5 = 10 DIV 2) Xt nt 5 ta thy a[5] ch c mt con tri v gi tr kha tng ng ca n ln hn con tri ca n nn ta i hai nt ny cho nhau v do con tri ca a[5] l a[10] l mt nt l nn vic y xung ca a[5] kt thc.
5 1 5 1

6 2

2 3

6 2

2 3

2 4

10 5

12 6

9 7

2 4

12 6

9 7

10 8

9 9

3 10

10 8

9 9

10

10

Hnh 2-9: Thc hin y xung ca nt 5

Nguyn Vn Linh

Trang 34

Gii thut

Sp xp

Nt 4 v nt 3 ng v tr nn khng phi thc hin s hon i. Ti nt 2, gi tr kha ca n ln hn kho con tri v kho ca con tri nh hn kho ca con phi nn ta han i nt 2 cho con tri ca n (nt 4), sau khi hon i, ta xt li nt 4, thy n vn ng v tr nn kt thc vic y xung ca nt 2.
5 1 5 1

6 2

2 3

2 2

2 3

2 4

12 6

9 7

6 4

12 6

9 7

10 8

9 9

1 10 0

10 8

9 9

10

10

Hnh 2-10: Thc hin y xung ca nt 2

Cui cng ta xt nt 1, ta thy gi tr kho ca nt 1 ln hn kho ca con tri v con tri c kho bng kho ca con phi nn han i nt 1 cho con tri ca n (nt 2). Sau khi thc hin php han i nt 1 cho nt 2, ta thy nt 2 c gi tr kho ln hn kho ca con phi ca n (nt 5) v con phi c kho nh hn kho ca con tri nn phi thc hin php hon i nt 2 cho nt 5. Xt li nt 5 th n vn ng v tr nn ta c cy mi trong hnh 2-11.
2 1

12 6

9 7

10 8

9 9

10

10

Hnh 2-11: Cy ban u oc to thnh heap

Cy ny l mt heap tng ng vi mng

Nguyn Vn Linh

Trang 35

Gii thut

Sp xp

Ch s Heap

1 2

2 3

3 2

4 6

5 5

6 12

7 9

8 10

9 9

10 10

T heap c trn, hon i a[1] cho a[10] ta c a[10] l nt c kha nh nht, ct b nt a[10] ra khi cy. Nh vy phn cui mng ch gm mt phn t a[10] c sp. Thc hin vic y a[1] xung ng v tr ca n trong cy a[1]..a[9] ta c cy:
10 1 2 1

3 2

2 3

3 2

9 3

6 4

12 6

9 7

6 4

12 6

1 0

10 8

9 9

10

10 8

9 9

Hnh 2-12: Hon i a[1] cho a[10] v y a[1] xung trong a[1..9]

Hon i a[1] cho a[9] v ct a[9] ra khi cy. Ta c phn cui mng bao gm hai phn t a[9]..a[10] c sp. Thc hin vic y a[1] xung ng v tr ca n trong cy a[1]..a[8] ta c cy
9 1 3 1

3 2

9 3

5 2

9 3

6 4

12 6

1 0

6 4

12 6

1 0

10 8

2 9

10 8

Hnh 2-13: Hon i a[1] cho a[9] v y a[1] xung trong a[1..8]

Tip tc qu trnh trn ta s c mt mng c th t gim.

Nguyn Vn Linh

Trang 36

Gii thut

Sp xp

Trnh by heapsort bng mng Nh trong phn tng ni, chng ta ch xem mng nh l mt cy. iu c ngha l cc thao tc thc cht vn l cc thao tc trn mng. hiu r hn, ta s trnh by v d trn s dng m hnh mng. Mng ca 10 mu tin, c kho l cc s nguyn cho l: Ch s Kho ban u
1 5 2 6 3 2 4 2 5 10 6 12 7 9 8 10 9 9 10 3

Mc d khng v thnh cy, nhng ta vn tng tng mng ny nh l mt cy nh phn vi nt gc l a[1], cc nt a[i] c con tri l a[2i] v on phi l a[2i+1]. Ch c cc nt t a[1] n a[5] l nt trong, cn cc nt t a[6] n a[10] l nt l. T mng ban u, chng ta s to thnh heap bng cch p dng th tc PushDown t a[5] n a[1]. Xt a[5], nt ny ch c mt con tri l a[10] v kho ca a[5] ln hn kho ca a[10] (10 > 3) nn y a[5] xung (hon i a[5] v a[10] cho nhau). Xt a[4], nt ny c hai con l a[8] v a[9] v kho ca n u nh hn kho ca hai con (2 < 10 v 2 < 9) nn khng phi y xung. Tng t a[3] cng khng phi y xung. Xt a[2], nt ny c con tri l a[4] v con phi l a[5]. Kho ca a[2] ln hn kho ca con tri (6 > 2) v kho ca con tri nh hn kho ca con phi (2 < 3) do y a[2] xung bn tri (hon i a[2] v a[4] cho nhau). Tip tc xt con tri ca a[2], tc l a[4]. Kho ca a[4] by gi l 6, nh hn kho ca con tri a[8] (6 < 10) v kho ca con phi a[9] (6 < 9) nn khng phi y a[4] xung. Xt a[1], nt ny c con tri l a[2] v con phi l a[3]. Kho ca a[1] ln hn kho ca con tri a[2] (5 > 2) v kho ca con tri bng kho ca con phi (2 = 2) nn y a[1] xung bn tri (hon i a[1] v a[2] cho nhau). Tip tc xt con tri a[2]. Nt ny c con tri l a[4] v con phi l a[5]. Kho ca a[2] by gi l 5 ln hn kho ca con phi a[5] (5 > 3) v kho ca con phi a[5] nh hn kho ca con tri a[4] (3 < 6) nn y a[2] xung bn phi (hon i a[2] v a[5] cho nhau). Tip tc xt con phi a[5]. Nt ny ch c mt con tri l a[10] v kho ca a[5] nh hn kho ca a[10] nn khng phi y a[5] xung. Qu trnh n y kt thc v ta c c heap trong bng sau: Ch s
1 5 2 6 2 5 3 3 3 2 6 2 6 4 2 5 10 3 5 5 6 12 12 7 9 9 8 10 10 9 9 9 10 3 10 10

Ban u 2 2 Heap

Hnh 2-14: Mng ban u to thnh heap

Trong bng trn, dng Ban u bao gm hai dng. Dng trn ghi cc gi tr kho ban u ca mng. Dng di ghi cc gi tr kho sau khi c mt s hon i.

Nguyn Vn Linh

Trang 37

Gii thut

Sp xp

Th t ghi t tri sang phi, tc l s bn tri l gi tr kho sau khi thc hin vic hon i u tin trong qu trnh PushDown. Sau khi c heap, ta bt u qu trnh sp xp. bc u tin, ng vi i = 10. hon i a[1] v a[10] cho nhau, ta c a[10] c kha nh nht. y a[1] xung trong cy a[1]..a[9], ta thy kha ca a[1] by gi ln hn kha ca con phi a[3] (10 > 2) v kha ca con phi a[3] nh hn kha ca con tri a[2] (2 < 3) do y a[1] xung bn phi (hon i a[1] v a[3] cho nhau). Tip tc xt a[3], kha ca a[3] ln hn kha ca con phi a[7] v kha ca con phi nh hn kha ca con tri, do ta y a[3] xung bn phi (han i a[3] v a[7] cho nhau) v v a[7] l nt l nn vic y xung kt thc. Ta c bng sau: Ch s Ban u Heap i = 10
1 5 2 2 10 2 2 2 6 2 5 3 3 3 3 2 6 2 10 9 9 6 6 4 2 5 10 3 5 5 5 6 12 12 12 7 9 9 10 10 8 10 10 10 9 9 9 9 10 3 10 10 2 2

Hnh 2-15: Hon i a[1] vi a[10] v y a[1] xung trong a[1..9]

Vi i = 9, ta hon i a[1] v a[9] cho nhau. y a[1] xung trong cy a[1]..a[8], ta thy kha ca a[1] by gi ln hn kha ca con tri a[2] v kha ca con tri nh hn kha ca con phi a[3] nn y a[1] xung bn tri (hon i a[1] v a[2] cho nhau). Tip tc xt a[2], kha ca a[2] ln hn kha ca con phi a[5] v kha ca con phi nh hn kha ca con tri a[4] nn y a[2] xung bn phi (hon i a[2] v a[5] cho nhau) v v a[5] l nt l (trong cy a[1]..a[8]) nn vic y xung kt thc. Ta c bng sau Ch s Ban u Heap i = 10 i=9
1 5 2 2 10 2 2 9 3 3 2 6 2 5 3 3 3 9 5 5 9 6 3 2 6 2 10 9 9 6 6 4 2 5 10 3 5 5 5 9 9 6 12 12 12 12 7 9 9 10 10 10 8 10 10 10 10 9 9 9 9 2 2 10 3 10 10 2 2

Hnh 2-16: Hon i a[1] vi a[9] v y a[1] xung trong a[1..8]

Vi i = 8, ta hon i a[1] v a[8] cho nhau. y a[1] xung trong cy a[1]..a[7], ta thy kha ca a[1] by gi ln hn kha ca con tri a[2] v kha ca con tri nh hn kha ca con phi a[3] nn y a[1] xung bn tri (hon i a[1] v a[2] cho nhau). Tip tc xt a[2], kha ca a[2] ln hn kha ca con tri a[4] v kha ca con tri nh hn kha ca con phi a[5] nn y a[2] xung bn tri (hon i a[2] v a[4] cho nhau) v v a[4] l nt l (trong cy a[1]..a[7]) nn vic y xung kt thc. Ta c bng sau
Nguyn Vn Linh Trang 38

Gii thut

Sp xp

Ch s Ban u Heap i = 10 i=9 i=8

1 5 2 2 10 2 2 9 3 3 10 5 5

2 6 2 5 3 3 3 9 5 5 10 6 6

3 2 6 2 10 9 9 9 9

4 2 6 6 6 10 10

5 10 3 5 5 5 9 9 9

6 12 12 12 12 12

7 9 9 10 10 10 10

8 10 10 10 10 3 3

9 9 9 9 2 2

10 3 10 10 2 2

Hnh 2-17: Hon i a[1] vi a[8] v y a[1] xung trong a[1..7]

Tip tc qu trnh trn v gii thut kt thc sau bc 9, ng vi bc i =2. 2.5.4 Phn tch HeapSort Thi gian thc hin ca HeapSort l O(n logn) Nh phn tch trong mc 2.5.3.1, th tc PushDown ly O(logn) y mt nt xung trong cy c n nt. Trong th tc HeapSort dng lnh {1}-{2}) lp n/2 ln m mi ln PushDown ly O(logn) nn thi gian thc hin {1}-{2} l O(n logn). Vng lp {3}-{4}-{5} lp n1 ln, mi ln PushDown ly O(logn) nn thi gian thc hin ca {3}-{4}-{5} l O(n logn). Tm li thi gian thc hin HeapSort l O(n logn). 2.6 BINSORT 2.6.1 Gii thut Ni chung cc gii thut trnh by trn u c phc tp l O(n2) hoc O(nlogn). Tuy nhin khi kiu d liu ca trng kho l mt kiu c bit, vic sp xp c th ch chim O(n) thi gian. Sau y ta s xt mt s trng hp.
2.6.1.1 Trng hp n gin:

Gi s ta phi sp xp mt mng A gm n phn t c kho l cc s nguyn c gi tr khc nhau v l cc gi tr t 1 n n. Ta s dng B l mt mng cng kiu vi A v phn phi vo phn t b[j] mt phn t a[i] m a[i].key = j. Khi mng B lu tr kt qu c sp xp ca mng A. V d 2-7: Sp xp mng A gm 10 phn t c kho l cc s nguyn c gi tr l cc s 4, 7, 1, 2, 5, 8, 10, 9, 6 v 3 Ta s dng mng B c cng kiu vi A v thc hin vic phn phi a[1] vo b[4] v a[1].key = 4, a[2] vo b[7] v a[2].key = 7, a[3] vo b[1] v a[3].key = 1,... Hnh sau minh ha cho vic phn phi cc phn t ca mng a vo mng b.

Nguyn Vn Linh

Trang 39

Gii thut

Sp xp

Mng a Kha

a[1] 4

a[2] 7

a[3] 1

a[4] 2

a[5] 5

a[6] 8

a[7] 10

a[8] 9

a[9] 6

a[10] 3

Kha Mng b

1 b[1]

2 B[2]

3 b[3]

4 b[4]

5 b[5]

6 b[6]

7 b[7]

8 b[8]

9 b[9]

10 b[10]

Hnh 2-18: Phn phi cc phn t a[i] vo cc bin b[j]

thc hin vic phn phi ny ta ch cn mt lnh lp: for i:=1 to n do b[a[i].key] := a[i] y cng l lnh chnh trong chng trnh sp xp. Lnh ny ly O(n) thi gian. Cc phn t b[j] c gi l cc bin v phng php sp xp ny c gi l bin sort.
2.6.1.2 Trng hp tng qut

L trng hp c th c nhiu phn t c chung mt gi tr kha, chng hn sp mt mng A c n phn t m cc gi tr kha ca chng l cc s nguyn ly gi tr trong khong 1..m vi m <= n. Trong trng hp ny ta khng th s dng cc phn t ca mng B lm bin c v nu c hai phn t ca mng A c cng mt kho th khng th lu tr trong cng mt bin. gii quyt s ng ny ta chun b mt cu trc c m bin, mi bin c th lu tr nhiu hn mt phn t. C th l bin th j s lu cc phn t c kha l j (1 j m) sau ta s ni cc bin li vi nhau c mt dy cc phn t c sp. Cch tt nht l ta thit k mi bin l mt danh sch lin kt ca cc phn t m mi phn t c kiu RecordType. Ta s gi kiu ca danh sch ny l ListType. Ta c th to kiu ListType bng cch ghp RecordType vi mt con tr tr ti phn t k tip. Ly B l mt mng kiu Array[KeyType] of ListType. Nh vy B l mng cc bin, mi bin l mt danh sch. B c nh ch s bi KeyType, nh th c t nht mt bin cho mi gi tr kho. Ta vn s phn phi phn t a[i] vo bin b[j] nu j = a[i].key. D nhin mi bin b[j] c th cha nhiu phn t ca mng A. Cc phn t mi s c a vo cui danh sch b[j]. Sau khi tt c cc phn t ca mng A c phn phi vo trong cc bin, cng vic cui cng l ta phi ni cc bin li vi nhau, ta s c mt danh sch c th t. Ta s dng th tc concatenate(L1,L2) ni hai danh sch L1, L2. N thay th danh sch L1 bi danh sch ni L1L2. Vic ni s c thc hin bng cch gn con tr ca phn t cui cng ca L1 vo u ca L2. Ta bit rng n c phn t cui cng ca danh sch lin kt L1 ta phi duyt qua tt c cc phn t ca

Nguyn Vn Linh

Trang 40

Gii thut

Sp xp

n. cho c hiu qu, ta thm mt con tr na, tr n phn t cui cng ca mi danh sch, iu ny gip ta i thng ti phn t cui cng m khng phi duyt qua ton b danh sch. Hnh sau minh ha vic ni hai danh sch.
L1 Header

L1 End

L2 Header

L2 End

NIL

Hnh 2-19: Ni cc bin

Sau khi ni th header v end ca danh sch L2 khng cn tc dng na. V d 2-8: Sp xp mng A gm 10 phn t c kho l cc s nguyn c gi tr l cc s 2, 4, 1, 5, 4, 2, 1, 4, 1, 5.
A Kho ca A a[1] 2 a[2] 4 A[3] 1 a[4] 5 a[5] 4 a[6] 2 a[7] 1 a[8] 4 a[9] 1 a[10] 5

Ta thy cc gi tr kho nm trong khong 1..5. Ta t chc mt mng B gm 5 phn t, mi phn t l mt con tr, tr n mt danh sch lin kt.
a[3] a[7] a[9]

a[1]

a[6]

3 4 5

a[2] a[4]

a[5] a[10]

a[8]

Hnh 2-20: Binsort trong trng hp tng qut

Nguyn Vn Linh

Trang 41

Gii thut

Sp xp

Chng trnh s dng cu trc danh sch lin kt lm cc bin


VAR a: ARRAY[1..n] OF RecordType; b: ARRAY[keytype] OF ListType; {Ta gi thit keytype l kiu min con 1..m } PROCEDURE BinSort; VAR i:integer; j: KeyType; BEGIN {1}FOR i:=1 TO n DO Insert(A[i], END(B[A[i].key]), B[A[i}.key]); {2}FOR j:= 2 TO m DO Concatenate(B[1], B[j]); END;

2.6.2 Phn tch Bin Sort Bin sort ly O(n) thi gian sp xp mng gm n phn t. Trc ht th tc INSERT cn mt thi gian O(1) xen mt phn t vo trong danh sch. Do cch t chc danh sch c gi con tr n phn t cui cng nn vic ni hai danh sch bng th tc CONCATENATE cng ch mt O(1) thi gian. Ta thy vng lp {1} thc hin n ln, mi ln tn O(1) = 1 nn ly O(n) n v thi gian. Vng lp {2} thc hin m-1 ln, mi ln O(1) nn tn O(m) n v thi gian. Hai lnh {1} v {2} ni tip nhau nn thi gian thc hin ca BinSort l T(n) = O(max(n,m)) = O(n) v m n. 2.6.3 Sp xp tp gi tr c kho ln Nu m s cc kho khng ln hn n s cc phn t cn sp xp, khi O(max(n,m)) thc s l O(n). Nu n > m th T(n) l O(m) v c bit khi m = n2 th T(n) l O(n2), nh vy Bin sort khng tt hn cc sp xp n gin khc. Tuy nhin trong mt s trng hp, ta vn c th tng qut ho k thut bin sort n vn ly O(n) thi gian. Gi s ta cn sp xp n phn t c cc gi tr kho thuc 0..n2-1. Nu s dng phng php c, ta cn n2 bin (t bin 0 n bin n2-1) v do vic ni n2 bin ny tn O(n2), nn bin sort ly O(n2). gii quyt vn ny, ta s s dng n bin b[0], b[1],...b[n-1] v tin hnh vic sp xp trong hai k. K 1: Phn phi phn t a[i] vo bin b[j] m j = a[i].key MOD n. K 2: Phn phi cc phn t trong danh sch kt qu ca k 1 vo cc bin. Phn t a[i] s c phn phi vo bin b[j] m j = a[i].key DIV n. Ch rng trong c hai k, ta xen cc phn t mi c phn phi vo cui danh sch.

Nguyn Vn Linh

Trang 42

Gii thut

Sp xp

V d 2-9: Cn sp xp mng gm 10 phn t c kho l cc s nguyn: 36, 9, 10, 25, 1, 8, 34, 16, 81 v 99. Ta s dng 10 bin c nh s t 0 n 9. K mt ta phn phi phn t a[i] vo bin c ch s a[i].key MOD 10. Ni cc bin ca k mt li vi nhau ta c danh sch c kha l: 10, 1, 81, 34, 25, 36, 16, 8, 9, 99. K hai s dng kt qu ca k 1 sp tip. Phn phi phn t a[i] vo bin c ch s a[i].key DIV 10. Ni cc bin ca k hai li vi nhau ta c danh sch c th t. K mt Bin 0 1 2 3 4 5 6 7 8 9 8 9 99 34 25 36 16 10 1 81 Bin 0 1 2 3 4 5 6 7 8 9 81 99 1 10 25 34 36 8 16 9 K hai

Hnh 2-21: Sp xp theo hai k

Theo s phn tch gii thut Bin Sort th mi k ly O(n) thi gian, hai k ny ni tip nhau nn thi gian tng cng l O(n).
2.6.3.1 Chng minh gii thut ng

thy tnh ng n ca gii thut ta xem cc cc gi tr kha nguyn t 0 n n21 nh cc s c hai ch s trong h m c s n. Xt hai s K = s.n + t (ly K chia cho n c s , d t) v L = u.n + v trong s, t, u, v l cc s 0..n-1. Gi s K < L, ta cn chng minh rng sau 2 k sp th K phi ng trc L. V K < L nn s u. Ta c hai trng hp l s < u v s = u. Trng hp 1: Nu s < u th K ng trc L trong danh sch kt qu v trong k hai, K c sp vo bin b[s] v L c sp vo bin b[u] m b[s] ng trc b[u]. Chng hn trong v d trn, ta chn K = 16 v L = 25. Ta c K = 1 x 10 + 6 v L = 2 x 10 + 5 (s = 1, t = 6, u = 2 v v = 5; s < u). Trong k hai, K = 16 c sp vo bin 1 v L = 25 c sp vo bin 2 nn K = 16 ng trc L = 25. Trng hp 2: Nu s = u th t < v (do K < L). Sau k mt th K ng trc L, v K c sp vo trong bin b[t] v L c sp vo trong bin b[v]. n k hai, mc d c K v L u c sp vo trong bin b[s], nhng K c xen vo trc L nn kt qu

Nguyn Vn Linh

Trang 43

Gii thut

Sp xp

l K ng trc L. Chng hn trong v d trn ta chn K = 34 v L = 36. Ta c K = 3 x 10 + 4 v L = 3 x 10 + 6. Sau k mt th K = 34 ng trc L = 36 v K c sp vo bin 4 cn L c sp vo bin 6. Trong k hai, c K v L u c sp vo bin 3, nhng do K c xt trc nn K ng trc L trong bin 3 v do K ng trc L trong kt qu cui cng.
Ch : T chng minh trn ta thy sp cc phn t c kha l cc s nguyn (h m c s 10) t 0 n 99 ta dng 10 bin c ch s t 0 n 9. sp cc phn t c kha l cc s nguyn t 0 n 9999 ta dng 100 bin c ch s t 0 n 99...

2.7 TNG KT CHNG 2 Cc gii thut sp xp n gin c gii thut n gin nhng km hiu qu v mt thi gian. Tt c cc gii thut sp xp n gin u ly O(n2) sp xp n mu tin. Cc gii thut QuickSort v HeapSort u rt hiu qu v mt thi gian ( phc tp O(nlogn)), do chng thng c s dng trong thc t, nht l QuickSort. BinSort ch s dng c cho d liu c bit. BI TP CHNG 2 Bi 1: Sp xp mng gm 12 phn t c kha l cc s nguyn: 5, 15, 12, 2, 10, 12, 9, 1, 9, 3, 2, 3 bng cch s dng: a) Sp xp chn. b) Sp xp xen. c) Sp xp ni bt. d) QuickSort. e) HeapSort (Sp th t gim, s dng m hnh cy v s dng bng). Bi 2: Vit th tc sp xp trn (xem gii thut th trong chng 1). Bi 3: Vit li hm FindPivot hm tr v gi tr cht v vit li th tc QuickSort ph hp vi hm FindPivot mi ny. Bi 4: C mt bin th ca QuickSort nh sau: Chn cht l kha ca phn t nh nht trong hai phn t c kha khc nhau u tin. Mng con bn tri gm cc phn t c kha nh hn hoc bng cht, mng con bn phi gm cc phn t c kha ln hn cht. Hy vit li cc th tc cn thit cho bin th ny. Bi 5: Mt bin th khc ca QuickSort l chn kha ca phn t u tin lm cht. Hy vit li cc th tc cn thit cho bin th ny. Bi 6: Hy vit li th tc PushDown trong HeapSort bng gii thut quy. Bi 7: Hy vit li th tc PushDown trong HeapSort c th sp xp theo th t tng.

Nguyn Vn Linh

Trang 44

Gii thut

K thut thit k gii thut

CHNG 3: K THUT THIT K GII THUT


3.1 TNG QUAN 3.1.1 Mc tiu Nm vng cc k thut thit k gii thut: chia tr, quy hoch ng, tham n, quay lui, ct ta alpha-beta, nhnh cn v tm kim a phng. Vi mi k thut cn nm c: Ni dung k thut. Vn dng k thut vo gii cc bi ton thc t. nh gi c gii thut. 3.1.2 Kin thc c bn cn thit Cc cu trc d liu, c bit l cu trc cy v th. 3.1.3 Ti liu tham kho A.V. Aho, J.E. Hopcroft, J.D. Ullman; Data Structures and Algorithms; AddisonWesley; 1983. (Chapter 10). Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998. (Chapter 12). inh Mnh Tng; Cu trc d liu & Thut ton; Nh xut bn khoa hc v k thut; H ni-2001. (Chng 8). Nguyn c Ngha, T Vn Thnh; Ton ri rc; 1997 (Chng 3, 5). 3.1.4 Ni dung ct li Ni chung khi thit k mt gii thut chng ta thng da vo mt s k thut no . Chng ny s trnh by mt s k thut quan trng thit k gii thut nh: Chia tr (Divide-and-Conquer), quy hoch ng (dynamic programming), k thut tham n (greedy techniques), quay lui (backtracking) v tm kim a phng (local search). Cc k thut ny c p dng vo mt lp rng cc bi ton, trong c nhng bi ton c in ni ting nh bi ton tm ng i ngn nht ca ngi giao hng, bi ton cy ph ti tiu... 3.2 K THUT CHIA TR 3.2.1 Ni dung k thut C th ni rng k thut quan trng nht, c p dng rng ri nht thit k cc gii thut c hiu qu l k thut "chia tr" (divide and conquer). Ni dung ca n l: gii mt bi ton kch thc n, ta chia bi ton cho thnh mt s bi ton con c kch thc nh hn. Gii cc bi ton con ny ri tng hp kt qu li c li gii ca bi ton ban u. i vi cc bi ton con, chng ta li s dng k
Nguyn Vn Linh Trang 45

Gii thut

K thut thit k gii thut

thut chia tr c c cc bi ton kch thc nh hn na. Qu trnh trn s dn n nhng bi ton m li gii chng l hin nhin hoc dng thc hin, ta gi cc bi ton ny l bi ton c s. Tm li k thut chia tr bao gm hai qu trnh: Phn tch bi ton cho thnh cc bi ton c s v tng hp kt qu t bi ton c s c li gii ca bi ton ban u. Tuy nhin i vi mt s bi ton, th qu trnh phn tch cha ng vic tng hp kt qu do nu chng ta gii xong cc bi ton c s th bi ton ban u cng c gii quyt. Ngc li c nhng bi ton m qu trnh phn tch th n gin nhng vic tng hp kt qu li rt kh khn. Trong cc phn tip sau ta s trnh by mt s v d thy r hn iu ny. K thut ny s cho chng ta mt gii thut quy m vic xc nh phc tp ca n s phi gii mt phng trnh quy nh trong chng I trnh by. 3.2.2 Nhn nhn li gii thut MergeSort v QuickSort Hai gii thut sp xp c trnh by trong cc chng trc (MergeSort trong chng I v QuickSort trong chng II) thc cht l s dng k thut chia tr. Vi MergeSort, sp mt danh sch L gm n phn t, chng ta chia L thnh hai danh sch con L1 v L2 mi danh sch c n/2 phn t. Sp xp L1, L2 v trn hai danh sch c sp ny c mt danh sch c th t. Qu trnh phn tch y l qu trnh chia i mt danh sch, qu trnh ny s dn n bi ton sp xp mt danh sch c da bng 1, y chnh l bi ton c s v vic sp xp danh sch ny l khng lm g c. Vic tng hp cc kt qu y l trn 2 danh sch c sp c mt danh sch c th t. Vi QuickSort, sp xp mt danh sch gm n phn t, ta tm mt gi tr cht v phn hoch danh sch cho thnh hai danh sch con bn tri v bn phi . Sp xp bn tri v bn phi th ta c danh sch c th t. Qu trnh phn chia s dn n cc bi ton sp xp mt danh sch ch gm mt phn t hoc gm nhiu phn t c kho bng nhau, chnh l cc bi ton c s, v bn thn chng c th t ri. y chng ta cng khng c vic tng hp kt qu mt cch tng minh, v vic c thc hin trong qu trnh phn hoch. 3.2.3 Bi ton nhn cc s nguyn ln Trong cc ngn ng lp trnh u c kiu d liu s nguyn (chng hn kiu integer trong Pascal, Int trong C), nhng nhn chung cc kiu ny u c min gi tr hn ch (chng hn t -32768 n 32767) nn khi c mt ng dng trn s nguyn ln (hng chc, hng trm ch s) th kiu s nguyn nh sn khng p ng c. Trong trng hp , ngi lp trnh phi tm mt cu trc d liu thch hp biu din cho mt s nguyn, chng hn ta c th dng mt chui k t biu din cho mt s nguyn, trong mi k t lu tr mt ch s. thao tc c trn cc s nguyn c biu din bi mt cu trc mi, ngi lp trnh phi xy dng cc php ton cho s nguyn nh php cng, php tr, php nhn Sau y ta s cp n bi ton nhn hai s nguyn ln. Xt bi ton nhn hai s nguyn ln X v Y, mi s c n ch s.

Nguyn Vn Linh

Trang 46

Gii thut

K thut thit k gii thut

u tin ta ngh n gii thut nhn hai s thng thng, ngha l nhn tng ch s ca X vi s Y ri cng cc kt qu li. Vic nhn tng ch s ca X vi s Y i hi phi nhn tng ch s ca X vi tng ch s ca Y, v X v Y u c n ch s nn cn n2 php nhn hai ch s, mi php nhn hai ch s ny tn O(1) th php nhn cng tn O(n2) thi gian. p dng k thut "chia tr" vo php nhn cc s nguyn ln, ta chia mi s nguyn ln X v Y thnh cc s nguyn ln c n/2 ch s. n gin cho vic phn tch gii thut ta gi s n l lu tha ca 2, cn v kha cnh lp trnh, ta vn c th vit chng trnh vi n bt k. X = A10n/2 + B v Y = C10n/2 + D Trong A, B, C, D l cc s nguyn ln c n/2 ch s. Chng hn vi X = 1234 th A = 12 v B = 34 bi v X = 12 *102 + 34. Khi tch ca X v Y l: XY = AC10n+(AD + BC)10n/2 + BD (III.1) Vi mi s c n/2 ch s, chng ta li tip tc phn tch theo cch trn, qu trnh phn tch s dn n bi ton c s l nhn cc s nguyn ln ch gm mt ch s m ta d dng thc hin. Vic tng hp kt qu chnh l thc hin cc php ton theo cng thc (III.1). Theo (III.1) th chng ta phi thc hin 4 php nhn cc s nguyn ln n/2 ch s (AC, AD, BC, BD), sau tng hp kt qu bng 3 php cng cc s nguyn ln n ch s v 2 php nhn vi 10n v 10n/2. Cc php cng cc s nguyn ln n ch s d nhin ch cn O(n). Php nhn vi 10n c th thc hin mt cch n gin bng cch thm vo n ch s 0 v do cng ch ly O(n). Gi T(n) l thi gian nhn hai s nguyn ln, mi s c n ch s th t (III.1) ta c phng trnh quy: T(1) = 1 T(n) = 4T(n/2) + cn (III.2) Gii (III.2) ta c T(n) = O(n2). Nh vy th chng ci tin c cht no so vi gii thut nhn hai s bnh thng. ci thin tnh hnh, chng ta c th vit li (III.1) thnh dng: XY = AC10n + [(A-B)(D-C) + AC + BD] 10n/2+ BD (III.3) Cng thc (III.3) ch i hi 3 php nhn ca cc s nguyn ln n/2 ch s l: AC, BD v (A-B)(D-C), 6 php cng tr v 2 php nhn vi 10n. Cc php ton ny u ly O(n) thi gian. T (III.3) ta c phng trnh quy: T(1) = 1 T(n) = 3T(n/2) + cn Gii phng trnh quy ny ta c nghim T(n) = O(nlog3) = O(n1.59). Gii thut ny r rng c ci thin rt nhiu. Gii thut th nhn hai s nguyn ln (dng hoc m) n ch s l:
FUNCTION Mult(X, Y: Big_integer; n:integer) : Big_integer;

Nguyn Vn Linh

Trang 47

Gii thut

K thut thit k gii thut

VAR m1,m2,m3,A,B,C,D: Big_integer; s: integer;{Lu tr du ca tch xy} BEGIN s := sign(X)*sign(Y); x := ABS(X);{Ly tr tuyt i ca x} y := ABS(Y); IF n = 1 THEN mult := X*Y*s ELSE BEGIN A := left(X, n DIV 2); B := right(X, n DIV 2); C := left(Y, n DIV 2); D := right(Y, n DIV 2); m1 := mult(A,C, n DIV 2); m2 := mult(A-B,D-C, n DIV 2); m3 := mult(B,D, n DIV 2); mult := (s * (m1 * 10n + (m1+m2+m3)* 10 END END;

n DIV 2

+ m3));

Hm Mult nhn vo ba tham s, trong X v Y l hai s nguyn ln (kiu Big_integer), n l s ch s ca X v Y v tr v mt s nguyn ln l tch XY. A, B, C, D l cc bin thuc kiu Big_integer, lu tr cc s nguyn ln trong vic chia i cc s nguyn ln X v Y. m1, m2 v m3 l cc bin thuc kiu Big_integer lu tr cc s nguyn ln trung gian trong cng thc (III.3), c th l m1 = AC, m2 = (A-B)(D-C) v m3 = BD. Hm sign nhn vo mt s nguyn ln X v cho gi tr 1 nu X dng v -1 nu X m. Hm ABS nhn vo mt s nguyn ln X v cho kt qu l gi tr tuyt i ca X. Hm Left nhn vo mt s nguyn ln X v mt s nguyn k, cho kt qu l mt s nguyn ln c k ch s bn tri ca X. Tng t nh th cho hm Right. 3.2.4 Xp lch thi u th thao K thut chia tr khng nhng ch c ng dng trong thit k gii thut m cn trong nhiu lnh vc khc ca cuc sng. Chng hn xt vic xp lch thi u th thao theo th thc u vng trn 1 lt cho n u th. Mi u th phi u vi cc u th khc, v mi u th ch u nhiu nht mt trn mi ngy. Yu cu l xp mt lch thi u sao cho s ngy thi u l t nht. Ta d dng thy rng tng s trn u ca ton gii l
n(n - 1) . Nh vy nu n l mt s chn th ta c th sp n/2 cp 2

thi u trong mt ngy v do cn t nht n-1 ngy. Ngc li nu n l mt s l th n-1 l mt s chn nn ta c th sp (n-1)/2 cp thi u trong mt ngy v do ta cn n ngy. Gi s n = 2k th n l mt s chn v do cn ti thiu n-1 ngy. Lch thi u l mt bng n dng v n-1 ct. Cc dng c nh s t 1 n n v cc ct c nh s t 1 n n-1, trong dng i biu din cho u th i, ct j biu din cho ngy thi u j v (i,j) ghi u th phi thi u vi u th i trong ngy j.

Nguyn Vn Linh

Trang 48

Gii thut

K thut thit k gii thut

Chin lc chia tr xy dng lch thi u nh sau: sp lch cho n u th, ta s sp lch cho n/2 u th, sp lch cho n/2 u th, ta s sp lch cho n/4 u th... Qu trnh ny s dn n bi ton c s l sp lch thi u cho 2 u th. Hai u th ny s thi u mt trn trong mt ngy, lch thi u cho h tht d sp. Kh khn chnh l ch t cc lch thi u cho hai u th, ta tng hp li c lch thi u ca 4 u th, 8 cu th, ... Xut pht t lch thi u cho hai u th ta c th xy dng lch thi u cho 4 u th nh sau: Lch thi u cho 4 u th s l mt bng 4 dng, 3 ct. Lch thi u cho 2 u th 1 v 2 trong ngy th 1 chnh l lch thi u ca hai u th (bi ton c s). Nh vy ta c (1,1) = 2 v (2,1) = 1. Tng t ta c lch thi u cho 2 u th 3 v 4 trong ngy th 1. Ngha l (3,1) =4 v (4,1) = 3. (Ta c th thy rng (3,1) = (1,1) + 2 v (4,1) = (2,1) + 2 ). By gi hon thnh lch thi u cho 4 u th, ta ly gc trn bn tri ca bng lp vo cho gc di bn phi v ly gc di bn tri lp cho gc trn bn phi. Lch thi u cho 8 u th l mt bng gm 8 dng, 7 ct. Gc trn bn tri chnh l lch thi u trong 3 ngy u ca 4 u th t 1 n 4. Cc ca gc di bn tri s bng cc tng ng ca gc trn bn tri cng vi 4. y chnh l lch thi u cho 4 u th 5, 6, 7 v 8 trong 3 ngy u. By gi chng ta hon thnh vic sp lch bng cch lp y gc di bn phi bi gc trn bn tri v gc trn bn phi bi gc di bn tri.
2 u th 1 2 4 u th 8 u th

1 2 1

1 2 3 4

1 2 1 4 3

2 3 3 4 4 3 1 2 2 1

1 2 3 4 5 6 7 8

1 2 1 4 3 6 5 8 7

2 3 4 1 2 7 8 5 6

3 4 3 2 1 8 7 6 5

4 5 6 7 8 1 2 3 4

5 6 5 8 7 2 1 4 3

6 7 8 5 6 3 4 1 2

7 8 7 6 5 4 3 2 1

Hnh 3-1: Lch thi u ca 2, 4 v 8 u th

3.2.5 Bi ton con cn bng (Balancing Subproblems) i vi k thut chia tr, ni chung s tt hn nu ta chia bi ton cn gii thnh cc bi ton con c kch thc gn bng nhau. V d, sp xp trn (MergeSort) phn chia bi ton thnh hai bi ton con c cng kch thc n/2 v do thi gian ca n ch l O(nlogn). Ngc li trong trng hp xu nht ca QuickSort, khi mng b phn hoch lch th thi gian thc hin l O(n2). Nguyn tc chung l chng ta tm cch chia bi ton thnh cc bi ton con c kch thc xp x bng nhau th hiu sut s cao hn.

Nguyn Vn Linh

Trang 49

Gii thut

K thut thit k gii thut

3.3 K THUT THAM N 3.3.1 Bi ton ti u t hp L mt dng ca bi ton ti u, n c dng tng qut nh sau: Cho hm f(X) = xc nh trn mt tp hu hn cc phn t D. Hm f(X) c gi l hm mc tiu. Mi phn t X D c dng X = (x1, x2, .. xn) c gi l mt phng n. Cn tm mt phng n X D sao cho hm f(X) t min (max). Phng n X nh th c gi l phng n ti u. Ta c th tm thy phng n ti u bng phng php vt cn ngha l xt tt c cc phng n trong tp D (hu hn) xc inh phng n tt nht. Mc d tp hp D l hu hn nhng tm phng n ti u cho mt bi ton kch thc n bng phng php vt cn ta c th cn mt thi gian m. Cc phn tip theo ca chng ny s trnh by mt s k thut gii bi ton ti u t hp m thi gian c th chp nhn c. 3.3.2 Ni dung k thut tham n Tham n hiu mt cch dn gian l: trong mt mm c nhiu mn n, mn no ngon nht ta s n trc v n cho ht mn th chuyn sang mn ngon th hai, li n ht mn ngon th hai ny v chuyn sang mn ngon th ba K thut tham n thng c vn dng gii bi ton ti u t hp bng cch xy dng mt phng n X. Phng n X c xy dng bng cch la chn tng thnh phn Xi ca X cho n khi hon chnh ( n thnh phn). Vi mi Xi, ta s chn Xi ti u. Vi cch ny th c th bc cui cng ta khng cn g chn m phi chp nhn mt gi tr cui cng cn li. p dng k thut tham n s cho mt gii thut thi gian a thc, tuy nhin ni chung chng ta ch t c mt phng n tt ch cha hn l ti u. C rt nhiu bi ton m ta c th gii bng k thut ny, sau y l mt s v d. 3.3.3 Bi ton tr tin ca my rt tin t ng ATM. Trong my rt tin t ng ATM, ngn hng chun b sn cc loi tin c mnh gi 100.000 ng, 50.000 ng, 20.000 ng v 10.000 ng. Gi s mi loi tin u c s lng khng hn ch. Khi c mt khch hng cn rt mt s tin n ng (tnh chn n 10.000 ng, tc l n chia ht cho 10000). Hy tm mt phng n tr tin sao cho tr n ng v s t giy bc phi tr l t nht. Gi X = (X1, X2, X3, X4) l mt phng n tr tin, trong X1 l s t giy bc mnh gi 100.000 ng, X2 l s t giy bc mnh gi 50.000 ng, X3 l s t giy bc mnh gi 20.000 ng v X4 l s t giy bc mnh gi 10.000 ng. Theo yu cu ta phi c X1 + X2 + X3 + X4 nh nht v X1 * 100.000 + X2 * 50.000 + X3 * 20.000 + X4 * 10.000 = n.
Nguyn Vn Linh Trang 50

Gii thut

K thut thit k gii thut

p dng k thut tham n gii bi ton ny l: c s t giy bc phi tr (X1 + X2 + X3 + X4) nh nht th cc t giy bc mnh gi ln phi c chn nhiu nht. Trc ht ta chn ti a cc t giy bc mnh gi 100.000 ng, ngha l X1 l s nguyn ln nht sao cho X1 * 100.000 n. Tc l X1 = n DIV 100.000. Xc nh s tin cn rt cn li l hiu n X1 * 100000 v chuyn sang chn loi giy bc 50.000 ng V d khch hng cn rt 1.290.000 ng (n = 1290000), phng n tr tin nh sau: X1 = 1290000 DIV 100000 = 12. S tin cn rt cn li l 1290000 12 * 100000 = 90000. X2 = 90000 DIV 50000 = 1. S tin cn rt cn li l 90000 1 * 50000 = 40000. X3 = 40000 DIV 20000 = 2. S tin cn rt cn li l 40000 2 * 20000 = 0. X4 = 0 DIV 10000 = 0. Ta c X = (12, 1, 2, 0), tc l my ATM s tr cho khch hng 12 t 100.000 ng, 1 t 50.000 ng v 2 t 20.000 ng. 3.3.4 Bi ton ng i ca ngi giao hng Chng ta s xt mt bi ton rt ni ting c tn l bi ton tm ng i ca ngi giao hng (TSP - Traveling Salesman Problem): C mt ngi giao hng cn i giao hng ti n thnh ph. Xut pht t mt thnh ph no , i qua cc thnh ph khc giao hng v tr v thnh ph ban u. Mi thnh ph ch n mt ln, khong cch t mt thnh ph n cc thnh ph khc l xc nh c. Gi thit rng mi thnh ph u c ng i n cc thnh ph cn li. Khong cch gia hai thnh ph c th l khong cch a l, c th l cc ph di chuyn hoc thi gian di chuyn. Ta gi chung l di. Hy tm mt chu trnh (mt ng i khp kn tha mn iu kin trn) sao cho tng di cc cnh l nh nht. Hay cn ni l tm mt phng n c gi nh nht. Bi ton ny cng c gi l bi ton ngi du lch. Mt cch tng qut, c th khng tn ti mt ng i gia hai thnh ph a v b no . Trong trng hp ta cho mt ng i o gia a v b vi di bng . Bi ton c th biu din bi mt th v hng c trng s G = (V,E), trong mi thnh ph c biu din bi mt nh, cnh ni hai nh biu din cho ng i gia hai thnh ph v trng s ca cnh l khong cch gia hai thnh ph. Mt chu trnh i qua tt c cc nh ca G, mi nh mt ln duy nht, c gi l chu trnh Hamilton. Vn l tm mt chu trnh Hamilton m tng di cc cnh l nh nht.

Nguyn Vn Linh

Trang 51

Gii thut

K thut thit k gii thut

Bi ton ny c nhng ng dng rt quan trng. Th d mt my hn cc im c iu khin bi my tnh. Nhim v ca n l hn mt s im d nh trn mt tm kim loi. Ngi th hn bt u t mt im bn ngoi tm kim loi v kt thc ti chnh im ny, do tm kim loi phi c di chuyn im cn hn c a vo v tr hn (tng t nh ta a tm vi vo u mi kim ca my khu). Cn phi tm mt phng n di chuyn tm kim loi sao cho vic di chuyn t nht. Hnh nh sau cho chng ta hnh dung v bi ton t ra.

Tm kim loi

V tr hn
Hnh 3-2: Hn cc im trn mt tm kim loi

D dng thy rng, c th p dng bi ton ng i ca ngi giao hng gii bi ton ny. Vi phng php vt cn ta xt tt c cc chu trnh, mi chu trnh tnh tng di cc cnh ca n ri chn mt chu trnh c tng di nh nht. Tuy nhin chng ta cn xt tt c l
(n - 1)! chu trnh. Thc vy, do mi chu trnh u i qua tt c cc 2

nh (thnh ph) nn ta c th c nh mt nh. T nh ny ta c n-1 cnh ti n-1 nh khc, nn ta c n-1 cch chn cnh u tin ca chu trnh. Sau khi chn c cnh u tin, chng ta cn n-2 cch chn cnh th hai, do ta c (n-1)(n-2) cch chn hai cnh. C l lun nh vy ta s thy c (n-1)! cch chn mt chu trnh. Tuy nhin vi mi chu trnh ta ch quan tm n tng di cc cnh ch khng quan tm n hng i theo chiu dng hay m v vy c tt c n. l mt gii thut thi gian m!. K thut tham n p dng vo y l: 1. 2. 3. Sp xp cc cnh theo th t tng ca di. Xt cc cnh c di t nh n ln a vo chu trnh. Mt cnh s c a vo chu trnh nu cnh tha mn hai iu kin sau: Khng to thnh mt chu trnh thiu (khng i qua n nh) Khng to thnh mt nh c cp 3 (tc l khng c c nhiu hn hai cnh xut pht t mt nh, do yu cu ca bi ton l mi thnh ph ch c n mt ln: mt ln n v mt ln i)
(n - 1)! phng 2

Nguyn Vn Linh

Trang 52

Gii thut

K thut thit k gii thut

4.

Lp li bc 3 cho n khi xy dng c mt chu trnh.

Vi k thut ny ta ch cn n(n-1)/2 php chn nn ta c mt gii thut cn O(n2) thi gian.


V d 3-1: Cho bi ton TSP vi 6 nh c cho bi cc ta nh sau: c(1,7) d(15,7)

b(4,3) a(0,0)

e(15,4) f(18,0)

Hnh 3-3: Su thnh ph c cho bi to

Do c 6 nh nn c tt c 15 cnh. l cc cnh: ab, ac, ad, ae, af, bc, bd, be, bf, cd, ce, cf, de, df v ef. di cc cnh y l khong cch Euclide. Trong 15 cnh ny th de = 3 l nh nht, nn de c chn vo chu trnh. K n l 3 cnh ab, bc v ef u c di l 5. C 3 cnh u tha mn hai iu kin ni trn, nn u c chn vo chu trnh. Cnh c di nh k tip l ac = 7.08, nhng khng th a cnh ny vo chu trnh v n s to ra chu trnh thiu (a-b-c-a). Cnh df cng b loi v l do tng t. Cnh be c xem xt nhng ri cng b loi do to ra nh b v nh e c cp 3. Tng t chng ta cng loi bd. cd l cnh tip theo c xt v c chn. Cui cng ta c chu trnh a-b-c-d-e-f-a vi tng di l 50. y ch l mt phng n tt. Phng n ti u l chu trnh a-c-d-e-f-b-a vi tng di l 48.39.

Hnh3-4: Phng n Greedy v phng n ti u

Gii thut s b nh sau:


PROCEDURE TSP; BEGIN {E l tp hp cc cnh, Chu_trinh l tp hp cc cnh c chn a vo chu trnh, m u Chu_trinh rng} {Sp xp cc cnh trong E theo th t tng ca di} Chu_Trinh := ; Gia := 0.0; WHILE E <> DO BEGIN IF cnh e c th chn THEN BEGIN Chu_Trinh := Chu_Trinh + [e] ; Gia := Gia + di ca e;

Nguyn Vn Linh

Trang

53

Gii thut
END; E := E-[e]; END; END;

K thut thit k gii thut

Mt cch tip cn khc ca k thut tham n vo bi ton ny l: 1. Xut pht t mt nh bt k, chn mt cnh c di nh nht trong tt c cc cnh i ra t nh n nh k tip. 2. T nh k tip ta li chn mt cnh c di nh nht i ra t nh ny tho mn hai iu kin ni trn i n dnh k tip. 3. Lp li bc 2 cho n khi i ti nh n th quay tr v nh xut pht.

3.3.5 Bi ton ci ba l Cho mt ci ba l c th ng mt trng lng W v n loi vt, mi vt i c mt trng lng gi v mt gi tr vi. Tt c cc loi vt u c s lng khng hn ch. Tm mt cch la chn cc vt ng vo ba l, chn cc loi vt no, mi loi ly bao nhiu sao cho tng trng lng khng vt qu W v tng gi tr l ln nht. Theo yu cu ca bi ton th ta cn nhng vt c gi tr cao m trng lng li nh sao cho c th mang c nhiu qu, s l hp l khi ta quan tm n yu t n gi ca tng loi vt tc l t l gi tr/trng lng. n gi cng cao th cng qu. T ta c k thut greedy p dng cho bi ton ny l: 1. 2. Tnh n gi cho cc loi vt. Xt cc loi vt theo th t n gi t ln n nh.

3. Vi mi vt c xt s ly mt s lng ti a m trng lng cn li ca ba l cho php. 4. Xc nh trng lung cn li ca ba l v quay li bc 3 cho n khi khng cn c th chn c vt no na. Loi vt Trng lng Gi tr V d 3-2: Ta c mt ba l c trng A 15 30 lng l 37 v 4 loi vt vi B 10 25 trng lng v gi tr tng ng c C 2 2 cho trong bng bn. D 4 6 T bng cho ta tnh n gi cho cc loi vt v sp Loi vt Trng lng Gi tr n gi xp cc loi vt ny B 10 25 2.5 theo th t n gi A 15 30 2.0 gim dn ta c bng D 4 6 1.5 sau. C 2 2 1.0 Theo th th t u tin chn vt l l B, A, D v cui cng l C.
Nguyn Vn Linh Trang 54

Gii thut

K thut thit k gii thut

Vt B c xt u tin v ta chn ti a 3 ci v mi ci v trng lng mi ci l 10 v ba l c trng lng 37. Sau khi chn 3 vt loi B, trng lng cn li trong ba l l 37 - 3*10 = 7. Ta xt n vt A, v A c trng lng 15 m trng lng cn li ca bal ch cn 7 nn khng th chn vt A. Xt vt D v ta thy c th chn 1 vt D, khi trng lng cn li ca ba l l 7-4 = 3. Cui cng ta chn c mt vt C. Nh vy chng ta chn 3 ci loi B, mt ci loi D v 1 ci loi C. Tng trng lng l 3*10 + 1*4 + 1*2 = 36 v tng gi tr l 3*25+1*6+1*2 = 83. Gii thut th gii bi ton ci ba l bng k thut tham n nh sau: T chc d liu: Mi vt c biu din bi mt mu tin c cc trng: Ten: Lu tr tn vt. Trong_luong: Lu tr trng lng ca vt. Gia_tri: Lu tr gi tr ca vt Don_gia: Lu tr n gi ca vt Phuong_an: Lu tr s lng vt c chn theo phng n. Danh sch cc vt c biu din bi mt mng cc vt. Khai bo bng pascal:
Type Do_vat = Record Ten: String[20] Trong_luong, Gia_tri, Don_gia : Real; Phuong_an : Integer; End; Danh_sach_do_vat = ARRAY[1..n] OF do_vat; Procedure Greedy (VAR dsdv : Danh_sach_do_vat; W: real); VAR i: integer; BEGIN {Sp xp mng dsdv theo th t gim ca don_gia} FOR i:=1 TO n DO BEGIN Dsdv[i].Phuong_an:= Chon(dsdv[i].Trong_luong, W); W := W dsdv[i].phuong_an * dsdv[i].Trong_luong; END; END;

Trong hm Chon(trong_luong, W) nhn vo trng lng trong_luong ca mt vt v trng lng cn li W ca ba l, tr v s lng vt c chn, sao cho tng trng lng ca cc vt c chn khng ln hn W. Ni ring, trong trng hp trong_luong v W l hai s nguyn th Chon(Trong_luong, W) chnh l W DIV Trong_luong. Ch : C mt s bin th ca bi ton ci ba l nh sau:

Nguyn Vn Linh

Trang

55

Gii thut

K thut thit k gii thut

1. Mi vt i ch c mt s lng si. Vi bi ton ny khi la chn vt i ta khng c ly mt s lng vt qu si. 2. Mi vt ch c mt ci. Vi bi ton ny th vi mi vt ta ch c th chn hoc khng chn. 3.4 QUY HOCH NG 3.4.1 Ni dung k thut Nh trong 3.1 ni, k thut chia tr thng dn chng ta ti mt gii thut quy. Trong cc gii thut , c th c mt s gii thut c phc tp thi gian m. Tuy nhin, thng ch c mt s a thc cc bi ton con, iu c ngha l chng ta phi gii mt s bi ton con no nhiu ln. trnh vic gii d tha mt s bi ton con, chng ta to ra mt bng lu tr kt qu ca cc bi ton con v khi cn chng ta s s dng kt qu c lu trong bng m khng cn phi gii li bi ton . Lp y bng kt qu cc bi ton con theo mt quy lut no nhn c kt qu ca bi ton ban u (cng c lu trong mt s no ca bng) c gi l quy hoch ng (dynamic programming). Trong mt s trng hp, tit kim nh, thay v dng mt bng, ta ch dng mt vct. C th tm tt gii thut quy hoch ng nh sau: 1. To bng bng cch: a. Gn gi tr cho mt s no . b. Gn tr cho cc khc nh vo gi tr ca cc trc . 2. Tra bng v xc nh kt qu ca bi ton ban u. u im ca phng php quy hoch ng l chng trnh thc hin nhanh do khng phi tn thi gian gii li mt bi ton con c gii. K thut quy hoch ng c th vn dng gii cc bi ton ti u, cc bi ton c cng thc truy hi. Phng php quy hoch ng s khng em li hiu qu trong cc trng hp sau: o o o Khng tm c cng thc truy hi. S lng cc bi ton con cn gii quyt v lu gi kt qu l rt ln. S kt hp li gii ca cc bi ton con cha chc cho ta li gii ca bi ton ban u.

Sau y chng ta s trnh by mt s bi ton c th gii bng k thut quy hoch ng. 3.4.2 Bi ton tnh s t hp Mt bi ton kh quen thuc l tnh s t hp chp k ca n theo cng thc truy hi:

Nguyn Vn Linh

Trang

56

Gii thut

K thut thit k gii thut

Ck = n

1 nu k = 0 hoac k = n C k --1 + C k -1 nu 0 < k < n n1 n

Cng thc trn gi cho chng ta mt gii thut quy nh sau:


FUNCTION Comb(n,k : integer) : Integer; BEGIN IF (k=0) OR (k=n) THEN Comb := 1 ELSE Comb := Comb(n-1, k-1) + Comb(n-1,k); END;

Gi T(n) l thi gian tnh s t hp chp k ca n, th ta c phng trnh quy: T(1) = C1 v T(n) = 2T(n-1) + C2 Gii phng trnh ny ta c T(n) = O(2n), nh vy l mt gii thut thi gian m, trong khi ch c mt a thc cc bi ton con. iu chng t rng c nhng bi ton con c gii nhiu ln. Chng hn tnh Comb(4,2) ta phi tnh Comb(3,1) v Comb(3,2). tnh Comb(3,1) ta phi tnh Comb(2,0) v Comb(2,1). tnh Comb(3,2) ta phi tnh Comb(2,1) v Comb(2,2). Nh vy tnh Comb(4,2) ta phi tnh Comb(2,1) hai ln. Hnh sau minh ho r iu . Comb(4,2) Comb(3,1) Comb(2,0) Comb(2,1) Comb(3,2) Comb(2,1) Comb(2,2)

Hnh 3-5 : S gi thc hin Com(4,2)

p dng k thut quy hoch ng khc phc tnh trng trn, ta xy dng mt bng gm n+1 dng (t 0 n n) v n+1 ct (t 0 n n) v in gi tr cho O(i,j) theo quy tc sau: (Quy tc tam gic Pascal): O(0,0) = 1;
O(i,0) =1;
j i

0 1 1 1 1 1

1 1 2 3 4

O(i,i) = 1 vi 0 < i ( n; O(i,j) = O(i-1,j-1) + O(i-1,j) vi 0 < j < i ( n. Chng hn vi n = 4 ta c bng bn. O(n,k) chnh l Comb(n,k) v ta c gii thut nh sau:
FUNCTION Comb(n, k : Integer) : Integer VAR C: array[0..n, 0..n] of integer; i,j : integer; BEGIN

0 1 2 3 4

1 3 6

1 4

Tam gic Pascal

Nguyn Vn Linh

Trang

57

Gii thut
{1} {2} {3} {4} {5} {6} END;

K thut thit k gii thut

C[0,0] := 1; FOR i := 1 TO n DO BEGIN C[i,0] := 1; C[i,i] := 1; FOR j := 1 TO i-1 DO C[i,j]:=C[i-1,j-1]+C[i-1,j]; END; Comb := C[n,k];

Vng lp {5} thc hin i-1 ln, mi ln O(1). Vng lp {2} c i chy t 1 n n, nn nu gi T(n) l thi gian thc hin gii thut th ta c:
T(n) = (i - 1) =
i =1 n

n(n - 1) = O(n 2 ) 2

Nhn xt: Thng qua vic xc nh phc tp, ta thy r rng gii thut quy hoch ng hiu qu hn nhiu so vi gii thut qui (n2 < 2n). Tuy nhin vic s dng bng (mng hai chiu) nh trn cn lng ph nh, do ta s ci tin thm mt bc bng cch s dng vct (mng mt chiu) lu tr kt qu trung gian. Cch lm c th nh sau: Ta s dng mt vct V c n+1 phn t t V[0] n V[n]. Vct V s lu tr cc gi tr tng ng vi dng i trong tam gic Pascal trn. Trong V[j] lu tr gi tr s t hp chp j ca i (Cji) (j = 0 n i). D nhin do ch c mt vct V m phi lu tr nhiu dng i do ti mi bc, V ch lu tr c mt dng v bc cui cng, V lu tr cc gi tr ng vi i = n, trong V[k] chnh l Ckn. Khi u, ng vi i =1, ta cho V[0] = 1 v V[1] = 1. Tc l C01 = 1 v C11 = 1. Vi cc gi tr i t 2 n n, ta thc hin nh sau: V[0] c gn gi tr 1 tc l C0i = 1. Tuy nhin gi tr V[0] = 1 c gn trn, khng cn phi gn li. Vi j t 1 n i-1, ta vn p dng cng thc Cji = Cj-1i-1 + Cji-1. Ngha l tnh cc gi tr trong dng i ta phi da vo dng i-1. Tuy nhin do ch c mt vct V v lc ny n s lu tr cc gi tr ca dng i, tc l dng i-1 s khng cn. khc phc iu ny ta dng thm hai bin trung gian p1 v p2. Trong p1 dng lu tr Cj-1i-1 v p2 dng lu tr Cji-1. Khi u p1 c gn V[0] tc l C0i-1 v p2 c gn V[j] tc l Cji-1, V[j] lu tr gi tr Cji s c gn bi p1+p2, sau p1 c gn bi p2, ngha l khi j tng ln 1 n v thnh j+1 th p1 l Cji-1 v n c dng tnh Cj+1i. Cui cng vi j = i ta gn V[i] gi tr 1 tc l Cii = 1.

Gii thut c th nh sau:


FUNCTION Comb(n, k : Integer) : Integer VAR V: array[0..n] of integer; i,j : integer; p1,p2: integer; BEGIN {1} V[0] := 1;

Nguyn Vn Linh

Trang 58

Gii thut
{2} {3} {4} {5} {6} {7} {8} V[1] := 1; FOR i := 2 TO n DO BEGIN p1 := V[0]; FOR j := 1 TO i-1 DO BEGIN p2 := V[j]; V[j]:= p1+p2; P1:= p2; END; {9} V[i] := 1; END; {10} Comb := V[k]; END;

K thut thit k gii thut

D dng tnh c phc tp ca gii thut vn l O(n2). 3.4.3 Bi ton ci ba l S dng k thut quy hoch ng gii bi ton ci ba l trnh by trong mc 3.2.5 vi mt lu l cc s liu u cho di dng s nguyn. Gi s X[k,V] l s lng vt k c chn, F[k,V] l tng gi tr ca k vt c chn v V l trng lng cn li ca ba l, k = 1..n, V = 1..W. Trong trng hp n gin nht, khi ch c mt vt, ta tnh c X[1,V] v F[1,V] vi mi V t 1 n W nh sau: X[1,V] = V DIV g1 v F[1,V] = X[1,V] * v1. Gi s ta tnh c F[k-1,V], khi c thm vt th k, ta s tnh c F[k,V], vi mi V t 1 n W. Cch tnh nh sau: Nu ta chn xk vt loi k, th trng lng cn li ca ba l dnh cho k-1 vt t 1 n k-1 l U = V-xk*gk v tng gi tr ca k loi vt c chn F[k,V] = F[k-1,U] + xk*vk, vi xk thay i t 0 n yk= V DIV gk v ta s chn xk sao cho F[k,V] ln nht. Ta c cng thc truy hi nh sau: X[1,V] = V DIV g1 v F[1,V] = X[1,V] * v1. F[k,V] = Max(F[k-1,V-xk*gk] + xk*vk) vi xk chy t 0 n V DIV gk. Sau khi xc nh c F[k,V] th X[k,V] l xk ng vi gi tr F[k,V] c chn trong cng thc trn. lu cc gi tr trung gian trong qu trnh tnh F[k,V] theo cng thc truy hi trn, ta s dng mt bng gm n dng t 1 n n, dng th k ng vi vt loi k v W+1 ct t 0 n W, ct th V ng vi trng lng V. Mi ct V bao gm hai ct nh, ct bn tri lu F[k,V], ct bn phi lu X[k,V]. Trong lp trnh ta s t chc hai bng tch ri l F v X. V d bi ton ci ba l vi trng lng W=9, v 5 loi vt c cho trong bng sau vt
Nguyn Vn Linh

Trng lng (gi)

Gi tr (vi)
Trang 59

Gii thut

K thut thit k gii thut

1 2 3 4 5

3 4 5 2 1

4 5 6 3 1

Ta c bng F[k,V] v X[k,V] nh sau, trong mi ct V c hai ct con, ct bn tri ghi F[k,V] v ct bn phi ghi X[k,V].
v k 1 2 3 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 3 3 0 0 0 1 0 4 4 4 4 4 1 0 0 0 0 4 5 5 6 6 1 1 0 2 0 4 5 6 7 7 1 1 1 1 0 8 8 8 9 9 2 0 0 3 0 8 9 9 10 10 2 1 0 2 0 8 10 10 12 12 2 2 0 4 0 12 12 12 13 13 3 0 0 3 0 0 1 2 3 4 5 6 7 8 9

Trong bng trn, vic in gi tr cho dng 1 rt n gin bng cch s dng cng thc: X[1,V] = V DIV g1 v F[1,V] = X[1,V] * v1. T dng 2 n dng 5, phi s dng cng thc truy hi: F[k,V] = Max(F[k-1,V-xk*gk] + xk*vk) vi xk chy t 0 n V DIV gk. V d tnh F[2,7], ta c xk chy t 0 n V DIV gk, trong trng hp ny l xk chy t 0 n 7 DIV 4, tc xk c hai gi tr 0 v 1. Khi F[2,7] = Max (F[2-1, 7-0*4] + 0*5, F[2-1,7-1*4] + 1*5) = Max(F[1,7], F[1,3] + 5) = Max(8, 4+5) = 9. F[2,7] = 9 ng vi xk = 1 do X[2,7] = 1. Vn by gi l cn phi tra trong bng trn xc nh phng n. Khi u, trng lng cn li ca ba l V = W. Xt cc vt t n n 1, vi mi vt k, ng vi trng lng cn li V ca ba l, nu X[k,V] > 0 th chn X[k,V] vt loi k. Tnh li V = V - X[k,V] * gk. V d, trong bng trn, ta s xt cc vt t 5 n 1. Khi u V = W = 9. Vi k = 5, v X[5,9] = 0 nn ta khng chn vt loi 5. Vi k = 4, v X[4,9] = 3 nn ta chn 3 vt loi 4. Tnh li V = 9 3 * 2 = 3. Vi k = 3, v X[3,3] = 0 nn ta khng chn vt loi 3. Vi k = 2, v X[2,3] = 0 nn ta khng chn vt loi 2. Vi k = 1, v X[1,3] = 1 nn ta chn 1 vt loi 1. Tnh li V = 3 1 * 3 = 0. Vy tng trng lng cc vt c chn l 3 * 2 + 1 * 3 = 9. Tng gi tr cc vt c chn l 3 * 3 + 1 * 4 = 13. Gii thut th theo k thut quy hoch ng nh sau: T chc d liu:
Nguyn Vn Linh Trang 60

Gii thut

K thut thit k gii thut

Mi vt c biu din bi mt mu tin c cc trng: Ten: Lu tr tn vt. Trong_luong: Lu tr trng lng ca vt. Gia_tri: Lu tr gi tr ca vt Phuong_an: Lu tr s lng vt c chn theo phng n.

Danh sch cc vt c biu din bi mt mng cc vt. Bng c biu din bi mt mng hai chiu cc s nguyn lu tr cc gi tr F[k,v] v X[k,v].

Khai bo bng pascal:


Type Do_vat = Record Ten: String[20] Trong_luong, Gia_tri : integer; Phuong_an : Integer; End; Danh_sach_vat = ARRAY[1..MAX] OF do_vat; BANG = ARRAY[1..10, 0..100] of integer;

Th tc to bng nhn vo ds_vat l danh sch cc vt, n l s lng cc loi vt, W l trng lng ca ba l. F v X l hai tham s thuc kiu Bang v c truyn bng tham chiu nhn li hai bng F v X do th tc to ra.
PROCEDURE Tao_Bang (ds_vat:Danh_sach_vat;n,W: integer; VAR F,X: Bang); VAR xk, yk, k: integer; FMax, XMax, v : integer; BEGIN FOR v:= 0 To W Do BEGIN {Hng u tin ca hai bng} X[1, v] := v div ds_vat[1].trong_luong; F[1, v] := X[1, v] * ds_vat[1].gia_tri; END; FOR k:= 2 TO N DO BEGIN X[k, 0] := 0; F[1, 0] := 0; For v:= 1 TO W DO BEGIN FMax := F[k-1, v] ; XMax := 0; yk := v DIV ds_vat[k].trong_luong; FOR xk:= 1 TO yk DO If(F[k-1,v-xk*ds_vat[k].trong_luong]+xk*ds_vat[k].gia_tri>FMax) THEN BEGIN FMax:=F[k-1,v-k*ds_vat[k].trong_luong]+xk*ds_vat[k].gia_tri; XMax:= xk; END ; F[k, v] := FMax; X[k, v] := XMax; END; END; END;

Nguyn Vn Linh

Trang 61

Gii thut

K thut thit k gii thut

Th tc Tra_bang nhn vo hai bng F v X; n l s lng cc loi vt, W l trng lng ca ba l v tr ra ds_vat l mt danh sch vt c xc nh phng n. Tham s ds_vat c truyn bng tham chiu.
PROCEDURE Tra_Bang(VAR ds_vat:Danh_sach_vat;n,W:integer;F,X: Bang); VAR k, v: integer; BEGIN v := W; FOR k:= n DOWNTO 1 DO IF X[k,v] > 0 THEN BEGIN ds_vat[k].Phuong_an := X[k,v]; v := v - X[k, v] * ds_vat[k].trong_luong; END; END;

3.4.4 Bi ton ng i ca ngi giao hng Chng ta c th p dng k thut quy hoch ng gii bi ton TSP trnh by trong mc 3.2.4. t S = {x1, x2, , xk} l tp hp con cc cnh ca th G = (V,E). Ta ni rng mt ng i P t v n w ph ln S nu P = {v, x1, x2, , xk, w}, trong xi c th xut hin mt th t bt k, nhng ch xut hin duy nht mt ln. V d ng cho trong hnh sau, i t a n a, ph ln {c, d, e, g}.
g e

d c

Hnh 3-6: ng i t a n a ph ln {c, d, e, g}

Ta nh ngha d(v, w, S) l tng di ca ng i ngn nht t v n w, ph ln S. Nu khng c mt ng i nh vy th t d(v, w, S) = . Mt chu trnh Hamilton nh nht Cmin ca G phi c tng di l c(Cmin) = d(v,v, V - {v}). Trong v l mt nh no ca V. Ta xc nh Cmin nh sau: Nu |V| = 1 (G ch c mt nh) th c(Cmin) = 0, ngc li ta c cng thc qui tnh d(v, w, S) l: d(v, w, {}) = c(v,w) d(v, w, S) = min [c(v, x) + d(x, w, S {x}], ly vi mi x S. Trong c(v, w) l di ca cnh ni hai nh v v w nu n tn ti hoc l nu ngc li. Dng th hai trong cng thc qui trn ng vi tp S khng rng, n ch ra rng ng i ngn nht t v n w ph ln S, trc ht phi i n mt nh x no trong S v sau l ng i ngn nht t x n w, ph ln tp S {x}.

Nguyn Vn Linh

Trang 62

Gii thut

K thut thit k gii thut

Bng cch lu tr cc nh x trong cng thc qui ni trn, chng ta s thu c mt chu trinh Hamilton ti tiu. 3.5 K THUT QUAY LUI K thut quay lui (backtracking) nh tn gi ca n, l mt qu trnh phn tch i xung v quay lui tr li theo con ng i qua. Ti mi bc phn tch chng ta cha gii quyt c vn do cn thiu c liu nn c phi phn tch cho ti cc im dng, ni chng ta xc nh c li gii ca chng hoc l xc nh c l khng th (hoc khng nn) tip tc theo hng ny. T cc im dng ny chng ta quay ngc tr li theo con ng m chng ta i qua gii quyt cc vn cn tn ng v cui cng ta s gii quyt c vn ban u. y chng ta s xt 3 k thut quay lui: vt cn l k thut phi i ti tt c cc im dng ri mi quay lui. Ct ta Alpha-Beta v Nhnh-Cn l hai k thut cho php chng ta khng cn thit phi i ti tt c cc im dng, m ch cn i n mt s im no v da vo mt s suy lun c th quay lui sm. Cc k thut ny s c trnh by thng qua mt s bi ton c th sau. 3.5.1 nh tr cy biu thc s hc Trong cc ngn ng lp trnh u c cc biu thc s hc, vic dch cc biu thc ny i hi phi nh gi (nh tr) chng. lm c iu cn phi c mt biu din trung gian cho biu thc. Mt trong cc biu din trung gian cho biu thc l cy biu thc. Cy biu thc s hc l mt cy nh phn, trong cc nt l biu din cho cc ton hng, cc nt trong biu din cho cc ton t.
V d 3-3: Biu thc 5 + 2 * 3 - 4 s

c biu din bi cy trong hnh 38 Tr ca mt nt l chnh l tr ca ton hng m nt biu din. Tr ca mt nt trong c c bng cch ly ton t m nt biu din p dng vo cc con ca n. Tr ca nt gc chnh l tr ca biu thc.
5

Hnh 3-7: Mt cy biu thc s hc

Nh vy nh tr cho nt gc, chng ta phi nh tr cho hai con ca n, i vi mi con ta xem n c phi l nt l hay khng, nu khng phi ta li phi xt hai con ca nt . Qu trnh c tip tc nh vy cho ti khi gp cc nt l m gi tr ca chng c bit, quay lui nh tr cho cc nt cha ca cc nt l v c nh th m nh tr cho t tin ca chng. chnh l k thut quay lui vt cn, v chng ta phi ln n tt c cc nt l mi nh tr c cho cc nt trong v do th mi nh tr c cho nt gc.

Nguyn Vn Linh

Trang 63

Gii thut

K thut thit k gii thut

V d 3-4: Vi cy biu thc trong v d 3-3. nh tr cho nt - chng ta phi nh

tr cho nt + v nt 4. Nt 4 l nt l nn gi tr ca n l 4. nh tr cho nt + ta phi nh tr cho nt 5 v nt *. Nt 5 l nt l nn gi tr ca n l 5. nh tr cho nt *, ta phi nh tr cho nt 2 v nt 3. C hai nt ny u l l nn gi tr ca chng tng ng l 2 v 3. Quay lui li nt *, ly ton t * p dng cho hai con ca n l 2 v 3 ta c tr ca nt * l 6. Quay lui v nt +, li p dng ton t + vo hai con ca n l 5 v 6 c tr ca nt + l 11. Cui cng quay v nt -, p dng ton t - vo hai con ca n l 11 v 4 ta c tr ca nt - (nt gc) l 7. chnh l tr ca biu thc. Trong hnh 3-9, mi tn nt t minh ha qu trnh i tm nt l v mi tn nt lin minh ha qu trnh quay lui nh tr cho cc nt, cc s bn phi mi nt l tr ca nt . Gii thut s b nh tr mt nt bt k nh sau:
FUNCTION Eval(n : node): real; BEGIN IF n l l THEN RETURN (tr ca ton hng trong n) ELSE RETURN (Ton t trong n (Eval (Con tri ca n), Eval (Con phi ca n)) ); END;

Mun nh tr cho cy biu thc T, ta gi Eval(ROOT(T)). 3.5.2 K thut ct ta Alpha-Beta


3.5.2.1 Cy tr chi

Xt mt tr chi trong hai ngi thay phin nhau i nc ca mnh nh c vua, c tng, car... Tr chi c mt trng thi bt u v mi nc i s bin i trng thi hin hnh thnh mt trng thi mi. Tr chi s kt thc theo mt quy nh no , theo th cuc chi s dn n mt trng thi phn nh c mt ngi thng cuc hoc mt trng thi m c hai u th khng th pht trin c nc i ca mnh, ta gi n l trng thi ha c. Ta tm cch phn tch xem t mt trng thi no s dn n u th no s thng vi iu kin c hai u th u c trnh nh nhau. Mt tr chi nh vy c th c biu din bi mt cy, gi l cy tr chi. Mi mt nt ca cy biu din cho mt trng thi. Nt gc biu din cho trng thi bt u ca cuc chi. Mi nt l biu din cho mt trng thi kt thc ca tr chi (trng thi thng thua hoc ha). Nu trng thi x c biu din bi nt n th cc con ca n biu din cho tt c cc trng thi kt qu ca cc nc i c th xut pht t trng thi x.
V d 3-5: Xt tr chi car c 9 . Hai ngi thay phin nhau i X hoc O. Ngi

no i c 3 thng hng (ngang, dc, cho) th thng cuc. Nu ht i m cha phn thng bi th hai u th ha nhau. Mt phn ca tr chi ny c biu din bi cy sau:

Nguyn Vn Linh

Trang 64

Gii thut
X-i

K thut thit k gii thut

X
X-i

X X O O O
B C D

O-i

X X X X O O O
E

X X X X O O O
F G

X X O O X O
H

X-i

X O X X X O O O
I

X X X X O O O O

X O X X O O X O
J

X X O X O O X O
K

O-i

X O X X X O O X O

X O X X X O O X O

X X X O X O O X O

Hnh 3-8: Mt phn ca cy tr chi car 9

Trong cy tr chi trn, cc nt l c t nn v vin khung i d phn bit vi cc nt khc. Ta gn cho mi nt mt ch ci (A, B, C) tin trong vic trnh by cc gii thut. Ta c th gn cho mi nt l mt gi tr phn nh trng thi thng thua hay ha ca cc u th. Chng hn ta gn cho nt l cc gi tr nh sau: 1 nu ti ngi i X thng, -1 nu ti ngi i X thua v 0 nu hai u th ha nhau. Nh vy t mt trng thi bt k, n lt mnh, ngi i X s chn cho mnh mt nc i sao cho dn n trng thi c gi tr ln nht (trong trng hp ny l 1). Ta ni X chn nc i MAX, nt m t X chn nc i ca mnh c gi l nt MAX. Ngi i O n lt mnh s chn mt nc i sao cho dn n trng thi c gi tr nh nht (trong trng hp ny l -1, khi X s thua v do O s thng). Ta ni O chn nc i MIN, nt m t O chn nc i ca mnh c
Nguyn Vn Linh Trang 65

Gii thut

K thut thit k gii thut

gi l nt MIN. Do hai u th lun phin nhau i nc ca mnh nn cc mc trn cy tr chi cng lun phin nhau l MAX v MIN. Cy tr chi v th cn c tn l cy MIN-MAX. Ta c th a ra mt quy tc nh tr cho cc nt trn cy phn nh tnh trng thng thua hay ha v kh nng thng cuc ca hai u th. Nu mt nt l nt l th tr ca n l gi tr c gn cho nt . Ngc li, nu nt l nt MAX th tr ca n bng gi tr ln nht ca tt c cc tr ca cc con ca n. Nu nt l nt MIN th tr ca n l gi tr nh nht ca tt c cc tr ca cc con ca n. Quy tc nh tr ny cng gn ging vi quy tc nh tr cho cy biu thc s hc, im khc bit y l cc ton t l cc hm ly max hoc min v mi nt c th c nhiu con. Do vy ta c th dng k thut quay lui nh tr cho cc nt ca cy tr chi.
V d 3-6: Vn dng quy tc quay lui vt cn nh tr cho nt A trong cy tr chi

trong v d 3-5. Trc ht ta gn tr cho cc nt l, theo qui nh trn th nt l B c gn gi tr 1, v ti ngi nh X thng. Nt F c gn gi tr -1 v ti ngi nh X thua (ngi nh O thng). Nt I c gn gi tr 0 v ti hai ngi ha nhau. Tng t nt J c gn gi tr 0 v nt K c gn gi tr 1. V ngi nh X c gn gi tr 1 ti nt l m anh ta thng (gi tr ln nht) nn ta ni X chn nc i MAX, ngc li ngi nh O s chn nc i MIN. nh tr cho nt A, ta thy A l nt MAX v khng phi l nt l nn ta gn gi tr tm l -, xt B l con ca A, B l nt l nn gi tr ca n l gi tr c gn 1, gi tr tm ca A by gi l max(-,1) = 1. Xt con C ca A, C l nt MIN, gi tr tm lc u ca C l . Xt con E ca C, E l nt MAX, gi tr tm ca E l -. Xt con I ca E, I l nt l nn gi tr ca n l 0. Quay lui li E, gi tr tm ca E by gi l max(-,0) = 0. V E ch c mt con l I xt nn gi tr tm 0 tr thnh gi tr ca E. Quay lui li C, gi tr tm mi ca C l min(,0) = 0. Li xt con F ca C, v F l nt l, nn gi tr ca F c gn l 1. Quay lui li C, gi tr tm mi ca C l min(0,-1) = -1. Nt C c hai con l E v F, c hai con ny u c xt, vy gi tr tm -1 ca C tr thnh gi tr ca n. Sau khi c gi tr ca C, ta phi quay li A v t li gi tr tm ca A l max(1,-1) = 1. Tip tc xt nt D, D l nt MIN nn gi tr tm l , xt nt con G ca D, G l nt MAX nn gi tr tm ca n l -, xt nt con J ca G. V J l nt l nn c gi tr 0. Quay lui li G, gi tr tm ca G by gi l max(-,0) = 0 v gi tr tm ny tr thnh gi tr ca G v G ch c mt con J xt. Quay lui v D, gi tr tm ca D by gi l min(,0) = 0. Li xt con H ca D, H l nt MAX nn gn gi tr tm ban u l -. Xt con K ca H, nt K l nt l nn gi tr ca K c gn l 1. Quay lui v H v t li gi tr tm ca H l max(-,1) = 1. Gi tr tm ny chnh l gi tr ca H v H ch c mt con K c xt. Quay lui v D v t li gi tr tm ca D l min(0, 1) = 0. C hai con G v H ca D u c xt nn gi tr tm 0 ca D tr thnh gi tr ca n. Quay lui v A, gi tr tm ca n l max(1,0) = 1vn khng thay i, nhng lc ny c 3 con ca A u c xt nn gi tr tm 1 tr thnh gi tr ca A. Kt qu c minh ha trong hnh sau:
Nguyn Vn Linh Trang 66

Gii thut

K thut thit k gii thut

X-i MAX

X-i MAX B O-i MIN

X - X X O 1 O O

C 0 -1

D 0

X X X X O O O
1 E

X X -1 X X O O O
0 F -1

X X O O X O
0

X-i MAX

- 0

X O X X X O O O
I

X 1 X X - X O X -- X X O 1 O X O X X O 0 O X O O X O O O O
-1 J K

O-i MIN

X O X X X O O X O
0

X O X X X O O X O
0

X X X O X O O X O
1

Hnh 3-9: nh tr cy tr chi bng k thut quay lui vt cn

Trong hnh trn, cc nt l c gi tr c gn ghi pha di mi nt. i vi cc nt trong, bn tri ghi cc gi tr tm theo th t trn xung, cc gi tr thc c ghi bn phi hoc pha trn bn phi.
3.5.2.2 Gii thut vt cn nh tr cy tr chi

ci t ta c mt s gi thit sau: Ta c mt hm Payoff nhn vo mt nt l v cho ta gi tr ca nt l . Cc hng v - tng ng l cc tr Payoff ln nht v nh nht. Khai bo kiu ModeType = (MIN, MAX) xc nh nh tr cho nt l MIN hay MAX.

Nguyn Vn Linh

Trang 67

Gii thut

K thut thit k gii thut

Mt kiu NodeType c khai bo mt cch thch hp biu din cho mt nt trn cy phn nh mt trng thi ca cuc chi. Ta c mt hm is_leaf xc nh xem mt nt c phi l nt l hay khng? Hm max v min tng ng ly gi tr ln nht v gi tr nh nht ca hai gi tr. Hm Search nhn vo mt nt n v kiu mode ca nt (MIN hay MAX) tr v gi tr ca nt. Nu nt n l nt l th tr v gi tr c gn cho nt l. Ngc li ta cho n mt gi tr tm value l - hoc ty thuc n l nt MAX hay MIN v xt con ca n. Sau khi mt con ca n c gi tr V th t li value = max(value,V) nu n l nt MAX v value = min(value,V) nu n l nt MIN. Khi tt c cc con ca n c xt th gi tr tm value ca n tr thnh gi tr ca n.
FUNCTION Search(n : NodeType; mode: ModeType): real; VAR C : NodeType ; { C l mt nt con ca nt n} Value : real; {Lc u ta cho value mt gi tr tm, sau khi xt ht tt c cc con ca nt n th value l gi tr ca nt n } BEGIN IF is_leaf(n) THEN RETURN ( Payoff(n) ) ELSE BEGIN {Khi to gi tr tm cho n } IF mode = MAX THEN value := - ELSE value := ; {Xt tt c cc con ca n, mi ln xc nh c gi tr ca mt nt con, ta phi t li gi tr tm value. Khi xt ht tt c cc con th value l gi tr ca n} FOR vi mi con C ca n DO IF mode = MAX THEN Value := max(Value, Search(C, MIN) ) ELSE Value := min(Value, Search(C, MAX) ); RETURN (value); END; END;

3.5.2.3 K thut ct ta Alpha-Beta (Alpha-Beta Pruning)

Trong gii thut vt cn trn, ta thy nh tr cho mt nt no , ta phi nh tr cho tt c cc nt con chu ca n, v mun nh tr cho nt gc ta phi nh tr cho tt c cc nt trn cy. S lng cc nt trn cy tr chi tuy hu hn nhng khng phi l t. Chng hn trong cy tr chi ca r ni trn, nu ta c bn c bao gm n th c th c ti n! nt trn cy (trong trng hp trn l 9!). i vi cc loi c khc nh c vua chng hn, th s lng cc nt cn ln hn nhiu. Ta gi l mt s bng n t hp cc nt.

Nguyn Vn Linh

Trang 68

Gii thut

K thut thit k gii thut

Chng ta c gng tm mt cch sao cho khi nh tr mt nt th khng nht thit phi nh tr cho tt c cc nt con chu ca n. Trc ht ta c nhn xt nh sau: Nu P l mt nt MAX v ta ang xt mt nt con Q ca n (d nhin Q l nt MIN). Gi s Vp l mt gi tr tm ca P, Vq l mt gi tr tm ca Q v nu ta c Vp Vq th ta khng cn xt cc con cha xt ca Q na. V nu c xt th gi tr ca Q cng s nh hn hoc bng Vq v do khng nh hng g n Vp. Tng t nu P l nt MIN (tt nhin Q l nt MAX) v Vp Vq th ta cng khng cn xt n cc con cha xt ca Q na. Vic khng xt tip cc con cha c xt ca nt Q gi l vic ct ta Alpha-Beta cc con ca nt Q. Trn c s nhn xt , ta nu ra quy tc nh tr cho mt nt khng phi l nt l trn cy nh sau: 1. Khi u nt MAX c gi tr tm l - v nt MIN c gi tr tm l . 2. Nu tt c cc nt con ca mt nt c xt hoc b ct ta th gi tr tm ca nt tr thnh gi tr ca n. 3. Nu mt nt MAX n c gi tr tm l V1 v mt nt con ca n c gi tr l V2 th t gi tr tm mi ca n l max(V1,V2). Nu n l nt MIN th t gi tr tm mi ca n l min(V1,V2). 4. xt. 3-5. A l nt MAX, v A khng phi l nt l nn ta gn gi tr tm l -, xt B l con ca A, B l nt l nn gi tr ca n l gi tr c gn 1, gi tr tm ca A by gi l max(-,1) = 1. Xt con C ca A, C l nt MIN, gi tr tm lc u ca C l . Xt con E ca C, E l nt MAX, gi tr tm ca E l -. Xt con I ca E, I l nt l nn gi tr ca n l 0. Quay lui li E, gi tr tm ca E by gi l max(-,0) = 0. V E ch c mt con l I xt nn gi tr tm 0 tr thnh gi tr ca E. Quay lui li C, gi tr tm mi ca C l min(,0) = 0. A l nt MAX c gi tr tm l 1, C l con ca A, c gi tr tm l 0, 1>0 nn ta khng cn xt con F ca C na. Nt C c hai con l E v F, trong E c xt, F b ct, vy gi tr tm 0 ca C tr thnh gi tr ca n. Sau khi c gi tr ca C, ta phi t li gi tr tm ca A, nhng gi tr tm ny khng thay i v max(1,0) = 1. Tip tc xt nt D, D l nt MIN nn gi tr tm l , xt nt con G ca D, G l nt MAX nn gi tr tm ca n l -, xt nt con J ca G. V J l nt l nn c gi tr 0. Quay lui li G, gi tr tm ca G by gi l max(-,0) = 0 v gi tr tm ny tr thnh gi tr ca G v G ch c mt con J xt. Quay lui v D, gi tr tm ca D by gi l min(,0) = 0. Gi tr tm ny ca D nh hn gi tr tm ca nt A MAX l cha ca n nn ta ct ta con H cha c xt ca D v lc ny D c gi tr l 0. Quay lui v A, gi tr tm ca n vn khng thay i, nhng lc ny c 3 con ca A u c xt nn gi tr tm 1 tr thnh gi tr ca A. Kt qu c minh ha trong hnh sau: Vn dng quy tc ct ta Alpha-Beta ni trn hn ch s lng nt phi

V d 3-7: Vn dng quy tc trn nh tr cho nt A ca cy tr chi trong v d

Nguyn Vn Linh

Trang 69

Gii thut

K thut thit k gii thut

X-i MAX

X-i MAX B O-i MIN

X - X X O 1 O O

C 0

D 0 0

X X X X O O O
1 E

X X X X O O O
0

X X O O X O
0 H

X-i MAX

- 0

X O X X X O O O
I

X X - X O X X O X X O 0 O X O O O O
-1 J

X X O X O O X O
K

O-i MIN

X O X X X O O X O
0

X O X X X O O X O
0

X X X O X O O X O
1

Hnh 3-10: nh tr cy tr chi bng k thut ct ta alpha-beta

Hm cat_tia sau trnh by gii thut th nh tr mt nt, p dng k thut ct ta alpha-beta


FUNCTION cat_tia(Q:NodeType; mode:ModeType; Vp: real): real; var C : NodeType ; { C l mt nt con ca nt Q} Vq : real; {Vq l gi tr tm ca Q, sau khi tt c cc con ca nt Q xt hoc b ct ta th Vq l gi tr ca nt Q} BEGIN IF is_leaf(Q) THEN RETURN ( Payoff(Q) ) ELSE BEGIN { Khi to gi tr tm cho Q } IF mode = MAX THEN Vq := - ELSE Vq := ;

Nguyn Vn Linh

Trang 70

Gii thut

K thut thit k gii thut

{Xt cc con ca Q, mi ln xc nh c gi tr ca mt nt con ca Q, ta phi t li gi tr tm Vq v so snh vi Vp c th ct ta hay khng} Xt C l con tri nht ca Q; WHILE C l con ca Q DO IF mode = MAX THEN BEGIN Vq:= max(Vq, Cat_tia(C, MIN, Vq)); IF Vp<=Vq THEN RETURN(Vq); END ELSE BEGIN Vq := min(Vq, Cat_tia(C, MAX, Vq)); IF Vp >= Vq THEN RETURN(Vq); END; RETURN (Vq); END; END;

3.5.3 K thut nhnh cn Vi cc bi ton tm phng n ti u, nu chng ta xt ht tt c cc phng n th mt rt nhiu thi gian, nhng nu s dng phng php tham n th phng n tm c cha hn l phng n ti u. Nhnh cn l k thut xy dng cy tm kim phng n ti u, nhng khng xy dng ton b cy m s dng gi tr cn hn ch bt cc nhnh. Cy tm kim phng n c nt gc biu din cho tp tt c cc phng n c th c, mi nt l biu din cho mt phng n no . Nt n c cc nt con tng ng vi cc kh nng c th la chn tp phng n xut pht t n. K thut ny gi l phn nhnh. Vi mi nt trn cy ta s xc nh mt gi tr cn. Gi tr cn l mt gi tr gn vi gi ca cc phng n. Vi bi ton tm min ta s xc nh cn di cn vi bi ton tm max ta s xc nh cn trn. Cn di l gi tr nh hn hoc bng gi ca phng n, ngc li cn trn l gi tr ln hn hoc bng gi ca phng n. d hnh dung ta s xt hai bi ton quen thuc l bi ton TSP v bi ton ci ba l.
3.5.3.1 Bi ton ng i ca ngi giao hng 3.5.3.1.1 Phn nhnh

Cy tm kim phng n l cy nh phn trong : Nt gc l nt biu din cho cu hnh bao gm tt c cc phng n. Mi nt s c hai con, con tri biu din cho cu hnh bao gm tt c cc phng n cha mt cnh no , con phi biu din cho cu hnh bao gm tt c cc phng n khng cha cnh (cc cnh xt phn nhnh c thnh lp tun theo mt th t no , chng hn th t t in). Mi nt s k tha cc thuc tnh ca t tin ca n v c thm mt thuc tnh mi (cha hay khng cha mt cnh no ).
Nguyn Vn Linh Trang 71

Gii thut

K thut thit k gii thut

Nt l biu din cho mt cu hnh ch bao gm mt phng n. qu trnh phn nhnh mau chng ti nt l, ti mi nt ta cn c mt quyt nh b sung da trn nguyn tc l mi nh trong chu trnh u c cp 2 v khng to ra mt chu trnh thiu. V d 3-7: Xt bi ton TSP c 5 nh vi di cc cnh c cho trong hnh 311. b Cc cnh theo th t t in xt l: 3 4 ab, ac, ad, ae, bc, bd, be, cd, ce v de. 4 Nt gc A ca cy bao gm tt a c c cc phng n. 6 3 Hai con ca A l B v C, trong B bao gm tt c cc phng 7 5 n cha cnh ab, C bao gm tt 2 8 c cc phng n khng cha ab, k hiu l e d 6 Hai con ca B l D v E. Nt D bao gm tt c cc phng n Hnh 3-11: Bi ton TSP c 5 nh cha ac. V cc phng n ny va cha ab (k tha ca B) va cha ac nn nh a cp hai nn D khng th cha ad v ae. Nt E bao gm tt c cc phng n khng cha ac Ta c cy (cha y ) trong hnh 3-12. Tt c cc phng n B ab D ac ae ad E
ac

ab

A C
ab

Hnh 3-12: Phn nhnh


3.5.3.1.2 Tnh cn di

y l bi ton tm min nn ta s dng cn di. Cn di ti mi nt l mt s nh hn hoc bng gi ca tt c cc phng n c biu din bi nt . Gi ca mt phng n y l tng di ca mt chu trnh.
Nguyn Vn Linh Trang 72

Gii thut

K thut thit k gii thut

tnh cn di ca nt gc, mi nh ta chn hai cnh c di nh nht. Cn di ca nt gc bng tng di tt c cc cnh c chn chia cho 2. V d 3-8: Vi s liu cho trong v d 3-7 ni trn, ta tnh cn di ca nt gc A (hnh 3-12) nh sau: nh a chn ad = 2, ab = 3 nh b chn ba = 3, be = 3 nh c chn ca = 4, cb = 4 nh d chn da = 2, dc = 5 nh e chn eb = 3, ed = 6 Tng di cc cnh c chn l 35, cn di ca nt gc A l 35/2 = 17.5 i vi cc nt khc, chng ta phi la chn hai cnh c di nh nht tha iu kin rng buc (phi cha cnh ny, khng cha cnh kia). V d 3-9: Tnh cn di cho nt D trong hnh 3-13. iu kin rng buc l phi cha ab, ac v khng cha ad, ae. nh a chn ab = 3, ac = 4, do hai cnh ny buc phi chn. nh b chn ba = 3, be = 3 nh c chn ca = 4, cb = 4 nh d chn de = 6, dc = 5, do khng c chn da nn ta phi chn de. nh e chn eb = 3, ed = 6 Tng di cc cnh c chn l 41, cn di ca nt D l 41/2 = 20.5
3.5.3.1.3 K thut nhnh cn

By gi ta s kt hp hai k thut trn xy dng cy tm kim phng n. Quy tc nh sau: Xy dng nt gc, bao gm tt c cc phng n, tnh cn di cho nt gc. Sau khi phn nhnh cho mi nt, ta tnh cn di cho c hai con. Nu cn di ca mt nt con ln hn hoc bng gi nh nht tm thi ca mt phng n c tm thy th ta khng cn xy dng cc cy con cho nt ny na (Ta gi l ct ta cc cy con ca nt ). Nu c hai con u c cn di nh hn gi nh nht tm thi ca mt phng n c tm thy th nt con no c cn di nh hn s c u tin phn nhnh trc. Mi ln quay lui xt nt con cha c xt ca mt nt ta phi xem xt li nt con c th ct ta cc cy ca n hay khng v c th mt phng n c gi nh nht tm thi va c tm thy.

Nguyn Vn Linh

Trang 73

Gii thut

K thut thit k gii thut

Sau khi tt c cc con c phn nhnh hoc b ct ta th phng n c gi nh nht trong cc phng n tm c l phng n cn tm. Trong qu trnh xy dng cy c th ta xy dng c mt s nt l, nh ta bit mi nt l biu din cho mt phng n. Gi nh nht trong s cc gi ca cc phng n ny c gi l gi nh nht tm thi. V d 3-10: Xt bi ton TSP trong v d 3-7 ni trn. Tp hp cc cnh xt phn nhnh l ab, ac, ad, ae, bc, bd, be, cd, ce v de. iu kin b sung y l mi nh phi c chn hai cnh, b loi hai cnh v khng c to ra chu trnh thiu. Nt gc A bao gm tt c cc phng n, c cn di l 17.5. Phn nhnh cho A, xy dng hai con l B v C. Tnh cn di cho hai nt ny c cn di ca B l 17.5 v C l 18.5. Nt B c cn di nh hn nn c phn nhnh trc. Hai con ca B l D v E. Cc rng buc ca D v E ging nh- ta ni trong v d ca phn phn nhnh. Tnh cn cho D v E, c cn di ca D l 20.5 v ca E l 18. Nt E c xt trc. Phn nhnh cho nt E theo cnh ad, hai con ca E l F v G. F cha ad v G khng cha ad. Do F k tha cc thuc tnh ca E v B, nn F l tp hp cc phng n cha ab, ad v khng cha ac, nh a cp 2 vy F khng cha ae. Tng t G cha ab, khng cha ac, khng cha ad nn phi cha ae. Tnh cn di cho F v G c cn di ca F l 18 v ca G l 23. Tip tc xy dng hai con cho F theo cnh bc l H v I. H cha bc v I khng cha bc. Do H k tha cc thuc tnh ca B, E v F nn H l cc phng n cha ab, ad, khng cha ac v cha bc. Nh vy nh a tha iu kin l c chn hai cnh (ab v ad) v b loi hai cnh (ac v ae), nh b c chn 2 cnh (ba v bc) nn bd v be b loi. nh c c chn cb, b loi ca, ta c th chn cd hoc ce. Nu chn cd th s c mt chu trinh thiu a b c d a, nh vy cd b loi nn phi chn ce. nh d c db v dc b loi, da c chn nn phi chn thm de. Lc nh e cng c hai cnh c chn l ec v ed, hai cnh b loi l eb v ea. Tm li H l tp ch bao gm mt phng n a b c e d a c gi l 23. i vi I ta c I cha ab, khng cha ac, cha ad, khng cha ae v khng cha bc. Bng l lun tng t ta c I khng cha bd, cha be, cd, ce v khng cha de. Mt phng n mi l a b e c d a vi gi 21. y l gi nh nht tm thi mi c tm thy. By gi ta quay lui v E v xt nt con ca n l G. V G c cn di l 23 ln hn gi thp nht tm thi 21 nn ct ta cc con ca G. Quay lui v B v xt nt con D ca n. Cn di ca D l 20.5 khng ln hn 21. Nhng v di cc cnh trong bi ton cho l s nguyn nn nu ta trin khai cc con ca D ti nt l gm mt phng n. Gi ca phng n ny phi l mt s nguyn ln hn 20.5 hay ln hn hoc bng 21. Vy ta cng khng cn xy dng cc con ca D na. Tip tc quay lui n A v xt con C ca n. Phn nhnh C theo cnh ac thnh hai con J v K. J cha ac c cn di l 18.5. K khng cha ac nn phi cha ad v ae, cn di ca K l 21 bng gi nh nht tm thi nn ct ta cc con ca K. Hai con ca J l L v M. M khng cha ad, ab, cha ac v ae c cn di 23.5 nn b ct ta cc con. Hai con ca L l N v O, N cha bc v O khng cha bc.
Nguyn Vn Linh Trang 74

Gii thut

K thut thit k gii thut

Xt nt N ta c: nh a c chn hai cnh ac v ad, b loi hai cnh ab v ae. nh b c chn bc, b loi ba, ta c th chn bd hoc be. Nu chn bd th s c mt chu trnh thiu l a c b d a, vy phi loi bd v chn be. nh c c chn ca, cb nn phi loi cd v ce. nh d c chn da, b loi db v dc nn phi chn de. Khi nh e c hai cnh c chn l eb, ed v hai cnh b loi l ea v ec. Vy N bao gm ch mt phng n l a c b e d a vi gi 19. Tng t nt O bao gm ch mt phng n a c e b d a c gi l 23. Tt c cc nt con ca cy c xt hoc b ct ta nn phng n cn tm l a c b e d a vi gi 19. Hnh 3-13 minh ha cho nhng iu ta va ni. Tt c cc phng n 17.5 B ab 17.5 D ac ad ae 20.5 F ad ae 18 H bc bd be cd ce de abceda Gi: 23 I
bc bd be cd ce de

C
ab

18.5 E
ac

18 G
ad ae

J ac 18.5 L ad ae 18.5 N bc bd be cd ce de acbeda Gi: 19 M


ad ae

K
ac ad ae

21

23

23.5 O
bc bd be ce cd de

abecda Gi: 21

acebda Gi: 23

Hnh 3-13: K thut nhnh cn gii bi ton TSP

Nguyn Vn Linh

Trang 75

Gii thut
3.5.3.2 Bi ton ci ba l

K thut thit k gii thut

Ta thy y l mt bi ton tm max. Danh sch cc vt c sp xp theo th t gim ca n gi xt phn nhnh. 1. Nt gc biu din cho trng thi ban u ca ba l, ta cha chn mt vt no. Tng gi tr c chn TGT = 0. Cn trn ca nt gc CT = W * n gi ln nht. 2. Nt gc s c cc nt con tng ng vi cc kh nng chn vt c n gi ln nht. Vi mi nt con ta tnh li cc thng s: TGT = TGT (ca nt cha) + s vt c chn * gi tr mi vt. W = W (ca nt cha) - s vt c chn * trng lng mi vt. CT = TGT + W * n gi ca vt s xt k tip. 3. Trong cc nt con, ta s u tin phn nhnh cho nt con no c cn trn ln hn trc. Cc con ca nt ny tng ng vi cc kh nng chn vt c n gi ln tip theo. Vi mi nt ta li phi xc nh li cc thng s TGT, W, CT theo cng thc ni trong bc 2. 4. Lp li bc 3 vi ch : i vi nhng nt c cn trn nh hn hoc bng gi ln nht tm thi ca mt phng n c tm thy th ta khng cn phn nhnh cho nt na (ct b). 5. Nu tt c cc nt u c phn nhnh hoc b ct b th phng n c gi ln nht l phng n cn tm. V d 3-11: Vi bi ton ci ba l cho trong v d 3-2 , sau khi tnh n gi cho cc vt v sp xp cc vt theo th t gim dn ca n gi ta c bng sau. Loi vt b a d c
B

Trng lng 10 15 4 2

Gi tr 25 30 6 2

n gi 2.5 2.0 1.5 1

Gi XA, XB, XC, XD l s lng cn chn tng ng ca cc vt a, b, c d. Nt gc A biu din cho trng thi ta cha chn bt c mt vt no. Khi tng gi tr TGT =0, trng lng ca ba l W=37 (theo ra) v cn trn CT = 37*2.5 = 92.5, trong 37 l W, 2.5 l n gi ca vt b. Vi vt b, ta c 4 kh nng: chn 3 vt b (XB=3), chn 2 vt b (XB=2), chn 1 vt b (XB=1) v khng chn vt b (XB=0). ng vi 4 kh nng ny, ta phn nhnh cho nt gc A thnh 4 con B, C, D v E. Vi nt con B, ta c TGT = 0+ 3*25 = 75, trong 3 l s vt b c chn, 25 l gi tr ca mi vt b. W = 37- 3*10 = 7, trong 37 l trnh lng ban u ca ba l, 3 l s vt b c, 10 l trng lng mi vt b. CT = 75 + 7*2 = 89, trong 75 l TGT, 7 l trng lng cn li ca ba l v 2 l n gi ca vt a. Tng

Nguyn Vn Linh

Trang 76

Gii thut

K thut thit k gii thut

t ta tnh c cc thng s cho cc nt C, D v E, trong cn trn tng ng l 84, 79 v 74. Trong cc nt B, C, D v E th nt B c cn trn ln nht nn ta s phn nhnh cho nt B trc vi hy vng s c c phng n tt t hng ny. T nt B ta ch c mt nt con F duy nht ng vi XA=0 (do trng lng cn li ca ba l l 7, trong khi trng lng ca mi vt a l 15). Sau khi xc nh cc thng s cho nt F ta c cn trn ca F l 85.5. Ta tip tc phn nhnh cho nt F. Nt F c 2 con G v H tng ng vi XD=1 v XD=0. Sau khi xc nh cc thng s cho hai nt ny ta thy cn trn ca G l 84 v ca H l 82 nn ta tip tc phn nhnh cho nt G. Nt G c hai con l I v J tng ng vi XC=1 v XC=0. y l hai nt l (biu din cho phng n) v vi mi nt th s cc vt c chn xong. Trong nt I biu din cho phng n chn XB=3, XA=0, XD=1 v XC=1 vi gi 83, trong khi nt J biu din cho phng n chn XB=3, XA=0, XD=1 v XC=0 vi gi 81. Nh vy gi ln nht tm thi y l 83.
B

Quay lui ln nt H, ta thy cn trn ca H l 82<83 nn ct ta nt H. Quay lui ln nt C, ta thy cn trn ca C l 84>83 nn tip tc phn nhnh cho nt C. Nt C c hai con l K v L ng vi XA=1 v XA=0. Sau khi tnh cc thng s cho K v L ta thy cn trn ca K l 83 v ca L l 75.25. C hai gi tr ny u khng ln hn 83 nn c hai nt ny u b ct ta. Cui cng cc nt D v E cng b ct ta. Nh vy tt c cc nt trn cy u c phn nhnh hoc b ct ta nn phng n tt nht tm thi l phng n cn tm. Theo ta cn chn 3 vt loi b, 1 vt lo d v mt vt loi c vi tng gi tr l 83, tng trng lng l 36. Xem minh ho trong hnh 3-14.

Nguyn Vn Linh

Trang 77

Gii thut

K thut thit k gii thut

TGT =0 A W=37,CT = 92.5

XB=3

XB=2

XB=1

XB=0

TGT=75 B W=7 CT = 89

TGT=50 C W=17 CT = 84

TGT=25 D W=27 CT = 79

TGT=0 E W=37 CT = 74

XA=0

XA=1

XA=0

TGT=75 E W=7 CT=85.5

TGT=80 K W=2 CT = 83

TGT=50 L W=17 CT=75.25

XD=1

XD=0

TGT=81 G W=3 CT = 84

TGT=75 H W=7 CT = 82

XC=1

XC=0

TGT=83 I W=1

TGT=81 J W=3

Ct ta

Hnh 3-14: K thut nhnh cn p dng cho bi ton ci ba l

3.6 K THUT TM KIM A PHNG 3.6.1 Ni dung k thut K thut tm kim a phng (local search) thng c p dng gii cc bi ton tm li gii ti u. Phng php nh sau: Xut pht t mt phng n no . p dng mt php bin i ln phng n hin hnh c mt phng n mi tt hn phng n c. Lp li vic p dng php bin i ln phng n hin hnh cho n khi khng cn c th ci thin c phng n na.

Nguyn Vn Linh

Trang 78

Gii thut

K thut thit k gii thut

Thng thng mt php bin i ch thay i mt b phn no ca phng n hin hnh c mt phng n mi nn php bin i c gi l php bin i a phng v do ta c tn k thut tm kim a phng. Sau y ta s trnh by mt s v d p dng k thut tm kim a phng. 3.6.2 Bi ton cy ph ti thiu Cho G = (V,E) l mt th v hng lin thng, trong V l tp cc nh v E l tp cc cnh. Cc cnh ca th G u c trng s. Cy T c tp hp cc nt l V c gi l cy ph (spaning tree) ca th G. Cy ph ti thiu l mt cy ph ca G m tng di (trng s) cc cnh nh nht. Bi ton cy ph ti thiu thng c p dng trong vic thit k mt mng li giao thng gia cc thnh ph hay thit k mt mng my tnh. K thut tm kim a phng p dng vo bi ton ny nh sau: Phng n ban u l mt cy ph no . Thnh lp tp tt c cc cnh theo th tng dn ca di (c cnh i vi th c n nh). Php bin i a phng y l: Chn mt cnh c di nh nht trong tp cc cnh cha s dng thm vo cy. Trong cy s c mt chu trnh, loi khi chu trnh cnh c di ln nht trong chu trnh . Ta c mt cy ph mi. Lp li bc ny cho n khi khng cn ci thin c phng n na. V d 3-12: Cho th G bao gm 5 nh a, b, c, d,e v di cc cnh c cho trong hnh 3-15. Tp hp cc cnh xt c thnh b lp theo th t t nh n ln l ad, ab, be, bc, ac, cd, bd, de, ae v ce. 4 3 Cy xut pht vi gi l 20 (Hnh 316). Thm cnh ad = 2, b cnh cd = 4 c 5 ta c cy mi c gi l 17 (Hnh a 6 3-17). 3 Li thm cnh ab = 3, b cnh bc = 4 ta c cy c gi l16 (Hnh 3-18). Thm cnh be = 3, b cnh ae = 7 ta c cy c gi l 12. (Hnh 3-19). Vic p dng cc php bin i n y dng li v nu tip tc na th cng khng ci thin c phng n. 7 e 2 8 d 5
n(n - 1) 2

Hnh 3-15: Bi ton cy ph ti thiu

Vy cy ph ti thiu cn tm l cy trong hnh 3-19

Nguyn Vn Linh

Trang 79

Gii thut

K thut thit k gii thut

b 4 a 7 e d 4 c a 5 7 e

b 4 4 c

2 d
Hnh 3-17: Gi 17

Hnh 3-16: Cy xut pht, gi 20

b 3 a 7 e
Hnh 3-18: Gi 16

b 3

c a 2

2 d e

d
Hnh 3-19: Gi 12

3.6.3 Bi ton ng i ca ngi giao hng. Ta c th vn dng k thut tm kim a phng gii bi ton tm ng i ngn nht ca ngi giao hng (TSP). Xut pht t mt chu trnh no . B i hai cnh c di ln nht khng k nhau, ni cc nh li vi nhau sao cho vn to ra mt chu trnh . Tip tc qu trnh bin i trn cho n khi no khng cn ci thin c phng n na. V d 3-13: Bi ton TSP c 5 nh v cc cnh c di c cho trong hnh 3-20 Phng n ban u l chu trnh (a b c d e a) c gi (tng di ) l 25. (Hnh 3-21).

Nguyn Vn Linh

Trang 80

Gii thut

K thut thit k gii thut

b 3 a 3 7 e 2 8 d 4 6 5 7 e 4 c a 3

b 4 c 5 d

Hnh 3-20: Bi ton TSP vi 5 nh

Hnh 3-21: Phng n ban u, gi 25

B hai cnh c di ln nht khng k nhau l ae v cd (hnh 3-22a), ni a vi d v e vi c. ta c chu trnh mi ( a b c e d a) vi gi = 23 (Hnh 3-22b). b 3 a 7 5 e d 4 c a 2 d e 3 b 4 c

8 6

Hnh 3-22a: B hai cnh ae v cd

Hnh 3-22b: Phng n mi, gi 23.

B hai cnh c di ln nht, khng k nhau l ce v ab (hnh 3-23a), ni a vi c v b vi e, ta c chu trnh mi (a c b e d a) c gi = 19. (Hnh 3-23b). Qu trnh kt thc v nu tip tc th gi s tng ln. b 3 a 2 d e 4 c a 2 d e 4 c 4 b

8 6

3 6

Hnh 3-23a: B hai cnh ce v ab.

Hnh 3-23b: Phng n mi, gi 19

Nguyn Vn Linh

Trang 81

Gii thut

K thut thit k gii thut

3.7 TNG KT CHNG 3 Trong cc k thut c trnh by trong chng, k thut chia tr l k thut c bn nht. Hy chia nh cc bi ton gii quyt n! Vi cc bi ton tm phng n ti u, k thut tham n gip chng ta nhanh chng xy dng c mt phng n, du rng cha hn ti u nhng chp nhn c. K thut nhnh cn cho php chng ta tm c phng n ti u. Trong k thut nhnh cn, vic phn nhnh khng kh nhng vic xc nh gi tr cn l iu quan trng. Cn phi xc nh gi tr cn sao cho cng st vi gi ca phng n cng tt v nh th th c th ct ta c nhiu nt trn cy v o s gim c thi gian thc hin chng trnh. Vn dng phng php quy hoch ng c th gii c rt nhiu bi ton. iu quan trng nht p dng phng php quy hoch ng l phi xy dng c cng thc quy xc nh kt qu bi ton thng qua kt qu cc bi ton con. BI TP CHNG 3 Bi 1: Gi s c hai i A v B tham gia mt trn thi u th thao, i no thng trc n hip th s thng cuc. Chng hn mt trn thi u bng chuyn 5 hip, i no thng trc 3 hip th s thng cuc. Gi s hai i ngang ti ngang sc. i A cn thng thm i hip thng cuc cn i B th cn thng thm j hip na. Gi P(i,j) l xc sut i A cn i hip na chin thng, B cn j hip. D nhin i,j u l cc s nguyn khng m. tnh P(i,j) ta thy rng nu i=0, tc l i A thng nn P(0,j) = 1. Tng t nu j=0, tc l i B thng nn P(i,0) = 0. Nu i v j u ln hn khng th t nht cn mt hip na phi u v hai i c kh nng 5 n, 5 thua trong hip ny. Nh vy P(i,j) l trung bnh cng ca P(i-1,j) v P(i,j-1). Trong P(i-1,j) l xc sut i A thng cuc nu n thng hip v P(i,j-1) l xc sut A thng cuc nu n thua hip . Tm li ta c cng thc tnh P(i,j) nh sau: P(i,j) = 1 Nu i = 0 P(i,j) = 0 Nu j = 0 P(i,j) = (P(i-1,j) + P(i,j-1))/2 Nu i > 0 v j > 0 1. Vit mt hm quy tnh P(i,j). Tnh phc tp ca hm . 2. Dng k thut quy hoch ng vit hm tnh P(i,j). Tnh phc tp ca hm . 3. Vit hm P(i,j) bng k thut quy hoach ng nhng ch dng mng mt chiu ( tit kim b nh). Bi 2: Bi ton phn cng lao ng: C n cng nhn c th lm n cng vic. Cng nhn i lm cng vic j trong mt khong thi gian tij. Phi tm mt phng n phn cng nh th no cc cng vic u c hon thnh, cc cng nhn u c vic lm, mi cng nhn ch lm mt cng vic v mi cng vic ch do mt cng nhn thc hin ng thi tng thi gian l nh nht. 1. M t k thut tham n (greedy) cho bi ton phn cng lao ng. 2. Tm phng n theo gii thut hu n cho bi ton phn cng lao ng c cho trong bng sau. Trong mi dng l mt cng nhn, mi ct l mt cng
Nguyn Vn Linh Trang 82

Gii thut

K thut thit k gii thut

vic, (i,j) ghi thi gian tij m cng nhn i cn hon thnh cng vic j. (Cn ch r cng nhn no lm cng vic g v tng thi gian l bao nhiu ) Cng vic Cng nhn 1 2 3 4 5 1 5 5 4 5 3 2 6 2 5 5 3 3 4 4 4 3 5 4 7 5 6 4 2 5 2 1 3 2 5

Bi 3: Bi ton t mu bn th gii Ngi ta mun t mu bn cc nc trn th gii, mi nc u c t mu v hai nc c bin gii chung nhau th khng c c mu ging nhau (cc nc khng chung bin gii c th c t mu ging nhau). Tm mt phng n t mu sao cho s loi mu phi dng t nht. Ngi ta c th m hnh ha bn th gii bng mt th khng c hng, trong mi nh biu din cho mt nc, bin gii ca hai nc c biu din bng cnh ni hai nh. Bi ton t mu bn th gii tr thnh bi ton t mu cc nh ca thi: Mi nh ca th phi c t mu v hai nh c chung mt cnh th khng c t cng mt mu (c nh khng chung cnh c th c t cng mt mu). Tm mt phng n t mu sao cho s loi mu phi dng l t nht. 1. Hy m t k thut tham n (Greedy) gii bi ton t mu cho th. 2. p dng k thut hu n t mu cho cc nh ca th sau (cc mu c th s dung t l: , CAM, VNG, XANH, EN, NU, TM)
G

C D

Bi 4: Dng k thut ct ta alpha-beta nh tr cho nt gc ca cy tr chi sau (cc s trong cc nt l l cc gi tr c gn cho chng)

Nguyn Vn Linh

Trang 83

Gii thut

K thut thit k gii thut

MAX

MIN

MAX MIN

H Q

I T U

5 4

5 3 2 3

3 1

8 6

7 5

5 2

8 6

4 8

Bi 5: Xt mt tr chi c 6 vin bi, hai ngi thay phin nhau nht t 1 n 3 vin. Ngi phi nht ch mt vin bi cui cng th b thua. 1. 2. V ton b cy tr chi S dng k thut ct ta alpha-beta nh tr cho nt gc

3. Ai s thng trong tr chi ny nu hai ngi u i nhng nc tt nht. Hy cho mt nhn xt v trng hp tng qut khi ban u c n vin bi v mi ln c th nht t 1 n m vin. Bi 6: Xt mt tr chi c 7 ci a. Ngi chi 1 chia thnh 2 chng c s a khng bng nhau. Ngi chi 2 chn mt chng trong s cc chng c th chia v tip tc chia thnh hai chng khng bng nhau. Hai ngi lun phin nhau chia a nh vy cho n khi khng th chia c na th thua. 1. 2. 3. V ton b cy tr chi. S dng k thut ct ta alpha-beta nh tr cho nt gc Ai s thng trong tr chi ny nu hai ngi u i nhng nc tt nht. Loi vt A B C D E Trng lng 15 10 2 4 8 Gi tr 30 25 2 6 24

Bi 7: Cho bi ton ci ba l vi trng lng ca ba l W = 30 v 5 loi vt c cho trong bng bn. Tt c cc loi vt u ch c mt ci. 1. Gii bi ton bng k thut Tham n (Greedy). 2. Gii bi ton bng k thut nhnh cn.
Nguyn Vn Linh

Trang 84

Gii thut

CTDL v gii thut lu tr ngoi

CHNG 4: CU TRC D LIU V GII THUT LU TR NGOI


4.1 TNG QUAN 4.1.1 Mc tiu Sau khi hc chng ny, sinh vin cn nm c cc vn sau: Tiu chun nh gi gii thut x l ngoi. Gii thut sp xp trn sp xp ngoi v phng php ci tin tc sp xp trn.

Cch thc t chc lu tr v cc gii thut tm kim, xen, xo thng tin trn cc tp tin tun t, tp tin ch mc, tp tin bng bm v c bit l tp tin Bcy.

4.1.2 Kin thc c bn cn thit


Cu trc d liu danh sch lin kt. Cc cu trc d liu cy v bng bm. Vn tm kim tun t v tm kim nh phn. Cc thao tc trn kiu d liu tp tin.

4.1.3 Ti liu tham kho A.V. Aho, J.E. Hopcroft, J.D. Ullman; Data Structures and Algorithms; AddisonWesley; 1983. (Chapter 10). inh Mnh Tng; Cu trc d liu & Thut ton; Nh xut bn khoa hc v k thut; H ni-2001. (Chng 7). 4.1.4 Ni dung ct li Trong chng ny chng ta s nghin cu hai vn chnh l sp xp d liu c lu trong b nh ngoi v k thut lu tr tp tin. Trong k thut lu tr tp tin chng ta s s dng cc cu trc d liu tun t, bng bm, tp tin ch mc v cu trc B-cy. 4.2 M HNH X L NGOI Trong cc gii thut m chng ta cp t trc ti nay, chng ta gi s rng s lng cc d liu vo l kh nh c th cha ht b nh trong (main memory). Nhng iu g s xy ra nu ta mun x l phiu iu tra dn s ton quc hay thng tin v qun l t ai c nc chng hn? Trong cc bi ton nh vy, s lng d liu vt qu kh nng lu tr ca b nh trong. c th gii quyt cc bi ton chng ta phi dng b nh ngoi lu tr v x l. Cc thit
Nguyn Vn Linh Trang 85

Gii thut

CTDL v gii thut lu tr ngoi

b lu tr ngoi nh bng t, a t u c kh nng lu tr ln nhng c im truy nhp hon ton khc vi b nh trong. Chng ta cn tm cc cu trc d liu v gii thut thch hp cho vic x l d liu lu tr trn b nh ngoi. Kiu d liu tp tin l kiu thch hp nht cho vic biu din d liu c lu trong b nh ngoi. H iu hnh chia b nh ngoi thnh cc khi (block) c kch thc bng nhau, kch thc ny thay i ty thuc vo h iu hnh nhng ni chung l t 512 bytes n 4096 bytes. Trong qu trnh x l, vic chuyn giao d liu gia b nh trong v b nh ngoi c tin hnh thng qua vng nh m (buffer). B m l mt vng dnh ring ca b nh trong m kch thc bng vi kch thc ca mt khi ca b nh ngoi. C th xem mt tp tin bao gm nhiu mu tin c lu trong cc khi . Mi khi lu mt s nguyn vn cc mu tin, khng c mu tin no b chia ct lu trn hai khi khc nhau. Trong thao tc c, nguyn mt khi ca tp tin c chuyn vo trong b m v ln lt c cc mu tin c trong b m cho ti khi b m rng th li chuyn mt khi t b nh ngoi vo b m. ghi thng tin ra b nh ngoi, cc mu tin ln lt c xp vo trong b m cho n khi y b m th nguyn mt khi c chuyn ra b nh ngoi. Khi b m tr nn rng v li c th xp tip cc mu tin vo trong . Ghi B nh trong c
Mi ln c mt mu tin

Ghi B nh m c

B nh ngoi

Mi ln c mt khi

Hnh 4-1: M hnh giao tip gia b nh trong, b nh ngoi v vng nh m

Nh vy n v giao tip gia b nh trong v b m l mu tin cn gia b m v b nh ngoi l khi. Hnh 4-1 m t hat ng ca b nh trong, b m v b nh ngoi trong thao tc c v ghi tp tin 4.3 NH GI CC GII THUT X L NGOI i vi b nh ngoi th thi gian tm mt khi c vo b nh trong l rt ln so vi thi gian thao tc trn d liu trong khi . V d gi s ta c mt khi c th lu 1000 s nguyn c lu trn a quay vi vn tc 1000 vng/ pht th thi gian a u t vo rnh cha khi v quay a a khi n ch u t ht khong 100 mili giy. Vi thi gian ny my c th thc hin 100000 lnh, tc l sp xp cc s nguyn ny theo gii thut QuickSort. V vy khi nh gi cc

Nguyn Vn Linh

Trang 86

Gii thut

CTDL v gii thut lu tr ngoi

gii thut thao tc trn b nh ngoi, chng ta tp trung vo vic xt s ln c khi vo b nh trong v s ln ghi khi ra b nh ngoi ta gi chung l php truy xut khi (block access). V kch thc cc khi l c nh nn ta khng th tm cch tng kch thc mt khi m chng ta phi tm cch gim s ln truy xut khi. 4.4 SP XP NGOI Sp xp d liu c t chc nh mt tp tin hoc tng qut hn, sp xp d liu c lu trn b nh ngoi gi l sp xp ngoi. 4.4.1 Sp xp trn (merge sorting)
4.4.1.1 Khi nim v ng

ng di k l mt tp hp k mu tin oc sp th t theo kho tc l, nu cc mu tin r1,r2,...,rk c kho ln lt l k1,k2,...,kk to thnh mt ng th k1 k2 ... kk. Cho tp tin cha cc mu tin r1,r2,...,rn, ta ni tp tin c t chc thnh ng c di k nu ta chia tp tin thnh cc on k mu tin lin tip v mi on l mt ng, on cui c th khng c k mu tin, trong trng hp ny ta gi on y l ui (tail).
V d 4-1: Tp tin gm 14 mu tin c kha l cc s nguyn c t chc thnh 4

ng di 3 v mt ui c di 2 5 6 9 13 26 27 1 5 8 12 14 17 23 25

4.4.1.2 Gii thut

sp xp tp tin F c n mu tin ta s dng 4 tp tin F1, F2, G1 v G2. Khi u ta phn phi cc mu tin ca tp tin cho F lun phin vo trong hai tp tin F1 F2. Nh vy hai tp tin ny c xem nh c t chc thnh cc ng di 1. Bc 1: c 2 ng, mi ng di 1 t hai tp tin F1, F2 v trn hai ng ny thnh ng di 2 v ghi lun phin vo trong hai tp tin G1, G2. i vai tr ca F1 cho G1, F2 cho G2. Bc 2: c 2 ng, mi ng di 2 t hai tp tin F1, F2 v trn hai ng ny thnh ng di 4 v ghi lun phin vo trong hai tp tin G1, G2. i vai tr ca F1 cho G1, F2 cho G2. Qu trnh trn c tip tc v sau i bc th di ca mt ng l 2I. Nu 2I ( n th gii thut kt thc, lc tp tin G2 s rng v tp tin G1 cha cc mu tin c sp.
4.4.1.3 nh gi gii thut sp xp trn

Ta thy gii thut kt thc sau i bc vi i logn. Mi bc phi c t 2 tp tin v ghi vo 2 tp tin, mi tp tin c trung bnh n/2 mu tin. Gi s mi mt khi lu tr

Nguyn Vn Linh

Trang 87

Gii thut

CTDL v gii thut lu tr ngoi

c b mu tin th mi bc cn c v ghi logn bc vy tng cng chng ta cn

2 * 2 * n 2n = khi m chng ta cn 2*b b

2n logn php truy xut khi. b

V d 4-2: Cho tp tin F c 23 mu tin vi kha l cc s nguyn nh sau:

2 31 13 5 98 96 10 40 54 85 65 9 30 39 90 13 10 8 69 77 8 10 22. bt u ta phn phi cc mu tin ca F lun phin vo hai tp tin F1 v F2 c t chc thnh cc ng c di 1
2 13 98 10 54 65 30 90 10 69 8 22 F1
F2

31

96

40

85

39

13

77

10

Bc 1: Trn cc ng di 1 ca F1 v F2 c cc ng di 2 v ghi lun

phin vo trong hai tp tin G1, G2: G1 G2 2 5 31 13 96 10 98 40 54 9 85 65 30 13 39 90 8 69 10 77 8 22 10


F1 F2

Bc 2: i vai tr ca F1 v G1, F2 v G2 cho nhau. Trn cc ng di 2

trong hai tp tin F1 v F2 c cc ng di 4 ri ghi lun phin vo trong hai tp tin G1 v G2: G1 G2 2 10 5 40 13 96 31 98 9 13 54 30 65 39 85 90 8 8 10 10 69 22 77
F1 F2

Bc 3: i vai tr ca F1 v G1, F2 v G2 cho nhau. Trn cc ng di 4

trong hai tp tin F1 v F2 c cc ng di 8 ri ghi lun phin vo trong hai tp tin G1 v G2: G1 G2 2 9 5 10 13 31 40 96 98
8 8 10 10 22 F2 69 77 F1

13 30 39 54 65 85 90

Bc 4: i vai tr ca F1 v G1, F2 v G2 cho nhau. Trn cc ng di 8

trong hai tp tin F1 v F2 c cc ng di 16 ri ghi lun phin vo trong 2 tp tin G1 v G2. G1 G2 2 8 5 8 9 10 13 13 30 31 39


40 54 65 85 F2 90 96 98 F1

10 10 22 69 77

Nguyn Vn Linh

Trang 88

Gii thut

CTDL v gii thut lu tr ngoi

Bc 5: i vai tr ca F1 v G1, F2 v G2 cho nhau. Trn cc ng di 16

trong hai tp tin F1 v F2 c 1 ng di 23 ri ghi vo trong tp tin G1. G1 2 5 8 8 9 10 10 10 13 13 22 30 31 39 40 54 65 69 77 85 90 96 98 Tp tin G1 cha cc mu tin c sp cn tp tin G2 rng.
4.4.1.4 Chng trnh

procedure Merge(k:integer; f1,f2,g1,g2: File of RecordType); {Th tc ny trn cc ng di k v trong hai tp tin f1 v f2 thnh cc ng di 2k v ghi lun phin vo trong hai tp tin g1 v g2} var OutSwithh : boolean; {Nu OutSwitch = TRUE th tin g1, ngc li ghi vo g2} ghi vo tp

Winner: integer; { ch nh mu tin hin hnh no trong hai tp tin f1 v f2 s c ghi ra tp tin g1 hoc g2} Used: array[1..2] of integer; { Used[ij] ghi s mu tin c c trong ng hin ti ca tp tin fj } Fin : array[1..2] Of boolean; {Fin[j] s c gi tr TRUE nu c ht cc mu tin trong ng hin hnh ca fj hac x dn cui tp tin fj } Current: array[1..2] Of RecordType; { Current[j] lu mu tin hin hnh ca tp tin f[j]} procedure GetRecord(i:integer); {Nu c ht cc mu tin trong ng hin hnh ca tp tin fi hoc n cui tp tin fi th t fin[i] = TRUE nu khng th c mt mu tin ca tp tin fi vo trong current[i]} begin Used[i] := Used[i] + 1; if (Used[i] = k+1 ) or (i = 1) and ( eof(f1)) or (i = 2 and ( eof(f2)) then fin[i] := TRUE else if i=1 then Read(f1, current[1]) else read(f2, current[2]); { Khi to } OutSwitch := TRUE; ReSet(f1); ReSet(f2);

end; begin

Nguyn Vn Linh

Trang 89

Gii thut

CTDL v gii thut lu tr ngoi

ReWrite(g1); ReWrite(g2); while (not eof(f1)) or (not eof(f2)) do begin {Bt u c cc mu tin t trong hai ng hin hnh ca hai tp tin f1,f2 } Used[1] := 0; Used[2] := 0; Fin[1] := FALSE ; Fin[2] := FALSE ; GetRecord(1) ; GetRecord(2); while ( not fin[1] ) or (not fin[2]) do begin {Trn hai ng } { Chn Winner } if Fin[1] then Winner := 2 else if Fin[2] then Winner := 1 else if current[1].key < Current[2].key then Winner := 1 else Winner := 2; if OutSwitch then Write(g1, Current[winner] ) else Write(g2, current[winner] ); GetRecord(Winner); end; OutSwitch := Not OutSwitch; end; end;

4.4.2 Ci tin sp xp trn Ta thy qu trnh sp xp trn ni trn bt u t cc ng di 1 cho nn phi sau logn bc gii thut mi kt thc. Chng ta c th tit kim thi gian bng cch chn mt s k thch hp sao cho k mu tin c th cha trong b nh trong. Mi ln c vo b nh trong k mu tin, dng sp xp trong (chng hn dng QuickSort) sp xp k mu tin ny v ghi lun phin vo hai tp tin F1 v F2. Nh vy chng ta bt u sp xp trn vi cc tp tin c t chc thnh cc ng di k. Sau i bc th di mi ng l k.2i. Gii thut s kt thc khi k2i n hay i log k . Do s php truy xut khi s l l ta tng c tc sp xp trn. V d 4-3: Ly tp tin F c 23 mu tin vi kha l cc s nguyn nh trong v d 42: 2 31 13 5 98 96 10 40 54 85 65 9 30 39 90 13 10 8 69 77 8 10 22. Ta gi s b nh trong c th cha c 3 mu tin, ta c ln lt 3 mu tin ca F vo b nh trong , dng mt sp xp trong sp xp chng v ghi phin vo 2 tp tin F1 v F2. F1 2 13 31 10 40 54 30 39 90 8 69 77
n 2n n 2n n 2n < logn tc log . D thy log b k b k b

Nguyn Vn Linh

Trang 90

Gii thut

CTDL v gii thut lu tr ngoi

5 96 98

9 65 85

8 10 13

10 22

F2

Bc 1: Trn cc ng di 3 ca F1 v F2 c cc ng di 6 v ghi lun phin vo trong hai tp tin G1, G2: G1 G2 2 5 13 31 96 98 9 10 40 54 65 85 8 10 13 30 39 90 8 10 22 69 77


F1 F2

Bc 2: i vai tr ca F1 v G1, F2 v G2 cho nhau. Trn cc ng di 6 trong 2 tp tin F1 v F2 c cc ng di 12 ri ghi lun phin vo trong 2 tp tin G1 v G2: G1 G2 2 5 9 10 13 31 40 54 65 85 96 98 8 8 10 10 13 22 30 39 69 77 90
F1 F2

Bc 3: i vai tr ca F1 v G1, F2 v G2 cho nhau. Trn cc ng di 12 trong 2 tp tin F1 v F2 c 1 ng ghi vo trong tp tin G1, cn G2 rng G1 2 5 8 8 9 10 10 10 13 13 22 30 31 39 40 54 65 77 85 90 96 98

Tp tin G1 cha cc mu tin c sp cn tp tin G2 rng. 4.4.3 Trn nhiu ng (multiway merge)
4.4.3.1 Gii thut

sp xp tp tin F c n mu tin ta s dng m tp tin (m l mt s chn) F[1], F[2],... , F[m]. Trong trng hp m=4 ta c gii thut sp xp trn bnh thng. Gi h = m/2, ta c ni dung ca phng php nh sau (ta vn gi s b nh trong c th cha k mu tin). Khi u: Mi ln c t tp tin F vo b nh trong k mu tin, s dng mt sp xp trong sp xp k mu tin ny thnh mt ng ri ghi lun phin vo cc tp tin F[1], F[2], ... , F[h]. Bc 1: Trn cc ng di k ca h tp tin F[1], F[2], ..., F[h] thnh mt ng di k.h v ghi lun phin vo trong h tp tin F[h+1], F[h+2], ... , F[m]. i vai tr ca F[i] v F[h+i]] cho nhau (vi 1 i h). Bc 2: Trn cc ng di kh ca h tp tin F[1], F[2], ..., F[h] thnh mt ng di k.h2 v ghi lun phin vo trong h tp tin F[h+1], F[h+2], ... , F[m]. i vai tr ca F[i] v F[h+i]] cho nhau (vi 1 i h). Sau i bc th di mi ng l k.hi v gii thut kt thc khi k.hi n v khi tp tin c sp chnh l mt ng ghi trong F[h+1].

Nguyn Vn Linh

Trang 91

Gii thut

CTDL v gii thut lu tr ngoi

4.4.3.2 nh gi gii thut sp xp trn nhiu ng

Theo trn th gii thut kt thc sau i bc, vi khi n hay i logh . Mi bc ta phi c t h tp tin v ghi vo trong h tp tin, trung bnh mi tp tin c
n mu tin. h

n k

Ta vn gi s mi khi lu c b mu tin th mi bc phi truy xut


n n 2n 2 * h * n 2n k khi. Do chng ta cn logh k bc nn tng cng ta ch cn = log h h*b b b n n 2n 2n k log v th tc mergeSort ni php truy xut khi.Ta thy r rng log h < b b k

trn l mt trng hp c bit khi h = 2. V d 4-4: Ly tp tin F c 23 mu tin vi kha l cc s nguyn nh trong v d 42 2 31 13 5 98 96 10 40 54 85 65 9 30 39 90 13 10 8 69 77 8 10 22. S dng 6 tp tin sp xp tp tin F. Ta gi s b nh trong c th cha c 3 mu tin, ta c ln lt 3 mu tin ca F vo b nh trong , dng mt sp xp trong sp xp chng v ghi phin vo 3 tp tin F[1], F[2] v F[3] nh sau: F[1] F[2] F[3] 2 5 13 31 9 65 85 8 69 77

96 98 30 39 90 10 22 8 10 13

10 40 54

Bc 1: Trn cc ng di 3 trong cc tp tin F[1], F[2], F[3] thnh cc ng di 9 v ghi vo trong cc tp tin F[4], F[5] v F[6]. F[4] F[5] F[6] 2 8 8 5 9 10 13 31 40 54 96 98 10 13 30 39 65 85 90 F[1] F[2] F[3]

10 22 69 77

Bc 2: i vai tr ca F[1] cho F[4], F[2] cho F[5] v F[3] cho F[6]. Trn cc ng di 9 trong cc tp tin F[1], F[2], F[3] thnh 1 ng di 23 v ghi vo trong tp tin F[4]. F[4] 2 5 8 8 9 10 10 10 13 13 22 30 31 39 40 54 65 69 77 85 90 96 98 Tp tin F[4] cha cc mu tin c sp cn F[5] v F[6] rng.

Nguyn Vn Linh

Trang 92

Gii thut

CTDL v gii thut lu tr ngoi

4.5 LU TR THNG TIN TRONG TP TIN Trong phn ny ta s nghin cu cc cu trc d liu v gii thut cho lu tr (storing) v ly thng tin (retrieving) trong cc tp tin c lu tr ngoi. Chng ta s coi mt tp tin nh l mt chui tun t cc mu tin, mi mu tin bao gm nhiu trng (field). Mt trng c th c di c nh hoc di thay i. y ta s xt cc mu tin c di c nh v kho st cc thao tc trn tp tin l: Insert: Thm mt mu tin vo trong mt tp tin, Delete: Xo mt mu tin t trong tp tin, Modify: Sa i thng tin trong cc mu tin ca tp tin, v Retrieve: Tm li thng tin c lu trong tp tin. Sau y ta s nghin cu mt s cu trc d liu dng lu tr tp tin. Vi mi cu trc chng ta s trnh by t chc, cch thc tin hnh cc thao tc tm, thm, xo mu tin v c nh gi v cch t chc . S nh gi y ch yu l nh gi xem tm mt mu tin th phi c bao nhiu khi v cc thao tc khc u phi s dng thao tc tm. 4.5.1 Tp tin tun t
4.5.1.1 T chc

Tp tin tun t l mt danh sch lin kt ca cc khi, cc mu tin c lu tr trong cc khi theo mt th t bt k.
4.5.1.2 Tm mu tin

Vic tm kim mt mu tin c gi tr xc nh c thc hin bng cch c tng khi, vi mi khi ta tm mu tin cn tm trong khi, nu khng tm thy ta li c tip mt khi khc. Qu trnh c tip tc cho n khi tm thy mu tin hoc duyt qua ton b cc khi ca tp tin v trong trng hp th mu tin khng tn ti trong tp tin.
4.5.1.3 Thm mu tin mi

Vic thm mt mu tin c th thc hin n gin bng cch a mu tin ny vo khi cui cng ca tp tin nu nh khi cn ch trng. Ngc li nu khi cui cng ht ch th xin cp thm mt khi mi, thm mu tin vo khi mi v ni khi mi vo cui danh sch.
4.5.1.4 Sa i mu tin

sa i mt mu tin c gi tr cho trc, ta tm mu tin cn sa i ri thc hin cc sa i cn thit sau ghi li mu tin vo v tr c trong tp tin.
4.5.1.5 Xo mu tin

xo mt mu tin, trc ht ta cng cn tm mu tin , nu tm thy ta c th thc hin mt trong cc cch xo sau y:

Nguyn Vn Linh

Trang 93

Gii thut

CTDL v gii thut lu tr ngoi

Mt l xo mu tin cn xo trong khi lu tr n, nu sau khi xo, khi tr nn rng th xo khi khi danh sch (gii phng b nh). Hai l nh du xo mu tin bng mt cch no . Ngha l ch xo mu tin mt cch logic, vng khng gian nh vn cn dnh cho mu tin. Vic nh du c th c thc hin bng mt trong hai cch:

Thay th mu tin bng mt gi tr no m gi tr ny khng bao gi l gi tr tht ca bt k mt mu tin no. Mi mt mu tin c mt bt xa, bnh thng bit xa ca mu tin c gi tr 0, mun xa mu tin ta t cho bit xa gi tr 1. Vi phng php ny th mt mu tin sau khi b nh du xo cng c th phc hi c bng cch t bit xo ca mu tin gi tr 0.

4.5.1.6 nh gi

y l mt phng php t chc tp tin n gin nht nhng km hiu qu nht. Ta thy tp tin l mt danh sch lin kt ca cc khi nn cc thao tc trn tp tin u i hi phi truy xut hu nh tt c cc khi, t khi u tin n khi cui cng. Gi s tp tin c n mu tin v mi khi lu tr c k mu tin th ton b tp tin c lu tr trong k khi, do mi ln tm (hoc thm hoc sa hoc xo) mt mu tin th phi truy xut k khi. 4.5.2 Tng tc cho cc thao tc tp tin Nhc im ca cch t chc tp tin tun t trn l cc thao tc trn tp tin rt chm. ci thin tc thao tc trn tp tin, chng ta phi tm cch gim s ln truy xut khi. Mun vy phi tm cc cu trc sao cho khi tm mt mu tin ch cn php truy xut mt s nh cc khi ca tp tin. to ra cc t chc tp tin nh vy chng ta phi gi s rng mi mu tin c mt kho (key), l mt tp hp cc trng m cn c vo ta c th phn bit cc mu tin vi nhau. Hai mu tin khc nhau th kho ca chng phi khc nhau. Chng hn m sinh vin trong mu tin v sinh vin, bin s xe trong qun l cc phng tin vn ti ng b. Sau y ta s xt mt s cu trc nh th. 4.5.3 Tp tin bm (hash files)
4.5.3.1 T chc

Ta s s dng bng bm m lu tr tp tin. Bng bm l mt bng c m phn t, mi phn t c nh s t 0 n m-1 (n gin nht l mng mt chiu B gm m phn t B[0], B[1], ..., B[m-1]). Mi phn t l mt con tr, tr ti phn t u tin ca danh sch lin kt cc khi.

Nguyn Vn Linh

Trang 94

Gii thut

CTDL v gii thut lu tr ngoi

phn phi cc mu tin c kha x vo trong cc danh sch lin kt, ta dng hm bm (hash function). Hm bm h(x) nh x mi gi tr kho x vi mt s nguyn t 0 n m-1. Nu h(x) = i th mu tin r c kha x s c a vo mt khi no trong danh sch lin kt c tr bi B[i]. C nhiu phng php xc nh hm bm. Cch n gin nht l nguyn ha gi tr kha x (nu x khng phl l mt s nguyn) sau ta cho h(x) = x MOD m. V d 4-5: Mt tp tin c 24 mu tin vi gi tr kha l cc s nguyn: 3, 5, 12, ,65, 34, 20, 21, 17, 56, 1, 16, 2, 78, ,94, 38 ,15 ,23, 14, 10, 29, 19, 6, 45, 36 Gi s chng ta c th t chc tp tin ny vo trong bng bm gm 7 phn t v gi s mi khi c th cha c ti a 3 mu tin. Vi mi mu tin r c kha l x ta xc nh h(x) = x MOD 7 v a mu tin r vo trong mt khi ca danh sch lin kt c tr bi B[h(x)]. 0 1 2 3 4 5 6 Mng B 5 34 12 20 19 6 21 1 65 3 56 78 16 17 14 15 2 94 29 23 38 10 45 36

Cc l c t chc bi cc danh sch lin kt.


Hnh 4-2: Tp tin c t chc bi bng bm

4.5.3.2

Tm mu tin

tm mt mu tin r c kha l x, chng ta xc nh h(x) chng hn h(x) = i, khi ta ch cn tm r trong danh sch lin kt c tr bi B[i]. Chng hn tm mu tin r c kha l 36, ta tnh h(36) = 36 MOD 7 = 1. Nh vy nu mu tin r tn ti trong tp tin th n phi thuc mt khi no c tr bi B[1].
4.5.3.3 Thm mu tin

thm mu tin r c kho x, trc ht ta phi tm xem c mu tin no trong tp tin c kha x cha. Nu c ta cho mt thng bo mu tin tn ti v theo gi thit cc mu tin khng c kho trng nhau. Ngc li ta s tm mt khi (trong danh sch cc khi ca l c tr bi B[h(x)]) cn ch trng v thm r vo khi ny. Nu khng cn khi no ch cho mu tin mi ta yu cu h thng cp pht mt khi mi v t mu tin r vo khi ny ri ni khi mi ny vo cui danh sch lin kt ca l.

Nguyn Vn Linh

Trang 95

Gii thut

CTDL v gii thut lu tr ngoi

4.5.3.4 Xo mu tin

xo mu tin r c kho x, trc ht ta phi tm mu tin ny. Nu khng tm thy th thng bo Mu tin khng tn ti. Nu tm thy th t bt xo cho n. Ta cng c th xo hn mu tin r v nu vic xo ny lm khi tr nn rng th ta gii phng khi ny (xo khi khi danh sch lin kt cc khi).
4.5.3.5 nh gi

Gi s tp tin c n mu tin v mi khi lu tr c k mu tin th tp tin cn k


n khi. Trung bnh mi danh sch lin kt (mi l) ca bng bm c m.k khi (do

bng bm c m l), m chng ta ch tm trong mt danh sch lin kt nn ta ch phi truy xut m.k khi. S ny nh hn m ln so vi cch t chc tp tin tun t (trong tp tin tun t ta cn truy xut tt c cc khi, tc l k khi). Chng hn vi 24 mu tin nh trong v d trn, vi cch t chc tp tin tun t ta cn ng 8 khi lu tr (v mi khi cha ti a 3 mu tin). Nh vy tm mt mu tin, chng hn mu tin c kha 36 chng ta phi c ng 8 khi (do mu tin c kha 36 nm trong khi cui cng). Nhng vi cch t chc tp tin bng bm chng ta ch cn kha 36 nm trong khi th 2 ca l c tr bi B[1]). 4.5.4 Tp tin ch mc (index file)
4.5.4.1 T chc

8 trung bnh 7 ln c khi . Trong thc t ta ch cn 2 ln c khi (v mu tin c

Mt cch khc thng gp l tp tin c sp xp theo kho, ri chng ta tin hnh tm kim nh l tm mt t trong t in, tc l tm kim theo t u tin trn mi trang. thc hin c iu ta s dng hai tp tin: Tp tin chnh v tp tin ch mc tha (sparse index). Tp tin chnh bao gm cc khi lu cc mu tin sp th t theo gi tr kha. Tp tin ch mc tha bao gm cc khi cha cc cp (x,p) trong x l kho ca mu tin u tin trong mt khi ca tp tin chnh, cn p l con tr, tr n khi . V d 4-6: Ta c tp tin c t chc thnh tp tin ch mc vi mi khi trong tp tin chnh lu tr c ti a 3 mu tin, mi khi trong tp tin ch mc lu tr c ti a 4 cp kho con tr. Hnh sau minh ho tp tin ch mc ny.

Nguyn Vn Linh

Trang 96

Gii thut

CTDL v gii thut lu tr ngoi

TT ch mc (3, ) (10, ) (23, ) (28, )

(42, ) (48, )

TT chnh

3 5 8 B1
B

10 11 16 B2

23 25 27 B3

28 31 38 B4

42 46 B5

48 52 60 B6
B

Hnh 4-3: Tp tin ch mc


4.5.4.2 Tm kim

tm mu tin r c kho x, ta phi tm cp (z,p) vi z l gi tr ln nht v z x. Mu tin r c kho x nu tn ti th s nm trong khi c tr bi p. Chng hn tm mu tin r c kho 46 trong tp tin ca v d 4-6, ta tm trong tp tin ch mc c cp (42, p), trong 42 l gi tr kho ln nht trong tp tin ch mc m 42 46 v p l con tr, tr ti khi B5 ca tp tin chnh. Trong khi B5, ta tm thy mu tin c kho 46. Vic tm mt mu tin trong mt khi ca tp tin chnh c th tin hnh bng tm kim tun t hoc bng tm kim nh phn bi l cc mu tin trong mt khi c sp th t.
4.5.4.3 Thm mu tin

Gi s tp tin chnh c lu trong cc khi B1, B2, ..., Bm. xen mt mu tin r vi kha x vo trong tp tin, ta phi dng th tc tm kim xc nh mt khi Bi no . Nu tm thy th thng bo mu tin tn ti, ngc li, Bi l ni c th cha mu tin r. Nu Bi cn ch trng th xen r vo ng v tr ca n trong Bi. Ta phi chnh li tp tin ch mc nu mu tin mi tr thnh mu tin u tin trong khi Bi. Nu Bi khng cn ch trng xen th ta phi xt khi Bi+1 c th chuyn mu tin cui cng trong khi Bi thnh mu tin u tin ca khi Bi+1 v xen mu tin r vo ng v tr ca n trong khi Bi . iu chnh li tp tin ch mc cho ph hp vi trng thi mi ca Bi+1. Qu trnh ny c th dn n vic ta phi xt khi Bm, nu Bm ht ch th yu cu h thng cp thm mt khi mi Bm+1, chuyn mu tin cui cng ca Bm sang Bm+1, mu tin cui cng ca Bm-1 sang Bm Xen mu tin r vo khi Bi v cp nht li tp tin ch mc. Vic cp pht thm khi mi Bm+1 i hi phi xen thm mt cp kho-con tr vo khi cui cng ca tp tin ch mc, nu khi ny ht ch th xin cp thm mt khi mi xen cp kha-con tr ny. V d 4-7: Chng hn ta cn xen mu tin r vi kha x = 24 vo trong tp tin c biu din trong hnh 4-3. Th tc tm x trong tp tin ch mc xc nh c khi cn xen r l khi B3. V khi B3 c 3 mu tin nn phi xt khi B4. Khi B4 cng c 3 mu tin nn ta li xt khi B5. V B5 cn ch trng nn ta chuyn mu tin c kho 38 t B4 sang B5 v chuyn mu tin c kha 27 t B3 sang B4 v xen r vo khi B3. V mu tin u tin ca khi B4 by gi c kha 27 nn ta phi sa li gi tr ny trong cp ca tp tin ch mc tng ng vi khi B4. Ta cng phi lm tng t i vi khi B5. Cu trc ca tp tin sau khi thm mu tin r c kha 24 nh sau:

Nguyn Vn Linh

Trang 97

Gii thut

CTDL v gii thut lu tr ngoi

TT ch mc (3, ) (10, ) (23, ) (27, )

(38, ) (48, )

TT chnh

3 5 8 B1
B

10 11 16 B2

23 24 25 B3

27 28 31 B4

38 42 46 B5

48 52 60 B6
B

Hnh 4-4: Xen mu tin vo tp tin ch mc


4.5.4.4 Xo mu tin

xo mu tin r c kho x, trc ht ta cn tm r, nu khng tm thy th thng bo Mu tin khng tn ti, ngc li ta xo mu tin r trong khi cha n, nu mu tin b xo l mu tin u tin ca khi th phi cp nht li gi tr kho trong tp tin ch mc. Trong trng hp khi tr nn rng sau khi xo mu tin th gii phng khi v xo cp (kho, con tr) ca khi trong tp tin ch mc. Vic xo trong tp tin ch mc cng c th dn n vic gii phng khi trong tp tin ny.
4.5.4.5 nh gi

Ta thy vic tm mt mu tin ch i hi phi c ch mt s nh cc khi (mt khi trong tp tin chnh v mt s khi trong tp tin ch mc). Tuy nhin trong vic xen thm mu tin, nh trn ni, c th phi c v ghi tt c cc khi trong tp tin chnh. y chnh l nhc im ca tp tin ch mc. 4.5.5 Tp tin B-cy
4.5.5.1 Cy tm kim m-phn

Cy tm kim m-phn (m-ary tree) l s tng qut ho ca cy tm kim nh phn trong mi nt c th c m nt con. Gi s n1 v n2 l hai con ca mt nt no , n1 bn tri n2 th tt c cc con ca n1 c gi tr nh hn gi tr ca cc nt con ca n2. Chng ta c th s dng cy m-phn lu tr cc mu tin trong tp tin trn b nh ngoi. Mi mt nt biu din cho mt khi vt l trong b nh ngoi. Trong cc nt l lu tr cc mu tin ca tp tin. Cc nt trong lu tr m con tr, tr ti m nt con. Nu ta dng cy tm kim nh phn n nt lu tr mt tp tin th cn trung bnh logn php truy xut khi tm kim mt mu tin. Nu ta dng cy tm kim mphn lu tr mt tp tin th ch cn logmn php truy xut khi tm kim mt mu tin. Sau y chng ta s nghin cu mt trng hp c bit ca cy tm kim m-phn l B-cy.
4.5.5.2 B-cy (B-tree)

B-cy bc m l cy tm kim m-phn cn bng c cc tnh cht sau: Nt gc hoc l l hoc c t nht hai nt con, Mi nt, tr nt gc v nt l, c t m/2 n m nt con v Cc ng i t gc ti l c cng di.
Nguyn Vn Linh Trang 98

Gii thut

CTDL v gii thut lu tr ngoi

T chc: Ta c th s dng B-cy bc m lu tr tp tin nh sau: Mi nt trn cy l mt khi trn a, cc mu tin ca tp tin c lu tr trong cc nt l trn B-cy v lu theo th t ca kho. Gi s mi nt l lu tr c nhiu nht b mu tin. Mi nt khng phi l nt l c dng (p0,k1,p1,k2,p2,...,kn,pn), vi pi (0 i n) l con tr, tr ti nt con th i ca nt v ki l cc gi tr kha. Cc kho trong mt nt c sp th t, tc l k1 < k2 < ... < kn. Tt c cc kho trong cy con c tr bi p0 u nh hn k1. Tt c cc kho nm trong cy con c tr bi pi (0 < i < n) u ln hn hoc bng ki v nh hn ki+1. Tt c cc kho nm trong cy con c tr bi pn u ln hn hoc bng kn. V d 4-8: Cho tp tin bao gm 20 mu tin vi gi tr kha l cc s nguyn c t chc thnh B-cy bc 5 vi cc nt l cha c nhiu nht 3 mu tin. GC 18
P1

10

12

P2

22

28

34

38

4 6 8 L1

10 L2

12 14 16 18 20 L3 L4

Hnh 4-5: Tp tin B-cy bc 5

22 24 26 L5

28 30 32 L6

34 36 L7

38 40 42 L8

4.5.5.3 Tm kim

tm kim mt mu tin r c kho l x chng ta s ln t nt gc n nt l cha r (nu r tn ti trong tp tin). Ti mi bc ta a nt trong (p0, k1, p1, ..., kn, pn) vo b nh trong v xc nh mi quan h gia x vi cc gi tr kha ki. Nu ki x < ki+1 (0 < i < n) chng ta s xt tip nt c tr bi pi, Nu x < k1 ta s xt tip nt c tr bi p0 v Nu x kn ta s xt tip nt c tr bi pn.
Qu trnh trn s dn n vic xt mt nt l. Trong nt l ny ta s tm mu tin r vi kha x bng tm kim tun t hoc tm kim nh phn.
4.5.5.4 Thm mu tin

thm mt mu tin r c kho l x vo trong B-cy, trc ht ta p dng th tc tm kim ni trn tm r. Vic tm kim ny s dn n nt l L. Nu tm thy th thng bo Mu tin tn ti, ngc li th L l nt l m ta c th xen r vo trong . Nu khi L ny cn ch cho r th ta thm r vo sao cho ng th t ca n trong khi L v gii thut kt thc. Nu L khng cn ch cho r th ta yu cu h thng cp pht mt khi mi L'. Di b/2 (b l s mu tin nhiu nht c th lu
Nguyn Vn Linh Trang 99

Gii thut

CTDL v gii thut lu tr ngoi

trong mt khi) mu tin nm phn na cui khi L sang L' ri xen r vo L hoc L' sao cho vic xen m bo th t cc kho trong khi. Gi s nt P l cha ca L (P phi c bit v th tc tm i t gc n L phi thng qua P). By gi ta p dng th tc xen quy xen vo P mt kha k v con tr p tng ng ca nt l L (k l kho ca mu tin u tin trong L'). Trong trng hp trc khi xen k' v p, P c m con th ta phi cp thm mt khi mi P v chuyn mt s con ca P sang P v xen con mi vo P hoc P sao cho c P v P u c t nht m/2 con. Vic chia ct P ny i hi phi xen mt kha v mt con tr vo nt cha ca P... Qu trnh ny c th s dn ti nt gc v cng c th phi chia ct nt gc, trong trng hp ny phi to ra mt nt gc mi m hai con ca n l hai na ca nt gc c. Khi chiu cao ca B-cy s tng ln 1. V d 4-9: Thm mu tin r c kho 19 vo tp tin c biu din bi B-cy trong v d 4-8 (hnh 4-5) Qu trnh tm kim s xut pht t GC i qua P2 v dn ti nt l L4 Trong nt l L4 cn ch xen r vo ng v tr v gii thut kt thc. Kt qu vic xen ta c B-cy trong hnh 4-6: GC 18
P1

10

12

P2

22

28

34

38

4 6 8 L1

10 L2

12 14 16 L3

18 19 20 22 24 26 L4 L5

28 30 32 L6

34 36 L7

38 40 42 L8

Hnh 4-6: Xen thm mu tin r c kho 19 vo trong B-cy hnh 4-5

V d 4-10: Thm mu tin r c kho 23 vo trong tp tin biu din bi B-cy trong v d 4-8 (hnh 4-5) Qu trnh tm kim i t nt GC, qua P2 v ti nt l L5. V L5 3 mu tin nn phi to ra mt nt l mi L5 v chuyn 2 mu tin c kha 24, 26 sang L5 sau xen r vo L5. Gi tr kha ca mu tin u tin trong L5 l 24, ta phi xen 24 v con tr ca L5 vo P2, nhng P2 c 5 con, vy cn to ra mt nt mi P2, chuyn cc cp kha, con tr tng ng vi 34 v 38 sang P2 v xen cp con tr, kha 24 vo P2. Do c mt nt mi P2 nn phi xen vo cha ca P2 ( y l nt GC) mt cp kha, con tr tr ti P2. Con tr p0 ca nt P2 tr ti nt l L6,
Nguyn Vn Linh Trang 100

Gii thut

CTDL v gii thut lu tr ngoi

gi tr kha u tin ca L6 l 28. Gi tr ny phi c xen vo nt GC cng vi con tr ca P2. GC 18 P1 28 P2 24 P2 38

10

12

22

34

4 6 8 L1

10 L2

12 14 16 L3

18 20 L4

22 23 L5

24 26 L5

28 30 32 L6

34 36 L7

38 40 42 L8

Hnh 4-7: Xen thm mu tin r c kho 23 vo trong B-cy hnh 4-5
4.5.5.5 Xa mt mu tin

xa mu tin r c kha x, trc ht ta tm mu tin r. Nu khng tm thy th thng bo Mu tin khng tn ti , ngc li ta s xc inh c mu tin r nm trong nt l L v xa r khi L. Nu r l mu tin u tin ca L, th ta phi quay lui ln nt P l cha ca L t li gi tr kha ca L trong P, gi tr mi ny bng gi tr kha ca mu tin mi u tin ca L. Trong trng hp L l con u tin ca P, th kha ca L khng nm trong P m nm trong t tin ca P, chng ta phi quay lui ln m sa i. Nu sau khi xa mu tin r m L tr nn rng th gii phng L v quay lui ln nt P l cha ca L xo cp kho-con tr ca L trong P. Nu s con ca P by gi (sau khi xo khoa-con tr ca L) nh hn m/2 th kim tra nt P ngay bn tri hoc bn phi v cng mc vi P. Nu P c t nht m/2+1 con, chng ta chuyn mt con ca P sang P. Lc ny c P v P c t nht m/2. Sau ta phi cp nht li gi tr kha ca P hoc P trong cha ca chng, v nu cn chng ta phi sa c trong t tin ca chng. Nu P c ng m/2 con, ta ni P v P thnh mt nt c ng m con. Sau ta phi xa kha v con tr ca P trong nt cha ca P. Vic xa ny c th phi quay lui ln t tin ca P. Kt qu ca qu trnh xa quy ny c th dn ti vic ni hai con ca nt gc, to nn mt gc mi v gii phng nt gc c, cao ca cy khi s gim i 1. V d 4-11: Xa mu tin r c kha 38 trong tp tin biu din bi B-cy kt qu ca v d 4-10 (hnh 4-7). Qu trnh tm kim, xut pht t nt GC, i qua P2 v n nt l L8, Xa mu tin r khi L8. Mu tin u tin ca L8 by gi c kha 40,

Nguyn Vn Linh

Trang 101

Gii thut

CTDL v gii thut lu tr ngoi

Sa li gi tr kha ca L8 trong P2 (thay 38 bi 40) ta c kt qu l B-cy sau: GC 18 P1 28 P2 24 P2 40

10

12

22

34

4 6 8 L1

10 L2

12 14 16 L3

18 20 L4

22 23 L5

24 26 L5

28 30 32 L6

34 36 L7

40 42 L8

Hnh 4-8: Xo mu tin r c kho 38 vo trong B-cy hnh 4-7

V d 4-12 : Xo mu tin r c kho 10 trong tp tin biu din bi B-cy trong v d 4-8 (hnh 4-5). Qu trnh tm kim, xut pht t nt GC, i qua P1 v n nt l L2. Xa mu tin r khi L2. L2 by gi tr nn rng, gii phng L2. Xa gi tr kha 10 v con tr ca L2 trong P1, P1 by gi ch c 2 con (Thiu con do 2 < 5/2). Xt nt P2, bn phi v cng cp vi P1, P2 c 5 con nn ta chuyn mt con t P2 sang P1. Cp nht li kho ca P2 trong nt GC, ta c B-cy kt qu nh sau: GC 22 P1 12 18

P2 28 34 38

4 6 8 L1

12 14 16 L3

18 20 L4

22 24 26 L5

28 30 32 L6

34 36 L7

38 40 42 L8

Hnh 4-9: Xo mu tin c kho 10 trong B-cy hnh 4-5

V d 4-13: Xa mu tin r c kha 10 trong tp tin biu din bi B-cy kt qu ca v d 4-10 (hnh 4-7).

Nguyn Vn Linh

Trang 102

Gii thut

CTDL v gii thut lu tr ngoi

Qu trnh tm kim, xut pht t nt GC, i qua P1 v ln n nt l L2. Xa mu tin r khi L2. L2 by gi tr nn rng, gii phng L2. Xa gi tr kha 10 v con tr ca L2 trong P1, P1 by gi ch c 2 con (Thiu con do 2 < 5/2). Xt nt P2, bn phi v cng cp vi P1, P2 c ng 5/2 = 3 con nn ta ni P1 v P2 P1 c ng 5 con, gii phng P2. Xa kha v con tr ca P2 trong nt GC, ta c B-cy kt qu nh sau: GC 28 P1 22 24 P2 38

12

18

34

4 6 8 L1

12 14 16 L3

18 20 L4

22 23 L5

24 26 L5

28 30 32 L6

34 36 L7

38 40 42 L8

Hnh 4-10: Xo mu tin r c kho 10 trong B-cy hnh 4-7

4.6 TNG KT CHNG 4 nh gi cc gii thut x l ngoi, cn phi xc nh s php truy xut khi (c v ghi khi) m gii thut thc hin. Theo , mt gii thut c xem l tt nu s lng php truy xut khi nh v ci tin gii thut, ta cn tm cch gim s php truy xut khi. Cc gii thut sp xp trn minh ho kh r rng cho vic ci tin gii thut x l ngoi. i vi vic t chc lu tr thng tin trong tp tin, chng ta cn ch n cc loi tp tin bng bm v tp tin B-cy, y l hai loi tp tin rt hiu qu.

Nguyn Vn Linh

Trang 103

Gii thut

CTDL v gii thut lu tr ngoi

BI TP CHNG 4 Bi 1: Cho tp tin bao gm cc mu tin vi gi tr kha l cc s nguyn c t chc thnh B-cy bc 5 vi cc nt l cha c nhiu nht 3 mu tin nh sau.
GC
14

P1
8 12 19 27

P2
35 40

5 7

8 9 10

12

14 16 17

19 22

27 28

35 36 38

40 42

L1

L2

L3

L4

L5

L6

L7

L8

a) Xen mu tin R c gi tr kha l 37 vo tp tin c biu din bi B-cy ni trn. b) Xa mu tin R c gi tr kha l 12 ca tp tin c biu din bi B-cy ni trn. c) Xa mu tin R c gi tr kha l 12 ca tp tin c biu din bi B-cy l kt qu ca cu a). Bi 2: Gi s ta dng B-cy bc 3 vi cc nt l cha c nhiu nht 2 mu tin t chc tp tin. Khi u tp tin rng, hy m t qu trnh hnh thnh tp tin B-cy (bng hnh v) khi thc hin tun t cc thao tc sau: 1. Xen mu tin R c kha 8 2. Xen mu tin R c kha 2 3. Xen mu tin R c kha 10 4. Xen mu tin R c kha 1 5. Xen mu tin R c kha 12 6. Xen mu tin R c kha 3 7. Xen mu tin R c kha 5 8. Xa mu tin R c kha 8 9. Xa mu tin R c kha 1

Nguyn Vn Linh

Trang 104

You might also like