bai giang ctdl gt
TRANSCRIPT
-
I HC NNG
TRNG CAO NG CNG NGH THNG TIN
BI GING
CU TRC D LIU V
GII THT
NGUYN C HIN
A NNG 2007
-
4 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
MC LC MC LC................................................................................................................................................................. 4
TNG QUAN V THUT TON V CU TRC D LIU ............................................................................ 6 I. CC BC C BN KHI GII QUYT BI TON TIN HC .............................................................. 6
I.1. Xc nh bi ton ............................................................................................................................... 6 I.2. Xc inh cu trc d liu ................................................................................................................... 6 I.3. Tm thut ton .................................................................................................................................... 7 I.4. Lp trnh............................................................................................................................................. 8 I.5. Kim th ............................................................................................................................................. 9 I.6. Ti u ho chng trnh .................................................................................................................. 10
II. DIN T THUT TON.......................................................................................................................... 11 II.1. Dng lu ...................................................................................................................................... 11 II.2. Dng ngn ng lp trnh c th ....................................................................................................... 12 II.3. Dng ngn ng gi........................................................................................................................... 13
III. THUT TON QUI ....................................................................................................................... 16 III.1. Khi nim qui .............................................................................................................................. 16 III.2. Thut ton qui ............................................................................................................................. 16 III.3. Hiu lc ca qui .......................................................................................................................... 18 III.4. Thut ton quay lui .......................................................................................................................... 19
IV. NH GI THUT TON................................................................................................................. 20 IV.1. Phn tch thut ton ......................................................................................................................... 20 IV.2. Xc inh phc tp tnh ton ca thut ton ................................................................................ 22
DANH SCH.......................................................................................................................................................... 26 I. KHI NIM DANH SCH....................................................................................................................... 26 II. BIU DIN DANH SCH TRN MY TNH ........................................................................................ 27 III. MNG V DANH SCH C........................................................................................................... 27
III.1. Ci t mng .................................................................................................................................... 27 III.2. Cc thao tc trn danh sch............................................................................................................. 27
IV. DANH SCH LIN KT ..................................................................................................................... 30 IV.1. Danh sch ni n ........................................................................................................................... 31 IV.2. Danh sch ni vng.......................................................................................................................... 34 IV.3. Danh sch ni kp ............................................................................................................................ 37 IV.4. a danh sch.................................................................................................................................... 39
V. NGN XP ............................................................................................................................................... 39 V.1. nh ngha ngn xp ........................................................................................................................ 39 V.2. Ci t ngn xp bng mng............................................................................................................ 40 V.3. Ci t ngn xp bng danh sch lin kt n ................................................................................ 42 V.4. ng dng ngn xp kh qui.................................................................................................... 43
VI. HNG I ........................................................................................................................................... 45 VI.1. nh ngha hng i ........................................................................................................................ 45 VI.2. Ci t hng i bng mng............................................................................................................ 46 VI.3. Ci t hng i bng danh sch lin kt n................................................................................. 48
CY ......................................................................................................................................................................... 50 I. MT S KHI NIM V CY................................................................................................................ 50
I.1. Khi nim ......................................................................................................................................... 50 I.2. Biu din cy .................................................................................................................................... 51 I.3. Duyt cy.......................................................................................................................................... 53
II. CY NH PHN ....................................................................................................................................... 54 II.1. nh ngha........................................................................................................................................ 54 II.2. Ci t cy nh phn ........................................................................................................................ 55 II.3. Cc php duyt cy nh phn ........................................................................................................... 57
III. CY BIU DIN BIU THC............................................................................................................ 58
-
Cu trc d liu v Gii thut 5
TRNG CAO NG CNG NGH THNG TIN
III.1. Biu din biu thc di dng cy................................................................................................... 58 III.2. Cc k php dng cho biu thc ...................................................................................................... 59 III.3. Mt s thut ton i vi biu thc.................................................................................................. 60
IV. CY TNG QUT .............................................................................................................................. 62 IV.1. Cy K phn.................................................................................................................................... 63 IV.2. Cy tng qut ................................................................................................................................... 63
THUT TON SP XP ..................................................................................................................................... 66 I. BI TON SP XP ................................................................................................................................ 66 II. MT S THUT TON SP XP N GIN...................................................................................... 68
II.1. Sp xp kiu chn............................................................................................................................. 68 II.2. Sp xp kiu ni bt ......................................................................................................................... 69 II.3. Sp xp kiu chn ............................................................................................................................. 69
III. SP XP KIU PHN ON (QUICK SORT) ...................................................................................... 70 IV. SP XP KIU VUN NG............................................................................................................... 72 V. MT S THUT TON KHC .............................................................................................................. 75
V.1. Phng php m ............................................................................................................................ 75 V.2. Phng php dng hng i............................................................................................................ 76 V.3. Phng php sp xp trn ............................................................................................................... 77
CC THUT TON TM KIM ........................................................................................................................... 80 I. BI TON TM KIM.............................................................................................................................. 80 II. TM KIM TUN T ............................................................................................................................... 80 III. TM KIM NH PHN......................................................................................................................... 81 IV. PHP BM (HASH)............................................................................................................................. 81 V. CY TM KIM NH PHN .................................................................................................................... 82
V.1. nh ngha........................................................................................................................................ 82 V.2. Ci t cy tm kim nh phn.......................................................................................................... 82
VI. CY TM KIM C S (RADIX SEARCH TREE RST)................................................................. 86 BIU DIN TH ............................................................................................................................................... 90
I. MT S KHI NIM............................................................................................................................... 90 II. CC CCH BIU DIN TH ............................................................................................................. 91
II.1. Biu din th bng ma trn k ..................................................................................................... 91 II.2. Biu din th bng danh sch cc nh k:.................................................................................. 93
III. CC PHP DUYT TH (TRAVERSALS OF GRAPH) .............................................................. 94 III.1. Duyt theo chiu su (depth-first search) ........................................................................................ 94 III.2. Duyt theo chiu rng (breadth-first search)................................................................................... 95
IV. MT S BI TON TRN TH ................................................................................................... 96 IV.1. Bi ton tm ung i ngn nht t mt nh ca th ................................................................. 97 IV.2. Tm ng i ngn nht gia tt c cc cp nh ........................................................................... 99
TI LIU THAM KHO ................................................................................................................................... 100
-
6 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
CHNG 1
TNG QUAN V THUT TON V CU TRC D LIU
I. CC BC C BN KHI GII QUYT BI TON TIN HC
I.1. Xc nh bi ton Vic xc nh bi ton tc l phi xc nh xem ta phi gii quyt vn g?, vi gi thit
no cho v li gii cn phi t nhng yu cu no. Input Process Output
(D liu vo X l Kt qu ra) i vi nhng bi ton tin hc ng dng trong thc t, li gii cn tm ch cn tt ti mc
no , thm ch l ti mc chp nhn c. Bi li gii tt nht i hi qu nhiu thi gian v chi ph.
V d: Khi ci t cc hm s phc tp trn my tnh. Nu tnh bng cch khai trin chui v hn
th chnh xc cao hn nhng thi gian chm hn hng t ln so vi phng php xp x. Trn thc t vic tnh ton lun lun cho php chp nhn mt sai s no nn cc hm s trong my tnh u c tnh bng phng php xp x ca gii tch s
Xc nh ng yu cu bi ton l rt quan trng bi n nh hng ti cch thc gii quyt v cht lng ca li gii. Mt bi ton thc t thng cho bi nhng thng tin kh m h v hnh thc, ta phi pht biu li mt cch chnh xc v cht ch hiu ng bi ton.
V d: Bi ton: Mt d n c n ngi tham gia tho lun, h mun chia thnh cc nhm v
mi nhm tho lun ring v mt phn ca d n. Nhm c bao nhiu ngi th c trnh ln by nhiu kin. Nu ly mi nhm mt kin em ghp li th c mt b kin trin khai d n. Hy tm cch chia s b kin cui cng thu c l ln nht.
Pht biu li: Cho mt s nguyn dng n, tm cc phn tch n thnh tng cc s nguyn dng sao cho tch ca cc s l ln nht.
Trn thc t, ta nn xt mt vi trng hp c th thng qua hiu c bi ton r hn v thy c cc thao tc cn phi tin hnh. i vi nhng bi ton n gin, i khi ch cn qua v d l ta c th a v mt bi ton quen thuc gii.
I.2. Xc inh cu trc d liu Kiu d liu (data type): kiu d liu ca mt bin l tp hp cc gi tr m bin c th
nhn. V d mt bin kiu Boolean ch c th nhn TRUE hoc FALSE m khng nhn gi tr no khc. Cc kiu d liu c bn (nh Integer, Char, Real, Boolean) c cung cp khc nhau trong cc ngn ng lp trnh khc nhau.
-
Cu trc d liu v Gii thut 7
TRNG CAO NG CNG NGH THNG TIN
Mt kiu d liu tru tng (abstract data type): l mt m hnh ton hc cng vi mt tp hp cc php ton trn n. C th ni kiu d liu tru tng l mt kiu d liu do chng ta nh ngha mc khi nim (conceptual), n cha c ci t c th bng mt ngn ng lp trnh. Nh dn ra trn, chng ta dng kiu d liu tru tng thit k gii thut, nhng ci t gii thut vo mt ngn ng lp trnh chng ta phi tm cch biu din kiu d liu tru tng trn cc kiu d liu v ton t do ngn ng lp trnh cung cp.
Cu trc d liu: Tp hp cc bin c th thuc mt hoc vi kiu d liu khc nhau c ni kt vi nhau to thnh nhng phn t. Cc phn t ny chnh l thnh phn c bn xy dng nn cu trc d liu. Cu trc d liu l nguyn tc kt ni cc phn t ny vi nhau trong b nh khi c biu din bng mt ngn ng lp trnh c th.
Khi gii mt bi ton, ta cn phi nh ngha tp hp d liu biu din tnh trng c th. Vic la chn ny tu thuc vo vn cn gii quyt v nhng thao tc s tin hnh trn d liu vo. C nhng thut ton ch thch ng vi mt cch t chc d liu nht nh, i vi nhng cch t chc d liu khc th s km hiu qu hoc khng th thc hin c. Chnh v vy nn bc xy dng cu trc d liu khng th tch ri bc tm kim thut ton gii quyt vn .
Cc tiu chun khi la chn cu trc d liu Cu trc d liu trc ht phi biu din c y cc thng tin nhp v xut ca bi
ton Cu trc d liu phi ph hp vi cc thao tc ca thut ton m ta la chn gii
quyt bi ton. Cu trc d liu phi ci t c trn my tnh vi ngn ng lp trnh ang s dng i vi mt s bi ton, trc khi t chc d liu ta phi vit mt on chng trnh nh
kho st xem d liu cn lu tr ln ti mc no.
I.3. Tm thut ton Thut ton v Cu trc d liu c mi quan h mt thit vi nhau. Do , khi xy dng mt
cu trc d liu th i i vi vic xc lp cc thut ton x l trn cu trc d liu .
Data Structure + Algorithm =Program Thut ton l mt h thng cht ch v r rng cc quy tc nhm xc nh mt dy thao tc
trn cu trc d liu sao cho: Vi mt b d liu vo, sau mt s hu hn bc thc hin cc thao tc ch ra, ta t c mc tiu nh.
Cc c trng ca thut ton
1. Tnh n nh mi bc ca thut ton, cc thao tc phi ht sc r rng, khng gy nn s nhp nhng,
ln xn, tu tin, a ngha. Thc hin ng cc bc ca thut ton th vi mt d liu vo, ch cho duy nht mt kt qu ra.
2. Tnh dng Thut ton khng c ri vo qu trnh v hn, phi dng li v cho kt qu sau mt s
hu hn bc.
3. Tnh ng
-
8 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Sau khi thc hin tt c cc bc ca thut ton theo ng qu trnh nh, ta phi c kt qu mong mun vi mi b d liu u vo. Kt qu c kim chng bng yu cu bi ton.
4. Tnh ph dng Thut ton phi d sa i thch ng c vi bt k bi ton no trong mt lp cc bi
ton v c th lm vic trn cc d liu khc nhau.
5. Tnh kh thi a) Kch thc phi nh: V d: Mt thut ton s c tnh hiu qu bng 0 nu lng b
nh m n yu cu vt qu kh nng lu tr ca h thng my tnh. b) Thut ton phi c my tnh thc hin trong thi gian cho php, iu ny khc vi li
gii ton (Ch cn chng minh l kt thc sau hu hn bc). V d nh xp thi kho biu cho mt hc k th khng th cho my tnh chy ti hc k sau mi ra c.
c) Phi d hiu v d ci t. V d: Input: 2 s nguyn t nhin a v b khng ng thi bng 0 Output: c s chung ln nht ca a v b Thut ton s tin hnh c m t nh sau: (Thut ton Euclide) Bc 1 (Input): Nhp a v b: S t nhin Bc 2: Nu b 0 th chuyn sang bc 3, nu khng th b qua bc 3, i lm bc 4 Bc 3: t r := a mod b; t a := b; t b := r; Quay tr li bc 2. Bc 4 (Output): Kt lun c s chung ln nht phi tm l gi tr ca a. Kt thc
thut ton. Mt s vn cn lu
Khi m t thut ton bng ngn ng t nhin, ta khng cn phi qu chi tit cc bc v tin trnh thc hin m ch cn m t mt cch hnh thc chuyn thnh ngn ng lp trnh. Vit s cc thut ton quy l mt v d.
i vi nhng thut ton phc tp v nng v tnh ton, cc bc v cc cng thc nn m t mt cch tng minh v ch thch r rng khi lp trnh ta c th nhanh chng tra cu.
i vi nhng thut ton kinh in th phi thuc. Khi gii mt bi ton ln trong mt thi gian gii hn, ta ch phi thit k tng th cn nhng ch thuc th c vic lp rp vo. Tnh ng n ca nhng m-un thuc ta khng cn phi quan tm na m tp trung gii quyt cc phn khc.
I.4. Lp trnh Sau khi c thut ton, ta phi tin hnh lp trnh th hin thut ton . Mun lp trnh
t hiu qu cao, cn phi c k thut lp trnh tt. K thut lp trnh tt th hin k nng vit chng trnh, kh nng g ri v thao tc nhanh. Lp trnh tt khng phi ch cn nm vng ngn ng lp trnh l , phi bit cch vit chng trnh uyn chuyn, khn kho v pht trin dn dn chuyn cc tng ra thnh chng trnh hon chnh. Kinh nghim cho thy mt thut ton hay nhng do ci t vng v nn khi chy li cho kt qu sai hoc tc chm.
-
Cu trc d liu v Gii thut 9
TRNG CAO NG CNG NGH THNG TIN
Thng thng, ta khng nn c th ho ngay ton b chng trnh m nn tin hnh theo phng php tinh ch tng bc (Stepwise refinement):
Ban u, chng trnh c th hin bng ngn ng t nhin, th hin thut ton vi cc bc tng th, mi bc nu ln mt cng vic phi thc hin.
Mt cng vic n gin hoc l mt on chng trnh c hc thuc th ta tin hnh vit m lnh ngay bng ngn ng lp trnh.
Mt cng vic phc tp th ta li chia ra thnh nhng cng vic nh hn li tip tc vi nhng cng vic nh hn .
Trong qu trnh tinh ch tng bc, ta phi a ra nhng biu din d liu. Nh vy cng vi s tinh ch cc cng vic, d liu cng c tinh ch dn, c cu trc hn, th hin r hn mi lin h gia cc d liu.
Phng php tinh ch tng bc l mt th hin ca t duy gii quyt vn t trn xung, gip cho ngi lp trnh c c mt nh hng th hin trong phong cch vit chng trnh. Trnh vic m mm, xo i vit li nhiu ln, bin chng trnh thnh t giy nhp.
I.5. Kim th 1. Chy th v tm li
Chng trnh l do con ngi vit ra, m l con ngi th ai cng c th nhm ln. Mt chng trnh vit xong cha chc chy c ngay trn my tnh cho ra kt qu mong mun. K nng tm li, sa li, iu chnh li chng trnh cng l mt k nng quan trng ca ngi lp trnh. K nng ny ch c c bng kinh nghim tm v sa cha li ca chnh mnh. C ba loi li:
Li c php: Li ny hay gp nht nhng li d sa nht, ch cn nm vng ngn ng lp trnh l . Mt ngi c coi l khng bit lp trnh nu khng bit sa li c php.
Li ci t: Vic ci t th hin khng ng thut ton nh, i vi li ny th phi xem li tng th chng trnh, kt hp vi cc chc nng g ri sa li cho ng.
Li thut ton: Li ny t gp nht nhng nguy him nht, nu nh th phi iu chnh li thut ton, nu nng th c khi phi loi b hon ton thut ton sai v lm li t u.
2. Xy dng cc b test C nhiu chng trnh rt kh kim tra tnh ng n. Nht l khi ta khng bit kt qu
ng l th no?. V vy nu nh chng trnh vn chy ra kt qu (khng bit ng sai th no) th vic tm li rt kh khn. Khi ta nn lm cc b test th chng trnh ca mnh.
Cc b test nn t trong cc file vn bn, bi vic to mt file vn bn rt nhanh v mi ln chy th ch cn thay tn file d liu vo l xong, khng cn g li b test t bn phm. Kinh nghim lm cc b test l:
Bt u vi mt b test nh, n gin, lm bng tay cng c c p s so snh vi kt qu chng trnh chy ra.
Tip theo vn l cc b test nh, nhng cha cc gi tr c bit hoc tm thng. Kinh nghim cho thy y l nhng test d sai nht.
Cc b test phi a dng, trnh s lp i lp li cc b test tng t. C mt vi test ln ch kim tra tnh chu ng ca chng trnh m thi. Kt qu c
ng hay khng th trong a s trng hp, ta khng th kim chng c vi test ny.
-
10 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Lu rng chng trnh chy qua c ht cc test khng c ngha l chng trnh ng. Bi c th ta cha xy dng c b test lm cho chng trnh chy sai. V vy nu c th, ta nn tm cch chng minh tnh ng n ca thut ton v chng trnh, iu ny thng rt kh.
I.6. Ti u ho chng trnh Mt chng trnh chy ng khng c ngha l vic lp trnh xong, ta phi sa i li
mt vi chi tit chng trnh c th chy nhanh hn, hiu qu hn. Thng thng, trc khi kim th th ta nn t mc tiu vit chng trnh sao cho n gin, min sao chy ra kt qu ng l c, sau khi ti u chng trnh, ta xem li nhng ch no vit cha tt th ti u li m lnh chng trnh ngn hn, chy nhanh hn. Khng nn vit ti u ti u m n , bi chng trnh c m lnh ti u thng phc tp v kh kim sot.
Ta nn ti u chng trnh theo cc tiu chun sau:
1. Tnh tin cy Chng trnh phi chy ng nh d nh, m t ng mt gii thut ng. Thng thng
khi vit chng trnh, ta lun c thi quen kim tra tnh ng n ca cc bc mi khi c th.
2. Tnh uyn chuyn Chng trnh phi d sa i. Bi t c chng trnh no vit ra hon ho ngay c m
vn cn phi sa i li. Chng trnh vit d sa i s lm gim bt cng sc ca lp trnh vin khi pht trin chng trnh.
3. Tnh trong sng Chng trnh vit ra phi d c d hiu, sau mt thi gian di, khi c li cn hiu
mnh lm ci g?. nu c iu kin th cn c th sa sai (nu pht hin li mi), ci tin hay bin i c chng trnh gii quyt bi ton khc. Tnh trong sng ca chng trnh ph thuc rt nhiu vo cng c lp trnh v phong cch lp trnh.
4. Tnh hu hiu Chng trnh phi chy nhanh v t tn b nh, tc l tit kim c c v khng gian v
thi gian. c mt chng trnh hu hiu, cn phi c gii thut tt v nhng tiu xo khi lp trnh. Tuy nhin, vic p dng qu nhiu tiu xo c th khin chng trnh tr nn ri rm, kh hiu khi sa i. Tiu chun hu hiu nn dng li mc chp nhn c, khng quan trng bng ba tiu chun trn. Bi phn cng pht trin rt nhanh, yu cu hu hiu khng cn phi t ra qu nng.
T nhng phn tch trn, chng ta nhn thy rng vic lm ra mt chng trnh i hi rt nhiu cng on v tiu tn kh nhiu cng sc. Ch mt cng on khng hp l s lm tng chi ph vit chng trnh. Ngh ra cch gii quyt vn kh, bin tng thnh hin thc cng khng d cht no.
Nhng cu trc d liu v gii thut cp ti trong chuyn ny l nhng kin thc rt ph thng, mt ngi hc lp trnh khng sm th mun cng phi bit ti. Ch hy vng rng khi hc xong chuyn ny, qua nhng cu trc d liu v gii thut ht sc mu mc, chng ta rt ra c bi hc kinh nghim: ng bao gi vit chng trnh khi m cha suy xt k v gii thut v nhng d liu cn thao tc, bi nh vy ta d mc phi hai sai lm trm trng: hoc l sai v gii thut, hoc l gii thut khng th trin khai ni trn mt cu trc d liu
-
Cu trc d liu v Gii thut 11
TRNG CAO NG CNG NGH THNG TIN
khng ph hp. Ch cn mc mt trong hai li thi th nguy c sp ton b chng trnh l hon ton c th, cng c cha cng b ri, kh nng hu nh chc chn l phi lm li t u(*).
II. DIN T THUT TON
II.1.Dng lu Lu thut ton l cc hnh v theo nhng qui nh no , c kt hp li nhm m t
li qu trnh thc hin ca thut ton mt cch trc quan nht. Ngi ta dng cc hnh khi ghp ni thnh lu c th hin thut ton. V d: Nhp 2 s a,b nu a>b th in kt qu bi s chung nh nht ca a v b, ngc li nhp li
a,b. V lu m phng tin trnh lm vic ca thut ton. Lu thut ton
i vi nhng bi ton nh th vic dng biu thut ton khng my kh khn, nhng
i vi nhng bi ton ln th vic dng lu thut ton biu din gii thut th s gp mt s tr ngi nht nh v khng gian biu din. Chnh v hn ch ny nn ngi ta t dng lu thut ton biu din nhng bi ton ln phc tp.
Begin
End.
a,b
a>b
Temp= UCLN(a,b)
BC = a*b/Temp
BC
-
12 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
II.2. Dng ngn ng lp trnh c th Vic dng lu biu din thut ton bc l nhng nhc im nht nh nh nu
trn, nn ngi lp trnh cn thng dng cc ngn ng lp trnh bc cao nh PASCAL, C, C++, JAVA, biu din thut ton. Xt v mt k thut, nu dng ngn ng lp trnh c th biu din thut ton, th thng qua m lnh ca chng trnh, ngi c nu bit ngn ng lp trnh ang ci t s kim tra c kt qu, v c th d ra hng i ca thut ton m khng phi thng qua cc bc ci t.
Cng vi v d trn, nu ta dng ngn ng lp trnh PASCAL biu din gii thut th n c th hin nh sau:
program TIM_BOI_CHUNG_NHO_NHAT; function UCLN(a,b:word):word; var r,q:word; begin while(ab)do begin if(a>b)then a:= a - b else b:=b - a; end; UCLN:=a; end; var a,b,BC:word; begin write('a=');readln(a);write('b=');readln(b); if(a>b)then begin BC:=(a*b div UCLN(a,b)); write('BCNN[',a,',',b,']=',BC); end else write('reInput'); readln; end.
V nu dng ngn ng lp trnh C biu din kt qu s nh sau: #include #include //program TIM_BOI_CHUNG_NHO_NHAT; int UCLN(int a, int b) { while(a != b) { if(a > b) a = a - b; else b = b - a; } return a; } int main() { int a, b, BC; printf("a=");scanf("%d",&a); printf("b=");scanf("%d",&b); if(a>b) { BC = ((int)a*b/UCLN(a,b)); printf("BCNN[%d,%d]=%d",a,b,BC); } else printf(" nhap lai:");
-
Cu trc d liu v Gii thut 13
TRNG CAO NG CNG NGH THNG TIN
getch(); return 0; }
Dng ngn ng lp trnh c th biu din gii thut phi tha nhn l d kim tra kt qu, nhng mt khc n yu cu ngi c phi hiu v ngn ng c th hin, m iu ny khng phi lc no cng sn c.
II.3. Dng ngn ng gi Cch biu din bng lu thut ton nh trn xem ra cng c nhng hn ch nht nh v
khng gian biu din c bit i vi nhng bi ton ln v nhiu chc nng x l phc tp, cn nu dng thun ty mt ngn ng cp cao no nh PASCAL, C, C++, JAVA, biu din, th ta s gp mt s hn ch sau:
Phi tun th cc qui tc cht ch v c php ca ngn ng , khin cho vic trnh by gii thut v cu trc d liu tr nn nng n, g b v cng nhc.
Phi ph thuc vo cu trc d liu tin nh ca ngn ng nn c lc khng th hin c y cc v cu trc m ta mun biu t.
Ngn ng no c chn cng cha hn c mi ngi u thch v mun s dng. V vy, ngi ta dng ngn ng th hn mm do hn, gn gi vi ngn ng t nhin hn
v d s dng l ngn ng gi m, ngn ng gi m l ngn ng t nhin kt hp vi cc t kha ngn ng lp trnh, vi mt mc linh hot nht nh, khng qu g b, khng cu n v c php ca ngn ng lp trnh, nn ngi ta thng hay s dng. Tuy nhin, thng nht nhau trong cch biu din ngi ta cng a ra mt s qui cch c php v c xem nh qui nh chung.
Cc kiu d liu c s: integer, char, boolean, float. Cu trc ca mt chng trnh
Lu : 9 Phn ghi ch v thuyt minh: c t sau du // hoc trong cp du /* ..*/ 9 Nu chng trnh gm nhiu bc c th nh s th t mi bc km theo li
gii thch V d: tnh n!
Program TinhGiaiThua 1.Read(n) //nhp n 2.//tnh p=n! p := 1 For i :=1 To n P:= p*i 3. Write(p) //in kt qu Return
Cc k t:
Program S1 S2 Sn Return.
-
14 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Cc php ton s hc: +, -, *, /, (lu tha), Div (chia nguyn), Mod (chia ly phn d) Cc k t quan h: >, =, 1 9 bc bi cp du {} 9 L lnh khi c iu kin no xy ra (thuc vo lnh if hoc vng lp)
Lnh nhp: Read(bin) Lnh xut: Write(biu thc hoc ni dung) or Write(biu thc hoc ni dung) Lnh r nhnh 9 C php 1: If Then Lnh 9 C php 2: If Then Lnh 1 Else Lnh 2 9 C php 3 (lnh c nhiu la chn)
Case Of : Lnh 1 : Lnh 2 : Lnh n [Else Lnh n+1] EndCase
Lnh vng lp 9 Vng lp FOR
For To [Step ] Lnh
Ch : nu [step ] khng c th hiu bin := bin + 1 n v 9 Vng lp WHILE
While Do Lnh
9 Vng Lp DOWHILE Do{ Lnh }While
9 Ngoi ra dng vng lp, c th s dng t kho break trong vng lp mun dng
Chng trnh con Dng hm
Func [(Danh sch tham s hnh thc)] S1 S2
-
Cu trc d liu v Gii thut 15
TRNG CAO NG CNG NGH THNG TIN
Sn tn_hm := Return
V d 1.2: Tnh tng a1 + a2 + +an Func Tong(a,n) S := 0 For I := 1 To n S := S+ai Tong := S Return
Dng chng trnh con Proc [(danh sch tham s hnh thc)] S1 S2 Sn Return
V d 1.3: Xy dng chng trnh con hon v 2 gi tr Proc HoanVi(a,b) tam := a
a := b b := tam
Return Ch : 9 Trng hp l dng hm th phi c lnh: tn_hm := 9 Khi gi hm th tn hm nm bn phi php gn 9 Khi gi chng trnh con: Call 9 Bn trong chng trnh con c th s dng lnh Exit, Halt
Kiu d liu bn ghi Mi ngn ng u h tr cho vic xy dng cu trc bn ghi bng vic xy dng kiu d
liu mi t nhng kiu d liu c nh ngha kiu bn ghi
Typedef Kiu_Bn_Ghi=Record kiu__c_1 Trng_1 kiu__c_2 Trng_2 kiu__c_n Trng_n
End Record Truy cp vo tng trng th i ca kiu bn ghi
bin_kiu_bn_ghi (trng_i) V d: Xy dng kiu d liu im_Oxy lu tr mt im trong mt phng Oxy
typedef im_Oxy=Record integer ox,oy End Record
To im M(1,2) trong mt phng Oxy: im_Oxy M M(ox) := 1, M(oy) := 2
-
16 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
III. THUT TON QUI
III.1.Khi nim qui Ta ni mt i tng l quy nu n c nh ngha qua chnh n hoc mt i tng
khc cng dng vi chnh n bng quy np. V d: t hai chic gng cu i din nhau. Trong chic gng th nht cha hnh chic
gng th hai. Chic gng th hai li cha hnh chic gng th nht nn tt nhin n cha li hnh nh ca chnh n trong chic gng th nht... mt gc nhn hp l, ta c th thy mt dy nh v hn ca c hai chic gng.
Mt v d khc l nu ngi ta pht hnh trc tip pht thanh vin ngi bn my v tuyn truyn hnh, trn mn hnh ca my ny li c chnh hnh nh ca pht thanh vin ngi bn my v tuyn truyn hnh v c nh th...
Trong ton hc, ta cng hay gp cc nh ngha quy: Giai tha ca n (n!): Nu n = 0 th n! = 1; nu n > 0 th n! = n.(n-1)! S phn t ca mt tp hp hu hn S (S): Nu S = th S= 0; Nu S th tt c
mt phn t x S, khi S = S\{x} + 1. y l phng php nh ngha tp cc s t nhin.
Mt nh ngha qui bao gi cng c mt im dng hoc mt trng hp c bit no xc nh gi tr n gin nht ca nh ngha qui. Trng hp ny c gi l trng hp suy bin.
III.2. Thut ton qui Nu li gii ca mt bi ton P c thc hin bng li gii ca bi ton P' c dng ging
nh P th l mt li gii quy. Gii thut tng ng vi li gii nh vy gi l gii thut quy. Mi nghe th c v hi l nhng im mu cht cn lu l: P' tuy c dng ging nh P, nhng theo mt ngha no , n phi "nh" hn P, d gii hn P v vic gii n khng cn dng n P.
nh ngha mt hm quy hay th tc quy gm hai phn: Phn neo (anchor) hay cn gi l Suy bin: Phn ny c thc hin khi m cng vic
qu n gin, c th gii trc tip ch khng cn phi nh n mt bi ton con no c. Phn quy: Trong trng hp bi ton cha th gii c bng phn neo, ta xc nh
nhng bi ton con v gi quy gii nhng bi ton con . Khi c li gii (p s) ca nhng bi ton con ri th phi hp chng li gii bi ton ang quan tm.
Phn quy th hin tnh "quy np" ca li gii. Phn neo cng rt quan trng bi n quyt nh ti tnh dng ca li gii.
V d: cho chng trnh con qui sau: Proc R(x,y) If y>0 Then { x := x+1 Y := y-1 write(x, ,y) Call R(x,y) write(x, ,y) } Return
-
Cu trc d liu v Gii thut 17
TRNG CAO NG CNG NGH THNG TIN
Khi gi chng trnh con, b dch cp pht mt vng nh c c ch hot ng nh Stack. Khi mt chng trnh con c gi th a ch ca lnh ngay sau hm v ni dung hin ti ca cc bin s c a vo vng nh v c nh th cho n khi gp trng hp suy bin th s ly a ch u tin trong vng nh v gi tr cc bin ra thc hin v qu trnh li tip tc cho n khi vng nh rng.
Vi lnh Call R(5,3) th b nh hot ng nh sau ( cho tin ta dng b nh lu tr ngay lnh sau hm c gi)
R(5,3) R(6,2) R(7,1) R(8,0) dng Mn hnh
ci t qui tin hnh qua cc bc sau: Xc nh u vo v u ra t xc nh tn chng trnh con v tham s hnh thc
ca n Xc nh trng hp suy bin, trng hp c bit ca bi ton Phn tch bi ton xc nh trng hp chung ca bi ton (a bi ton v dng
cng loi nhng nh hn) V d: nh ngha qui n! nh sau:
0!=1 n!=(n-1)! * n
Nh vy, tnh n! = (n-1)!*n=(n-2)!*(n-1)*n=0!*1*2*.*n=1*1*2**n Func GiaiThua(n) If (n=0) Then GiaiThua := 1 Else GiaiThua := n*GiaiThua(n-1) Return
V d: Xut o ngc mt s nguyn dng ra mn hnh
Thut ton qui ci t nh sau:
R(5,3)
R(6,2) write(6,2)
R(7,1) write(7,1)write(6,2)
R(8,0) write(8,0)write(7,1)write(6,2)
write(8,0) write(7,1) write(6,2)
62 71 80 80 71 62
DS(0) suy bin,dng
DS(1234)
DS(123)
DS(12)
DS(1)
Div 10
Div 10
Div 10
Div 10
4
Mod 10
Mod 10
Mod 10
Mod 10
3
2
1
Mn hnh
-
18 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Proc XuatDaoSo(n) If n >0 Then { write( n Mod 10) Call XuatDaoSo ( n Div 10) } Return
V d: Bi ton thp H Ni c pht biu nh sau: C ba cc A,B,C. Khi u cc A c mt s a xp theo th t nh dn ln trn nh. Bi
ton t ra l phi chuyn ton b chng a t A sang C. Mi ln thc hin chuyn mt a t mt cc sang mt cc khc v khng c t a ln nm trn a nh.
Phn tch bi ton:
Trng hp 1 a: Chuyn thng t A sang C. y l trng hp suy bin Trng hp 2 a: Chuyn 1 a t A sang B
Chuyn 1 a t A sang C Chuyn 1 a t B sang C
Trng hp chung n>1 a. Ta coi n-1 a trn nh l 1 a v ta p dng trong trng hp 2 a
Chuyn n-1 a t A sang B, dng cc C lm trung gian Chuyn 1 a t A sang C Chuyn n-1 a t B sang C, dng cc A lm trung gian
Thut ton c lp nh sau: Proc HaNoi(n,A,B,C) // Chuyn n a t cc A sang cc B If n=1 Then chuyn (A,,C) Else { Call HaNoi(n-1, A, C, B) Call HaNoi(1, A, B, C) Call HaNoi(n-1, B, A, C) } Return
III.3. Hiu lc ca qui Qua cc v d trn, ta c th thy quy l mt cng c mnh gii cc bi ton. C
nhng bi ton m bn cnh gii thut quy vn c nhng gii thut lp kh n gin v hu hiu. Chng hn bi ton tnh giai tha hay xut o ngc s nguyn. Tuy vy, quy vn c vai tr xng ng ca n, c nhiu bi ton m vic thit k gii thut quy n gin hn nhiu so vi li gii lp v trong mt s trng hp chng trnh quy hot ng nhanh hn chng trnh vit khng c quy.
-
Cu trc d liu v Gii thut 19
TRNG CAO NG CNG NGH THNG TIN
C mt mi quan h khng kht gia quy v quy np ton hc. Cch gii quy cho mt bi ton da trn vic nh r li gii cho trng hp suy bin (neo) ri thit k lm sao li gii ca bi ton c suy ra t li gii ca bi ton nh hn cng loi nh t. Tng t nh vy, quy np ton hc chng minh mt tnh cht no ng vi s t nhin cng bng cch chng minh tnh cht ng vi mt s trng hp c s (thng ngi ta chng minh n ng vi 0 hay ng vi 1) v sau chng minh tnh cht s ng vi n bt k nu n ng vi mi s t nhin nh hn n. Do ta khng ly lm ngc nhin khi thy quy np ton hc c dng chng minh cc tnh cht c lin quan ti gii thut quy.
Chng hn: Chng minh s php chuyn a gii bi ton Thp H Ni vi n a l 2n-1: R rng l tnh cht ny ng vi n = 1, bi ta cn 21 - 1 = 1 ln chuyn a thc
hin yu cu Vi n > 1; Gi s rng chuyn n - 1 a gia hai v tr ta cn 2n-1 - 1 php chuyn
a, khi chuyn n a t v tr x sang v tr y, nhn vo gii thut quy ta c th thy rng trong trng hp ny n cn (2n-1 - 1) + 1 + (2n-1 - 1) = 2n - 1 php chuyn a. Tnh cht c chng minh ng vi n
Vy th cng thc ny s ng vi mi n. Tht ng tic nu nh chng ta phi lp trnh vi mt cng c khng cho php quy,
nhng nh vy khng c ngha l ta b tay trc mt bi ton mang tnh quy. Mi gii thut quy u c cch thay th bng mt gii thut khng quy (kh quy), c th ni c nh vy bi tt c cc chng trnh con quy s u c trnh dch chuyn thnh nhng m lnh khng quy trc khi giao cho my tnh thc hin.
Vic tm hiu cch kh quy mt cch "my mc" nh cc chng trnh dch th ch cn hiu r c ch xp chng ca cc th tc trong mt dy chuyn gi quy l c th lm c. Nhng mun kh quy mt cch tinh t th phi tu thuc vo tng bi ton m kh quy cho kho. Khng phi tm u xa, nhng k thut gii cng thc truy hi bng quy hoch ng l v d cho thy tnh ngh thut trong nhng cch tip cn bi ton mang bn cht quy tm ra mt gii thut khng quy y hiu qu.
III.4.Thut ton quay lui Gii thut quay lui c dng : Duyt qua tt c cc trng hp xc nh cc b x1,
x2,,xn tho mn iu kin B no . Phng php: gi s xc nh c i-1 thnh phn (x1, x2, ,xi-1), cn xc nh thnh
phn xi. Ta duyt tt c cc kh nng j c th c c cho xi. c 2 trng hp xy ra: Nu tn ti 1 kh nng j th ta xc nh xi theo j. Nu i l trng thi cui th c 1 kt
qu, cn nu i khng phi trng thi cui th i xc nh thnh phn xi+1 Nu khng tn ti kh nng j no th ta quay li xc nh thnh phn xi-1 khc Gii thut c dng nh sau:
Proc Try(i) For [If < chp nhn j theo iu kin B> Then] { [nh du s dng j] If Then Else Call Try(i+1)
-
20 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
[Hu nh du s dng j] } Return
V d 1.9: Lit k tt c cc dy nh phn c di n Dy nh phn kt qu c lu tr trong vecto x c n phn t, mi phn t trong vecto ch
nhn gi tr 0 hoc 1. Proc Try (i) For j:= 0 To 1 { xi := j If i=n Then Xut (vecto x) //c 1 kt qu Else Call Try(i+1) } Return
V d 1.10: Lit k cc hon v ca n s t nhin u tin Dy cc gi tr hon v c lu tr trong vcto x c n phn t, dng vecto y c n phn t
xc nh gi tr j c s dng cha vi yj= true l j cha c s dng, yj=false l j c s dng vi j=1,n
Proc Try(i) For j:=1 To n If yj=True Then {xi := j yj := False //nh du j c s dng If i=n Then Xut (vect x) //c 1 kt qu Else Call Try(i+1) yj := True //hu nh du j s dng cho xi+1 } Return
IV. NH GI THUT TON
IV.1. Phn tch thut ton Phn tch thut ton nhm d tr chi ph thc hin thut ton; l cc ti nguyn m thut
ton yu cu. Ti nguyn mun ni y l: b nh, bng thng, cc cng logic v thi gian tnh ton. Tuy nhin, trn phng din phn tch l thuyt, ta ch c th xt ti vn thi gian bi vic xc nh cc chi ph khc nhiu khi rt m h v phc tp.
Thi gian tnh ton ca thut ton thng ph thuc vo kch thc u vo (size of input). Nu gi n l kch thc d liu a vo th thi gian thc hin ca mt gii thut c th biu din mt cch tng i nh mt hm ca n: T(n).
Phn cng my tnh, ngn ng vit chng trnh v chng trnh dch ngn ng y u nh hng ti thi gian thc hin. Nhng yu t ny khng ging nhau trn cc loi my, v vy khng th da vo chng khi xc nh T(n). Tc l T(n) khng th biu din bng n v thi gian gi, pht, giy c. Tuy nhin, khng phi v th m khng th so snh c cc gii
-
Cu trc d liu v Gii thut 21
TRNG CAO NG CNG NGH THNG TIN
thut v mt tc . Nu nh thi gian thc hin mt gii thut l T1(n) = n2 v thi gian thc hin ca mt gii thut khc l T2(n) = 100n th khi n ln, thi gian thc hin ca gii thut T2 r rng nhanh hn gii thut T1. Khi , nu ni rng thi gian thc hin gii thut t l thun vi n hay t l thun vi n2 cng cho ta mt cch nh gi tng i v tc thc hin ca gii thut khi n kh ln.
V d: Hy sp xp mt dy cc con s theo th t khng gim bng phng php sp xp chn (insertion sort)
M t bi ton: Input : dy n s (a1, a2,, an) Output : mt hon v (sp xp li) (a1, a2,, an ) ca input sao cho: a1 a2 an
Thut ton: Proc Insertion_sort(A,n) costs For j:=2 To n c1 { key := A[j] c2 i := j-1 c3 While i>0 And A[i]>key Do c4 { A[i+1] := A[i] c5 i := i-1 c6 } A[i+1] := key c7 } Return
Tng thi gian T(n) thc hin thut ton Insertion_sort l:
=
=
++++=n
j
j
icccccccnT
2
1
17654321 )()( (1)
Ta xt ba trng hp:
a) Trng hp tt nht: Dy A c sp xp sn, ngha l A[i] key. Do c5=c6=0.
Vy ( ) ( ) ( )( )=
++=++=n
jnccccccccnT
273217321 1
Do vy thi gian thc hin ca thut ton ny c th biu din di dng an+b (vi a, b = const v ph thuc vo cc hao ph ci), v y l hm tuyn tnh bc mt theo n.
b) Trong trng hp xu nht: Dy A c sp xp theo th t o ngc. Khai trin (1), ta c:
( ) ( ) ( ) ( ) = =
++++=n
j
n
jjccccccccnT
2 265417321 1
( )( ) ( )( ) 2/11 65417321 nnccccncccc ++++= Do vy thi gian thc hin ca thut ton ny c th biu din di dng an2 + bn + c (vi
a, b, c = const v ph thuc vo cc hao ph ci), v y l hm tuyn tnh bc hai theo n.
c) Trong trng hp trung bnh: Dy A c mt na c sp (ngha l mt na A[i]key), v mt na th c sp theo th t ngc li (ngha l mt na A[i]>key).
-
22 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Do vy thi gian hao ph thc hin cc lnh trong vng lp while s l (c5 + c6)/2; v ta cng tnh c T(n) cng c dng l mt hm tuyn tnh bc hai theo n.
IV.2. Xc inh phc tp tnh ton ca thut ton
IV.2.1.nh ngha phc tp Nu thi gian thc hin mt thut ton l T(n) = cn2 (vi c l mt hng s), th phc tp
tnh ton ca thut ton c cp n2. Hay c th k hiu bng k php O nh sau; T(n) = O(n2) nh ngha: Cho f(n) v g(n) l hai hm xc nh dng vi mi n. Hm f(n) c xc nh
l O(g(n)) nu tn ti mt hng s c > 0 v mt gi tr n0 sao cho: f(n) c.g(n) vi mi n n0. Ngha l nu xt nhng gi tr n n0 th hm f(n) s b chn trn bi mt hng s nhn vi
g(n). Khi , nu f(n) l thi gian thc hin ca mt gii thut th ta ni gii thut c cp l g(n).
V d 1.12: Dng nh ngha h k hiu O, hy chng minh 3n +5 = O(n) chng minh 3n+5=O(n), ta cn phi xc nh cc hng dng c, n0 sao cho: 5n + 3 cn 5n + 3 6n ;n3. Vy phi chn c=6; n0=3. V d 1.13: Dng k hiu O chng minh an+b=O(n) ; n>1 Ta s chng minh c an+bcn ;nn0 nu chn c=a+|b| v n0=1. V d 1.14: Dng k hiu O chng minh 2n=O(n!), n>1
Ta c 2n=2*2*...*22*1*2*3**n=2*n! Vy 2n2*n!. chn c=2, n0=1 th theo nh ngha 2n=O(n!)
Mt s phc tp thng s dng
Stt K hiu Ghi ch
1 O(1) phc tp hng
2 O(lgn) Thut ton tm kim nh phn, cy BST
3 O(lglgn) Tm c chung ln nht bng EUCLID
4 O(n) phc tp tuyn tnh, duyt dy
5 O(nlgn) Sp xp dy tng dn bng QuickSort,HeapSort, dng cy BST
6 O(n2) Cc phng php c in dng sp xp dy hoc duyt ma trn
7 O(n3) Nhn 2 ma trn
8 O(nk) phc tp a thc
9 O(2n) Bi ton thp H Ni, thp Si Gn
10 O(kn)
11 O(n!)
Ch : lgn hiu l log2n
-
Cu trc d liu v Gii thut 23
TRNG CAO NG CNG NGH THNG TIN
IV.2.2.Mt s qui tc xc nh phc tp Vic xc nh phc tp tnh ton ca mt gii thut bt k c th rt phc tp. Tuy
nhin, trong thc t, i vi mt s gii thut ta c th phn tch bng mt s quy tc n gin. Qui tc tng Gi s mt thut ton gm hai phn T1 v T2 c lp nhau, T1 c thi gian thc hin
O(f(n)), T2 c thi gian thc hin O(g(n)). Lc thi gian thc hin tim cn T ca ton thut ton l:
T = T1 + T2 = O(max(f(n), g(n))) Qui tc nhn Gi s mt thut ton gm hai phn T1 v T2 lng vo nhau, T1 c thi gian thc hin
O(f(n)), T2 c thi gian thc hin O(g(n)). Lc thi gian thc hin T ca ton thut ton l: T = T1 * T2 = O(f(n) * g(n))
Mt s nguyn tc chung 9 Cc lnh c, ghi, so snh: thi gian thc hin theo tim cn l O(1). 9 Lnh if
- If (iuKin_T1) Then Thi gian thc hin theo tim cn ca on lnh ny l: T = T1+T2 = O(max(T1, T2))
- If(iuKin_T0) Then Else Thi gian thc hin tim cn ca on lnh ny l: T = T0+max(T1, T2) = O(max(T0, T1, T2)) 9 Cc lnh tun t: p dng nh l 1. 9 Cc lnh vng lp: nu vng lp thc hin n ln, ti l thi gian thc hin lnh
ln lp th i. Khi , thi gian thc hin (T) theo tim cn ca vng lp s l: 9 Cc vng lp lng nhau: p dng nh l 2.
V d 1.15: Tnh phc tp ca thut ton sp xp bng phng php chn v d trc.
Ta c c2=c3=c5=c6=c7=O(1)
c4=
=
==
1
1
1
165 1),max(
j
i
j
icc
c1=
= === = =
=
=+=====n
j
n
j
n
j
n
j
n
j
n
j
j
i
nnnnnjjjncccc2
2
222 2 2
1
17432 2
)1(12
)1(1)1()(1),,,max(
Theo nh ngha k php O th phc tp ca thut ton l O(n2) Mt s tnh cht Theo nh ngha v phc tp tnh ton ta c mt s tnh cht: a) Vi P(n) l mt a thc bc k th O(P(n)) = O(nk). V th, mt thut ton c phc tp
cp a thc, ngi ta thng k hiu l O(nk)
-
24 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
b) Vi a v b l hai c s tu v f(n) l mt hm dng th logaf(n) = logab.logbf(n). Tc l: O(logaf(n)) = O(logbf(n)). Vy vi mt thut ton c phc tp cp logarit ca f(n), ngi ta k hiu l O(logf(n)) m khng cn ghi c s ca logarit.
c) Nu mt thut ton c phc tp l hng s, tc l thi gian thc hin khng ph thuc vo kch thc d liu vo th ta k hiu phc tp tnh ton ca thut ton l O(1). d) Mt gii thut c cp l cc hm nh 2n, n!, nn c gi l mt gii thut c phc tp hm m. Nhng gii thut nh vy trn thc t thng c tc rt chm. Cc gii thut c cp l cc hm a thc hoc nh hn hm a thc th thng chp nhn c.
e) Khng phi lc no mt gii thut cp O(n2) cng tt hn gii thut cp O(n3). Bi nu nh gii thut cp O(n2) c thi gian thc hin l 1000n2, cn gii thut cp O(n3) li ch cn thi gian thc hin l n3, th vi n < 1000, r rng gii thut O(n3) tt hn gii thut O(n2). Trn y l xt trn phng din tnh ton l thuyt nh ngha gii thut ny "tt" hn gii thut kia, khi chn mt thut ton gii mt bi ton thc t phi c mt s mm do nht nh.
IV.2.3.Trng hp thut ton qui Khi mt thut ton cha lnh gi qui ln chnh n, ta c th s dng php truy ton
m t thi gian thc hin ca n. Php truy ton thng l mt phng trnh hoc mt bt ng thc m t hm theo dng
gi tr ca n da trn cc s liu c nhp c kch thc nh hn. T v d thut ton qui tnh n! trn ta c biu thc truy ton nh sau: Gi T(n) l thi gian thc hin ca thut ton trn. Ta c T(0) = 1 ; khi n=0 T(n) = T(n-1) +1 ; khi n>0 T v d 1.7 (thut ton thp H Ni) trn ta c biu thc truy ton nh sau: Gi T(n) l thi gian thc hin ca thut ton trn. Ta c T(1) = 1 ; khi n=1 T(n) = 2T(n-1) +1 ; khi n>1 gii h thc truy ton thng thng s dng phng php thay th V d 1.16: Tm phc tp ca thut ton c biu din bng h thc truy ton sau: T(0) = 1 ; khi n=0 T(n) = T(n-1) +1 ; khi n>0 Ta c T(n)=T(n-1)+1=T(n-2)+1+1=T(n-3)+3==T(n-n)+n=T(0)+n=n+1=O(n) V d 1.17: Tm phc tp ca thut ton c biu din bng h thc truy ton sau: T(1) = (1) ; khi n=1 T(n) = 2T(n-1) +1 ; khi n>1 Ta c T(n)=2T(n-1)+1
-
Cu trc d liu v Gii thut 25
TRNG CAO NG CNG NGH THNG TIN
T(n-1)=2T(n-2)+1 => T(n)=2(2T(n-2)+1)+1=22T(n-2) + 21 + 20 T(n-2)=2T(n-3)+1 =>T(n)=23T(n-3) + 22 + 21 + 20 T(n)=2n-1T(1) + 2n-2 + + 21= 2n-1 + 2n-2 + + 21=2n-1=O(2n) V d 1.18: Tm phc tp ca thut ton c biu din bng h thc truy ton sau: T(1) = 0 ; khi n=1 T(n) = 2T(n/2) +n ; khi n>1 Ta c T(n)=2T(n/2)+n T(n/2)=2T(n/4) + n/2 =>T(n)=22T(n/22) + 2n => T(n)=2kT(n/2k) + kn t n=2k ta c T(n)=2kT(1) + kn . ta c n=2k =>k=lgn Vy T(n)=nlgn=O(nlgn)
-
26 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
CHNG 2
DANH SCH
I. KHI NIM DANH SCH Danh sch l mt tp hp hu hn cc phn t (Element) c cng mt kiu. Ta biu din
danh sch nh l mt chui cc phn t ca n: a1, a2, ... , an vi n 0. Nu n=0 ta ni danh sch rng (empty list). Nu n > 0 ta gi a1 l phn t u tin v an l phn t cui cng ca danh sch. S phn t ca danh sch ta gi l di ca danh sch.
Mt tnh cht quan trng ca danh sch l cc phn t ca danh sch c th t tuyn tnh theo v tr (position) xut hin ca cc phn t. Ta ni ai ng trc ai+1, vi i=1, n-1; Tng t ta ni ai l phn t ng sau ai-1,vi i =2,n. Ta cng ni ai l phn t ti v tr th i, hay phn t th i ca danh sch.
Gi s danh sch c tn l L, v tr sau phn t cui cng trong danh sch L l ENDLIST(L). Cc thao tc thng thng trn danh sch l:
INSERT_LIST(x,p,L) xen phn t x vo danh sch L ti v tr p. vi 1p ENDLIST(L) LOCATE(x,L) thc hin vic nh v phn t x trong danh sch L. Locate tr kt qu l v
tr ca phn t x trong danh sch.
VALUE(p,L) cho kt qu l gi tr ca phn t v tr p trong danh sch L DELETE_LIST(p,L) chng trnh con thc hin vic xo phn t th p ca danh sch. Nu
pENDLIST(L) th php ton khng c nh ngha v danh sch L s khng thay i NEXT(p,L) cho kt qu l v tr ca phn t i sau phn t th p; nu p l phn t cui
cng trong danh sch L th NEXT(p,L) cho kt qu l ENDLIST(L). Next khng xc nh nu p khng phi l v tr ca mt phn t trong danh sch.
PREVIOUS(p,L) cho kt qu l v tr ca phn t ng trc phn t p trong danh sch. Nu p l phn t u tin trong danh sch th Previous(p,L) khng xc nh. Previous cng khng xc nh trong trng hp p khng phi l v tr ca phn t no trong danh sch.
PRINT_LIST(L) lit k cc phn t ca L theo th t xut hin ca chng trong danh sch. EMPTY_LIST(L) cho kt qu TRUE nu danh sch c rng, ngc li n cho gi tr
FALSE.
MAKENULL_LIST(L) khi to mt danh sch L rng. FIRST(L) Tr v v tr u tin trong danh sch. Nu danh sch rng th FIRST(L) khng
xc nh
END(L) Tr v v tr cui cng trong danh sch
-
Cu trc d liu v Gii thut 27
TRNG CAO NG CNG NGH THNG TIN
II. BIU DIN DANH SCH TRN MY TNH Vic ci t mt danh sch trong my tnh tc l tm mt cu trc d liu c th m my
tnh hiu c lu cc phn t ca danh sch ng thi vit cc on chng trnh con m t cc thao tc cn thit i vi danh sch.
III. MNG V DANH SCH C
III.1.Ci t mng Ta c th ci t danh sch bng mng nh sau: dng mt mng lu gi lin tip cc
phn t ca danh sch t v tr u tin ca mng. Vi cch ci t ny, d nhin, ta phi c lng s phn t ca danh sch khai bo s phn t ca mng cho thch hp. D thy rng s phn t ca mng phi c khai bo khng t hn s phn t ca danh sch. Ni chung l mng cn tha mt s ch trng. Mt khc ta phi lu gi di hin ti ca danh sch, di ny cho bit danh sch c bao nhiu phn t v cho bit phn no ca mng cn trng nh trong hnh v. Ta nh ngha v tr ca mt phn t trong danh sch l ch s ca mng ti v tr lu tr phn t .
1 Phn t th 1
2 Phn t th 2
. .
. .
ENDLIST Phn t th cui cng
.
.
Maxlength
ch s mng
Cc khai bo cn thit
Danh sch c ci t bng mng gm c 2 thnh phn l mng A v s phn t ca danh sch trong mng l Last. C php c th khai bo nh sau:
Typedef LIST=Record Kiu_Mng A Integer Last End Record
III.2. Cc thao tc trn danh sch Khi to danh sch rng MAKENULL_LIST(L)
-
28 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Danh sch rng c di bng 0. Theo ci t trn, bin Last ch v tr ca phn t cui cng trong danh sch v cng di hin ti ca danh sch, v vy khi to danh sch rng ta ch vic gn Last = 0.
proc MAKENULL_LIST(L) L(Last) :=0 Return
Kim tra danh sch rng empty_LIST(L) Danh sch rng nu di ca danh sch bng 0.
func empty_LIST(L) EMPTY_LIST :=L(Last)=0 Return
Xen mt phn t vo danh sch insert_list(x,p,L) Khi xen phn t x vo v tr p ca danh sch ta c my kh nng sau: 9 Trng hp 1: Mng y khng thc hin c 9 Trng hp 2: pLast +1 cng khng thc hin c 9 Trng hp 3: 1pLast +1 th
Di cc phn t t v tr p n cui danh sch xung 1 v tr. di danh sch tng 1. a phn t mi vo v tr p Proc insert_list(x,p,L)
{If L(last)>=Maxlength Then write('Li: danh sch y')
Else If (p>L(last)+1) or (pL(Last)) or (p
-
Cu trc d liu v Gii thut 29
TRNG CAO NG CNG NGH THNG TIN
For q := p+1 To L(Last) L(A[q-1]) := L(A[q]) L(Last) := L(Last)-1 // gim kch thc mng i 1 phn t } Return
nh v mt phn t trong danh sch locate(x, L) nh v mt phn t x trong danh sch, ta tin hnh duyt tm t u danh sch. Nu tm
thy x th v tr ca phn t tm thy c tr v, nu khng tm thy th hm tr v gi tr 0. Trong trng hp c nhiu phn t cng gi tr x trong danh sch th v tr ca phn t c tm thy u tin c tr v.
func locate(x,L) p:= 1 while p
-
30 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Write(VALUE(p,L)) Return
Xc nh v tr u tin trong danh sch FIRST(L) Trng hp danh sch rng khng xc nh
Func FIRST(L) If L(Last)
-
Cu trc d liu v Gii thut 31
TRNG CAO NG CNG NGH THNG TIN
Danh sch lin kt
Nt u tin trong danh sch c gi l cht ca danh sch ni n (Head). duyt danh sch ni n, ta bt u t cht, da vo trng lin kt i sang nt k tip, n khi gp gi tr c bit (duyt qua nt cui) th dng li.
IV.1.Danh sch ni n Danh sch ni n gm cc nt c ni vi nhau theo mt chiu. Mi nt l mt bn ghi
(record) gm hai trng: 9 Trng th nht cha gi tr lu trong nt 9 Trng th hai cha lin kt (con tr) ti nt k tip, tc l cha mt thng tin
bit nt k tip nt trong danh sch l nt no, trong trng hp l nt cui cng (khng c nt k tip), trng lin kt ny c gn mt gi tr c bit.
Nt u tin trong danh sch c gi l cht ca danh sch ni n (Head). duyt danh sch ni n, ta bt u t cht, da vo trng lin kt i sang nt k tip, n khi gp gi tr c bit (duyt qua nt cui) th dng li.
Cc khai bo cn thit l Typedef Node= record
Kiu_lu_tr Info //Trng Info dng cha thng tin cn Con_Tr_Kiu_Node Link //Trng Link l con tr tr n phn t k tip
trong danh sch End Record Con_tr_Kiu_Node L //Khai bo con tr L tr vo u danh sch
Ch : 9 qun l danh sch khai bo mt bin tr L (hoc Head), dng gi a ch
cha phn t u tin ca danh sch. Bin ny gi l ch im u danh sch. 9 Con tr c bit Null 9 Danh sch rng L = Null 9 Danh sch lun c ga tr Null bo kt thc danh sch 9 Trng Next ca mi Node ch cha a ch Node sau n 9 Cp pht 1 Node cho con tr p : New(p) 9 Hu mt Node c tr bi p: Delete(p)
Chn 1 gi tr x vo v tr Node c tr bi p INSERT_LIST(x,p,L) Trng hp p tr u danh sch
Trng hp p tr vo Node khng phi u danh sch
a1 a2 an Null (ENDLIST) L
Null L
p
q
xr
1
2
34
Null L
p x r 1
5 3
-
32 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Proc INSERT_LIST(x,p,L) //1. Xin cp pht 1 Node c tr bi r v gn gi tr x cho trng Info New(r) Info(r) := x Link(r) := p // mi tn s 3 If L=p Then // trng hp p tr vo Node du tin trong danh sch L := p // mi tn s 5 Else { q := PREVIOUS(p,L) //2. Cho con tr q tr vo Node trc p Link(q) := r // 4. chn Node c gi tr x vo danh sch L } Return
Xc nh a ch ca Node c gi tr x LOCATE(x,L) Nu c gi tr x trong danh sch th kt qu l a ch Node , nu khng c x trong danh
sch th kt qu l Null Func LOCATE(x,L) p := L While Info(p) x And p Null Do p := Link(p) LOCATE := p Return
Xc nh gi tr ca Node c tr bi p VALUE(p,L) Trng hp p=Null khng xc nh c gi tr
Func VALUE(p,L) If p=Null Then Write( Li, Khng xc nh) Else VALUE := Info(p) Return
Xo Node c tr bi p DELETE_LIST(p,L) Trng hp p=Null th khng xo c
Trng hp p tr u danh sch
Trng hp p tr vo Node khng phi u danh sch
Null L
p
1
4
3
Null L pq
2
4
-
Cu trc d liu v Gii thut 33
TRNG CAO NG CNG NGH THNG TIN
Proc DELETE_LIST(p,L) If p=Null Then Write( Li, Khng xo ) Else {If p=L Then L := Link(p) // L tr vo Node th 2 Else {q := PREVIOUS(p,L) //Cho con tr q tr vo Node trc P Link(q) := Link(p) //Ni vi Node sau p trong danh sch L } Delete (p) // Gii phng Node c tr bi p } Return
Xc nh a ch Node sau Node c tr bi p NEXT(p,L) Trng hp p=Null khng xc nh
Func NEXT(p,L) If p=Null Then Write( Li, Khng xc n) Else NEXT := Link(p) Return
Xc nh a ch Node trc Node c tr bi p PREVIOUS(p,L) Trng hp p tr u danh sch th khng xc nh c
Func PREVIOUS(P,L) If p=L Then Write(Li, Khng xc inh) Else {q := L While Link(q)p Do q := Link(q) PREVIOUS := q
} Return
Lit k cc phn t trong danh sch PRINT_LIST(L) Proc PRINT_LIST(L) p := L While pNull Do {write(Info(p)) p := Link(p) } Return
Kim tra danh sch c rng khng EMPTY_LIST(L) Func EMPTY_LIST(L) EMPTY_LIST := L=Null Return
Khi to mt danh sch rng MAKENULL_LIST(L)
-
34 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Proc MAKENULL_LIST(L) L := Null Return
Xc nh a ch ca Node u danh sch FIRST(L) Tr v v tr u tin trong danh sch. Nu danh sch rng th FIRST(L) khng xc nh
Func FIRST(L) If L=Null Then Write(Li, Khng xc nh) Else FIRST := L Return
Xc nh a ch ca Node cui danh sch END(L) Tr v v tr cui cng trong danh sch. Nu danh sch rng th END(L) khng xc nh
Func END(L) If L=Null Then Write(Li, Khng xc nh) Else { p := L While Link(p)Null Do p := Link(p) END := p } Return
IV.2.Danh sch ni vng Danh sch lin kt n ni vng l danh sch lin kt m trng Link ca Node cui cha
a ch Node u tin.
Ch : 9 Danh sch rng: L=Null 9 Danh sch 1 Node: Link(L)=L
Cc thao tc trn danh sch lin kt n ni vng cng nh trn danh sch lin kt n. d hnh dung ta thm k t C trc tn mi thao tc Tuy nhin vic xy dng cc thao tc c hi khc mt t do tnh cht c bit ca danh sch vng.
Chn 1 gi tr x vo Node c a ch l p C_INSERT_LIST(x,p,L) Trng hp p=l=Null th tr thnh danh sch 1 Node
x
q
L 2
3
1
a1 a2 anL
x q 1 p 6.r
5
a1 a2 anL
-
Cu trc d liu v Gii thut 35
TRNG CAO NG CNG NGH THNG TIN
Trng hp p=l Null l chn u danh sch Ni vng
Trng hp cn li th ging trong trng hp danh sch lin kt n Proc C_INSERT_LIST(x,p,L) New(q) // cp pht 1 Node Info(q) := x If p=Null And L=Null Then { L := q //Danh sch 1 Node Link(L) := L } Else
{ // Cho r tr vo Node trc p trong danh sch r := C_PREVIOUS(p,L) Link(r) := q Link(q) := p If L=p Then L := q
} Return
Xc nh a ch Node c gi tr x C_LOCATE(x,L) Func C_LOCATE(x,L) q :=Null
r := L Do{ If Info(r)=x Then { q=r Break //dng vng lp } r := Link(r)
}while (rL) C_LOCATE := q
Return
Xc nh gi tr ca Node c tr bi p C_VALUE(p,L): ging danh sch lin kt n
Xo Node c tr bi p C_DELETE_LIST(p,L) Trng hp p=Null th khng xo c
Trng hp p=L c 1 Node th thnh danh sch rng
Trng hp p tr u danh sch
L
p
1
4
-
36 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Trng hp p tr vo Node khng phi u danh sch
Proc C_DELETE_LIST(p,L) If p=Null Then Write( Li, Khng xo ) Else {If p=L Then If Link(L)=L Then L:= Null Else
{q := C_PREVIOUS(p,L) //q tr vo Node cui L := Link(p) //L tr vo Node th 2 Link(q) := L //To danh sch vng }
Else {q := C_PREVIOUS(p,L) //Cho con tr q tr vo Node trc P Link(q) := Link(p) //Ni vi Node sau p trong danh sch L } Delete (p) // Gii phng Node c tr bi p
} Return
Xc nh a ch Node sau Node c tr bi p C_NEXT(p,L): ging danh sch lin kt n
Xc nh a ch Node trc Node c tr bi p C_PREVIOUS(p,L) Trng hp p =Null th khng xc nh c
Func C_PREVIOUS(P,L) If p=Null Then Write(Li, Khng xc inh) Else { q := L While Link(q)p Do q := Link(q) C_PREVIOUS := q } Return
Lit k cc phn t trong danh sch vng C_PRINT_LIST(L) Proc C_PRINT_LIST(L) p := L
L pq 4
-
Cu trc d liu v Gii thut 37
TRNG CAO NG CNG NGH THNG TIN
Do{ write(Info(p)) p := Link(p) }while(pL) Return
Kim tra danh sch vng c rng khng C_EMPTY_LIST(L): ging danh sch lin kt n
Xc nh a ch ca Node u danh sch vng C_FIRST(L): ging danh sch lin kt n
Xc nh a ch ca Node cui danh sch vng C_END(L) Tr v v tr cui cng trong danh sch. Nu danh sch rng th END(L) khng xc nh
Func END(L) If L=Null Then Write(Li, Khng xc nh) Else { p := L While Link(p)L Do p := Link(p) C_END := p } Return
IV.3. Danh sch ni kp Mt s ng dng i hi chng ta phi duyt danh sch theo c hai chiu mt cch hiu
qu. Chng hn cho phn t X cn bit ngay phn t trc X v sau X mt cch mau chng. Trong trng hp ny ta phi dng hai con tr, mt con tr ch n phn t ng sau (next ), mt con tr ch n phn t ng trc (previous). Vi cch t chc ny ta c mt danh sch lin kt kp. Dng ca mt danh sch lin kp nh sau:
Hnh: danh sch lin kt kp
Cu trc d liu cho danh sch lin kt kp nh sau: Typedef D_Node= record Kiu_lu_tr Info //Trng Info dng cha thng tin cn Con_Tr_Kiu_D_Node Next, Previous //Next tr pt sau, Previous tr pt trc End Record
Gi s DL (Double List) l con tr qun l danh sch lin kt kp.
Khi to danh sch rng: DL:= Null Kim tra danh sch lin kt kp rng: kim tra DL c bng Null khng ? Xo mt phn t trong danh sch lin kt kp
xo mt phn t ti v tr con tr p trong danh sch lin kt kp c tr bi DL, ta phi ch n my trng hp sau:
9 Danh sch rng, tc l DL=Null khng thc hin
-
38 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
9 Trng hp danh sch khc rng, tc l DLNull, ta phi phn bit hai trng hp b xo khng phi l c tr bi DL
q := p(Previous) , r := p(Next) q(Next) := r If r Null Then r(Previous) := q Delete(p)
Xo ang c tr bi DL, tc l p=DL: ngoi vic cp nht li cc con tr ni kt cc trc v sau p ta cn phi cp nht li DL.
Trng hp 1 Node: DL := Null, Delete (p) Trng hp cn li: DL := DL(Next), DL(Previous) := Null, Delete(p)
Thm mt phn t vo danh sch ln kt kp thm mt phn t x vo v tr p trong danh sch lin kt kp c tr bi DL, ta cng
cn phn bit my trng hp sau: 9 Danh sch rng, tc l DL=p = Null tr thnh danh sch kp 1 Node
New (DL) DL(Info) := x DL(Previous) := Null DL(Next) := Null
9 Nu Dlnil, sau khi thm phn t x vo v tr p
New(s), s(Info) := x, q := p(Previous), q(Next) := s, s(Next) := q r := p(Next), s(Next) := r
q r
DL
Null
p
q r s
p
-
Cu trc d liu v Gii thut 39
TRNG CAO NG CNG NGH THNG TIN
If rNull Then r(Previous) := s Delete(p)
IV.4. a danh sch Cu trc a danh sch l hnh thc kt hp cc kiu danh sch vi nhau trong cu trc danh
sch. Chng hn kt hp mt danh sch c vi mt danh sch lin kt n, hoc c th kt hp 2 danh sch lin kt n vi nhau to thnh danh sch a chiu.
V d m t hnh nh kt hp mt danh sch c vi mt danh sh lin kt n nh hnh v
V. NGN XP
V.1. nh ngha ngn xp Ngn xp (Stack) l mt danh sch m ta gii hn vic thm vo hoc loi b mt phn t
ch thc hin ti mt u ca danh sch, u ny gi l nh (TOP) ca ngn xp.
Mt chng a t trn bn cho ta hnh nh trc quan ca ngn xp, mun thm vo chng 1 a ta a mi trn nh chng, mun ly cc a ra khi chng ta cng phi ly a trn trc. Nh vy ngn xp l mt cu trc c tnh cht "vo sau - ra trc" hay LIFO (last in - first out ).
-
40 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Cc thao tc c bn trn ngn xp:
9 CREAT_STACK(S): to mt ngn xp S rng 9 TOP(S): tr v gi tr ca phn t ti nh ngn xp. Nu ngn xp rng th hm
khng xc nh. 9 POP(S): Ly mt phn t ti nh ngn xp. 9 PUSH(x,S): thm mt phn t x vo u ngn xp. 9 EMPTY_STACK(S): kim tra ngn xp rng, Hm cho kt qu TRUE nu ngn
xp rng v FALSE trong trng hp ngc li.
V d thut ton i mt s t h 10 sang h 2 s dng ngn xp Vi n=1910 =100112, ta s i nh sau:
n 19 9 4 2 1 0 n Mod 2 1 1 0 0 1
Proc DoiHe(n) CREAT_STACK(S) While n>0 Do { PUSH(n Mod 2, S) n := n Div 2 } While Not EMPTY_STACK(S) { write(TOP(S)) POP(S)
} Return
V.2. Ci t ngn xp bng mng Dng mt mng lu tr lin tip cc phn t ca ngn xp. Cc phn t a vo ngn
xp bt u t v tr c ch s thp nht ca mng. Ta dng mt bin s nguyn (top_pointer) gi ch s ca phn t ti nh ngn xp. Gi s vng nh ti a c dng cho Stack l c MaxLength phn t.
Phn t 1 Phn t 2 Phn t 3 Phn t 4
y Stack
nh Stack
-
Cu trc d liu v Gii thut 41
TRNG CAO NG CNG NGH THNG TIN
Top_pointer5
Phn t th 1
4 Phn t th 2
3
2
1 Phn t cui cng
Khai bo ci t
Ci t bng mng CONST maxlength=...; { di ca mng} Typedef STACK = record Kiu_Mng A //Mng A dng lu d liu Integer top_idx //gi nh ngn xp end;
To ngn xp rng CREAT_STACK(S) Ngn xp rng th top_pointer=0
Proc CREAT_STACK(S) S(top_pointer) := 0 Return
Kim tra ngn xp rng EMPTY_STACK(S) Func EMPTY_STACK(S) If S(top_pointer)=0 Then EMPTY_STACK := True Else EMPTY_STACK := False Return
Tr v phn t u ngn xp TOP(S) Trng hp Stack rng khng c kt qu
Func TOP( S) If EMPTY_STACK(S) write('li: ngn xp rng'); Else TOP := S(A[S(top_pointer)] Return
Chng trnh con xo mt phn t POP(S) Trng hp Stack rng khng thc hin
Proc POP(S) If EMPTY_STACK(S) Then write('Li: ngn xp rng')
-
42 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Else S(top_pointer) := S(top_pointer)-1 Return
Thm mt phn t vo ngn xp PUSH(x,S) trng hp Stack y khng thc hin
Proc PUSH(x,S) If S(top_pointer)=MaxLength Then Write(Li, Stack y) Else { S(top_pointer) := S(top_pointer)+1 S(A[S.top_pointer]) := x } Return
V.3. Ci t ngn xp bng danh sch lin kt n Ta m phng mt Stack bng danh sch lin kt nh sau:
Typedef Node= record Kiu_lu_tr Info //Trng Info dng cha thng tin cn Con_Tr_Kiu_Node Link //Trng Link l con tr tr n phn t k tip
trong danh sch End Record Typedef Stack=Record Con_tr_Kiu_Node top_pointer End Record
To ngn xp rng CREAT_STACK(S) Ngn xp rng th top_pointer=0
Proc CREAT_STACK(S) S(top_pointer) := Null Return
Kim tra ngn xp rng EMPTY_STACK(S) Func EMPTY_STACK(S) If S(top_pointer)=Null Then EMPTY_STACK := True Else EMPTY_STACK := False Return
Tr v phn t u ngn xp TOP(S) Trng hp Stack khng c kt qu
Func TOP( S) If EMPTY_STACK(S)
Null Top point
-
Cu trc d liu v Gii thut 43
TRNG CAO NG CNG NGH THNG TIN
write('li: ngn xp rng'); Else TOP := Info(S(top_pointer)) Return
Chng trnh con xo mt phn t POP(S) Trng hp Stack rng khng thc hin
Proc POP(S) If EMPTY_STACK(S) Then write('Li: ngn xp rng') Else {p := S(top_pointer) S(top_pointer) := Link(S(top_pointer)) Delete(p) } Return
Thm mt phn t vo ngn xp PUSH(x,S) Proc PUSH(x,S) New(p) Info(p) := x Link(S(top_pointer)) := p S(top_pointer) := p Return
V.4. ng dng ngn xp kh qui Nu mt chng trnh con qui P(x) c gi t chng trnh chnh ta ni chng trnh
con c thc hin mc 1. Chng trnh con ny gi chnh n, ta ni n i su vo mc 2... cho n mt mc k. R rng mc k phi thc hin xong th mc k-1 mi c thc hin tip tc, hay ta cn ni l chng trnh con quay v mc k-1.
Trong khi mt chng trnh con t mc i i vo mc i+1 th cc bin cc b ca mc i v a ch ca m lnh cn dang d phi c lu tr, a ch ny gi l a ch tr v. Khi t mc i+1 quay v mc i cc gi tr c s dng. Nh vy nhng bin cc b v a ch lu sau c dng trc. Tnh cht ny gi cho ta dng mt ngn xp lu gi cc gi tr cn thit ca mi ln gi ti chng trnh con. Mi khi li v mt mc th cc gi tr ny c ly ra tip tc thc hin mc ny. Tm tt qu trnh: Bc 1: Lu cc bin cc b v a ch tr v. Bc 2: Nu tho iu kin ngng qui th chuyn sang bc 3. Nu khng th tnh ton
tng phn v quay li bc 1 ( qui tip). Bc 3: Khi phc li cc bin cc b v a ch tr v. V d sau y minh ho vic dng ngn xp loi b chng trnh qui ca bi ton
thp H Ni nh xy dng chng 1 (phn qui).
Qu trnh thc hin chng trnh con c minh ho vi ba a (n=3) nh sau: Move(1,A,B,C) A->B Move(2,A,C,B) Move(1,A,C,B) A->C
-
44 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Move(1,B,C,A) B->C Move(3,A,B,C) Move(1,A,B,C) A->B Move(1,C,A,B) C->A Move(2,C,B,A) Move(1,C,B,A) C->B Move(1,A,B,C) A->B Mc 1 mc 2 mc 3
kh qui ta phi nm nguyn tc sau y: Mi khi chng trnh con qui c gi, ng vi vic i t mc i vo mc i+1, ta phi
lu tr cc bin cc b ca chng trnh con bc i vo ngn xp. Ta cng phi lu a ch m lnh cha c thi hnh ca chng trnh con mc i. Tuy nhin khi lp trnh bng ngn ng cp cao th y khng phi l a ch nh cha m lnh ca my m ta s t chc sao cho khi mc i+1 hon thnh th lnh tip theo s c thc hin l lnh u tin cha c thi hnh trong mc i.
Tp hp cc bin cc b ca mi ln gi chng trnh con xem nh l mt mu tin (activation record).
Mi ln thc hin chng trnh con ti mc i th phi xo mu tin lu cc bin cc b mc ny trong ngn xp.
Nh vy nu ta t chc ngn xp hp l th cc gi tr trong ngn xp chng nhng lu tr c cc bin cc b cho mi ln gi qui, m cn iu khin c th t tr v ca cc chng trnh con. tng ny th hin trong ci t kh qui cho bi ton thp H Ni l: mu tin lu tr cc bin cc b ca chng trnh con thc hin sau th c a vo ngn xp trc n c ly ra dng sau. C th m phng qu trnh thc hin bi ton bng cch dng Stack vi n=3 nh sau:
(3,A,B,C) (2,A,C,B) Qu trnh chuyn a
(1) (2) (3) (2,B,A,C)
(4) (5)
Xy dng kiu d liu lu tr 1 mu tin (1 phn t trong Stack) Typedef Phn_T=record
3 A B C
2 A C B1 A B C2 B A C
1 A B C1 A C B1 C A B1 A B C2 B A C
A->C A->B C->B A->C
B->A B->C A->C
2 B A C
1 B C A1 B A C1 A B C
-
Cu trc d liu v Gii thut 45
TRNG CAO NG CNG NGH THNG TIN
Integer s_a Char ngun, trung_gian, ch End Record
Thut ton Thp H NI kh qui dng ngn xp: Proc HANOI(n,A,B,C); CREAT_STACK(S); PUSH([n,A,B,C],S); While Not EMPTY_STACK(S) Do { x := TOP(S) //x kiu Phn_T POP(S) If x(s_a)=1 Then chuyn (x(ngun) ,, x(ich)) Else { PUSH([x(s_a)-1, x(trung_gian),x(ngun),x(ich)],S) PUSH([1,x(ngun),x(trung_gian),x(ich)],S) PUSH([x(s_a)-1, x(ngun),x(ich),x(trung_gian)],S) } } Return
VI. HNG I
VI.1. nh ngha hng i Hng i, hay ngn gn l hng (queue) cng l mt danh sch c bit m php thm v
bt c thc hin 2 u khc nhau. Thm cui danh sch (REAR), cn bt th pha u ca danh sch (FRONT).
Xp hng mua v xe la l hnh nh ca hng i, ngi n trc mua v trc, ngi n sau th s mua v sau. V vy hng i cn c gi l cu trc FIFO (first in - first out) hay "vo trc - ra trc".
Gi s thm ln lt cc phn t A, B, C, D vo queue c di l 4 phn t, sau loi b phn t A ra khi queue, ta c hnh dng queue nh sau:
Cc thao tc c bn trn hng i: 9 CREAT_QUEUE(Q) khi to mt hng i rng 9 FRONT(Q) hm tr v gi tr ca phn t u tin ca hng Q. 9 ADD(x,Q) xen phn t x vo hng Q 9 REMOVE(Q) xo phn t ti u ca hng Q 9 EMPTY_QUEUE(Q) hm kim tra hng rng. 9 FULL_QUEUE(Q) kim tra hng y.
4 3 2 1 0
rear fron
rearfron
rear
fron
rear
fron fron
4 3 2 1 A 0
4 3 2 B 1 A0
4 3 C 2 B 1 A0
rear 4 D 3 C 2 B 1 A 0
fron
rear 4 D 3 C 2 B 1 -
-
46 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
VI.2. Ci t hng i bng mng Ta dng mt mng cha cc phn t ca hng, khi u phn t u tin ca hng c
a vo v tr th 1 ca mng, phn t th 2 vo v tr th 2 ca mng... Gi s hng c n phn t, ta c front=1 v rear=n. Khi xo mt phn t front tng ln 1, khi thm mt phn t rear tng ln 1. Nh vy hng c khuynh hng i xung, n mt lc no ta khng th thm vo hng c na d mng cn nhiu ch trng (cc v tr trc front) trng hp ny ta gi l hng b trn. Thc s hng ch b trn khi ton b mng cha cc phn t ca hng ta gi l hng b y.
Cch khc phc hng b trn l dng mng xoay vng: Di ton b hng ln front v tr, Cch ny gi l di chuyn tnh tin. Trong trng hp
ny ta lun c front
-
Cu trc d liu v Gii thut 47
TRNG CAO NG CNG NGH THNG TIN
Q(rear) := 0 Return
Kim tra hng rng EMPTY_QUEUE Trong qu trnh lm vic ta c th thm v xo cc phn t trong hng. R rng, nu ta c
a vo hng mt phn t no th front>0. Khi xo mt phn t ta tng front ln 1, nu hng rng ( front=rear) cng t front=0. Hn na khi mi khi to hng, tc l front = 0, th hng cng rng. V vy hng rng khi v ch khi front =0.
Func EMPTY_QUEUE(Q) If Q(front)=0 Then EMPTY_QUEUE := True Else EMPTY_QUEUE := False Return
Kim tra hng y FULL_QUEUE(Q) Hng y nu s phn t hin c trong hng bng di ca mng.
func FULL_QUEUE(Q) If (Q(rear)=Q(front))And (Q(rear)0) Then FULL_QUEUE := True Else FULL_QUEUE := False Return
Chng trnh con thm mt phn t vo hng ADD(x,Q) Trng hp Queue y khng thm c
Proc ADD(x,Q) If Not FULL_QUEUE(Q) Then { Q(rear) := (Q(rear) +1 )Mod MAXSIZE Q(A[Q(rear)]) := x } Else write('Li: hng y'); Return
Xo mt phn t ca hng REMOVE(Q) Xo phn t u hng ta ch cn cho front tng ln 1. Nu front = rear th hng thc cht
rng, nn ta khi to li hng rng (tc l t li gi tr front = rear =0) Proc REMOVE(Q) If Not EMPTY_QUEUE(Q) Then { Q(front) := (Q(front)+1) Mod MAXSIZE If Q(front)=Q(rear) Then Q(front) := Q(rear) := 0 } Else Write('Li: hng rng'); Return
Xc nh gi tr ca phn t u tin ca hng FRONT(Q) Trng hp hng rng khng xc nh
-
48 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Func FRONT(Q) If EMPTY_QUEUE(Q) Then Write(Li, Khng xc nh) Else FRONT := Q(A[Q(front)+1]) Return
VI.3. Ci t hng i bng danh sch lin kt n Cch t nhin nht l dng hai con tr front v rear tr ti phn t u hng (front) v
cui hng (rear).
Khai bo cu trc d liu
Typedef Node= record Kiu_lu_tr Info //Trng Info dng cha thng tin cn lu tr Con_Tr_Kiu_Node Link //Link l con tr tr n phn t k tip trong
danh sch End Record Typedef QUEUE=Record Con_tr_Kiu_Node front, rear End Record
Khi to hng rng CREAT_QUEUE(Q) Proc CREAT_QUEUE(Q) Q(front) := Null Q(rear) := Null Return
Kim tra hng rng EMPTY_QUEUE(Q) Hng rng nu front hoc rear bng Null
Func EMPTY_QUEUE(Q) If Q(front)=Null Then EMPTY_QUEUE := True Else EMPTY_QUEUE := False Return
Thm mt phn t vo hng ADD(x,Q) Thm mt phn t vo hng thc cht l chn 1 gi tr x vo cui danh sch lin kt
Proc ADD(x,Q) new(p) //cp pht 1 Node mi p(Info) := x p(Link) := Null If Q(front)=Null Then
Null
front rear
-
Cu trc d liu v Gii thut 49
TRNG CAO NG CNG NGH THNG TIN
Q(front) := p //trng hp Q rng th thnh Q c 1 phn t Else (Q(rear))(Link) := p Q(rear) := p Return
Xa mt phn t trong hng REMOVE(Q) Thc cht l xo phn t nm u danh sch. Trng hp danh sch rng khng xo
c Proc REMOVE(Q) If Not EMPTY_QUEUE(Q) Then { P := Q(front) Q(front) := p(Link) Delete(p) } Else write('Li: hng rng'); Return
Xc nh gi tr ca phn t u tin ca hng FRONT(Q) Trng hp hng rng khng xc nh
Func FRONT(Q) If EMPTY_QUEUE(Q) Then Write(Li, Khng xc nh) Else FRONT := (Q(front))(Info) Return
-
50 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
CHNG 3
CY
I. MT S KHI NIM V CY
I.1. Khi nim Cy l mt tp hp cc phn t gi l nt (nodes) trong c mt nt c phn bit gi l
nt gc (root). Trn tp hp cc nt ny c mt quan h, gi l mi quan h cha - con (parenthood), xc nh h thng cu trc trn cc nt. Mi nt, tr nt gc, c duy nht mt nt cha. Mt nt c th c nhiu nt con hoc khng c nt con no. Mi nt biu din mt phn t trong tp hp ang xt v n c th c mt kiu no bt k, thng ta biu din nt bng mt k t, mt chui hoc mt s ghi trong vng trn. Mi quan h cha con c biu din theo qui c nt cha dng trn nt con dng di v c ni bi mt on thng.
C th nh ngha cy mt cch qui nh sau: Mt nt n c l mt cy. Nt ny cng chnh l nt gc ca cy. Gi s ta c n l mt nt n c v k cy T1,.., Tk vi cc nt gc tng ng l n1,.., nk
th c th xy dng mt cy mi bng cch cho nt n l cha ca cc nt n1,.., nk. Cy mi ny c nt gc l nt n v cc cy T1,.., Tk c gi l cc cy con.
Tp rng cng c coi l mt cy v gi l cy rng k hiu ^. V d: xt mc lc ca mt quyn sch. Mc lc ny c th xem l mt cy
Nt gc l sch, n c ba cy con c gc l C1, C2, C3. Cy con th 3 c gc C3 l mt nt n c trong khi hai cy con kia (gc C1 v C2) c cc nt con.
S cc con ca mt nt gi l cp (degree) ca nt . V d cp ca nt c1 l 2 v ca nt c2 l 3.
Nt c cp bng khng gi l nt L (leaf) hay nt n c, nt tn cng. V d cc nt 1.1, 2.1.1, 2.1.2, 2.2, 2.3, c3 l cc nt l.
Cp ca cy l cp cao nht ca cc nt trn cy. V d cy Sch trn l cp 3.
-
Cu trc d liu v Gii thut 51
TRNG CAO NG CNG NGH THNG TIN
Gc ca cy ngi ta gn cho s mc (level) l 1, nu nt cha c mc l i th nt con s c mc l i + 1. V d nt Sch c mc l 1, nt c2 c mc l 2 v nt 2.1.1 c mc l 3.
Chiu cao (height) hay chiu su (depth) ca mt cy l s mc ln nht ca nt c trn cy . Cy trn c chiu cao l 4.
Nu n1,.., nk l mt chui cc nt trn cy sao cho ni l nt cha ca nt ni+1, vi i=1..k-1, th chui ny gi l mt ng i trn cy (hay ngn gn l ng i ) t n1 n nk. di ng i ny c nh ngha bng s nt trn ng i tr 1 hay chnh l s cung trn ng i. Nh vy di ng i t mt nt n chnh n bng khng. V d ng i t nt Sch n nt 2.1 l Sch, c2, 2.1 v di ng i l 2.
Nu th t cc cy con (hay cc nt con) ca mt nt c coi trng, th cy ang xt l cy c th t (ordered tree), ngc li l cy khng c th t (unorderred tree). Thng l th t c qui c t tri sang phi. Nh vy, nu k th t th hai cy sau l khc nhau:
I.2. Biu din cy
I.2.1. Ci t bng mng Cho cy T, ta c th gn tn cho cc nt ln lt l 1,2,..,n. Sau ta dng mt mng A mt
chiu lu tr cy bng cch cho A[i]j vi j l nt cha ca nt i. nu i l nt gc ta cho a[i]=0
V d:
Cy trn c biu din trong mng A nh sau:
Ch s mng 1 2 3 4 5 6 7 8 9 10
Tn nt (cha ch s nt cha) 0 1 1 2 2 5 5 5 3 3
nhn 1 2 3 4 5 6 7 8 9 10
-
52 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
I.2.2. Ci bng danh sch k Mt cch biu din khc cng thng c dng l biu din cy di dng mi nt c mt
danh sch cc nt con. V s nt con ca mt nt l khng bit trc nn dng danh sch lin kt s thch hp hn.
Vi cy trn th c th lu tr nh sau (du * biu din gi tr Null)
I.2.3. Ci bng con tr Mi Node trong cy gm c n+ 1 trng, trong n l bc ca cy l s trng lin kt ca
cy v 1 trng Info cha d liu. Ta c th m phng cy trn nh sau:(* biu din Null)
1 *
2 * 3 *
4 * * * 5 9 * * * 10 * * *
6 * * * 7 * * * 8 * * *
-
Cu trc d liu v Gii thut 53
TRNG CAO NG CNG NGH THNG TIN
I.3. Duyt cy Duyt cy l mt qui tc cho php i qua ln lt tt c cc nt ca cy mi nt ng mt
ln, danh sch lit k cc nt (tn nt hoc gi tr cha bn trong nt) theo th t i qua gi l danh sch duyt cy. C 3 cch duyt cy quan trng: Duyt tin t (preorder), duyt trung t (inorder), duyt hu t (posorder). C th nh ngha cc php duyt cy tng qut (xem hnh bn di) mt cch qui nh sau:
Cy rng th danh sch duyt cy l rng v n c coi l biu thc duyt tin t, trung
t, hu t ca cy. Cy ch c mt nt th danh sch duyt cy gm ch mt nt v n c coi l biu
thc duyt tin t, trung t, hu t ca cy. Ngc li: gi s cy T c nt gc l n v c cc cy con l T1,..,Tn th: 9 Kt qu duyt tin t ca cy T l lit k nt n, k tip l kt qu duyt tin t ca
cc cy T1, T2, .., Tn theo th t . 9 Kt qu duyt trung t ca cy T l kt qu duyt trung t ca cy T1, k tip l
nt n, ri n kt qu duyt trung t ca cc cy T2,.., Tn theo th t . 9 Kt qu duyt hu t ca cy T l kt qu duyt hu t ca cc cy T1, T2,.., Tn
theo th t , ri n nt n.
V d cho cy nh trong hnh sau:
Biu thcduyt tin t: A B C D E F H K L
trung t: C B E D F A K H L
hu t: C E F D B K L H A
C th vit cc gii thut duyt cy qui nh sau: Proc PREORDER(n) X l gc n For (mi nt con c ca nt n theo th t t tri sang phi) Call PREORDER(c) Return Proc INORDER(n) If (n l nt l) Then X l gc n Else { Call INORDER( con tri nht ca nt n); X l gc n
-
54 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
For (mi nt con c ca nt n, tr nt con tri nht, theo th t t tri sang phi)
Call INORDER(c); } Return Proc POSORDER(n) If (n l nt l) Then X l gc n Else {for (mi nt con c ca nt n theo th t t tri sang phi) do Call POSORDER(c) X l gc n } Return
II. CY NH PHN
II.1. nh ngha Cy nh phn (binary tree) l cy m mi nt ch c ti a hai nt con hoc rng. Hn na
cc nt con ca cy c phn bit th t r rng, mt nt con gi l nt con tri v mt nt con gi l nt con phi. Ta qui c v nt con tri bn tri nt cha v nt con phi bn phi nt cha, mi nt con c ni vi nt cha ca n bi mt on thng.
Cn ch ti mt s dng c bit ca cy nh phn
(a) (b) (c) (d)
Cc cy nh phn (a),(b),(c),(d) c gi l cy nh phn suy bin (degenerater binary tree), cc nt khng phi l l ch c 1 con. Cy (a) gi l cy lch tri, cy (b) gi l cy lch phi, cy (c) v (d) gi l cy zc-zc.
1 1 2 2 3 4 3 4 5 5
-
Cu trc d liu v Gii thut 55
TRNG CAO NG CNG NGH THNG TIN
Nu cy nh phn c tt c cc mc u t s nt ti a th gi l cy nh phn y (full binary tree). Nu mc cui cng khng t ti a v cc nt thiu tp trung bn phi th gi l cy nh phn hon chnh (complete binary tree).
Cy nh phn y l trng hp ring ca cy nh phn hon chnh.
Ta c th thy ngay nhng tnh cht sau bng php chng minh quy np: Trong cc cy nh phn c cng s lng nt nh nhau th cy nh phn suy bin c chiu
caoln nht, cn cy nh phn hon chnh th c chiu cao nh nht. S lng ti a cc nt trn mc i ca cy nh phn l 2i-1, ti thiu l 1 (i 1). S lng ti a cc nt trn mt cy nh phn c chiu cao h l 2h-1, ti thiu l h (h 1). Cy nh phn hon chnh, khng y , c n nt th chiu cao ca n l
h=[log2(n+1)]+1. Cy nh phn y c n nt th chiu cao ca n l h = log2(n + 1) II.2. Ci t cy nh phn V d: cho cy nh phn nh sau:
II.2.1.Ci t bng mng Cch 1: dng 3 mng 1 chiu c n phn t (n s phn t trong cy) Mng Value cha ni dung ca cc nt trong cy Mng Left cha nhn ca nt gc ca cy con tri c gc mng Value Mng Right cha nhn ca nt gc ca cy con phi c gc mng Value Vi cc nt l (khng con) th Left v Right tng ng trng Vi cy trn th ni dung 3 mng nh sau:
Vi cch ci t ny th cc gi tr trong cy phi khc nhau tng i mt.
a d g h i k l o x y z
1 2 3 4 5 6 7 8 9 10 11 a d g h i k l o x y z 2 4 6 8 9 3 5 7 10 11
Ch s Value Left
Right
-
56 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Cng c th dng 1 mng 1 chiu kiu bn ghi gm (Value, Left, Right) lu tr.
Cch 2: Dng 1 mng 1 chiu lu tr cy nh phn. Trn cy nh phn hon chnh ta nh s th t t trn xung v t tri sang phi. Ch s
nh c trn cy chnh l ch s ca mng 1 chiu.
Vi cy trn ta c mng nh sau:
Vi cch lu ny, ta thy: Nu ch s i l nt cha th nt con tri c ch s 2i v con phi c ch s 2i+1 Nu i l ch s ca nt con th ch s nt cha l i/2 Hai cch lu bng mng trn ta nhn thy rt ph hp i vi cy nh phn hon chnh hoc
y . Nu cy nh phn thiu nhiu nt nhiu mc khc nhau th c khc nhiu ch trng.
II.2.2.Ci t bng con tr Mi nt ca cy gm c 2 phn. Phn Info dng cha gi tr ca nt. Phn lin kt gm
2 con tr Left v Right c dng cha a ch cc nt cy con tri v cy con phi
Cu trc ca mt nt nh sau Typedef TreeNode=Record Kiu_lu_tr Info Con_tr_kiu_TreeNode Left, Right End Record
Vi cy nh phn trn ta c th m phng nh sau (du * thay cho con tr Null)
Hm to Node c gi tr X, con tr Left l L, con tr Right l R, tr v a ch ca Node Func Tao(X,L,R) New(p) Info(p) := X Left(p) := L
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 a d g h i k l o x y z
Ch s Value
Left Info Right
a
d g
h i k l
o x y z
*
* * * * * *
*
* *
* *
T
-
Cu trc d liu v Gii thut 57
TRNG CAO NG CNG NGH THNG TIN
Right(p) := R Tao := p Return
S dng hm to cy trn nh sau: T := Tao(a,Tao(d,Tao(h,Tao(o,*,*),*),Tao(i,Tao(x,*,*),Tao(y,*,*))), Tao(g,Tao(k,*,Tao(z,*,*)),Tao(l,*,*)))
II.3. Cc php duyt cy nh phn Php x l cc nt trn cy m ta gi chung l php thm (Visit) cc nt mt cch h thng
sao cho mi nt ch c thm mt ln gi l php duyt cy.
Gi s rng nu nh mt nt khng c nt con tri (hoc nt con phi) th lin kt Left (Right) ca nt c lin kt thng ti mt nt c bit m ta gi l NIL (hay NULL), nu cy rng th nt gc ca cy cng c gn bng NIL. Khi c ba cch duyt cy hay c s dng:
Duyt theo th t trc (preorder traversal) Trong php duyt theo th t trc th gi tr trong mi nt bt k s c lit k trc gi
tr lu trong hai nt con ca n, c th m t bng th tc quy sau: proc Visit(N) //Duyt nhnh cy nhn N l nt gc ca nhnh if N nil then
{
Visit(Nt con tri ca N); Visit(Nt con phi ca N); }
Return
Qu trnh duyt theo th t trc bt u bng li gi Visit(nt gc).
Nh cy trn, nu ta duyt theo th t trc th cc gi tr s c lit k theo th t: A B D H I E C F J G
Duyt theo th t gia (inorder traversal) Trong php duyt theo th t gia th gi tr trong mi nt bt k s c lit k sau gi tr
lu nt con tri v c lit k trc gi tr lu nt con phi ca nt , c th m t bng th tc quy sau:
proc Visit(N) {Duyt nhnh cy nhn N l nt gc ca nhnh } if N nil then
{ Visit(Nt con tri ca N);
Visit(Nt con phi ca N); }
Return
Qu trnh duyt theo th t gia cng bt u bng li gi Visit(nt gc).
Nh cy trn, nu ta duyt theo th t gia th cc gi tr s c lit k theo th t: H D I B E A F J C G
-
58 Cu trc d liu v Gii thut
http://www.ebook.edu.vn TRUNG CAO NG CNG NGH THNG TIN
Duyt theo th t sau (postorder traversal) Trong php duyt theo th t sau th gi tr trong mi nt bt k s c lit k sau gi tr
lu hai nt con ca nt , c th m t bng th tc quy sau: proc Visit(N) {Duyt nhnh cy nhn N l nt gc ca nhnh } if N nil then
{ Visit(Nt con tri ca N);
Visit(Nt con phi ca N); }
Return Qu trnh duyt theo th t sau cng bt u bng li gi Visit(nt gc).
Cng vi cy trn, nu ta duyt theo th t sau th cc gi tr s c lit k theo th t: H I D E B J F G C A
III. CY BIU DIN BIU THC
III.1. Biu din biu thc di dng cy Chng ta c th biu din cc biu thc s hc gm cc php ton cng, tr, nhn, chia
bng mt cy nh phn, trong cc nt l biu th cc hng hay cc bin (cc ton hng), cc nt khng phi l l biu th cc ton t (php ton s hc chng hn). Mi php ton trong mt nt s tc ng ln hai biu thc con nm cy con bn tri v cy con bn phi ca nt .
V d: Cy biu din biu thc (a+b)*(a-c)
Qui tc biu din mt biu thc ton hc trn cy nh sau: Mi nt c ti a 2 con (con tri & con phi) Mi nt l c nhn biu din cho mt ton hng. Mi nt trung gian (khng phi l) biu din mt ton t.
Vi mt php ton c th t nh v / th r rng cy ny l cy c th t
u tin ton t trong biu thc trung t ( )
^
* + - a b c d
-
Cu trc d liu v Gii thut 59
TRNG CAO NG CNG NGH THNG TIN
* /
+ -
Qui tc v cy biu thc Trn biu thc trung t, xc nh th t thc hin cc ton t ca biu thc Chn php ton X thc hin cui cng t n vo gc cy Bn tri ca X l cy con tri ca X, bn phi ca X l cy con phi Vi mi cy con, ta li thc hin nh trn cho n khi cc ton hng nt l V d : V cy biu din biu thc a + (b c) * e (f + g)
Cy biu din nh sau:
III.2. Cc k php dng cho biu thc Vi cy nh phn biu din biu thc a + (b c) * e (f + g) nh trn, cc php duyt cy
theo th t trc, gia v sau, s cho ta kt qu nh sau: Nu ta duyt theo th t trc, ta s c biu thc: + a * - b c e + f g y l dng tin t (prefix) ca biu thc. Trong k php ny, ton t c vit trc hai ton hng tng ng, ngi ta cn gi k php ny l k php Ba lan. Nu ta duyt theo th t gia, ta s cbiu thc: a + b - c * e - f + g K php ny hi mp m v thiu du ngoc. Nu ta thm vo th tc duyt inorder vic b sung cc cp du ngoc vo mi biu thc con th ta s c biu thc: (a + ((b c) * (e (f + g)))) K php ny gi l dng trung t (infix) ca mt biu thc (Thc ra ch cn thm cc du ngoc trnh s mp m m thi, khng nht thit phi thm vo y cc cp du ngoc). Nu ta duyt theo th t sau, ta s c biu thc: a b c e f g + * +
y l dng hu t (postfix) ca biu thc. Trong k php ny ton t c vit sau hai ton hng, ngi ta cn gi k php ny l k php nghch o Balan (Reverse Polish Notation - RPN) .
Ch c dng trun