Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
-
Upload
smith-nguyen-studio -
Category
Documents
-
view
218 -
download
0
Transcript of Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
1/109
Th.s. NGUYN VN LINH
GII THUTc bin son trong khun kh dn ASVIET002CNTT
Tng cng hiu quo to v nng lc to to ca sinh vinkhoa Cng ngh Thng tin - i hc Cn th
I HC CN TH- 12/2003
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
2/109
LI NI U
N. Wirth, mt nh khoa hc my tnh ni ting, tc gi ca ngnng lp trnh Pascal, t tn cho mt cun sch ca ng l
Cu trc dliu + Gii thut = Chng trnh.
iu ni ln tm quan trng ca gii thut trong lp trnh niring v trong khoa hc my tnh ni chung. V l gii thut, vi tcch l mt mn hc, cn phi c sinh vin chuyn ngnh tin hcnghin cu mt cch c h thng.
Mn hc Gii thut c b tr sau mn Cu trc d liutrong chng trnh o to k s tin hc nhm gii thiu cho sinh vinnhng kin thc c bn nht, nhng k thut ch yu nht ca vicPHN 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 tcc chng trnh. Vic nm vng cc k thut s rt b ch cho sinhvin khi phi gii quyt mt vn thc t.
Gio trnh ny c hnh thnh trn c s tham kho cun schData Structure and Algorithms ca A.V Aho, nhng kinh nghimging dy ca bn thn v cc bn ng nghip.
Mc d c nhiu c gng trong qu trnh bin son nhng chcchn cn nhiu thiu st, rt mong nhn c sng gp ca qu bnc.
Cn th, ngy 8 thng 12 nm 2003
Nguyn Vn Linh
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
3/109
Gii thut Mc lc
MC LC................................................. iPHN TNG QUAN
.......................... 1Chng 1: KTHUT PHN TCH GII THUT1.1 ................................................................................................................... 1TNG QUAN
1.2 ....................................................... 2SCN THIT PHI PHN TCH GII THUT1.3 .............................................................. 2THI GIAN THC HIN CA GII THUT1.4 .......................................... 3T SUT TNG V PHC TP CA GII THUT1.5 .......................................................................................... 4CCH TNH PHC TP1.6 ............................................................. 7PHN TCH CC CHNG TRNH QUY1.7 ............................................................................................... 16TNG KT CHNG 1
................................................................................................................. 16BI TP CHNG 1............................................. 18Chng 2: SP XP
2.1 ................................................................................................................. 18TNG QUAN2.2 ..................................................................................................... 19BI TON SP XP2.3 .............................................................. 20CC PHNG PHP SP XP N GIN2.4 ................................................................................................................. 25QUICKSORT2.5 .................................................................................................................... 31HEAPSORT2.6 ....................................................................................................................... 39BINSORT2.7 ............................................................................................... 44TNG KT CHNG 2
................................................................................................................. 44BI TP CHNG 2........................... 45Chng 3: KTHUT THIT K GII THUT
3.1 ................................................................................................................. 45TNG QUAN3.2 ............................................................................................. 45K THUT CHIA TR
3.3 ............................................................................................... 50K THUT THAM N3.4 .................................................................................................... 56QUY HOCH NG3.5 ................................................................................................. 63K THUT QUAY LUI3.6 ........................................................................ 78K THUT TM KIM A PHNG3.7 ............................................................................................... 82TNG KT CHNG 3
................................................................................................................. 82BI TP CHNG 3......... 85Chng 4: CU TRC D LIU V GII THUT LU TR NGOI
4.1 ................................................................................................................. 85TNG QUAN4.2 ............................................................................................ 85M HNH XL NGOI
4.3 ......................................................... 86NH GI CC GII THUT XL NGOI4.4 ........................................................................................................... 87SP XP NGOI4.5 ................................................................. 93LU TRTHNG TIN TRONG TP TIN4.6 ............................................................................................. 103TNG KT CHNG 4
............................................................................................................... 104BI TP CHNG 4
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
4/109
Gii thut Tng quan
PHN TNG QUAN1. Mc ch yu cu
Mn hc gii thut cung cp cho sinh vin mt khi lng kin thc tng ihon chnh v phn tch v thit k cc gii thut lp trnh cho my tnh. Sau khihc xong mn hc ny, sinh vin cn:
- Nm c khi nim thi gian thc hin ca chng trnh, phc tp cagii 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 kthut 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 sdngMn 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, Tng ho)- Sinh vin Ton-Tin.
3. Ni dung ct liTrong khun kh 45 tit, gio trnh c cu trc thnh 4 chng- Chng 1: Kthut 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 phngphp no. Ni dung chng 1 tp trung vo khi nim phc tp thi gianca gii thut v phng php tnh phc tp gii thut ca mt chngtrnh bnh thng, ca chng trnh c gi cc chng trnh con v ca ccchng trnh quy.
- Chng 2: Sp xp. Chng ny trnh by cc gii thut sp xp, mt thaotc thng c s dng trong vic gii cc bi ton my tnh. S c nhiugii thut sp xp tn gin n nng cao sc gii thiu y. Vimi gii thut, s trnh by tng gii thut, v d minh ho, ci t chngtrnh 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, Quyhoch ng, Tham n, Quay lui v Tm kim a phng. Vi mi kthut strnh by ni dung k thut v vn dung vo gii cc bi ton kh ni tingnh 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 trnhby cc cu trc d liu c dng t chc lu tr t p tin trn b nhngoi 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 knng lp trnh cn bn.
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
5/109
Gii thut Tng quan
- Kin thc v cu trc d liu v cc gii thut thao tc trn cc cu trc dliu.
Trong chng trnh o to, Cu trc dliu l mn hc tin quyt ca mn Giithut.
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 dliu & Thut ton; Nh xut bn khoa hcv kthut; H ni-2001.[4] Xun Li; Cu trc dliu & 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
Smith Nguyen Studio.
http://pauillac.inria.fr/algo/AofA/http://www.cs.pitt.edu/~kirk/algorithmcourses/http://oopweb.com/Algorithms/Files/Algorithms.htmlhttp://oopweb.com/Algorithms/Files/Algorithms.htmlhttp://oopweb.com/Algorithms/Files/Algorithms.htmlhttp://www.cs.pitt.edu/~kirk/algorithmcourses/http://pauillac.inria.fr/algo/AofA/ -
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
6/109
Gii thut Kthut phn tch gii thut
CHNG 1: KTHUT 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 gichng trnh con, nh gi mt chng trnh c gi cc chng trnh conkhng quy v nh gi chng trnh quy).
1.1.2 Kin thc c bn cn thitCc kin thc cbn cn thit hc chng ny bao gm:
- Kin thc ton hc: Cng thc tnh tng n s t nhin u tin, cng thctnh tng n s hng u tin ca mt cp s nhn, phng php chng minhquy n p v cc kin thc lin quan n logarit (bin i logarit, tnh chtng bin ca hm s logarit).
- Kthut lp trnh v lp trnh quy.
1.1.3 Ti liu tham khoA.V. Aho, J.E. Hopcroft, J.D. Ullman.Data Structures and Algorithms. Addison-Wesley. 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 kthut. 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
Smith Nguyen Studio.
http://pauillac.inria.fr/algo/AofA/http://pauillac.inria.fr/algo/AofA/ -
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
7/109
Gii thut Kthut 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). Thngthng 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 giithut v cho thc hin trn my vi mt s b d liu mu ri ly kt qu thuc so snh vi kt qu bit. Thc ra th cch lm ny khng chc chn bi vc 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 chngminh bng ton hc. Tt nhin iu ny khng n gin v do vy chng ta skhng cp n y.
Khi chng ta vit mt chng trnh s dng mt vi ln th yu cu (2) l quantrng nht. Chng ta cn mt gii thut d vit chng trnh nhanh chng cc kt qu , thi gian thc hin chng trnh khng c cao v d sao thchng 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 kimthi gian thc hin chng trnh li rt quan trng c bit i vi nhng chngtrnh m khi thc hin cn d liu nhp ln do yu cu (3) sc xem xt mtcch kcng. 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 lptrnh n v o lng thi gian thc hin ca hot ng trn mt my tnh xc nhi 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 tpcc ch th ca my tnh, cht lng ca my tnh v kxo ca ngi lp trnh. Sthi hnh cng c thiu chnh thc hin tt trn tp c bit cc d liu voc chn. vt qua cc trngi ny, cc nh khoa hc my tnh chp nhntnh phc tp ca thi gian c tip cn nh mt so lng cbn s thc thica gii thut. Thut ng tnh hiu qu s cp n so lng ny v c biti 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, khiu 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
8/109
Gii thut Kthut 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 vo thi gian thc hin.
n v ca T(n) khng phi l n vo thi gian bnh thng nh gi, pht giy...
m thng c xc nh bi s cc lnh c thc hin trong mt my tnh ltng.
V d 1-2: Khi ta ni thi gian thc hin ca mt chng trnh l T(n) = Cn th cngha 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 thcm cn ph thuc vo tnh cht ca d liu vo. Ngha l d liu vo c cng kchthc 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 gianthc 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 xunht trn d liu vo c kch thc n, tc l: T(n) l thi gian ln nht thc hinchng 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 tngTa ni rng hm khng m T(n) c t sut tng (growth rate) f(n) nu tn ti cchng s C v N0 sao cho T(n) Cf(n) vi mi n N0.
Ta c thchng minh c rng Cho mt hm khng m T(n) bt k, ta lun tmc 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 vimi 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 3
l n . 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 3) v T2(n) = 5n (vi t sut tng l n3). Gii thut nos thc hin nhanh hn? Cu tr li ph thuc vo kch thc d liu vo. Vi n 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 khn trong chng 2. y, chngta 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} vcng l phc tp ca gii thut l
=
==
1n
1i 2
1)n(ni)(nT(n) = O(n2).
Ch : Trong trng hp vng lp khng xc nh c s ln lp th chng ta phily 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 snguyn v mt s nguyn x, hm s tr v gi tr logic TRUE nu tn ti mt phnt a[i] = x, ngc li hm tr v FALSE.
Nguyn Vn Linh Trang 5
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
11/109
Gii thut Kthut phn tch gii thut
Gii thut tm kim tun t l ln lt so snh x vi cc phn t ca mng a, bt ut a[1], nu tn ti a[i] = x th dng v tr v TRUE, ngc li nu tt c cc phnt 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
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
12/109
Gii thut Kthut phn tch gii thut
1. Tnh thi gian thc hin ca C, B2, B11 v B12. V cc chng trnh conny khng gi chng trnh con no c.
2. Tnh thi gian thc hin ca B1. V B1 gi B11 v B12 m thi gian thchin 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 hinca 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 caB 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 chngta vit th tc Swap thc hin vic hon i hai phn t cho nhau, sau so trongth 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 tnhthi 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, miln tn O(1) nn tn O(n-i). Lnh {1} thc hin n-1 ln nn
=
==
1n
1i 2
1)n(ni)(nT(n) = O(n2).
1.6 PHN TCH CC CHNG TRNH QUY
Vi cc chng trnh c gi cc chng trnh con quy, ta khng th p dngcch tnh nh va trnh by trong mc 1.5.4 bi v mt chng trnh quy s gichnh bn thn n. C th thy hnh nh chng trnh quy A nh sau:
A
Hnh 1-2: S chng trnh con A quy
Nguyn Vn Linh Trang 7
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
13/109
Gii thut Kthut phn tch gii thut
Vi phng php tnh phc tp trnh by trong mc 1.5.4 th khng th thchin c. Bi v nu theo phng php th, tnh thi gian thc hin cachng trnh A, ta phi tnh thi gian thc hin ca chng trnh A v ci vng lunqun 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 gianthc 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 nhtmt trng hp dng ng vi mt n c th v li gi quy gii bi ton kchthc k (k0chng trnh phi gi quy Giai_thua(n-1), vic gi quy ny tn T(n-1), saukhi c kt qu ca vic gi quy, chng trnh phi nhn kt qu vi n v gncho Giai_thua. Thi gian thc hin php nhn v php gn l mt hng C2. Vyta c
Nguyn Vn Linh Trang 8
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
14/109
Gii thut Kthut phn tch gii thut
T(n) =0>nnuC+1)-T(n
0=nnuC
2
1
y l phng trnh quy tnh thi gian thc hin ca chng trnh quyGiai_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;BEGINIF 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 hnhminh ha ca MergeSort nh sau:
7 4 8 9 3 1 6 2
7 4 8 9 3 1 6 2
7 4 8 9 3 1 6 2
7 4 8 9 3 1 6 2
4 7 8 9 1 3 2 6
Hnh 1-3: Minh ho sp xp trn
Hm MergeSort nhn mt danh sch c di n v tr v mt danh sch csp xp. Th tc Merge nhn hai danh sch c sp L1 v L2 mi danh sch c
di 2
n
, trn chng li vi nhau c mt danh sch gm n phn t c th t.
4 7 8 9 1 2 3 6
1 2 3 4 6 7 8 9
Nguyn Vn Linh Trang 9
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
15/109
Gii thut Kthut 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 di2
nl O(n).
2
nGi T(n) l thi gian thc hin MergeSort mt danh sch n phn t th T( ) l thi
gian thc hin MergeSort mt danh sch2
nphn t.
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 di2
ndo thi gian gi
hai ln quy ny l 2T(2
n). 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 taxc inh c thi gian chia danh sch v Merge l O(n) = C2n . Vy ta c
phng trnh quy nh sau:
1>nnunC+)2
n2T(
1=nnuC
2
1
T(n) =
1.6.2 Gii phng trnh quy
C ba phng php gii phng trnh quy:
1.- Phng php truy hi2.- 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 chon 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 shng 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) =0>nnuC+1)-T(n0=nnuC
2
1
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 cT(n) = T(0) + nC2 = C1 + n C2 = O(n)
Nguyn Vn Linh Trang 10
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
16/109
Gii thut Kthut phn tch gii thut
1>nnunC+)2
n2T(
1=nnuC
2
1
V d 1-13: Gii phng trnh T(n) =
Ta c n2C+)2
n2T(=T(n) 2
n2C+)4
n4T(=nC+]
2
nC+)
4
n2T([2=T(n) 222
nC3+)8
n8T(=nC2+]
4
nC+)
8
n2T([4=T(n) 222
.
nC+)2
nT(2=T(n) 2i
i i
i2n = 1 hay 2iQu trnh suy rng s kt thc khi = n v do i = logn. Khi ta c:
T(n) = nT(1) + lognC2n = C
1n + C
2nlogn = 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 chon 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 tas suy din ra gi tr thch hp ca cc tham s.
V d 1-12: Gii phng trnh quy T(n) =1>nnunC+)
2
n2T(
1=nnuC
2
1
Gi s chng ta on f(n) = anlogn. Vi n = 1 ta thy rng cch on nh vykhng c bi v anlogn c gi tr 0 khng ph thuc vo gi tr ca a. V th tath 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.
2
n) + CGi s n 2, t phng trnh cho ta c T(n) = 2T( 2n
2
n< n ta c:p dng gi thit quy np vi k =
T(n) = 2T( 2n
2
n
2
n
) + C2n 2[a log + b] + C2n
Nguyn Vn Linh Trang 11
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
17/109
Gii thut Kthut 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) bT(n) anlogn + b = f(n). (do b>0 v 1-n
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
18/109
Gii thut Kthut phn tch gii thut
1>nneud(n)+)b
naT(
1=nneu1T(n) = (I.1)
Ta s dng phng php truy hi gii phng trnh ny. Khi n > 1 ta c
bn ) + d(n)T(n) = aT(
d(n)+)b
nad(+)
b
nT(a=d(n)+])
b
nd(+)
b
na[aT( 2
22T(n)=
d(n)+)b
n(ad+)
b
n(da+)
b
n(Ta=d(n)+)
b
n(ad+])
b
n(d+)
b
nT([aa 2
23
323
2T(n)=
= ........
1-i
0=jj
ji
i )bad(a+)bnT(a =
Gi s n = bk, qu trnh suy rng trn s kt thc khi i = k.
kb
n) = T(1) = 1. Thay vo trn ta c:Khi ta c T(
T(n) = (I.2)( )1-k
0=j
j-kjk bda+a
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 = nlogbac 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), c gi l nghim ring (particular solutions).(1-k
0=j
j-kj bda )
Nghim ring biu din thi gian phi tn to ra cc bi ton con v tng hp cckt qu ca chng. Nhn vo cng thc ta thy nghim ring ph thuc vo hm tintrin, 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 snhvi 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 tmc mt lp cc hm tin trin c th d dng xc nh nghim ring.
Nguyn Vn Linh Trang 13
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
19/109
Gii thut Kthut phn tch gii thut
1.6.2.3.2 Hm nhn
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.
k kV d 1-13: Hm f(n) = n l mt hm nhn, v f(m.n) = (m.n) = mk k.n = 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
1-d(b)
a
1-]d(b)
a[ k
(1-k
0=j
j-kj bda ) = = [d(b)]1-k
0=j
j-kj[d(b)]a 1-k
0=j
j]d(b)
a[k = [d(b)]k
1-d(b)
a[d(b)]-a kk
(I.3)Hay nghim ring =
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 tcly phc tp ta c nghim ring l O(ak log) = O(n b
a). Nh vy nghim ring vnghim thun nht bng nhau do T(n) l O(nlogb
a).
Trong trng hp ny ta thy thi gian thc hin ch ph thuc vo a, b m khngph 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 k> a , theo quy tcly phc tp ta cnghim ring l O([d(b)]k) = O(nlogb
d(b)). Trong trng hp nynghim ring ln hn nghim thun nht nn T(n) l O(nlog d(b)).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 thnghim 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:
1-k
0=j
j]d(b)
a[Nghim ring = [d(b)]k = ak = a
1-k
0=j
1 kk (do a = d(b))
Do n = bk nn k = logbn v ak = nlogb
a. Vy nghim ring l nlogbalogbn v nghim
ny ln gp logbn ln nghim thun nht. Do T(n) l O(nlog a
log n).b b
Ch khi gii mt phng trnh quy c th, ta phi xem phng trnh cthuc dng phng trnh tng qut hay khng. Nu c th phi xt xem hm tintrin c phi l hm nhn khng. Nu c th ta xc nh a, d(b) v da vo s sosnh gia a v d(b) m vn dng mt trong ba trng hp ni trn.
Nguyn Vn Linh Trang 14
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
20/109
Gii thut Kthut phn tch gii thut
V d 1-14: Gii cc phng trnh quy sau vi T(1) = 1 v
2
n) + n1/- T(n) = 4T(
2
n
) + n2
2/- T(n) = 4T(
2
n) + n33/- T(n) = 4T(
Cc phng trnh cho u c dng phng trnh tng qut, cc hm tin trind(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 1ta c T(n) = O(nlogb
a log4) = O(n ) = O(n2).
Vi phng trnh th hai, d(n) = n2 2=> d(b) = b = 4 = a, p dng trng hp 3 ta c
T(n) = O(nlog
ba log4 2
logbn) = O(n logn) = O(n logn).3 3=> d(b) = bVi phng trnh th 3, ta c d(n) = n = 8 > a, p dng trng hp 2,
ta c T(n) = O(nlogbd(b) log8 3) = O(n ) = O(n ).
1.6.2.3.3 Cc hm tin trin khc
Trong trng hp hm tin trin khng phi l mt hm nhn th chng ta khngth p dng cc cng thc ng vi ba trng hp ni trn m chng ta phi tnhtrc tip nghim ring, sau so snh vi nghim thun nht ly nghim lnnht trong hai nghim lm nghim ca phng trnh.
V d 1-15: Gii phng trnh quy sau :
T(1) = 1
n
2T(n) = 2T( ) + nlogn
Phng trnh cho thuc dng phng trnh tng qut nhng d(n) = nlogn khngphi l mt hm nhn.
logTa c nghim thun nht = n ba = nlog2 = n
Do d(n) = nlogn khng phi l hm nhn nn ta phi tnh nghim ring bng cchxt trc tip
Nghim ring = = = =( )1-k
0=j
j-kj bda j-kj-k1-k
0j=
j log222 )j-(k2k1-k
0=j 2
)1+(2k
kk k= O(2 k2)
Theo gi thit trong phng trnh tng qut th n = bk nn k = logbn, y do b = 2nn 2k = n v k = logn, chng ta c nghim ring l O(nlog2n), nghim ny ln hnnghim thun nht do T(n) = O(nlog2n).
Nguyn Vn Linh Trang 15
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
21/109
Gii thut Kthut 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 nguyntc t trong ra.
5.- i vi cc chng trnh quy th trc ht phi thnh l p 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 ths dng phng php truy hi hoc phng php on nghim.
7.- Khi gii mt phng trnh quy thuc dng phng trnh tng qut, nu hmtin trin d(n) l mt hm nhn th vn dng cng thc nghim ca mt trong batrng hp xc nh nghim, cn nu d(n) khng phi l hm nhn th phi tnhtrc 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} Sum := 0;{2} for i:=1 to n do begin{3} readln(x);{4} Sum := Sum + x;
end;
b) Tnh tch hai ma trn vung cp n C = A*B:{1} for i := 1 to n do{2} for j := 1 to n do begin{3} c[i,j] := 0;{4} for k := 1 to n do{5} c[i,j] := c[i,j] + a[i,k] * b[k,j];
end;
Bi 2: Gii cc phng trnh quy sau vi T(1) = 1 v
a) T(n) = 3T(n/2) + n2b) T(n) = 3T(n/2) + n3c) T(n) = 8T(n/2) + n
Bi 3: Gii cc phng trnh quy sau vi T(1) = 1 v
a) T(n) = 4T(n/3) + n2b) T(n) = 4T(n/3) + n
Nguyn Vn Linh Trang 16
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
22/109
Gii thut Kthut phn tch gii thut
2c) T(n) = 9T(n/3) + n
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) + n2d) T(n) = 2T(n/2) + n
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 s p th t tng. Vit hm tm mt snguyn trong mng theo phng php tm kim nh phn, nu tm thy th tr
v TRUE, ngc li tr v FALSE.S dng hai kthut l quy v vng lp. Vi mi kthut hy vit mt hm tmv 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 ntng?
Bi 8: Xt cng thc truy ton tnh s t hp chp k ca n nh sau:
n
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
23/109
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 cnnm 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 cbn 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).
- Kthut 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 dliu & Thut ton. Nh xut bn khoa hc v kthut. H ni-2001. (Chng 9).
Xun Li.Cu trc dliu & Gii thut. 1995. (Chng 9).
2.1.4Ni 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
24/109
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 sinhtheo tn vi th t Alphabet, hoc sp xp danh sch sinh vin theo im trung bnhvi th t t cao n thp. Mt v d khc l khi cn tm kim mt i tng trongmt danh sch cc i tng bng gii thut tm kim nh phn th danh sch cci 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 trongkhi 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 mytnh, ta c th s dng kh nng truy nhp ngu nhin ca b nhv do vy sthc hin rt nhanh.
Sp xp ngoi l s sp xp c s dng khi s lng i tng cn sp xp lnkhng th lu tr trong b nhtrong m phi lu tr trn b nhngoi. C th lta 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 scnghin 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. Mttrong 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 chngc 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 = RecordKey : KeyType;OtherFields : OtherType;end;
VARa : array[1..N] of RecordType;
Nguyn Vn Linh Trang 19
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
25/109
Gii thut Sp xp
PROCEDURE Swap(var x,y:RecordType);VAR temp : RecordType;BEGIN
temp := x;x := y;
y := temp;END;
Cn thy rng th tc Swap ly O(1) thi gian v ch thc hin 3 lnh gn ni tipnhau.
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 ccgii 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 chnphn 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 nhnht 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
26/109
Gii thut Sp xp
Khaa[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
BcBan u 5 6 2 2 10 12 9 10 9 3
2Bc 1 6 5 2 10 12 9 10 9 3
2Bc 2 5 6 10 12 9 10 9 33Bc 3 6 10 12 9 10 9 5
5Bc 4 10 12 9 10 9 66Bc 5 12 9 10 9 10
9Bc 6 12 10 9 109Bc 7 10 12 10
10Bc 8 12 1010Bc 9 12
Kt qu 2 2 3 5 6 9 9 10 10 12
Hnh 2-1: Sp xp chn2.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 THENBEGIN
{6} LowKey := a[j].key;{7} LowIndex := j;
END;{8} Swap(a[i],a[LowIndex]);
END;END;
22.3.1.3 nh gi: Phng php sp xp chn ly O(n ) 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 giantng cng l:
T(n) = =1-n
1=i
i)-(n2
1)-n(ntc l O(n2).
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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
27/109
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 choa[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 ta[1],a[2],..a[i] sao cho a[1], a[2],.. a[i+1] l mt danh sch c th t.
Phn tang xt a[j] sc xen vo v tr thch hp trong danh sch ccphn t c s p trc a[1],a[2],..a[j-1] bng cch so snh khoca a[j] vi kho ca a[j-1] ng ngay trc n. Nu kho ca a[j] nhhn kho ca a[j-1] th hon i a[j-1] v a[j] cho nhau v tip tc sosnh kho ca a[j-1] (lc ny a[j-1] cha ni dung ca a[j]) vi kho caa[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] ckho 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
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
28/109
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;
22.3.2.3 nh gi: Phng php sp xp xen ly O(n ) 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 tipnhau, 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
2
1)-n(nT(n) = =
=
n
2i
1)-(i tc l O(n2).
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 trnhsp, mu tin no c kha nh sc ni ln trn. Chng ta duyt tan mng, tdi ln trn. Nu hai phn tcnh nhau m khng ng th t tc l nu phn tnh hn li nm di th phi cho n ni ln bng cch i ch hai phn t nycho nhau. C th l:
Bc 1: Xt cc phn t t a[n] n a[2], vi mi phn t a[j], so snhkho ca n vi kho ca phn t a[j-1] ng ngay trc n. Nu khoca 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 gil 3 nh hn kho ca a[8] nn ta hon i a[9] va[8] cho nhau. Kho ca a[8] by gi l 3 nh hn kho ca a[7] nn ta hon ia[8] v a[7] cho nhau. Kho ca a[7] by gil 3 nh hn kho ca a[6] nn ta honi a[7] v a[6] cho nhau. Kho ca a[6] by gil 3 nh hn kho ca a[5] nn tahon i a[6] v a[5] cho nhau. Kho ca a[5] by gi l 3 khng nh hn khoca 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 gil 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
29/109
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 gil 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. Khoca a[5] by gil 3 khng nh hn kho ca a[4] nn b qua. Kho ca a[4] l 2nh hn kho ca a[3] nn ta hon i a[4] v a[3] cho nhau. Kho ca a[3] by gil 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
Bca[1] a[2] a[3] A[4] a[5] a[6] a[7] a[8] a[9] a[10]
Ban u 5 6 2 2 10 12 9 10 9 3Bc 1 2 5 6 2 3 10 12 9 10 9Bc 2 2 5 6 3 9 10 12 9 10Bc 3 3 5 6 9 9 10 12 10Bc 4 5 6 9 9 10 10 12Bc 5 6 9 9 10 10 12Bc 6 9 9 10 10 12Bc 7 9 10 10 12Bc 8 10 10 12
Bc 9 10 12Kt qu 2 2 3 5 6 9 9 10 10 12
Hnh 2-3: Sp xp ni bt
2.3.3.2 Chng trnhPROCEDURE 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;
22.3.3.3 nh gi: Phng php sp xp ni bt ly O(n ) sp n phn t.
Dng lnh {3} ly mt hng thi gian. Vng lp {2} thc hin (n-i) bc, mi bcly O(1) nn ly O(n-i) thi gian. Nh vy i vi ton b chng trnh ta c:
2
1)n(n T(n)= =
=
1
1
i)(nn
i
= O(n2).
Nguyn Vn Linh Trang 24
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
30/109
Gii thut Sp xp
2.4 QUICKSORT
Trong phn ny chng ta s nghin cu mt gii thut sp xp c dng mt cchph bin l Quick Sort do A.R. Hoare pht minh vo nm 1960. Quick Sort cci 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 gil 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 sc spbi v tt c cc kha trong mng con bn tri u nh hn cc kha trong mng
con bn phi.Vic sp x p 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 thkhng ccht.
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 caphn tu tin).
Cho mng gm cc phn t c kho l 6, 6, 7, 5, 7, 4, ta chn cht l 7 (kho caphn 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 tbn phi, ta cho L chy sang phi cho ti khi gp phn t c kha cht v cho Rchy sang tri cho ti khi gp phn t c kha < cht. Ti ch dng ca L v R nuL < R th hon v a[L],a[R]. Lp li qu trnh dch sang phi, sang tri ca 2 "connhy" L v R cho n khi L > R. Khi L s l im phn hoch, c th l a[L] l
phn tu tin ca mng con bn phi.
Nguyn Vn Linh Trang 25
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
31/109
Gii thut Sp xp
2.4.2.3 Gii thut QuickSort
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 tu tin c kha khc nhau l l a[1] v a[2] vikho 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 Rccphi). 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 chtnn 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 honi, 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). Khoca a[L] l 10 ln hn cht nn dng li. Vi R, kho ca a[R] by gi l 8 bngcht nn di chuyn R sang tri (R := R-1 = 9). Kho ca a[R] l 15 ln hn cht nndi 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 dichuyn L sang phi (L := L+1 = 5). Kho ca a[L] l 5 nh hn cht nn li dichuyn 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 gil 10 ln hn cht nn di chuyn R sang tri (R := R-1 = 7). Kho ca a[R] l 8 bng cht nn di chuyn R sang tri (R := R-1 = 6). Khoca 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 vR=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 phia[6]..a[10]. Hnh nh ca s phn hoch ny c biu din trong hnh sau:
Ch s 1 2 3 4 5 6 7 8 9 10Kho 5 8 2 10 5 12 8 1 15 4Ban u 4 1 10 8
v = 8C p 1 5 4 2 1 5 12 8 10 15 8
Hnh 2-4 : Chn cht v phn hoch mng a[1]..a[10]
Trong bng trn, dng chsghi cc ch s ca cc phn t ca mng (t 1 n 10).
Nguyn Vn Linh Trang 26
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
32/109
Gii thut Sp xp
Trong dng kho ban u, cc gi tr kho dng trn (5, 8, 2, 10, 5, 12, 8, 1, 15 v4) 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] via[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] na[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 tu 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 Rcc
phi). Do a[L] c kho l 5 bng cht nn khng th di chuyn L. Do a[R] c khol 5 bng cht nn di chuyn R sang tri (R := R-1 = 4). Kho ca a[R] by gil 1nh 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 ckho l 1 nh hn cht nn di chuyn L sang phi (L := L+1 = 2). Kho ca a[L] l4 nh hn cht nn li di chuyn L sang phi (L := L+1 = 3). Kho ca a[L] l 2nh hn cht nn li di chuyn L sang phi (L := L+1 = 4). Kho ca a[L] l 5 bngcht nn dng li. Vi R, kho ca a[R] by gi l 5 bng cht nn di chuyn Rsang 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 conbn phi a[4]..a[6].
Hnh nh ca s phn hoch ny c biu din trong hnh sau:
Ch s 1 2 3 4 5 6 7 8 9 10Kho 5 8 2 10 5 12 8 1 15 4Ban u 4 1 10 8
v = 8
5 4 2 1 5 12 8 10 15 8Cp 1 1 5v = 5
C p 2 1 4 2 5 5
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 banu cho n khi dng (cc mng khng c cht). Cui cng ta c mng c spth t. Hnh sau biu din ton b qu trnh sp xp.
Nguyn Vn Linh Trang 27
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
33/109
Gii thut Sp xp
Ch s 1 2 3 4 5 6 7 8 9 10Kho 5 8 2 10 5 12 8 1 15 4Ban u 4 1 10 8
v = 85 4 2 1 5 12 8 10 15 8Cp 1
1 5 8 12v = 5 v = 12
1 4 2 5 5 8 8 10 15 12Cp 2
2 4 12 15v = 4 xong v = 10 v =15
C p 3 1 2 4 8 8 10 12 15v = 2 xong xong xong xong xong
C p 4 1 2
xong xongKt qu 1 2 4 5 5 8 8 10 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 tc 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 khaln hn trong hai phn t c kha khc nhau u tin. Kha ln hn ny s trthnh 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 tu tin trongmng 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 htmng, mt phn t a[k] m a[k].key FirstKey. Nu khng tm thy mt a[k] nhth th hoc l mng ch gm mt phn t hoc gm nhiu phn t c kha bngnhau. 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 nhth th cht s l kha ca a[k] v hm FindPivot s tr v k, nu khng th cht sl 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 THEN FindPivot := 0ELSE
Nguyn Vn Linh Trang 28
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
34/109
Gii thut Sp xp
{5} IF a[k].key > FirstKey THEN FindPivot := kELSE FindPivot := i;
END;
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 hmFindPivot ph thuc vo thi gian thc hin ca lnh ny. Trong trng hp xunht (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 hinl 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 mnga[i]..a[j] theo cht Pivot v tr v gi tr L l ch su tin ca mng bn phi.
Hai con nhy L, R sc 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 = pivot DO R := R-1;
{6} IF L < R THEN Swap(a[L],a[R]);END;
{7} Partition := L; {Tr vim phn hoch}END;
Trong hm Partition cc lnh {1}, {2}, {3} v {7} ni tip nhau, trong thi gianthc hin ca lnh {3} l ln nht, do thi gian thc hin ca lnh {3} s l thigian 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 mtln, 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 calnh {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 gichng 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 giQuickSort(1,n).
Ta s s dng bin PivotIndex lu gi kt qu tr v ca hm FindPivot, nubin PivotIndex nhn c mt gi tr khc 0 th mi tin hnh phn hoch mng.
Nguyn Vn Linh Trang 29
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
35/109
Gii thut Sp xp
Ngc li, mng khng c cht v do c th t. Bin Pivot sc s dng lu gi gi tr cht v bin k lu gi gi tr ca im phn hoch do hmPartition tr v. Sau khia phn hoch xong ta s gi quy QuickSort cho mngcon 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;
BEGINPivotIndex := 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 ttrong 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 chtv 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.1v 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 Findpivotvi 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 givic 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:
1>nnun+T(1)+1)-T(n1=nnu1=T(n)
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) + 1+n
2+i-n=j
j
Nguyn Vn Linh Trang 30
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
36/109
Gii thut Sp xp
Qu trnh trn kt thc khi i = n-1, khi ta c T(n) = T(1) + = 1 +1+n
3j=
j 1+n
3j=
j
2
2-3n+n 2= - 2 =
1+n
1j=
j = O(n2)
Trong trng hp tt nht khi ta chn c cht sao cho hai mng con c kchthc bng nhau v bng n/2. Lc ta c phng trnh quy nh sau:
1>nnun+)2
n2T(
1=nnu1=T(n)
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
36
5 9 6 7
76 9
Hnh 2-7: Mt heap
Nguyn Vn Linh Trang 31
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
37/109
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 tmng, trong a[1] l nt gc v mi nt khng l nt l a[i] c con tri la[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 mts 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 bi phn t cui cng n trthnh mt heap mi.
Lp li qu trnh (3) v (4) cho ti khi cy ch cn mt nt ta sc mng sptheo 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 gitr kho ti cc nt con ca n) ngoi tr a[first]. PushDown dng y phn ta[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 contri (a[first].key > a[2*first].key) th hon i a[first] cho con tri ca nv 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 ) v kho ca con phi nh hn kho cacon 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 skhng ng v tr nn phi tip tc xem xt con phi c th yxung.
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 sphn 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
38/109
Gii thut Sp xp
PROCEDURE PushDown(first,last:integer);VAR r:integer;BEGINr:= first; {Xt nt a[first] trc ht}WHILE r a[last].key THEN swap(a[r],a[last]);r:=last; {Kt thc}END ELSEIF (a[r].key>a[2*r].key)and(a[2*r].keya[2*r+1].key)and(a[2*r+1].key
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
39/109
Gii thut Sp xp
V d 2-6: Sp xp mng bao gm 10 phn t c kho l cc s nguyn nh trongcc v d 2.1:
Ch s 1 2 3 4 5 6 7 8 9 10
Kho ban u 5 6 2 2 10 12 9 10 9 3Mng ny c xem nh l mt cy nh phn ban u nh sau:
5 1
2 2 36
Hnh 2-8: Cy ban u
Trong cy trn, gi tr ghi trong cc nt l kho ca cc phn t mng, gi tr ghibn 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 hncon tri ca n nn ta i hai nt ny cho nhau v do con tri ca a[5] l a[10] lmt nt l nn vic y xung ca a[5] kt thc.
Hnh 2-9: Thc hin y xung ca nt 5
1098
7652 4 10 12 9
10 9 3
5 115
1098
7654
326 2
2 10
10 9 3
12 9
2 2 36
1098
7652 4 3 12 9
10 9 10
Nguyn Vn Linh Trang 34
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
40/109
Gii thut Sp xp
Nt 4 v nt 3 ng v tr nn khng phi thc hin s hon i. Ti nt 2, gi trkha ca n ln hn kho con tri v kho ca con tri nh hn kho ca con phinn 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.
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 vcon tri c kho bng kho ca con phi nn han i nt 1 cho con tri ca n (nt2).
Sau khi thc hin php han i nt 1 cho nt 2, ta thy nt 2 c gi tr kho lnhn kho ca con phi ca n (nt 5) v con phi c kho nh hn kho ca con trinn phi thc hin php hon i nt 2 cho nt 5. Xt li nt 5 th n vn ng v trnn ta c cy mi trong hnh 2-11.
Hnh 2-11: Cy ban u oc to thnh heap
Cy ny l mt heap tng ng vi mng
1098
7654
3
1
2
2
3 2
6 5
10 9 10
12 9
1098
7654
3
1
2
5
6 2
2 3
10 9 1
12 9
5 1
2 2 32
1098
7656 4 3 12 9
10 9 10
Nguyn Vn Linh Trang 35
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
41/109
Gii thut Sp xp
Ch s 1 2 3 4 5 6 7 8 9 10Heap 2 3 2 6 5 12 9 10 9 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:
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 gmhai phn t a[9]..a[10] c sp. Thc hin vic y a[1] xung ng v tr can trong cy a[1]..a[8] ta c cy
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 sc mt mng c th t gim.
10 1 2 1
1098
7654
323 2
6 5
10 9 2
12 9
2 9 33
98
7656 4 5 12 1
10 9
7
8
654
3
1
2
3
5 9
6 9
10
12 1
98
7654
3
1
2
9
3 9
6 5
10 2
12 1
Nguyn Vn Linh Trang 36
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
42/109
Gii thut Sp xp
Trnh by heapsort bng mng
Nh trong phn tng ni, chng ta ch xem mng nh l mt cy. iu cngha l cc thao tc thc cht vn l cc thao tc trn mng. hiu r hn, ta strnh by v d trn s dng m hnh mng.
Mng ca 10 mu tin, c kho l cc s nguyn cho l:
Ch s 1 2 3 4 5 6 7 8 9 10Kho ban u 5 6 2 2 10 12 9 10 9 3
Mc d khng v thnh cy, nhng ta vn tng tng mng ny nh l mt cynh 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 caa[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 cahai 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 khoca 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 caa[2], tc l a[4]. Kho ca a[4] by gil 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 khoca con tri a[2] (5 > 2) v kho ca con tri bng kho ca con phi (2 = 2) nny 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 gil 5 ln hnkho ca con phi a[5] (5 > 3) v kho ca con phi a[5] nh hn kho ca con tria[4] (3 < 6) nn y a[2] xung bn phi (hon i a[2] v a[5] cho nhau). Tip tcxt 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 cc heap trong bng sau:
Ch s 1 2 3 4 5 6 7 8 9 105 6 2 2 10 12 9 10 9 3Ban u
2 2 5 3 6 3 5 10
Heap 2 3 2 6 5 12 9 10 9 10
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 khoban u ca mng. Dng di ghi cc gi tr kho sau khi c mt s hon i.
Nguyn Vn Linh Trang 37
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
43/109
Gii thut Sp xp
Th t ghi t tri sang phi, tc l s bn tri l gi tr kho sau khi thc hin vichon 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] ckha nh nht. y a[1] xung trong cy a[1]..a[9], ta thy kha ca a[1] by giln hn kha ca con phi a[3] (10 > 2) v kha ca con phi a[3] nh hn khaca con tri a[2] (2 < 3) do y a[1] xung bn phi (hon i a[1] v a[3] chonhau). Tip tc xt a[3], kha ca a[3] ln hn kha ca con phi a[7] v kha cacon 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 1 2 3 4 5 6 7 8 9 10Ban
u
5 6 2 2 10 12 9 10 9 3
2 2 5 3 6 3 5 102 3 2 6 5 12 9 10 9 10Heap
10 2 10 9 10 2
i = 10 22 3 9 6 5 12 10 10 9
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 trinh 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 khaca con phi nh hn kha ca con tri a[4] nn y a[2] xung bn phi (hon ia[2] v a[5] cho nhau) v v a[5] l nt l (trong cy a[1]..a[8]) nn vic y xungkt thc. Ta c bng sau
Ch s 1 2 3 4 5 6 7 8 9 10Banu
5 6 2 2 10 12 9 10 9 32 2 5 3 6 3 5 10
2 3 2 6 5 12 9 10 9 10Heap10 2 10 9 10 2
2 3 9 6 5 12 10 10 9i = 10 29 3 9 5 9 2i = 9 3 5 9 6 9 12 10 10 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 trinh 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 khaca con tri nh hn kha ca con phi a[5] nn y a[2] xung bn tri (hon ia[2] v a[4] cho nhau) v v a[4] l nt l (trong cy a[1]..a[7]) nn vic y xungkt thc. Ta c bng sau
Nguyn Vn Linh Trang 38
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
44/109
Gii thut Sp xp
Ch s 1 2 3 4 5 6 7 8 9 10Banu
5 6 2 2 10 12 9 10 9 32 2 5 3 6 3 5 10
2 3 2 6 5 12 9 10 9 10Heap 10 2 10 9 10 22 3 9 6 5 12 10 10 9i = 10 2
9 3 9 5 9 2
3 5 9 6 9 12 10 10i = 9 210 5 10 6 10 3
i = 8 5 6 9 10 9 12 10 3
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 ntxung trong cy c n nt.
Trong th tc HeapSort dng lnh {1}-{2}) lp n/2 ln m mi ln PushDown lyO(logn) nn thi gian thc hin {1}-{2} l O(n logn). Vng lp {3}-{4}-{5} lp n-1 ln, mi ln PushDown ly O(logn) nn thi gian thc hin ca {3}-{4}-{5} lO(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 t p l O(n2) hocO(nlogn). Tuy nhin khi kiu d liu ca trng kho l mt kiu c bit, vic spxp 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 Av phn phi vo phn t b[j] mt phn t a[i] m a[i].key = j. Khi mng B lutr 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 lcc 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] va[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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
45/109
Gii thut Sp xp
Mng a a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
Kha 4 7 1 2 5 8 10 9 6 3
Kha 1 2 3 4 5 6 7 8 9 10
Mng b b[1] B[2] b[3] b[4] b[5] b[6] b[7] b[8] b[9] b[10]
Hnh 2-18: Phn phi cc phn ta[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 binsort.
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 spmt mng A c n phn t m cc gi tr kha ca chng l cc s nguyn ly gi trtrong khong 1..m vi m
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
46/109
Gii thut Sp xp
n. cho c hiu qu, ta thm mt con tr na, trn phn t cui cng ca midanh sch, iu ny gip ta i thng ti phn t cui cng m khng phi duyt quaton b danh sch. Hnh sau minh ha vic ni hai danh sch.
NIL
L1 Header
L1 End
L2 Header
L2 End
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 lcc s 2, 4, 1, 5, 4, 2, 1, 4, 1, 5.
A a[1] a[2] A[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]
Kho ca A 2 4 1 5 4 2 1 4 1 5
Ta thy cc gi tr kho nm trong khong 1..5. Ta t chc mt mng B gm 5 phnt, mi phn t l mt con tr, trn mt danh sch lin kt.
Hnh 2-20: Binsort trong trng hp tng qut
1
2
3
4
5
a[6]a[1]
a[7]a[3] a[9]
a[10]a[4]
a[2] a[5] a[8]
Nguyn Vn Linh Trang 41
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
47/109
Gii thut Sp xp
Chng trnh s dng cu trc danh sch lin kt lm cc binVARa: ARRAY[1..n] OF RecordType;b: ARRAY[keytype] OF ListType;{Ta gi thit keytype l kiu min con 1..m }
PROCEDURE BinSort;VARi: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 trongdanh sch. Do cch t chc danh sch c gi con trn phn t cui cng nn vicni hai danh sch bng th tc CONCATENATE cng ch mt O(1) thi gian. Tathy vng lp {1} thc hin n ln, mi ln tn O(1) = 1 nn ly O(n) n v thigian. 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 ti p 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 x p, 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 thT(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 kthut bin sort n vn ly O(n) thi gian.
Gi s ta cn sp x p n phn t c cc gi tr kho thuc 0..n2-1. Nu s dng
phng php c, ta cn n
2
bin (t bin 0 n bin n
2
-1) v do vic ni n
2
bin nytn 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 vicsp 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 ta[i] sc 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 danhsch.
Nguyn Vn Linh Trang 42
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
48/109
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 binc 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 sptip. Phn phi phn t a[i] vo bin c ch s a[i].key DIV 10. Ni cc bin ca khai li vi nhau ta c danh sch c th t.
K mt K hai
Bin Bin
0 10 0 1 8 9
1 1 81 1 10 16
2 2 25
3 3 34 36
4 34 4
5 25 5
6 36 16 6
7 7
8 8 8 81
9 9 99 9 99
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 nitip 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 n2-1 nh cc s c hai ch s trong hm cs n. Xt hai s K = s.n + t (ly K chiacho 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 Kng trc L trong danh sch kt qu v trong k hai,K c s p vo bin b[s] v L c s p 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 = 2x 10 + 5 (s = 1, t = 6, u = 2 v v = 5; s < u). Trong k hai, K = 16 c sp vo bin 1v 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 Kng 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 cK v L u c sp vo trong bin b[s], nhng Kc xen vo trc L nn kt qu
Nguyn Vn Linh Trang 43
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
49/109
Gii thut Sp xp
l Kng 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 Kcsp 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 Kc xt trc nn Kng trc L trong bin 3 v do Kng
trc L trong kt qu cui cng.Ch : T chng minh trn ta thy sp cc phn t c kha l cc s nguyn (hm cs 10) t 0 n 99 ta dng 10 bin c ch s t 0 n 9. sp cc phn t ckha 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 mtthi 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 QuickSortph hp vi hm FindPivot mi ny.
Bi 4: C mt bin th ca QuickSort nh sau: Chn cht l kha ca phn t nhnht 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 khaln 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 tu 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 ttng.
Nguyn Vn Linh Trang 44
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
50/109
Gii thut Kthut thit k gii thut
CHNG 3: KTHUT 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 kthut cnnm c:
Ni dung kthut.
Vn dng kthut vo gii cc bi ton thc t.
nh gi c gii thut.
3.1.2 Kin thc cbn 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; Addison-Wesley; 1983. (Chapter 10).Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998.(Chapter 12).
inh M
nh T
ng
; Cu trc d
liu & Thu
t 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 kthut 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), kthut tham n (greedy techniques), quay lui (backtracking) v tm kim a phng(local search). Cc kthut ny c p dng vo mt lp rng cc bi ton, trong c nhng bi ton cin ni ting nh bi ton tm ng i ngn nht cangi giao hng, bi ton cy ph ti tiu...
3.2 KTHUT CHIA TR
3.2.1 Ni dung kthut
C th ni rng kthut quan trng nht, c p dng rng ri nht thit k ccgii thut c hiu qu l kthut "chia tr" (divide and conquer). Ni dung ca nl: 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
51/109
Gii thut Kthut thit k gii thut
thut chia tr c c cc bi ton kch thc nh hn na. Qu trnh trn sdn n nhng bi ton m li gii chng l hin nhin hoc dng thc hin, tagi cc bi ton ny l bi ton cs.
Tm li kthut chia tr bao gm hai qu trnh: Phn tch bi ton cho thnh
cc bi ton csv tng hp kt qu t bi ton cs c li gii ca bi tonban u. Tuy nhin i vi mt s bi ton, th qu trnh phn tch cha ngvic tng hp kt qu do nu chng ta gii xong cc bi ton c s th biton 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 phntip sau ta s trnh by mt s v d thy r hn iu ny.
Kthut ny s cho chng ta mt gii thut quy m vic xc nh phc tp can 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 trongchng I v QuickSort trong chng II) thc cht l s dng kthut chia tr.
Vi MergeSort, sp mt danh sch L gm n phn t, chng ta chia L thnh haidanh sch con L1 v L2 mi danh sch c n/2 phn t. Sp xp L1, L2 v trn haidanh 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 xpmt danh sch c da bng 1, y chnh l bi ton csv vic sp xp danhsch ny l khng lm g c. Vic tng hp cc kt quy 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 vphn hoch danh sch cho thnh hai danh sch con bn tri v bn phi . Spxp bn tri v bn phi th ta c danh sch c th t. Qu trnh phn chia sdn 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 cs, v bn thn chng cth t ri. y chng ta cng khng c vic tng hp kt qu mt cch tngminh, 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 integertrong Pascal, Int trong C), nhng nhn chung cc kiu ny u c min gi tr hnch (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 l p 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 dincho mt s nguyn, trong mi k t lu tr mt ch s. thao tc c trn ccs 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 scp 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
52/109
Gii thut Kthut thit k gii thut
u tin ta nghn gii thut nhn hai s thng thng, ngha l nhn tng ch sca X vi s Y ri cng cc kt qu li. Vic nhn tng ch s ca X vi s Y ihi phi nhn tng ch s ca X vi tng ch s ca Y, v X v Y u c n ch snn cn n2 php nhn hai ch s, mi php nhn hai ch s ny tn O(1) th phpnhn cng tn O(n2) thi gian.
p dng k thut "chia tr" vo php nhn cc s nguyn ln, ta chia mi snguyn ln X v Y thnh cc s nguyn ln c n/2 ch s. n gin cho vic
phn tch gii thut ta gi sn l lu tha ca 2, cn v kha cnh lp trnh, ta vnc 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 trnhphn tch s dn n bi ton csl nhn cc s nguyn ln ch gm mt ch sm ta d dng thc hin. Vic tng hp kt qu chnh l thc hin cc php tontheo 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 nch s v 2 php nhn vi 10n v 10n/2.
Cc php cng cc s nguyn ln n ch s dnhin 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 cngch ly O(n). Gi T(n) l thi gian nhn hai s nguyn ln, mi s c n ch sth 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 vigii 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) chi 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 uly O(n) thi gian. T (III.3) ta c phng trnh quy:
T(1) = 1
T(n) = 3T(n/2) + cnlog3 1.59) = O(nGii phng trnh quy ny ta c nghim T(n) = O(n ). 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
53/109
Gii thut Kthut thit k gii thut
VARm1,m2,m3,A,B,C,D: Big_integer;s: integer;{Lu tr du ca tch xy}
BEGINs := sign(X)*sign(Y);
x := ABS(X);{Ly tr tuyt i ca x}y := ABS(Y);IF n = 1 THEN mult := X*Y*sELSE 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);
n n DIV 2
mult := (s * (m1 * 10 + (m1+m2+m3)* 10 + m3));END
END;
Hm Mult nhn vo ba tham s, trong X v Y l hai s nguyn ln (kiuBig_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 vicchia i cc s nguyn ln X v Y. m1, m2 v m3 l cc bin thuc kiuBig_integer lu tr cc s nguyn ln trung gian trong cng thc (III.3), c th lm1 = 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 Xm.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 snguyn 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 cntrong nhiu lnh vc khc ca cuc sng. Chng hn xt vic xp lch thi u ththao 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 chu nhiu nht mt trn mi ngy. Yu cu l xpmt lch thi u sao cho s ngy thi u l t nht. Ta d dng thy rng tng s trn
u ca ton gii l2
1)-n(n. Nh vy nu n l mt s chn th ta c th sp n/2 cp
thi u trong mt ngy v do cn t nht n-1 ngy. Ngc li nu n l mt s lth 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 sn = 2kth 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 vcc ct c nh s t 1 n n-1, trong dng i biu din cho u th i, ct j biudin 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
54/109
Gii thut Kthut thit k gii thut
Chin lc chia tr xy dng lch thi u nh sau: sp lch cho n u th, ta ssp 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 cs l sp lch thi u cho 2 u th. Hai uth ny s thi u mt trn trong mt ngy, lch thi u cho h tht d s p. Khkhn chnh l ch t cc lch thi u cho hai u th, ta tng hp li c lchthi 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 uth nh sau: Lch thi u cho 4 u th s l mt bng 4 dng, 3 ct. Lch thi ucho 2 u th 1 v 2 trong ngy th 1 chnh l lch thi u ca hai u th (bi toncs). Nh vy ta c (1,1) = 2 v (2,1) = 1. Tng t ta c lch thi u cho2 u th 3 v 4 trong ngy th 1. Ngha l (3,1) =4 v (4,1) = 3. (Ta c ththy rng (3,1) = (1,1) + 2 v (4,1) = (2,1) + 2 ). By gi hon thnh lchthi 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 llch thi u trong 3 ngy u ca 4 u th t 1 n 4. Cc ca gc di bn tris bng cc tng ng ca gc trn bn tri cng vi 4. y chnh l lch thi ucho 4 u th 5, 6, 7 v 8 trong 3 ngy u. By gichng ta hon thnh vic splch 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 4 u th 8 u th1 1 2 3 1 2 3 4 5 6 7
1 2 1 2 3 4 1 2 3 4 5 6 7 82 1 2 1 4 3 2 1 4 3 6 5 8 7 3 4 1 2 3 4 1 2 7 8 5 6 4 3 2 1 4 3 2 1 8 7 6 5 5 6 7 8 1 2 3 4 6 5 8 7 2 1 4 3 7 8 5 6 3 4 1 2 8 7 6 5 4 3 2 1
Hnh 3-1: Lch thiu ca 2, 4 v 8u th
3.2.5 Bi ton con cn bng (Balancing Subproblems)
i vi kthut chia tr, ni chung s tt hn nu ta chia bi ton cn gii thnhcc bi ton con c kch thc gn bng nhau. V d, sp xp trn (MergeSort) phnchia bi ton thnh hai bi ton con c cng kch thc n/2 v do thi gian can 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 kchthc xp x bng nhau th hiu sut s cao hn.
Nguyn Vn Linh Trang 49
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
55/109
Gii thut Kthut thit k gii thut
3.3 KTHUT 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 phngn.
Cn tm mt phng n X D sao cho hm f(X) t min (max). Phngn X nh thc gi l phng n ti u.
Ta c th tm thy phng n ti u bng phng php vt cn ngha l xt tt ccc 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 nbng phng php vt cn ta c th cn mt thi gian m.
Cc phn tip theo ca chng ny s trnh by mt s kthut gii bi ton ti ut hp m thi gian c th chp nhn c.
3.3.2 Ni dung kthut tham n
Tham n hiu mt cch dn gian l: trong mt mm c nhiu mn n, mn nongon nht ta sn trc v n cho ht mn th chuyn sang mn ngon th hai, lin ht mn ngon th hai ny v chuyn sang mn ngon th ba
Kthut tham n thng c vn dng gii bi ton ti u t hp bng cch xydng mt phng n X. Phng n X c xy dng bng cch la chn tngthnh phn Xi ca X cho n khi hon chnh ( n thnh phn). Vi mi Xi, ta schn Xi ti u. Vi cch ny th c thbc cui cng ta khng cn g chnm 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 nichungchng ta cht c mt phng n tt chcha hn l ti u.
C rt nhiu bi ton m ta c th gii bng kthut ny, sau y l mt s v d.
3.3.3 Bi ton tr tin ca my rt tin tng ATM.Trong my rt tin tng ATM, ngn hng chun b sn cc loi tin c mnhgi 100.000 ng, 50.000 ng, 20.000 ng v 10.000 ng. Gi s mi loi tinu 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 ntr tin sao cho tr n ng v s tgiy bc phi tr l t nht.
Gi X = (X1, X2, X3, X4) l mt phng n tr tin, trong X1 l s tgiy bcmnh gi 100.000 ng, X2 l s tgiy bc mnh gi 50.000 ng, X3 l s tgiy bc mnh gi 20.000 ng v X4 l s tgiy 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
Smith Nguyen Studio.
-
8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio
56/109
Gii thut Kthut thit k gii thut
p dng kthut tham n gii bi ton ny l: c s tgiy bc phi tr (X1 +X2 + X3 + X4) nh nht th cc tgiy bc mnh gi ln phi c chn nhiunht.
Trc ht ta chn ti a cc tgiy 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 loigiy bc 50.000 ng
V d khch hng cn rt 1.290.000 ng (n = 1290000), phng n tr tin nhsau:
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