giaithuat_dhthainguyen

Upload: nam-lun

Post on 07-Jul-2015

57 views

Category:

Documents


0 download

TRANSCRIPT

Cu trc d liu - B mn CNPM Khoa CNTT HTN 1 LI NI U pngnhucuhctpcaccbnsinhvin,nhtlsinhvin chuynngnhcngnghthngtin,chuynngnhtinhckinht,chuyn ngnh in t Vin thng cc tc gi B mn Cng nghphn mm -Khoa CngNghThngTin- Trngi hcThi nguynchngtitin hnhbin sontp cc bigingchnhtrongchngtrnhhc o to theo tnch.Bigi ngmnCuTrcDLiuvThuttonnycbin soncbndatrnquyn:Cutrcdliu&thuttoncatcgi inh Mnh Tng, Nh xut bn Khoa hc v Kthut. Cu trc d liu v giithut, ca tc gi Xun Li, Cu trc d liu + gii thut= Chng trnhcaN.Wirth.Giotrnhnycngcbinsondatrnkinh nghim ging dy nhiu nm mn Cu Trc D Liu v Gii Thut ca chng ti. TiliunycsontheocngchititmnCuTrcDLiu v t hut t oncasinhvinchuynngnhCngnghthngtinca Khoa Cng Ngh Thng Tin - Trng i Hc Thi nguyn. Mc tiu ca n nhm gip cc bn sinh vin chuyn ngnh c mt ti liu c ng dng lm tiliu hctp,nhngchngticngkhngloitrtonbcc itng khc tham kho. Chng ti ngh rng cc bn sinh vin khngchuyn tin v nhngngiquantmticutrcdliu v gii thut s tm c trong ny nhng iu hu ch. Mc d rt c gng nhiu trong qu trnh bin son gio trnh nhng chcchngiotrnhscnnhiuthiustvhnch.Rtmongnhn c s ng gp kin qu bu ca sinh vin v cc bn c tp bi ging ngy mt hon thin hn v c th tr thnh mt gio trnh thc s hu ch. Thi nguyn,10 / 2009 Cc tc gi Cu trc d liu - B mn CNPM Khoa CNTT HTN 2 MC LC PHN TNG QUAN .......................................................................................... 5 Chng 1M U ........................................................................................... 7 1. 1 T bi ton n chng trnh ...................................................................................... 7 1.2 Cc khi nim c bn .................................................................................................. 11 1.2.1 M hnh d liu ( Data model ) ........................................................................... 11 1.2.2. Khi nim tru tng ha ................................................................................... 13 1.2.3 Kiu d liu tru tng ....................................................................................... 14 1.2.4 D liu .................................................................................................................... 14 1.2.5 Biu din d liu trn my tnh ........................................................................... 14 1.2.6 Kiu d liu ........................................................................................................... 14 1.2.7 Cu trc d liu (Data Structures) ..................................................................... 16 1.2.8 Gii thut ............................................................................................................... 18 1.2.6 Mi quan h gia cu trc d liu v gii thut ................................................ 18 1.3. Phn tchgii thut ................................................................................................... 19 1.3.1 S cn thit phi phn tch gii thut...................................................................... 19 1.3.2 Thi gian thc hin ca gii thut .......................................................................... 20 1.3.3 Khng gian ca gii thut .................................................................................... 23 1.4 Ngn ng din t gii thut ...................................................................................... 23 1.5. quy v gii thut ............................................................................................... 24 1.5.1 Khi nim quy .................................................................................................. 24 1.5.2 Gii thut quy v th tc quy .................................................................... 24 Chng 2 M HNH D LIU DANH SCH ........................................... 26 2.1 Danh sch (List) ........................................................................................................... 26 21.1 Khi nim danh sch ............................................................................................. 26 2.1. 2. Cc php ton c bn trn danh sch ............................................................... 27 2.1.3 Biu din (ci t) danh sch trn my tnh ...................................................... 28 2.1.3.1 Danh sch ci t bng mng ......................................................................... 28 2.1.3.2 Danh sch ci t bi con tr ......................................................................... 33 2.2 Ngn xp (Stack) v ng dng..................................................................................... 41 2.2.1. nh ngha ngn xp ............................................................................................ 41 2.2.2 Cc php ton c bn trn ngn xp: .................................................................. 42 2.2.3. Ci t ngn xp ................................................................................................... 42 Cu trc d liu - B mn CNPM Khoa CNTT HTN 3 2.2.4. ng dng ngn xp .............................................................................................. 43 2.3.Hng i (QUEUE) ................................................................................................ 44 2.3.1. nh ngha hng i ............................................................................................ 44 2.3.2 Cc php ton c bn trn hng .......................................................................... 44 2.3.3 Ci t hng i .................................................................................................... 45 2.3.3.1 Ci t hng bng mng .................................................................................. 45 2.3.3.2. Ci t hng bng danh sch lin kt (ci t bng con tr) ........................ 48 2.3.4. Mt s ng dng ca cu trc hng .................................................................... 49 Chng 3M hnh d liu Cy ...................................................................... 50 3.1 Cy tng qut ............................................................................................................... 50 3.1.1 nh ngha cy v cc khi nim c bn trn cy .............................................. 50 3.1.2 Cc php ton c bn trn cy ............................................................................ 51 3.1.3 Cc cch thm ( duyt) cy .................................................................................. 51 3.1.4. Ci t cy ............................................................................................................ 55 3.1.4.1 Biu din cy bng danh sch cc con ca mi nh .................................... 55 3.1.4.2 Biu din cy bng con trng v em lin k ca mi nh .......................... 58 3.1.4.3 Biu din cy bi cha ca mi nh ................................................................ 60 3.2 Cy nh phn (binary tree) ......................................................................................... 62 3.2.1 nh ngha ............................................................................................................. 62 3.2.2. Duyt cy nh phn .............................................................................................. 63 3.2.3 Ci t cy nh phn ............................................................................................. 65 3.2.4 Cc php ton c bn trn cy nh phn ............................................................ 65 3.3 Cy tm kim nh phn (binary search tree) ............................................................. 68 3.3.1 nh ngha cy TKNP .......................................................................................... 68 3.3.2 Ci t cy tm kim nh phn ............................................................................ 69 3.3.3 Cc php ton c bn trn cy tm kim nh phn ............................................ 69 CHNG 4 M hnh d liu th (Graph) .......................................... 75 4.1 nh ngha th v cc khi nim ............................................................................ 75 4.2 Cc php ton c bn trn th ................................................................................ 76 4.3 Biu din th ............................................................................................................ 77 4.3.1. Biu din th bng ma trn k ........................................................................ 77 4.3.2. Biu din th bng danh sch cc nh k ..................................................... 77 4.4Cc php duyt th (TRAVERSALS OF GRAPH) .......................................... 78 4.4.1. Duyt theo chiu su (depth-first search) ........................................................... 78 4.4.2. Duyt theo chiu rng (breadth-first search) ..................................................... 78 Cu trc d liu - B mn CNPM Khoa CNTT HTN 4 4.4.Mt s bi ton ng dng trn th: .................................................................. 78 Chng 5M hnh d liu Tp hp ............................................................. 79 5.1. Khi nim tp hp....................................................................................................... 79 5. 2 M hnh d liu tp hp ............................................................................................. 80 5.3Ci t tp hp v ci t cc php ton trn tp hp ........................................... 80 5.3.1.Ci t tp hp bi vect bit ............................................................................... 81 5.3.2 Ci t tp hp bi mng .................................................................................... 82 5.3.3 Ci t bi danh sch lin kt hoc danh sch c sp .................................. 82 5.5T in (Dictionary) ................................................................................................... 85 5.5.1 T in l g? ......................................................................................................... 85 5.5.2 Cc phng php ci t t in ........................................................................ 85 5.5.3 Cu trc d liu Bng bm, ci t t in bi bng bm ............................... 85 5.5.3.1. Ci t t in bng bng bm m .............................................................. 86 5.5.3.2. Ci t t in bng bng bm ng ........................................................... 90 5.5.3.3 Cc phng php xc nh hm bm ............................................................. 93 Cu trc d liu - B mn CNPM Khoa CNTT HTN 5 PHN TNG QUAN 1. Mc ch yu cu Mn hc cu trc d liu cung cp cho sinh vin mt khi lng ln cc kin thccbnvcccutrcdliuvccphptontrntngcutrc. Sau khi hcxong mn ny, sinh vin cn phi: -Nm vng khi nim kiu d liu, kiu d liu tru tng, m hnh d liu, gii thut v cu trc d liu -Nmvngvcitcccmhnhdliu,kiudliutru tngcbnnhdanhsch, ngnxp,hngi,cy,tphp,bng bm,thbngmtngnnglp trnh cn bn. -Vndngccckiudliutrutng, cc m hnh d liu giiquytbitonngin trong thc t. 2. i tng s dng Mn hc cu trc d liu c dng ging dy cho cc sinh vin sau: -Sinh vin chuyn ngnh cng ngh thng tin (mn bt buc ) -Sinh vin chuyn ngnh tin hc kinh t (mn bt buc) -Sinh vin chuyn ngnh in t - Vin thng v t ng ha (mn bt buc) 3. Ni dung ct li Nidunggiotrnhgm5chngvuctrnhbytrong45titcho sinh vin, trong c khong 30 tit l thuyt v 15 tit bi tp m gio vin s hngdnchosinhvintrnlp.Bncnhtiliunycnctiliuthc hnh cu trc d liu, do vy ni dung gio trnhchtrngvcccutrcd liu v cc gii thut trn cc cu trc d liu . Chng1: Trnhbycchtipcntmtbitonnchngtrnh,nbaogm m hnhhobiton,thitlpcutrcdliutheomhnhbiton,vit giithutgii quytbitonvccbctinhchgiithutancit c th trong mt ngn ng lp trnh Chng 2:Trnhbymhnhdliudanhsch,cccutrcdliucit danhsch, chng ti tp trung trnh by cu trc danh sch lin kt n, v cu trc danh sch lin kt kp cho nhng bi ton cn duyt danh sch theo 2 chiu xui,ngcmtcchthunli.Ngnxpvhngicngctrnhby trongchngnynhlhaicutrcdanhschcbit.Chngnyc nhiucittngichititccbnsinhvinmitipcnvilp trnhcchinngcaokhnnglptrnh trong ngn ng C ng thi cng nhmminhhoviccitmtkiudliutrutngtrongmtngnng lp trnh c th. Cu trc d liu - B mn CNPM Khoa CNTT HTN 6 Chng3: Chngnygiithiuvkiudliutrutngcy,khinimcy tng qut, cc php duyt cy tng qut v ci t cy tng qut. K n chng ti trnh by v cynhphn,cccchcitcynhphn. Cui cng, chng ti trnh by cy tm kim nh phn nh l mt cu trc dng lu tr v tm kim d liu hiu qu. Chng4: Trnh bymhnhd liu th,cc cchbiudin th hayl ci tth. ychngticngtrnhbyccphpduyt thbaogm duyttheo chiurngvduyttheochiusumtth v cpmts bitonthnggptrnthnhlbitontmngingn nht, bi ton tm cy khung ti thiu. . Dohnchvthilngln lpnn chng ny chng ti chgiithiusinhvinthamkhothmv cch ci t th v cc bi ton trn th. Chng 5:.DohnchvthilnglnlpnnchngtiChngnyChng nydnhnivmh nhdliut php,cccchn gincit tphpnhcitbngvectbthaybngdanhsch...Phnchnhca chng ny trnh by kiu d liu tru tng t in, l tp hp vi ba php tonthm,xovtmkimphnt,cngvicccutrclutrthchhp cho n l bng bm. 4. Kin thc tin quyt hc tt mn hc cu trc d liu ny, sinh vin cn phi c cc kin thc c bn sau:- Kin thc v k nng lp trnh cn bn. - Kin thc ton ri rc. 5. Danh mc ti liu tham kho [1] Aho, A. V. , J. E. Hopcroft, J. D. Ullman. "Data Structure and Algorihtms", Addison Wesley; 1983 [2] Xun Li . "Cu trc d liu v gii thut". Nh xut bn khoa hc v k thut. H ni, 1995. [3] inh Mnh Tng, Cu trc d liu & thut ton, Nh xut bn Khoa hc v Kthut, 2003. [4]MichelT.Goodrich,RobertoTamassia,DavidMount,DataStructures and Algorithms in C++. Weley International Edition; 2004. [5] N. Wirth " Cu trc d liu + gii thut= Chng trnh", 1983. [6] Nguyn Trung Trc, "Cu trc d liu". BK tp HCM, 1990. [7] L Minh Trung; Lp trnh nng cao bng Pascal vi cc cu trc d liu; 1997 Cu trc d liu - B mn CNPM Khoa CNTT HTN 7 Chng 1M U Tng quan: 1. Mc tiu Sau khi hc xong chng ny, sinh vin s: Nm c cc bc trong lp trnh gii quyt cho mt bi ton. Nmvngkhinimc bn lin quan n cu trc d liu v gii thut nh: M hnh d liu, kiu d liu tru tng, kiu d liu, gii thut,.... Nm vng cc tiu chun la chn cu trc d liu tt cho bi ton 2. Kin thc c bn cn thit Cc kin thc c bn cn thit hc chng ny bao gm: Kh nng nhn bit v gii quyt bi ton theo hng tin hc ha. 3. Ni dung chnh Chng ny chng ta s nghin cu cc vn sau: - Cch tip cn t bi ton n chng trnh -Cc khi nim c bn lin quan n cu trc d liu v thut ton -Cc tiu chun la chn cu trc d liu tt cho bi ton -K thut quy trong cch gii bi ton - Ngn ng din t gii thut 1. 1 T bi ton n chng trnh gii mt bi ton trong thc t bng my tnh ta thng tri qua 2 giai on: Giai on 1: Xc nh bi ton cn gii quyt v xy dng m hnh ton hc cho bi ton cn gii quyt. Mc ch tr li hai cu hi: Bi ton cho ci g v yu cu lm nhng g? sau tr li cu hi thc hin cc yu cu ca bi ton th lm nh th no Giaion2:Citchngtrnh:Sdngngnnglptrnhxydng chng trnh tng ng vi cch lm ca giai on trc n 1.1.2 Xc nh & m hnh ha bi ton cn gii quyt Khi gii quyt 1 bi ton thc t, ta phi bt u t vic xc nh bi ton. Nhiu thi gian v cng sc b ra xc nh bi ton cn gii quyt, tc l phi tr li r rngcuhi"philmg?"saul"lmnhthno?".Thngthng,khikhi u, hu htccbitonlkhngngin,khngrrng.gimbtsphc tpcabitonthct,taphihnhthchan,nghalphtbiulibiton thctthnhmtbiton hnhthc(haycngilmhnhton).Cthcrt nhiu bi tonthctc cngmt m hnh ton. V d 1: T mu bn th gii. Tacnphitmuchoccnctrnbnthgii.Trongmincu Cu trc d liu - B mn CNPM Khoa CNTT HTN 8 ct mtmuvhainc lng ging(cngbingii)thphictbnghai mu khc nhau. Hy tm mt phng n t mu sao cho s mu s dng l t nht. Tacthxemminctrnbnthgiilmtnhcath,hainc lnggingcanhauthhainhngvincnivinhaubngmtcnh. Bitonlcnytrthnhbitontmuchothnhsau:Minhuphi c t mu, hai nhc cnh ni th phi t bng hai mu khc nhau v ta cn tm mtphngntmusaochosmucsdngltnht.Mhnhtonhc c s dng trong bi ton ny l m hnh th. V d 2: n giao thng Chomtngnmnhhnh1.1,trongCvElccngmtchiutheo chiumitn,ccngkhclhaichiu.Hythitkmtbngnhiuiu khingiaothng ti ngnmnymtcchhpl,nghal:phnchiacclii tingnmnythnhccnhm,minhmgmccliicthcnging thi nhng khng xyra tai nn giao thng (cc li i ny c cc hng i khng ct nhau), v s lng nhm chia l t nht c th c. Tacthxemuvocabitonlttcccliitingnmny,ura ca bitonlccnhmliicthingthimkhngxyratainngiao thng, mi nhm s tng ng vi mt pha iu khin ca n hiu, v vy ta phi tm kim li gii vi s nhm l t nht giao thng khng b tc nghn v phi ch i qu lu. Trchttanhnthyrngtingnmnyc13lii:AB,AC,AD,BA, BC,BD,DA,DB,DC,EA,EB,EC,ED.Ttnhin,cthgiicbitonta phitmmtcch nothhinmilinquangiaccliiny.Linovi li no khng th i ng thi, li no v li no c th i ng thi. V d cp AB v ECcthingthi,nhngADvEBthkhng,vcchnggiaothngct nhau.ytasdngmtstrc quannhsau:tnca13liicvitln mtphng,hailiinonuingthis xyrangnhau(tclhaihngi ctquanhau)tanilibngmtonthng,hoc cong, hoc ngon ngoo tu thch. Ta s c mt s nh hnh 1.2. Nh vy, trn s ny, hai li i c cnh ni li vi nhau l hai li i khng th cho i ng thi. A B C D E Hnh 1.1 Cu trc d liu - B mn CNPM Khoa CNTT HTN 9 Vi cch biudin nh vyta cmtm hnh ton hc th (Graph), trong miliitrthnhmtnhca th,hailiikhngthcngingthi c ni nhau bng mt on ta gi l cnh ca th. By gi ta phi xc nh cc nhm,visnhmtnht,minhmgmccliicthingthi,nng vimtphacanhiuiukhingiaothng.Gisrng,tadngmu t ln cc nh ca th ny sao cho: -Cc li i cho php cng i ng thi s c cng mt mu: D dng nhn thy rng hai nh c cnh ni nhau s khng c t cng mu. - S nhm l t nht:ta phi tnh ton sao cho s mu c dng l t nht. Tm li, ta phi gii quyt bi ton sau: "T mu cho th hnh 1.2sao cho: - Hai nh c cnh ni vi nhau (hai cn gi l hai nh k nhau) khng cng mu. - S mu c dng l t nht." Nh vy:C hai bi ton trn, ban u c v rt khc nhau, nhng sau khi phn tch hnh thc ha th chng u c a v m hnh ton hc th, v p dng thut ton t mu trn th gii quyt cc bi ton ny. Ch : C rt nhiu cc cu trc ton hc c th lm m hnh d liu trong tin hc, v d dy, tp hp, nh x, cy, th, .. -Mt bi ton thc t bt k thng bao gm cc i tng d liu v cc yu cu x l trn nhng i tng , cho nn trong giai on phn tch v thit k, khi xy dng m hnh ton hc cho bi ton cn ch trng n hai vn : + T chc biu din cc i tng d liu ca bi ton trong m hnh ton hc nh th no? m hnh ny ta cn gi l m hnh d liu trong tin hc ABACAD BABC BD DADBDC EAEBECED Hnh 1.2 Cu trc d liu - B mn CNPM Khoa CNTT HTN 10 + Xy dng cc thao tc x l trn cc i tng ca m hnh ra sao 1.1.2 Ci t chng trnh cho bi ton cn gii quyt Khi ci t chng trnh gii quyt bi ton tng ng ta quan tm n hai vn : (1)Biudinmhnhdliucabitontrnmytnhnhthnomy tnhcthhiuvthchinccthaotctrnchng.Giaionnycncgil xydngcutrcdliuchobiton.Tacthcitmtmhnhdliubi nhiucutrcdliukhcnhau.Trongmicchcit,mtsphptontrnm hnh c th c thc hin thun li, nhng cc php ton khc c th li khng thun li (2) M ha cc gii thut x l trn cc cu trc d liu tng ng gii quyt cc yu cu t ra ca bi ton Ta c th s dng mt ngn ng lp trnh c th no (Pascal,C,...) ci t kt qu giai on phn tch v thit k chng trnh, bc ny ta dngcccutrcd liuccungcptrongngnng,vdArray,Record,... biu dinmh nh dl i ucabi t on, v m ha giithutbi cc cu lnh trong ngn ng lp trnh la chn Nh vy, ta c th tm tt cc bc t bi ton n chng trnh nh sau: 1) V mt d liu: M hnh d liu -> Kiu d liu tru tng -> Cu trc d liu.Tht vy: Trong qu trnh pht trin chng trnh, nht l khi pht trin cc h thng phnmmln,tacnnhaidngbiudindliu:Biudintrutngvbiu din c th a)Trong giai on xc nh va m hnh ha bi ton: ta cn s dng dng biu din tru tng: c xc nh bi m hnh d liu l m hnh ton hc ca cc i tng d liu cng vi cc php ton thc hin trn cc i tng , v d nh: M hnh cy, danh sch, tp hp, th, m hnhERA,>Khitadngmhnhdliuvimtsxcnhcc php ton no , ta s c mt kiu d liu tru tng , v d: Ngn xp, hng i, bng bm, . => Dng biu din d liu ny khng ph thuc vo ngn ng lp trnh c thb)Trong giai on ci t chng trnh, ta cn s dng dng biu din c th ca d liu: L biu din xc nh cch lu tr vt l ca d liu trong b nh my tnh. Biu din c th ca d liu c xc nh bi cc cu trc d liu. Cc cu trc d liu c m t trong ngn ng lp trnh c th m ta s dng => Dng biu din ny ph thuc vo ngn ng lp trnh c th Tbiu din tru tng, ta c th chuyn dch thnh cc biu din c th khc nhau, hay ni cch khc, t cc m hnh d liu hoc t cc kiu d liu tru tng, ta c th chuyn dch thnh cc cu trc d liu khc nhau. V d, ta c th ci t danh sch bi cu trc d liu mng hoc cu trc d liu danh sch lin kt. Khi ci t m hnh d liu bi cu trc d liu no , th cc php tan trn m hnh c thc hin bi cc thao tc cn thit trn cu trc d liu . Cu trc d liu - B mn CNPM Khoa CNTT HTN 11 2)V mt x l d liu: Gii thut khng hnh thc ->gii thut bng ngn ng gi ->Gii thut c m ha hon ton bi ngn ng lp trnh c th, v d: Pascal, C,... Thtvy:Tnhngyucuxlthct,tatmccgiithuttrnmhnhd l i uxydng.Giithutcthmtmtcchkhnghnh thc ( tc l n ch nu phng hng gii hoc cc bc gii mt cch tng qut). Tiptheotahnhthchogiithutbngngnnggi,richitithodn ("mn ho") cc bc gii tng qut trn ( lm mn dn) . bc ny ta cn dng cc kiu d liu tru tng (khng phi l cc khai bo cit trong ngn ng lp trnh c th) v cc cu trc lnh iu khin trong ngn ng lp trnh (khng ch trng n c php ngn ng) , kt hp ngn ng t nhin m t gii thut. Cui cng trong pha ci t, ta tin hnh m ha hon ton gii thut c m t bi ngn ng gi, s dng ngn ng lp trnh c th, thao tc trn cu trc d liu c th. 1.2 Cc khi nim c bn 1.2.1 M hnh d liu ( Data model ) M hnh d liu l g? M hnh d liu c s dng m t cu trc logic ca d liu c x l bi h thng. L m hnh ton hc cng vi cc php ton c th thc hin trn cc i tng ca m hnh. Cc thnh phn d liu thc t a dng, phong ph v thng cha ng nhng quan h no vi nhau, do cn phi t chc, la chn v xy dng cc m hnh d liu thch hp nht sao cho va c th phn nh chnh xc cc d liu thc t ny, va c th d dng dng my tnh x l.tmracutrctonhcthchhpvimtbitoncho,chngtacn phi phn tch k bi ton tm ra cu tr li cho cc cu hi sau: +Cc thng tin quan trng ca bi ton c th biu din bi cc i tng ton hc no ? +C cc mi quan h no gia cc i tng ? +Cc kt qu phi tm ca bi ton c th biu din bi cc khi nim ton hc no ? Saukhicmhnhtonhcmtbiton,mtcuhitral,taphi lm vic vi m hnh nh th no tm ra li gii ca bi ton?Chngtasthitkccthuttonthngquacchnhng,ccphptonthc hin trn cc i tng ca m hnh V d: + Trong m hnh d liu th, trong s rt nhiu cc php ton, ta c th k ra mt s php ton sau: Tm cc nh k ca mi nh, xc nh ng i ngn nht ni 2 nh bt k, tm cc thnh phn lin thng, tm cc nh treo, t mu th,+ Trong m hnh d liu danh sch ta c nhng php ton sau: - Xc nh di danh sch Cu trc d liu - B mn CNPM Khoa CNTT HTN 12 - Xen mt phn t mi vo danh sch - Loi b, sp xp Ta c th phn loi cc m hnh d liu da trn mi quan h gia cc phn t: 1-M hnh d liu tuyn tnh (danh sch): Dng biu din cc phn t c quanh1:1.Ccphnttrongmhnhcquanhtuyntnhtheotht xut hin ca chng, tc l, nu m hnh d liu tuyn tnh cha cc phn t thnphicphntutinvphntcuicng,miphntcng mtphnngngaytrcvmtphntngngaysau.Hnh1.3biu din mt v d v m hnh d liu tuyn tnh. Hnh 1.3 M hnh d liu danh sch 2-M hnh d liu phn cp (m hnhcy): Dng biu din cc phn t c quan h 1: n,tc l, mi phn t trong m hnh c nhiu hu bi, nhng ch c mt tin bi. Hnh 1.4 biu din mt v d c th v m hnh ny. Nu tadichuynttrnxungditrongHnh1.4thmintcthtrn nhiuntkhc,nhngnutadichuyntdilnthmint(trnt gc)chcquanhvi1nt.Mhnhdliuphncpnhvythng cgilcy,vylmtloimhnhdliuquantrngtrongkhoa hc my tnh: Hnh 1.4 M hnh d liu cy Phn t cui cng Phn t u tin Phn t ng sau A A Phn t ng trc A A A ch c 1 tin bi, c nhiu hu bi Cc hu bi ca A Tin bi ca A Cu trc d liu - B mn CNPM Khoa CNTT HTN 13 3 - M hnh d liu th ba l th: y l m hnh d liu phong ph v phc tp nht. Trong th, cc phn t c mi quan h n:m. Tc l, mi phn t c th c quan h vi mt hoc nhiu phn t khc. Hnh 1.5 biu din mt v d c th v m hnh ny. Hnh 1.5 M hnh d liu th 4 - Loi m hnh d liu cui cng l tp hp. Trong mt tp hp, cc phn t khng c mi quan h trc tip vi nhau, gia chng ch c mt mi quan h l thnh vin ca tp hp, takhng cn quan tm ti v tr chnh xc camt phn t no trong tp hp. Hnh 1.6 biu din mt v d c th v m hnh ny. Hnh 1.6 M hnh tp hp Trn y l bn loi m hnh d liu m ta s nghin cu. Ta cng s nghin cu cc dng biu din ca cc m hnh ny bi cc cu trc d liu khc nhau trong pha citchngtrnh.Nichung,huhtcccutrcdliuurivomttrong bn dng c bn ny. 1.2.2. Khi nim tru tng ha Trongtinhc,trutnghanghalnginha,lmchonsngsa hnvdhiuhn.Cthtrutnghalcheinhngchitit,lmnibtci tng th. A Cu trc d liu - B mn CNPM Khoa CNTT HTN 14 1.2.3 Kiu d liu tru tng Trong M hnh d liu, chng ta c th thc hin mt tp hp cc php ton rt a dng, phong ph. Song trong nhiu p dng, chng ta ch s dng m hnh vi mt s xc nh cc php ton no . Khi chng ta s c mt kiu d liu tru tng Kiu d liu tru tng (abstract data type): l mt m hnh d liu c xt cng vi mt s xc nh cc phptonno . V d:M hnhd liu danh sch, ch xt n cc php ton thm vo v ly ra, ta gi l kiu d liu hng i hoc ngn xp, M hnh tp hp, ch xt n cc php ton: Thm vo, loi b, tm kim ta gi l kiu d liu tru tng t in, ..... Khi ni n mt kiu d liu cn phi cp n hai c trng c bn sau : 1) Tp cc gi tr thuc kiu. 2) Tp hp cc php ton c th thc hin c trn cc d liu ca kiu. 1.2.4 D liuThctdliutntirtnhiudng:hnhnh,mthanh,.crtnhiudng khc nhau. Trong mt bi ton, d liu c phn lm ba loi: 1.2.5 Biu din d liu trn my tnh + Trong MTT, cc d liu d tn ti nhng hnh thc khc nhau (s, vn bn, hnh nh,ng/sai,.)ucbiudindidngnhphnkhiavoMTxl. Tc l mi d liu c biu din di dng mt dy cc s nh phn 0 hoc 1.V d: S 10 = 0000 1010=> Cch biu din ny rt khng thun tin (di, kh, khng gi nh, ) i vi con ngi. Vic xut hin cc ngn ng lp trnh bc cao ( Pascal, C, gn vi ngn ng tnhin)giiphngconngikhinhngkhkhnkhilmvicvicchbiu din d liu nh phntrong MT+Trong cc ngn ng lp trnh bc cao: Cc kiu d liu l s tru tng ho cc tnh cht ca cc i tng d liu c cng bn cht trong th gii thc (ch ra nhng tnh cht c trng cho cc i tng thuc phm vi bi ton ang xt) V d: ng vi cc d liu dng s, tng ng ta c cc kiu d liu s nguyn, s thc, s phc, trong ngn ng lp trnh, .... + Nh vy tt c cc d liu m t trong ngn ng lp trnh bc cao c my tnh x l u phi thuc mt kiu d liu xc nh. 1.2.6 Kiu d liuKiu d liu T c xc nh bi mt b , vi : V : tp cc gi tr hp l m mt i tng kiu T c th lu tr O : tp cc thao tc x l c th thi hnh trn i tng kiu T. D liu D liu vo: Cc i tng cn x l ca bi ton Kt qu trung gian D liu u ra: Kt qu x l Cu trc d liu - B mn CNPM Khoa CNTT HTN 15 V du: Gi s c kiu d liu mu t = viVc = { a-z,A-Z} Oc ={lymASCIIcakt,biniktthng thnh k t hoa} Gi s c kiu d liu s nguyn = viVi = { -32768..32767} Oi = { +, -, *, /, %} Nh vy: mun s dng mt kiu d liutrong ci tcn nm vngcc thuc tnh ca kiu d liu . Cc thuc tnh ca 1 kiu d liu bao gm: -Tn kiu d liu: T kha th hin cho kiu -Min gi tr: Mt bin c kiu d liu c th nhn cc gi tr trong phm vi no -Kch thc lu tr: ti u ha vic s dng kiu d liu ph hp, trnh hin tng d tha b nh. -Tp cc ton t tc ng ln kiu d liu: Cc php ton c bn m kiu d liu cung cp Ta thy rng, cc loi d liu c bn thng l cc loi d liu n gin, khng c cu trc. Chng thng l cc gi tr v hng nh cc s nguyn, s thc, cc k t, cc gi tr logic ... Cc loi d liu ny, do tnh thng dng v n gin ca mnh, thng cccngnnglptrnh(NNLT)cpcaoxydngsnnhmtthnhphnca ngnnggimnhcngvicchongilptrnh.Chnhvvyikhingita cn gi chng l cc kiu d liu nh sn. Thng thng, cc kiu d liu c bn bao gm : Kiu c th t ri rc: s nguyn, k t, logic , lit k, min con Kiu khng ri rc: s thc Ty ngn ng lp trnh, cc kiu d liu nh ngha sn c th khc nhau i cht v ccthuctnh.Vd:VingnngC,cckiudliunychgmsnguyn,s thc, k t. V theo quan im ca C, kiu k t thc cht cng l kiu s nguyn v mt lu tr, ch khcv cch s dng.Trong khi PASCAL nh ngha tt c cc kiu d liu c s lit k trn v phn bit chng mt cch cht ch.Cc kiu c s rt n gin v khng th hin r s t chc d liu trong mt cu trc, thng ch c s dng lm nn xy dng cc kiu d liu phc tp khc Tuy nhin trong nhiu trng hp, ch vicc kiu d liu c s khng phnnhtnhinvybnchtcasvtthct,dnnnhucuphixy dngcckiudliumidatrnvictchc,linktccthnhphndliuc kiudliucnhngha.Nhngkiudliucxydngnhthgil kiu d liu c cu trc. a s cc ngn ng lp trnh u ci t sn mt s kiu c cutrccbnnhmng,chui,tptin,bnghi...vcungcpcchcholptrnh vin t nh ngha kiu d liu mi. V d : m t mt i tng sinh vin, cn quan tm n cc thng tin sau: Cu trc d liu - B mn CNPM Khoa CNTT HTN 16 - M sinh vin: chui k t - Tn sinh vin: chui k t - Ngy sinh: kiu ngy thng - Ni sinh: chui k t - im thi: s nguyn Cc kiu d liu c s cho php m t mt s thng tin nh : Diemthi: integer;Cc thng tin khc i hi phi s dng cc kiu c cu trc nh : Masv: string[15]; Tensv: string[15]; Noisinh: String[15]; th hin thng tin v ngy thng nm sinh cn phi xy dng mt kiu d liu c cu trc bn ghi, TypeDate = recordNgay: byte; Thang: byte; Nm: integer; End; Cui cng, ta c th xy dng kiu d liu c cu trc th hin thng tin v mt sinh vin : Type SinhVien = Record Masv: String[15]; Tensv: String[15]; Noisinh: String[15]; Diem thi: Integer; Ngaysinh: Date End; Gi s c cu trcph hp lu trmt sinh vin, nhng thc t licn qunlnhiusinhvin,lcnysinhnhucuxydngkiudliuccutrc mi, v d danh sch hoc mng... Mc tiu ca vic nghin cu cu trc d liu chnh l tm nhng phng cch thch hp t chc, lin kt d liu, hnh thnh cc kiu d liu c cu trc t nhng kiu d liu c nh ngha. 1.2.7 Cu trc d liu (Data Structures) CTDL = { Cc d liu thnh phn} Trong : Ccdliuthnhphncthldliun(snc)hoclCTDLc xydng,chngclinktvinhautheomtphngphplinktno,t Cu trc d liu - B mn CNPM Khoa CNTT HTN 17 nhng CTDL ny ngi ta xy dng cc gii thut tng ng tc ng trn CTDL mt cch hiu qu nht V d: Trong ngn ng lp trnh Pascal: Mng: Bao gm mt dy c th t cc phn t c cng kiu Bn ghi: Bao gmmt tp cc phn t d liu khckiu, cmi quan hvi nhau, v d thng tin v 1 con ngi gm h tn, ngy sinh, chiu cao, cn nng, ... . Mt cu trc d liu tt phi tha mn cc tiu chun sau : 1-Phn nh ng thc t :yltiuchunquantrngnht,quytnhtnhngncatonbbi ton.Cnxemxtklngcngnhdtrcctrngthibinicadliu trong chu trnh sng c th chn cu trc d liu lu tr th hin chnh xc i tng thc t. V d : Mt s tnh hung chn cu trc lu tr sai : - Chn mt bin s nguyn integer lu tr tin thng bn hng (c tnh theo cng thc tin thng bnhng = tr gi hng * 5%), do vys lm trn migitrtinthnggythithichonhnvinbnhng.Trnghpny phi s dng bin s thc phn nh ng kt qu ca cng thc tnh thc t. - Trong trng trung hc, mi lp c th nhn ti a 28 hc sinh. Lp hin c 20 hc sinh, mi thng mi hc sinh ng hc ph 100.000 . Chn mt bin s nguynbyte(khnnglutr0-255)lutrtnghcphcalphc trong thng l khng ph hp v gi tr tng hc ph thu c > 255, vt khi kh nng lu tr ca bin chn, gy ra tnh trng trn, dn n sai lch. 2 - Ph hp vi cc thao tc trn :Tiu chun ny gip tng tnh hiu qu ca gii thut, c th l vic pht trin cc thut ton n gin, t nhin hn; chng trnh t hiu qu cao hn v tc x l. V d : Mt tnh hung chn cu trc lu tr khng ph hp: Cnxydngmtchngtrnhsonthovnbn,ccthaotcxl thng xy ra l chn, xo sa cc k t trn vn bn. Trong thi gian x l vn bn, nu chn cu trc lu tr vn bn trc tip ln tp tin th s gy kh khn khixydngccgiithutcpnhtvnbnvlmchmtcxlca chng trnh v phi lm vic trn b nh ngoi. Trng hp ny nn tm mt cu trc d liu c th t chc b nh trong lu tr vn bn sut thi gian son tho. LU : i vi mi ng dng , cn ch n thao tc no c s dng nhiu nht la chn cu trc d liu cho thch hp. Cu trc d liu - B mn CNPM Khoa CNTT HTN 18 3 - Tit kim ti nguyn h thng:Cutrcdliuchnnsdngtinguynhthngvamnhim c chc nng ca n. Thng thng c 2 loi ti nguyn cn lu tm nht : CPU v b nh. Tiu chun ny nn cn nhc ty vo tnh hung c th khi vit chng trnh. Nu cnmt chng trnh c tc x l nhanh th khi chn cu trc d liuyu t tit kim thi gian x l phi t nng hn tiu chun s dng ti u b nh, v ngc li. V d : Mt s tnh hung chn cu trc lu tr lng ph: - S dng bin integer (2 bytes) lu tr mt gi tr cho bit thng hin hnh . Bit rng thng ch c th nhn cc gi tr t 1-12, nn ch cn s dng kiu byte l . - lu tr danh sch hc vin trong mt lp, s dng mng 50 phn t (gii hn s hc vin trong lp ti a l 50). Nu s lng hc vin tht s t hn 30, th gy lng ph. Trng hp ny cn c mt cu trc d liu linh ng hn mng, v d danh sch lin kt ta s cp n trong cc tip theo.Nh vy: Kiu d liu phc, hay cn gi l cu trc d liu, l kiu d liu trong cc phn t ca n c th phn tch thnh cc kiu d liu n hoc kiu d liu phc khc. V d, kiu d liu phc trong Pascal bao gm: array v record.1.2.8 Gii thutKhi c m hnh thch hp cho mt bi ton ta cn c gng tm cch gii quyt bi ton trongmhnh.Khiultmmtgiithut,lmtchuihu hnccchth (instruction) m mi ch th c mt ngha r rng tng ng vi mt thao tc v thc hin c trong mt lng thi gian hu hn. Knuth (1973) nh ngha gii thut l mt chui hu hn cc thao tc gii mt bi ton no . Cc tnh cht quan trng ca gii thut l: -Hu hn (finiteness): gii thut phi lun lun kt thc sau mt s hu hn bc. -Xc nh (definiteness): mi bc ca gii thut phi c xc nh r rng v phi c thc hin chnh xc, nht qun. -Hiu qu (effectiveness): cc thao tc trong gii thut phi c thc hin trong mt lng thi gian hu hn. Ngoi ra mt gii thut cn phi c u vo (input) v u ra (output). Nitmli: Mtgiithutphigiiquytxongcngvickhitachodliuvo.C nhiu cch th hin giithut:dng ngn ng t nhin, dng lu, dng ngn nggi,dngccculnhcangnnglptrnh,...Vmtcchdngph binl dngngn ng gi, l s kthpca ngn ng t nhinvcc cu lnh ca ngn ng lp trnh. 1.2.6 Mi quan h gia cu trc d liu v gii thut Trong mt chng trnh:. Gii thut phn nh cc php x l, cn i tng x l ca gii thut li l d liu, chnh d liu cha ng cc thng tin cn thit thc Cu trc d liu - B mn CNPM Khoa CNTT HTN 19 hin gii thut. xc nh c gii thut ph hp cn phi bit n tc ng n loi d liu no (v d lm nhuyn cc ht u , ngi ta dng cch xay ch khng bm bng dao, v u s vng ra ngoi) v khi chn la cu trc d liu cng cn phi hiu r nhng thao tc no s tc ng n n (v d biu din cc im s ca sinh vin ngi ta dng s thc thay v chui k t v cn phi thc hin thao tc tnh trung bnh t nhng im s ).Nh vy trong mt chng trnh my tnh, gii thut v cu trc d liu c mi quan h cht ch vi nhau, c th hin qua cng thc : Cu trc d liu + Gii thut = Chng trnh Vimtcutrcdliuchn,scnhnggiithuttngng,phhp. Khi cu trc d liu thay i thng gii thut cng phi thay i theo trnh vic x l gng p, thiu t nhin trn mt cu trc khng ph hp. Hn na, mt cu trc d liu tt s gip gii thut x l trn c th pht huy tc dng tt hn, va p ng nhanh va tit kim b nh, gii thut cng d hiu v n gin hn. * Cu trc lu tr ( Storange structures) +CTDL c biu din trong b nh my tnh cnc gi l Cu trc lu tr 1.3. Phn tchgii thut 1.3.1 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 cnphinhgiccgiithutlachnmtgiithuttt(nht).Thng thng th ta s cn c vo cc tiu chun sau: (1) - Gii thut ng n. (2) - Gii thut n gin. (3) - Gii thut hiu qu. Vi yu cu (1), kim tra tnh ng n ca gii thut chng ta c th ci t gii thutvchothchintrnmyvimtsbdliumurilyktquthu c so snh vi kt qu bit.Thc ra th cch lm ny khng chc chn bi v c th gii thut ng vi tt c cc b d liu chng ta th nhng li sai vi mt bdliuno.Vlicchlmnychphthinragiithutsaichcha chngminhclnng.Tnhngncagiithutcnphicchng minhbngtonhc.Ttnhiniunykhngnginvdovychngtas khng cp n y. + CTDL clu tr : B nh trong cn gi l cu trc lu tr trong, v d: Mng, danh sch k tip, .,B nh ngoi cn gi l cu trc lu tr ngoi, v d: Tp tin, bng,. Cu trc d liu - B mn CNPM Khoa CNTT HTN 20 Khi chng tavitmt chng trnh s dng mt vi lnth yu cu (2) l quantrngnht.Chngtacnmtgiithutdvitchngtrnh nhanh chngc cktqu,thigianthchinchngtrnhkhngccaovd saoth chng trnh cng ch s dng mt vi ln m thi. Khimtchngtrnhcsdngnhiulnththyucutitkimthi gian thc hin chng trnh, tit kim khng gian lu tr li rt quan trng, c bit i vi nhng chng trnh m khi thc hin cn d liu nhp ln do yu cu (3) scxemxtmtcchkcng.Taginlhiuqucagiithut.Tnhhiu qu th hin qua hai mt: -Thi gian (Chng trnh chy nhanh)-Khng gian (Chng trnh b chim t b nh)1.3.2 Thi gian thc hin ca gii thut Thi gian thc hin ca gii thut ph thuc vo nhiu yu t -Trc ht ph thuc vo ln ca d liu u vo-Ngoi ra T cn ph thuc vooMyoNgn ngoK so ca ngi lp trnh, o..Tuy nhin cc yu t ny l khng ng u do vy khng th da vo chng khi xc lp thi gian thc hin gii thut T(n), vi n l kch thc ca bi ton a) Thi gian thc hin gii thut l g?n v ca T(n) tnh bng g ? cch tnh? -Thi gian thc hinmt chngtrnh l mt hm ca kch thc d liu vo, k hiu T(n) trong n l kch thc ( ln) ca d liu vo. V d 1: Chng trnh tnh tng ca n s c thi gian thc hin l T(n) = c*n trong c l mt hng s. -T(n)khngthtnhbngnvcthmtnhbngslnthchincc lnh ca gii thut.Mt cu hi t ra l: Cch tnh ny c th hin c tnh nhanh hay chm ca gii thut hay khng ? Cu tr li: r rng l c, th d :oGT1 c thi gian thc hin l t l vi n GT2 c thi gian thc hin l t l vi n2 Vi n kh ln th gii thut 1 nhanh hn gii thut 2 Thi gianm ta nh gi nh trn gi l phc tp tnh ton ca gii thut: gii thut 1 ta ni GT c phc tp tnh ton cp n v k hiu T(n) = O(n) gii thut 2 th thi gian T() = O(n2) hay O(g(n)), g(n) cn c gi l cp phc tp tnh ton Cu trc d liu - B mn CNPM Khoa CNTT HTN 21 Hm g(n) thng chn l: logn; n; n2; n3: ta gi chung l hm a thc; g(n) = 2n ta gi l hm m; cc gii thut c phc tp tnh ton l cp cc hm a thc th chp nhn c. V d : T(n) = 60n2 + 9n + 9 = O(n) *Mt s v d nh gi phc tp tnh ton ca GT V d 1 : Tnhtrung bnh cng ca mt dy gm n s c vo t bn phm 1. Nhp vo s n 2. Cho T = 0; d = 1 3. Lp While d T(n) = O(n) * Mt s qui tc c bn xc nh cp phc tp tnh ton a. Qui tc loi b hng s Nu ta c T(n) = O(C1.g(n)) th ta cng c T(n) = O(g(n)) b. Qui tc ly max Nu ta c T(n) = O(f(n) + g(n)) th ta cng cT(n) = O(max(f(n),g(n))) c. Qui tc cng T1(n) v T2(n) l thi gian thc hin ca 2 on chng trnh P1vP2 v T1(n) = O(f(n)); T2(n)= O(g(n)) th thi gian thc hin 2 on chng trnh ni tip nhau l Cu trc d liu - B mn CNPM Khoa CNTT HTN 22 T(n) = T1(n) + T2(n) Hay T(n) = O(max(f(n),g(n))) d. Qui tc nhn Thi gian thc hin hai on chng trnh P1, P2 lng nhau l : T(n) = O(f(n).g(n)) Nhn xt: T cc qui tc trn, ta thy, vic nh gi phc tp thut ton ta ch cn ch n cc lnh tch cc cn cc lnh khc c th b qua. Lnh tch cc l lnh c s ln thc hin >= s ln thc hin cc lnh khc Tm li: Qui tc tng qut phn tch mt chng trnh: - Thi gian thc hin ca mi lnh gn, READ, WRITE l O(1) -Thigianthchincamtchuituntcclnhcxcnhbngquitc cng.Nhvythigiannylthigianthihnhmtlnhnolunht trong chui lnh. -ThigianthchincutrcIFlthigianlnnhtthchinlnhsauTHEN hocsauELSEvthigiankimtraiukin.Thngthigiankimtraiu kin l O(1). -Thigian thc hin vng lpl tng thi gian thc hin thnvnglp (trn tt c cc ln lp).Nuthigianthchinthnvnglpkhngt hayiththi gianthc hin vng lp l tch ca s ln lp vithi gian thchin 1 ln thn vng lp. V d 1: Tnh thi gian thc hin ca th tc sp xp ni bt PROCEDURE Noi_bot(VAR a: ARRAY[1..n] OF integer);VAR i, j, temp: Integer; BEGIN {1}FOR i:=1 TO n-1 DO {2}FOR j:=n DOWNTO i+1 DO {3}IF a[j-1]>a[j]THEN BEGIN{hon v a[i], a[j]} {4} temp := a[j-1]; {5} a[j-1] := a[j]; {6} a[j]:= temp; END; END; * Xc nh phc tp ca gii thut trn 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) = Cu trc d liu - B mn CNPM Khoa CNTT HTN 23 O(n-i). - Vng lp {1} lp c i chy t 1 n n-1nn thi gian thc hin ca vng lp {1} v cng l phc tp ca gii thut l: T(n) = (n i) = n(n 1) = O(n2). i =1 2 Ch :Trong trng hpvnglp khng xc nhcslnlpthchngtaphi ly s ln lp trong trng hp xu nht. Vd2:Tmkimtunt.HmtmkimSearchnhnvomtmngacns nguynvmtsnguynx,hmstrvgitrlogicTRUEnutntimtphn t a[i] = x, ngc li hm tr v FALSE. Gii thut tm kim tun t l ln lt so snh x vi cc phn t ca mng a, bt u ta[1],nutntia[i]=xthdngvtrvTRUE,ngclinuttcccphn t ca a u khc X th tr v FALSE. FUNCTION Search(a:ARRAY[1..n] OF Integer;x:Integer):Boolean; VAR i:Integer; Found:Boolean; BEGIN {1}i:=1; {2}Found:=FALSE; {3}WHILE(i Ta s dng cng c ny din t gii thut. - Trong mn hc CTDL ta s dng ngn ng lp trnh Pascal minh ho.1.5. quy v gii thut 1.5.1 Khi nim quyMt i tng c gi l quy nu n bao gm chnh n nhmt b phn hoc i tng c nh ngha di dng ca chnh n . V d : Cho n l s nguyn dng, giai tha ca n c nh ngha l : n! =1 nu n = 0 hoc n = 1; n*(n-1) ! nu n >1 1.5.2 Gii thut quy v th tc quy a) Gii thut quy Nu li gii ca bi ton T c thc hin bi li gii ca mt bi ton T, c dng nh T th lmt ligiiquy. Gii thut cha li gii quy c gi l gii thut quy (T 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 tnh tuyn tnh: Cc phn t ca danh sch c th t tuyn tnh theo vtr (position) xut hin ca cc phn t. Taniai ngtrcai+1,viit1nn-1;Tngttaniailphnt ngsauai-1,viit2nn.Tacngniailphnttivtrthi,hay phn t th i ca danh sch. V d: Tp hp h tn cc sinh vin ca lp TINHOC c lit k trn giy nh sau: 1. Nguyn Trung Cang 2. Nguyn Ngc Chng 3. L Th L Sng 4. Trnh V Thnh 5. Nguyn Ph Vnh 6. Phm Quch Qu 7. V Xun Trng 8. Trn Ro Rc L mt danh sch. Danh sch ny gm c 8 phn t, mi phn t c mt v tr trong Cu trc d liu - B mn CNPM Khoa CNTT HTN 27 danh sch theo th t xut hin ca n. - Danh sch con : Nu L = (a1 , a2, . . . , an ) l mt danh sch th ta gi l mt danh sch con ca L, mt on no cc phn t k tip ca L. Danh sch rng c xem l danh sch con ca mt danh sch bt k. -Mtdanhschconbtutphntutingilphnu(prefix),mtdanh sch kt thc bi phn t cui cng gi l phn cui (postfix) ca danh sch. 2.1. 2. Cc php ton c bn trn danh sch Gi L l mt danh sch cho, p l mt v tr (position) trong danh sch, x l mt gitrnocngkiuvikiudliucaccphnttrongdanhsch.Ccphp ton c bn sau c nh ngha trn danh sch: 1) Chn mt phn t vo danh sch INSERT_LIST(x,p,L):xenphntx vo vtrp trong danh sch L. Tc l nu danh sch l a1, a2, . , ap-1, ap ,. . , an th sau khi xen ta c kt qu a1, a2, . . ., ap-1, x,ap,...,an.Nuv tr pkhng tnti trong danh schthphp ton khng c xc nh. 2) Tm v tr ca mt phn t trong danh sch LOCATE(x,L) thc hin vic xc nh vtr phn t cni dung x u tin trong danh sch L. Locate tr kt qu l v tr ca phn t x trong danh sch. Nu x khng c trongdanhschthvtrsauphntcuicngcadanhschctrv,tcl ENDLIST(L). 3) Ly gi tr ca phn t v tr no RETRIEVE(p,L) lygi tr ca phn t v tr p ca danh sch L; nu v tr p khng c trong danh sch th kt qu khng xc nh (c th thng bo li). 4) Xo mt phn t v tr no trong danh sch DELETE_LIST(p,L):xophntvtrpt r ongdanhsch L.Nuvtrp khngctrongdanhschthphptonkhngc nh ngha v danh sch L s khng thay i 5) Tm v tr ca phn t ng sau phn t c v tr xc inhLINK(p,L) cho kt qu l v tr ca phn ti sau phn t p; nu p l phntcui cngtrongdanhschLthLINK(p,L)choktqulENDLIST(L).Link khng xc nh nu p khng phi l v tr ca mt phn t trong danh sch. 6) Tm v tr ca phn t ng trc phn t c v tr xc inh PREVIOUS(p,L)choktqulvtrcaphntngtrcphntcvtrp trongdanh sch.NuplphntutintrongdanhschthPrevious(p,L)khng xc nh. Previous cngkhngxcnhtrongtrnghppkhngphilvtrca phntnotrongdanh sch. 7) Tm v tr ca phn t ng u danh sch FIRST(L) cho kt qu l v tr ca phn t u tin trong danh sch. Nu danh sch rng th ENDLIST(L) c tr v. 8)Kim tra tnh rng ca danh sch Cu trc d liu - B mn CNPM Khoa CNTT HTN 28 EMPTY_LIST(L) cho kt qu TRUE nu danh sch rng, ngc li n cho gi tr FALSE. 9) To mt dch sch rng MAKENULL_LIST(L) khi to mt danh sch L rng, cha c d liu. Ghi ch: Trongthitkccgiithutsaunychngtadngccphptontrutng c nh ngha trn y nh l cc php ton nguyn thy (c bn). Tht vy, t cc php ton nguyn thu ny ta c th t hnh thnh ln cc php ton phc tp khc nh: To danh sch cha d liu, sp xp danh sch, duyt danh sch, tch, gp, tnh ton, tng hp, .ph thuc vo yu cu c th ca bi ton. Lu : Trnylccphptontrutngdochngtanhngha,nchac cittrongccngnnglptrnh.Dothchinccc php ton ta phi ci t chng thnh cc chng trnh con trong ngn ng lp trnh c th. Trong bigingny,vimicutrcd liu ci tmhnh danhschtavnging nhng tham s trong cch ci t trn thng nht trong ci t. 2.1.3 Biu din (ci t) danh sch trn my tnh 2.1.3.1 Danh sch ci t bng mng Ci t danh sch bi mng hay cn gi lcu trc d liu danh sch c, hoc cu trc d liu danh sch k tip, gi tt l: Danh sch c, hoc danh sch k tip, n thuc loi cu trc d liu tnha) M t ci t : -Gi s N l s phn t ti a trong danh sch: Vicchcitny,dnhin, taphi c lng s phn t ti a ca danh sch khai bo s phn t ca mng cho thch hp. D thy rngsphntcamngphickhaibo lnhnsphntcadanhsch.Ni chunglmngcnthamtsch trng, gi s Item: L kiu d liu ca cc phn t trong danh sch -Dng mt mng lu gi cc phnt ca danh (gi s mng Elements). -Count l mt bin m m s lng phn t hin c trong danh sch Nh vy ta c th nh ngha danh sch nh mt cu trc bn ghi gm 2 trng: Elements: Cha cc phn t trong danh sch Count: m s phn t hin c trong danh sch (chiu di danh sch) => Khi mng cha cc phn t trong danh sch c dng nh sau 1)Mun thm 1 phn t vo u hay cui danh sch ta cn gi cc php ton no v gi cc php ton nh th no? 2) Vit gii thut nhp d liu cho danh sch cha n phn t 3) Duyt danh sch hin th/tm tt c cc phn t v tr chn Cu trc d liu - B mn CNPM Khoa CNTT HTN 29 ch s mng12.count.n Ni dung phn t Phn t 1 Phn t 2 Phn t cui cng trong danh sch (rng)(rng) b) Dng ci t Const N = ; Type List = Record Elements : Array[1..N] of Item; Count : 0..N; End; VarL : List; c) Ci t cc php ton c bn 1- Khi to danh sch rng Danhschrnglmtdanhschkhngchabtkmtphntno(haydi danhschbng0).Theocchkhaibotrn,trngcountchvtrcaphnt cuicngtrongdanh sch v cng di hin ti ca danh sch, v vy khi to danh sch rng ta ch vic gn gi tr trng count ny bng 0. Procedure MakeNullList(Var L: List) Begin L. count :=0;End; 2- Kim tra danh sch rng Danh sch rng l mt danh sch m di ca n bng 0. Function Empty_list(L : List) : boolean; Begin Empty_list := L.count = 0; End;3- Xen mt phn t vo danh sch Bi ton: Cho mt danh sch L, mt gi tr x (cng kiu vi kiu d liu ca cc phn t trong danh sch) v mt v tr p bt k trong danh sch. Hy chn x vo v tr p trong danh sch L. Phn tch cch chn Khi xen phn t c ni dung x vo ti v tr p ca danh sch L thsxut hin cc kh nng sau: -Mngy:miphntcamnguchaphnt cadanhsch,tclphn ? Ti sao i s L ca th tc li l tham bin Cu trc d liu - B mn CNPM Khoa CNTT HTN 30 t cui cng ca danh sch nm v tr cui cng trong mng. Ni cch khc, di ca danh sch bng ch s ti a ca mng; Khi khng cn ch cho phn t mi, v vy vic xen l khng th thc hin c, chng trnh bo li. - Ngc li ta tip tc xt: + Nu p khng hp l (p>count+1 hoc pL.count hoc p danh sch c lu tr theo kiu ny gi l danh sch mc nihay danh sch lin kt. Vy lu tr mc ni l nh th no, ta i tm hiu nguyn tc lu tr ca n? Cc nh cha cc phn t ca danh sch l mt vng lin tc, cc vng nh ny c cp pht ngay khi dch chng trnh v n l cc nh tnh. Nhc im chnh: S lng cc phn t trong danh sch b hn ch v ph thuc vo vng nh trng lin tc trong b nh Ta bit, vi cu trc danh sch k tip th: Cu trc d liu - B mn CNPM Khoa CNTT HTN 34 ch ca nh ng k sau trong danh sch, ta c th hnh dung c ch ny qua v d sau: Gis1nhmc4bn:ng,Ty,Nam,Bccachnhlnltl d,t,n,b.Gis:ng cachcaNam,Tykhngcachcabnno,Bc giachcang,Namc a ch ca Ty, iu ny cmt quaHnh 2.1 nh sau Hnh 2.1 Danh sch lin kt n cha 4 phn tNhvy,nutaxtthtccphntbngcchlu a ch nythtacmt danh sch: Bc,ng,Nam,Ty.Hnnacthtruycpnccphnt trongdanhschnythchcngiachcaBc(iahchcanhcha phn t u tin trong danh sch). *M t ci t Trongcit,miphnttrongdanhschccitnhmtntchai trng:+ Trng info cha gi tr ca cc phn t trong danh sch;+ Trng link l mt con tr gi a ch ca k tip trong danh sch: - Mi nt c dng nh sau: -Hnh nh danh sch c dng nh sau: Ntcuicngtrongdanhschkhngcntngsau,lnTrnglinkca phntcuitrongdanhsch, tr nmt gi trc bit l Nil (tr ti t khng trtiu).Cutrcdanhschnhvygildanhschcitbngcontrhay INFO LINK L con tr, tr n nt ng k sau trong danh sch (ngha l n cha a ch ca nh nt ng sau n) cha gi tr phn t ca nt, gi s c kiu d liu l Item a1a2an+1 nil L a3an Bcd ngn Nam t Tynil Cu trc d liu - B mn CNPM Khoa CNTT HTN 35 danh sch lin kt n hoc danh sch mc ni n hay ngn gn gi l danh sch lin kt. +truynhpvod/staphitruynhptuntnvtrmongmun,xutphtt phn t u tin, do qunldanhschtachcnqun lachnhcha phntutincadanh sch,tcl cnmtcontrtrnphntutintrong danh sch - gi s con tr L.+ Danh sch L rng khi: L=nil * Dng ci t (Ni n danh schmc ni (Linquanna ch) ta phi ngh ngayn bin tr, vy bin tr l g ? Ni thm v con tr trong Pascal: -Chim4 byte, l i tng dng lu tr a ch ca i tng khc- Khai bo: Var : ^ ; V d: Var P: ^ integer ; ( Con tr P c kiu nguyn, Bin ng P^) - nh ngha Type = ^ ; V d: Type p = ^ Hs; - Truy nhp n i tng qua con tr, s dng lnh ^ - Mt s hm/th tc i vi con tr: + Th tcNew(p):Xin cp phtmt vng nh c kch thc bngkch thc ca kiu tng ng vi kiu ca con tr p: *Nu cp pht c th a ch vng nh s c gn cho con tr p *Nu khng cp pht c th P = nil +ThtcDispose(p):Giiphng(thuhi)vngnhdocontrptrti, thng c s dng khi mun loi b 1 phn t ra khi danh sch -Vi mt ntc tr bi con tr p th : + p^ . infor : Cho gi tr l trng infor ca nt + p^ . Link: Cho a ch ca nt tip sau P Dng ci t ca danh sch: Type PList = ^ Nut; Nut = Record Infor:Iem; Link : Plist; End; Var L: Plis Cu trc d liu - B mn CNPM Khoa CNTT HTN 36 * Ci t cc php ton c bn vi cu trc danh sch lin kt n 1- To danh sch rng procedure MakeNullList(L: Plist) Begin L:=nil; End; 2- Kim tra mt danh sch rng Danh sch rng nu con tr tr ti phn t u danh sch = nil Function EmptyList( L: Plist): boolean Begin EmptyList:= L=Nil; End; 3 -Xen mt phn t vo danh sch : Xen mt phn t c gi tr x vo danh sch L ti v tr p ta phi cp pht mt mi lu tr phn t mi ny v ni kt li cc con tr a mi ny vo v tr p. S ni kt v th t cc thao tc (t 1-> 4) c cho trong Hnh 2.2. Hnh 2.2: Thm mt phn t vo danh sch ti v tr p Phc tho gii thut thm Procedure InsertList( X: Item, P: byte, var L: PList ) Var Temp, M: pList;dem: byte; y: Item; Begin -Yu cu my tnh cp pht nh cha d liu cn thm: New(Temp) {1}; - d liu cn thm vo nh va cp pht: Temp^.infor:=x;{2} -Xc nh v tr thm: v tr th P: Nu p=1: thm vo u danh sch: Temp^.link:=L;L:=Temp; Nu (p>1) and (p Cy l cy rng +S cc cy con mi nh c gi l bc ca nh . nh c bc = 0 gi l l (nh tn cng), nh khng l l gi l nh trong. +Cc nh c cng cha gi l anh em, xt t tri sang phi +Chiu cao ca cy (height) ca cy l s mc ln nht ca nh c trn cy +Tp cc cy con phn bit ngi ta gi l Rng +Gc ca cy c mc 1 (level = 1). Nu nh cha c mc i th cc nh con can s c mc l i+1 +Mt dy cc nh a1, a2, ... , an (n>0) sao cho ai l cha ca ai+1 gi l mt ng i t a1 n an vi di n-1. Lun tn ti ng i t gc n mt nh bt k trong cy. +Trong mt cy T, mi nh a ca n l gc ca mt cy no gi l cy con ca T. +Cy c sp: Cc nh trong cy c sp xp theo th t no . Nu nh a c cc nh con b1, b2, ..., bm theo th t ny th ta ni b1 l con trng v b2 l em lin k ca n. 3.1.2 Cc php ton c bn trn cy Xt cy gc T: -HmPARENT(n)tr vntchacantntrncyT,nunlntgcth hm cho gi tr $. Trong ci t c th th $ l mt gi tr no do ta chn, n ph thuc vo cu trc d liu m ta dng ci t cy. -Hm ELDEST_CHILD(n) cho nt con tri nht ca nt n trn cy T, nu n l l th hm cho gi tr $. -HmNEXT_SIBLING(n)chontanhemrutphintntrncyT,nun khng c anh em rut phi th hm cho gi tr $. -Hm value(n) Tr v gi tr lu ti nt n ca cy T. 3.1.3 Cc cch thm ( duyt) cy - Duyt cy: L php thm cc nh trn cy, sao cho mi nh ch c thm duy nht mt ln - Xt cy tng qut sau: Cu trc d liu - B mn CNPM Khoa CNTT HTN 52 *Xt ba phng php duyt cy c bn:-Duyt cy theo th t trc Preorder -Duyt cy theo th t gia Inorder -Duyt cy theo th t sau- Postorder . * Nguyn tc duyt, gii thut tng ng vi tng phng php: Gi s xt cy gc T

1)Duyt theo t t trc (PreOrder Tree) * Nguyn tc duyt cy theo th t trc Nu cy rng(T = nil): Khng lm g PreOrder (T) Nu cy khng rng : { 1.Thm gc T 2.Thm cc cy con T1, T2, T3, .., Tn theo th t trc => Gc T1 T2 T3 .. Tn A BCD FEG HIJ T Hnh 3.2 Hnh nh mt cy Cu trc d liu - B mn CNPM Khoa CNTT HTN 53 V d: Xt cy * Gii thut: Procedure PreOrder (T: nodeType); Var C: nodeType; Begin Visit (T); {Thm gc} C := Eldestchild (T);{ con c} While (C$) do Begin PreOrder (C); C := NextSibling (C);{em lin k} End; End; 2) Duyt theo th t gia (InOrder Tree) * Nguyn tc duyt cy theo th t gia: Nu cy rng(T = nil): Khng lm g +InOrder T Nu cy khng rng : { 1.DuytcyconthnhtT1ca gcT theo th t gia 2. Thm gc ca T 3DuytcccyconcnliT2,T3, ...., Tn theo th t gia ABCFHIEJDG ==> kq ( ( ( gcT1 T2 T3 ( BCD FEG HIJ A T T1 T2 T3 1 2 3 4 56 7 8 9 10 Cu trc d liu - B mn CNPM Khoa CNTT HTN 54 * V d: Xt cy * Gii thut: Procedure InOrder (T: nodeType); Var C: nodeType; Begin C := EldestChild (T);{ con c} If (C $) thenbegin InOrder(C); C := NextSibling (C);{em lin k} end; Visit(T);{thm gc} While (C $) do Begin InOrder (C); C := NextSibling (C);{em lin k} End; End; 3) Duyt theo th t sau * Nguyn tc duyt cy theo th t sau: B AHFICJEGD ==> kq ( ( ( gcT1 T2 ( T3 BCD FEG HIJ A T T1 T2 T3 2 1 6 4 35 8 7 10 9 Nu cy rng(T = nil): Khng lm g PostOrder T Nu cy khng rng : { 1.Thm gc T 2.Thm cc cy con T1, T2, T3, .., Tn theo th t sau => Gc-> T1->

T2 -> T3 -> .. Tn Cu trc d liu - B mn CNPM Khoa CNTT HTN 55 * V d: Xt cy * Gii thut: Procedure PostOrder (T: nodeType); Var C: nodeType; Begin C := EldestChild (R);{ con c} While (C $) do Begin PostOrder (C); C := NextSibling (C);{em lin k} End; Visit (R); {Thm cha} End; 3.1.4. Ci t cy 3.1.4.1 Biu din cy bng danh sch cc con ca mi nh a) S dng mng biu din cy Biudincydidngmintc mt danh sch cc nt con. Danh sch cc con c th ci t bng bt k cch no chng ta bit, tuy nhin v s nt con ca mt ntlkhngbittrcnndngdanhschlinktsthch hp hn.tincho vic truy cp n cc nh trn cy ta nn t chc lu tr cc nh ny s dng cu trc mng, gi s ta gn ch danh cho cc nt ln lt l 1,2,.nV d:Xt cy bn tri di y c m t bi mng nh sau : => BHIFJECGD A ==> kq ( ( ( gc T1T2 T3 T3 ( BCD FEG HIJ A T T1 T2 T3 10 1 7 4 23 6 5 9 8 Cu trc d liu - B mn CNPM Khoa CNTT HTN 56 * Dng ci t tng ng s l: Constn = MaxNode; TypeItem = ; Pointer = ^ Member; Member = Record Id: 1 ..n; {ID: ch danh ca nh} Next: Pointer;{Next: tr ti em lin k} End; Node = Record Info: Item;{cha gi ca phn t lu ti nh cy} Child:Pointer;{contr,trticonutintrongdanh sch cc con ca n} End; Tree = Array [ 1 .. n ] of Node; {cy l mt mng} Var T: Tree; *) Cc php ton tc ng trn cy 1 - Cho mt nh th k trn cy T, tm con c ca n Function EldestChild (k: in): 0 .. n; Begin if (T[k].Child nil) then 4 A BC D E FGH MIK 1 23 5 876 9109 119 Info Child

. 2 C B A D E F G H I M K Id Next 3 45 678 910 11 TT 1 2 3 4 5 6 7 8 9 10 11 . n . . . n Hnh nh cy sau khi ci t Hnh 3.3 Cy v hnh nh cy biu din bi danh sch cc con ca mi nh Cu trc d liu - B mn CNPM Khoa CNTT HTN 57 EldestChild := T[k].Child^.Id; Else EldestChild := 0; End; 2 - Cho mt nh th k trn cy T, Tm cha ca n Function Parent (k: 1 .. n): 0 .. n; Var i: 1 .. n; p: pointer; found : boolean; Begin i := 1; found := false; While ( i i chnh l cha cn tm, ngc li, kim tra em lin k ca con trng j xem c = k hay khng, nu c th i chnh l l cn tm, nu khng kim traj l em lin k ca j c, c tip tc nh vy cho n khi kim tra ht cc con ca i m khng c con no = k th duyt nh i tip theo trn cy, ngc li th dng vic tm kim v kt lun i chnh l nh cha cn tm. a1 a2a3 a4 a5E a6a7a8 Ma9A1 1 23 5 876 9109 119 Cy sau khi ci t c dng nh sau: ============= IDInforEldestChildNextSibling 1a120 2a243 3a360 4a405 5a590 6a607 7a7118 8a800 9a9010 10A00 11M00 n Hnh 3.4 Cy v hnh nh cy c biu din bi mng cc con trng v em lin k ca mi nh Cu trc d liu - B mn CNPM Khoa CNTT HTN 59 Gii thut: functionParent(k : 1..N): 0..N; var i,j : 0..N ;found : boolean; begin i := 1; found := false; while (i a1 a2a3 a4 a5E a6a7a8 Ma9A1 1 23 5 876 9109 119 Cy sau khi ci t c dng nh sau: ============= a1nil a2 a3nil nila4 nila9 nila6 a5nil nilAnil a7 nila8nil nilMnil Root Hnh 3.5 Cy v hnh nh cy c biu din bi con trng v em lin k ca mi inh s dng con trA BC D E FGH MIK 1 23 45 876 9109 119 NodeInfoParent 1A 2B1 3C1 4D2 5E2 6F3 7G3 8H3 9I5 10K5 11M7 Hnh nh cy sau khi ci t Hnh 3.6 Cy v hnh nh cy c biu din bi cha ca mi nh s dng con tr Cu trc d liu - B mn CNPM Khoa CNTT HTN 61 Ci t: const N = ... ; type Node = record info : Item; parent : 0..N; end; Tree = array[1..N] of Node; varT : Tree; Cc php ton quan trng trn cy 1 -Cho mt nh k , tm nh cha ca n Function Parent ( k: Integer; T: Tree): Integer; Begin If k = 0 then Parent := 0 Else Parent :=T[k].Parent; End; 2 - Cho mt nh k , tm nh con c ca n Function EldestChild (k: Integer; T: Tree): Integer; Var p, i :0 MaxNode ; found: Boolean; Begin {1} If k = 0 then EldestChild := 0; i:=1;found:=false; While ( i nh anh l 1} found := false; while ( i 22 vytatmtiptrncy conbn phi, tc l cy c nt gc c kho l 30. -Sosnh30vikhontgcl30,30=30vynygiithutdngv tatm c nt cha kho cn tm. Gii thut di y tr v kt qu l con tr tr ti nt cha kho x hoc Nil nu khng tm thy kho x trn cy TKNP. Procedure SEARCH( Var P: BSTree; x: KeyType, Root: BSTree); Var found: Boolean; Begin p := root; found := false; While ( p nil)And( Not found) do if p^.key = x then found := true else if ( x < p^.key) thenp := p^.Left elsep := p^.Right; End; ? Cytmkimnhphnctchcnhthnoqutrnhtmkim c hiu qu nht? Nhnxt: 20 1035 5172242 1530 Hnh 3.9 hnh nh mt cy TKNP Cu trc d liu - B mn CNPM Khoa CNTT HTN 71 GiithutnysrthiuquvmtthigiannucyTKNPctchc tt, nghalcytngi"cnbng".Vcycnbngccbncththamkho thm trong ccti liu tham kho ca mn hc ny. 3 - Thm mt nt c kha cho trc vo cy TKNP * Phn tch bi ton Theonhnghacytmkimnhphntathytrncytmkimnhphnkhng chai ntccngmtkho.Donutamunthmmtntckhoxvocy TKNP th: - Trc ht ta phi tm kim xc nh c nt no cha kho x cha? + Nu c th gii thut kt thc (khng lm g c!).+ Ngc li, s thm mt nt mi cha kho x ny.-Thmkho x vocyTKNPmbocutrccy TKNP khng b ph v. C nhiu cch thm, tuy nhin trnh phc tp, ngi ta thng thc hin thm mc l * Cch gii c th nh sau: Ta tin hnh t nt gc bng cch so snh kha cu nt gc vi kho x. - NuntgcbngNilthkhoxchactrncy,dotathmmtntmi cha kho x. - Nu x bng kho ca nt gc th gii thut dng, trng hp ny ta khng thm nt. - Nu x ln hn kho ca nt gc th ta tin hnh (mt cch qui) gii thut ny trn cy con bn phi. - Nu x nh hn kho ca nt gc th ta tin hnh (mt cch qui) gii thut ny trn cy con bn tri. V d: thm kho 19 vo cy trong Hnh 3.9, ta lm nh sau: -So snh 19 vi kho ca nt gc l 20, v 19 < 20 vy ta xt tip n cy bn tri, tc l cy c nt gc c kho l 10.-So snh 19 vi kho ca nt gc l 10, v 19 > 10 vy ta xt tip n cy bn phi, tc l cy c nt gc c kho l 17. -Sosnh19vikhocantgcl17,v19>17vytaxttipncy bnphi. NtconbnphibngNULL,chngtrngkho19chactrn cy,tathmnt michakho19vntminylconbnphicant ckhol17,nh Hnh 3.10 20 1035 5172242 1530 Hnh 3.10 Thm kha 19 vo cy TKNP 19 Cu trc d liu - B mn CNPM Khoa CNTT HTN 72 * Th tc sau y tin hnh vic thm mt kho vo cy TKNP. Procedure INSERT ( Var R: pointer; x : KeyType ); Var Q: Pointer; Begin R := Root; If R = nill then begin New (Q); Q^.Key := x; Q^.Left := nill; Q^.Right := nill; R := Q; end Else WithR^ Do If (x < key) thenINSERT (Lefl , x) Else if(x > key )then INSERT ( Right, X ) else Writeln ( Cay da co Infor X ); End; 4 - Xa mt nt c kha cho trc ra khi cy TKNP Bi ton Input:Cy nh phn tm kim gc T, kho x Output: Nu nh c kho x c trn T th loi b nh ny sao cho T sau khi loi b x vn l cy TKNP Cch gii - Nu khng tm thy nt cha kho x th gii thut kt thc. -Nu tm gp nt c tr bi P c cha kho x, ta c ba trng hp sau: TH1 : Nu p l l:ta thay n bi Nil. TH2 : Nu p c mt trong 2 con l C (rng): -Treo cy con khc C vo v tr ca p (nh hnh di) - Gii phng vng nh c tr bi p Cu trc d liu - B mn CNPM Khoa CNTT HTN 73 TH3:nh loi b c tr bi P c 2 con u khc rng: Thayntctrbipbintlnnhttrncycontrican(ntcc phica cycontri)hoclntbnhttrncyconphican(ntcctricacycon phi). Ri xa nt cc phi (hoc nt cc tri ), vic xo nt ny s ri vo mt trong 2 trng hp trn (TH1 hoc TH2)Trong hnh di y, ta thay x bi kho ca nt cc tri ca cy con bn phi ri ta xo nt cc tri ny. Cc gii thut: a) Gii thut xo mt nt c kho nh nht (nt cc tri ca mt cy ) Hm di y tr v kho ca nt cc tri, ng thi xo nt ny. Funciton DeleteMin (var Root:Ptree):keytype; Var k: Keytype; Beginif (Root^.left = Nil)then begin T X M T1 P T M T1 T X M T1 P T2 y T y M T1 P T2 x Cu trc d liu - B mn CNPM Khoa CNTT HTN 74 k :=Root^.key; Root := Root^.right; DeleteMin := k; End else DeleteMin := DeleteMin(Root^.left); End; b) Gii thut xa mt nt c kho x cho trc trn cy TKNP Procedure DeleteNode(X: keytype,var Root: PTree); Begin if (Root Nil) then if (x < Root^.Key) then DeleteNode(x,Root^.left) else if (x > Root^.Key)then DeleteNode(x,Root^.right) else if (Root^.left=Nil)and(Root^.right=Nil)then Root :=Nil; else if (Root^.left = Nil)then Root = Root^.right else if (Root^.right=Nil)then Root := Root^.left else {c hai con u khc rng} Root^.Key = DeleteMin(Root->right); End; Cu trc d liu - B mn CNPM Khoa CNTT HTN 75 CHNG 4 M hnh d liu th (Graph) Tng quan: 1. Mc ch v yu cu: Sau khi hc xong chng ny, sinh vin nm vng v ci t c cc kiu d liu tru tng th v vn dng gii nhng bi ton thc t. 2.Ni dung chnh Trongchngnychngtasnghincumtskiudliutrutngc bnnh sau: -Cc khi nim c bn - Kiu d liu tru tng th - Biu din th - Cc php duyt th - Mt s bi ton trn th 4.1 nh ngha th v cc khi nim - MtthGbaogmmttphpVccnhvmttphpEcccung , khiu G=(V,E).- Cc nh cn c gi l nt (node) hay im (point). - Cc cung ni gia hai nh, hai nh nycth trng nhau. - Hai nh c cung ni nhau gi l hai nh k (adjacency).- Mtcungnigiahainhv,wcthcoinhlmtcpim(v,w).Nucp nycthtthtaccungctht(cung),ngclithcungkhngctht (cnh).NucccungtrongthGcthtthGgilthchng (directed graph). Nu cc cung trong th G khng c th t th th G l th v hng (undirected graph). Trong cc phn sau ny ta dng tth(graph)ninthnichung, khi no cn phn bitr tas dng th c hng,thvhng.HnhV.1a chotamtvdvthchng,hnhV.1bchovdvthvhng. Trongccthnythccvngtrncnhsbiudincc nh,cncc cungcbiudinbngcconthngchng(trongHnh 4.1)hockhng c hng (trong Hnh 4.2). Thngthngtrongmtth,ccnhbiudinchoccitngcncc cungbiu dinmiquanh(relationship)giaccitng.Chnghncc nhcthbiudinchoccthnhphcncccungbiudinchonggiao 12 43 12 43 Hnh 4.1Hnh 4.2 Cu trc d liu - B mn CNPM Khoa CNTT HTN 76 thng ni gia hai thnh ph. - Mtngi(path)trnthlmtdytuntccnhv1,v2,...,vn saocho (vi,vi+1) lmt cungtrn th (i=1,...,n-1).ng i ny l ng i t v1nvnvi qua cc nh v2,...,vn-1. nhv1 cn gi l nh u, vn gi l nh cui.dicanginybng(n-1).Trnghpcbitdychcmt nhvthtacoilngitv nchnhncdibngkhng.Vd dy1,2,4trongthHnh 4.1lmtngit nh 1 n nh 4, ng i ny c di l hai. - ngigiln(simple)numinhtrnngiukhcnhau,ngoi trnhuvnhcuicthtrngnhau.Mtngicnhuvnh cuitrngnhaugi lmtchutrnh(cycle).Mtchutrnhnlmtngi ncnhuvnhcuitrngnhauvcditnhtl1.Vdtrong Hnh4.1th3,2,4,3tothnhmtchu trnh c di3. TrongHnh4.2 th 1,3,4,2,1 l mt chu trnh c di 4. Trong nhiu ng dng ta thng kt hp cc gi tr (value) hay nhn (label) vi ccnhv/hoccccnh,lcnytanithcnhn.Nhnkthpvicc nh v/hoc cnh c th biu din tn, gi, khong cch,... Ni chung nhn c th ckiutu.ynhnlccgitrsnguynbiudinchogiccvn chuyn mt tn hng gia cc thnh ph 1, 2, 3, 4 chng hn. th con ca mt th G=(V,E) l mt th G'=(V',E') trong : VcV vE gm tt c cc cnh (v,w) e E sao cho v,w e V. 4.2 Cc php ton c bn trn th Cc php ton c nh ngha trn th l rt n gin nh l: -c nhn ca nh. -c nhn ca cnh. -Thm mt nh vo th. -Thm mt cnh vo th. -Xo mt nh. -Xo mt cnh. -Ln theo (navigate) cc cung trn th i t nh ny sang nh khc. Thng thng trong cc gii thut trn th, ta thng phi thc hin mt thao tc no vi tt c cc nh k ca mt nh, tc l mt on gii thut c dng sau: For (mi nh w k vi v) {thao tc no trn w} ci t cc gii thut nh vy ta cn b sung thm khi nim v ch s ca cc nh k vi v. Hn na ta cn nh ngha thm cc php ton sau y: -FIRST(v)trvchscanhutinkviv.Nukhngc nhno k vi v th $ c tr v. Gi tr $ c chn tu theo cu trc d liu ci t th. -NEXT(v,i)trvchscanhnmsaunhcchsivkviv.Nu Cu trc d liu - B mn CNPM Khoa CNTT HTN 77 khng c nh no k vi v theo sau nh c ch s i th $ c tr v. -VERTEX(i)trvnhcchsi. 4.3 Biu din th Mt s cu trc d liu c th dng biu din th. Vic chn cu trc d liu no l tuthucvoccphptontrncccungvnhcath.Haicu trcthnggplbiudinthbngmatrnk(adjacencymatrix)vbiu din th bng danh sch cc nh k (adjacency list). 4.3.1. Biu din th bng ma trn k Ta dng mt mng hai chiu, chng hn mng A, kiu boolean biu din cc nh k. Nu th c n nh th ta dng mng A c kch thc nxn. Gi s cc nh c nh s 1..nthA[i,j]=true,nucnhnigianhthivnh thj,ngclithA[i,j]= false. R rng, nu G l th v hng th ma trn k s l ma trn i xng.Chng hn th trong Hnh 4.2 c biu din ma trn k nh sau: ji1234 1 truetruetruefalse 2truetruetruetrue 3truetruetruetrue 4falsetruetruetrue Ta cng c th biu din true l 1 cn false l 0. Vi cch biu din th bngma trn k nh trn chng ta c th nh ngha ch s ca nhlsnguynxc nh duy nht nh . a)Dng ci t: xem nh bi tp dnh cho bn c b)Ci t cc php ton: xem nh bi tp dnh cho bn c Trn th c nhn (trng s) th ma trn k c th dng lu tr nhn ca cc cung chng hn cung gia i v j c nhn a th A[i,j]=a. Ma trn A cn c gi l ma trn trng s. y cc cp nh khng c cnh ni th ta gn cho n gi tr mc nh Nhn xt: Cch biu din th bng ma trn k cho php kim tra mt cch trc tip hai nhnocknhaukhng.Nhngnphimtthigianduytquatonb mng xc nh tt c cc cnh trn th. Thi gian ny c lp vi s cnh v s nh ca th. Ngay c s cnh ca th rt nh chng ta cng phi cn mt mngN x Nphntlutr.Dovy, nutacnlmvicthngxuynvi cc cnh ca th th ta c th phi dng cch biu din khc cho thch hp hn. 4.3.2. Biu din th bng danh sch cc nh k Trong cch biu din ny, ta s lu tr cc nh k vi mt nh i trong mt danh sch lin kt theo mt th t no . Nh vy ta cn mt mng mt chiu G c n phn t biu din cho th c n nh. G[i] l con tr tr ti danh sch cc nh Cu trc d liu - B mn CNPM Khoa CNTT HTN 78 k vi nh i.a)Dng ci t: Bn c c th tham kho trong ti liu tham kho nh km vi bi ging b)Ci t cc php ton: Xem nh bi tp dnh cho bn c 4.4Cc php duyt th (TRAVERSALS OF GRAPH) Trongkhigiiquytccvnthct, nhiubitoncmhnhho bngmhnhth,khixydngccthaotcxltrnthta cniquaccnhv cccungcathmtcchchthng.Viciqua ccnhcathmtcchch thngnhvygilduytth.Chai php duyt th ph bin l duyt theo chiu su v duyt theo chiu rng. 4.4.1. Duyt theo chiu su (depth-first search) Gi s ta c th G=(V,E) vi cc nh ban u c nh du l cha duyt (unvisited). T mt nh v no ta bt u duyt nh sau: nh du v duyt, vi mi nh w cha duyt k vi v, ta thc hin qui qu trnh trn cho w. S d cch duyt ny c tn l duyt theo chiu su v n s duyt theo mt hng no su nht c th c.4.4.2. Duyt theo chiu rng (breadth-first search) GistacthGviccnhbanucnhdulchaduyt (unvisited).T mtnhvnotabtuduytnhsau:nhduv c duyt, k n l duyt tt cccnhkviv.Khitaduytmtnh vri n nhw thcc nh kcav c duyt trc cc nh k ca w, v vy ta dng mt hng lu tr cc nt theo th t c duyt cth duytccnhkvichng.Tacngdngmngmtchiumarknh du mt nt l duyt hay cha, tng t nh duyt theo chiu su.4.4.Mt s bi ton ng dng trn th:Xem nh phn bi tp dnh cho bn c Cu trc d liu - B mn CNPM Khoa CNTT HTN 79 Chng 5M hnh d liu Tp hpTng quan: 1. Mc tiu Sau khi hc xong chng ny, sinh vin phi: - Nm vng khi nim v kiu d liu tru tng tp hp v mt s loi tp hp c bit nh t in, bng bm, hng u tin. - Ci t tp hp v cc loi tp hp c bit bng ngn ng lp trnh c th. 2. Ni dung chnh Trong chng ny chng ta s nghin cu cc vn sau: - Khi nim tp hp - Kiu d liu tru tng tp hp.- Ci t tp hp - T in - Cu trc bng bm - Hng u tin. 5.1. Khi nim tp hp Tphptrongtonhclmtcutrcrirccbntdnglncccu trc ri rc khc nh: Cc t hp l nhng tp hp khng sp th t ca cc phn t; thi l tp hp cc nh v cc cnh ni cc nh , cy l mt tp hp cc nh v cc cnh ni hai nh c quan h phn cp, ..... Tp hp c dng m hnh ho hay biudinmtnhmbtkccitngtrongthgiithcchonnnng vaitrrt quan trng trong m hnh ho cng nh trong thit k cc gii thut. Cctphpdngnhmccitnglivinhau,thngthngcci tng trong tp hp c tnh cht tng t nhau. V d: Tt c cc sinh vin va mi nhptrnglpnnmttphp,hocccdinhvinanghcmnCTDL&thut tonlpnnmttphp,hocnhngsinhvinvaminhphcvnhngsinh vin ang hc mn CTDL & TT cng lp nn mt tp hp nhnghatphp:Ccitngtrongtphpcngcgilccphnt trong tp hp . Tp hp c ni l cha cc phn t ca n, tp hp thng dng nhm cc phn t c cc tnh cht chung li vi nhau, nhng n cng c th cha cc phn t chng c mi quan h g vi nhau. V d: A={a,2,Fred, Lan}. Mt tp hp c th l v hn hoc hu hn m t mt tp hp, trong ton hc thng c cc cch sau xc nh mt tp hp A : -DngbiuVenlmtngcongkhpkn,ccimtrongngcong ch cc phn t ca tp hp. - Lit k tt c cc phn t ca tp hp A. V d: A = {1, 2, 3} - Nu ln cc c trng cho bit chnh xc mt i tng bt k c l mt phn t ca tp A hay khng. V d: A = {x | x l s nguyn chn} Tp hp c th c th thockhngctht,tcl,cthcquanhthtxc Cu trc d liu - B mn CNPM Khoa CNTT HTN 80 nhtrnccphntcatp hp hoc khng. Tuy nhin, trong chng ny, chng ta gi s rng cc phn t ca tp hp c th t tuyn tnh, tc l, trn tp hp S c quan h < v = tho mn hai tnh cht: Vi mi a,b e S th a10 xem nh bi tp dnh cho bn c 5.5T in (Dictionary)Tinlmtkiudliutrutng, l mttphpcbit,trongchng ta ch quan tm n cc php ton InsertSet, DeleteSet, Member v MakeNullSet. S dchngtanghincutinldotrongnhiungdngkhngsdngncc phptonhp,giao,hiucahaitphp.Ngclitacnmtcutrclmsao cho vic tm kim, thm v bt phn t c phn hiu qu nht gi l t in. Chng ta cng chp nhn MakeNullSet nh l php khi to cu trc t in. 5.5.1 T in l g? Mhnhdliutphp,nhngchxtnccphptonInsert(thmmt phn t vo tp hp), Delete (loi b mt phn t no khi tp hp), Member (tm xemtrongtphpcchamtphntnokhng)cgilkiudliutru tng t in (Dictionary) 5.5.2 Cc phng php ci t t in T in l mt tp hp, ng nhin chng ta phi s dng cc phng php ci t tp hp ci t t in: -Bngvctbit:Sdngphngphpnykhitinltphpgmcc phn t c th dng lm tp ch s cho mng (thuc kiu d liu v hng m c hoc c m ha thnh kiu d liu v hng m c) -Bngdanhsch(ktiphocmcni),khngthunlichophptm kim(vidanhschmcnivphitruycptunt->chthchhpkhip dng phng php tm kim tun t), khng thun lij cho php ton thm vo vlyra(vidanhschktipvchintngco,dn,dchchuyncc phn t khc) -Gistinldanhschcspthttuyntnh->sdngcytm kim nh phn: phc v mt thi gian ca cc php ton trn t in l ln (tng t nh danh sch ) trong trng hp cy suy bin thnh danh sch. - Ta cng c th s dng cy cn bng biu din tp hp: u im l khng xy ra trng hp suy bin nh cy TKNP, tuy nhin cc php ton loi b v xen vo trn cy cn bng kh phc tp, v phi cn bng li cy Do , biu din t in thun li cho cc php ton, v c th p dng cho tp hp c kch c ln(t im thng c kch thc ln), ta xt cch ci t khc l: s dng CTDL bng bm ci t t in 5.5.3 Cu trc d liu Bng bm, ci t t in bi bng bm Bm l phng php rt thch hp ci t tp hp c s phn t ln(t in). C 2phng php bm khc nhau: + Phng php Bm m: Cho php s dng mt khng gian khng hn ch lu gi cc phn t ca tp hp + Phng php bm ng: S dng mt khng gian c nh v do tp hp c ci t phi c c khng vt qu khng gian cho php Cu trc d liu - B mn CNPM Khoa CNTT HTN 86 5.5.3.1. Ci t t in bng bng bm m a)nh ngha bng bm m -TtngcbncabngBml:Phnchiamttphpchothnhmtsc nh cc lp (N lp) c nh s 0, 1, , N-1. S dng mng T vi ch s chy t 0 n N-1. Mi thnh phn T[i] cha mt con tr, tr ti phn t u tin ca danh sch cha cc phn t ca tp hp thuc lp th i. Cc phn t ca tp hp thuc mi lp c t chc di dng mt danh sch lin kt, mi danh sch c gi l con trr , T c gi l bng Bm (hash table). -Vicchiaccphntcatphpvocclpcthchinbihmbm (hash function) h.b) Hm bm: Hm bm l mt nh x t tp d liu A n cc s nguyn 0..N-1: h : A 0..N-1;Theo gi s x e A th h(x) lmt s nguyn sao cho:0h(x) N-1. - C 2 tiu chun chnh la chn mt hm bm: +HmbmphichophptnhcddngvnhanhchnggitrBmca mi kho + N phi phn b u cc kho vo cc r Cnhiucchxydng hm bm, cch n gin nht lnguyn ha x v sau ly h(x) = x % N. V d : Cho tp hp A = {1, 5, 7, 2, 5, 15} Nil nil 0 1 n-1 Hnh 1: Cu trc bng bm m Nil Cu trc d liu - B mn CNPM Khoa CNTT HTN 87 Bng bm l mng gm 5 phn t v hm bm h(x) = x % 5; Ta c bng bm lu tr A nh sau : Hm bm c th c thit k nh sau {Ham bam h(X)=X Mod B} Function h(X: KeyType): 0..N-1; Begin H :=X%B; End; Vd:VitmthmBmtrongPascal(sdngphngphplyphnd)bm cc kho l cc xu k t c di 10 thnh cc gi tr t 1 n N-1 Type KeyType = String[10]; Function h (x: KeyType): 0 .. N-1; Var I, Sum: integer; Begin Sum:= 0; For I = 1 to 10 do Sum := Sum + ord(x[i]); h := Sum mod N; End; c) Ci t t in bi bng bm m: ConstN= ; Typepointer = ^ Element; Bng bm m Bng bm cha cc con tr, tr ti cc phn t u mi danh sch Danh sch ca mi r Cu trc d liu - B mn CNPM Khoa CNTT HTN 88 Element = record key : KeyType; [data:ElementType];{cctrngthngtinkhc nu c} Next : Pointer; End; Dictionary = array [0 .. N-1] of pointer; Var T: Dictionary; d) Ci t cc php ton trn t in 1 - Khi to bng bm m rng Lc ny tt c cc r l rng nn ta gn tt c cc con tr tr n u cc danh sch trong mi r l Nil. Procedure MakeNullSet( var D: Dictionary) Var i: integer; Begin For i:=0 to B-1do D[i] := Nil; End; 2 - Kim tra mt thnh vin c trong t in khng kimtraxemphntxnoctrongtinhaykhng,tagi tr bm (h(x)) ca n.Theocutrccabngbmthkhoxsnmtrongrctr bi T[h(x)].Nhvytmkhoxtrchttaphitnhh(x)sau duyt danh sch ca r c tr bi T[h(x)] tm x.Gii thut nh sau: Function Member(x: KeyType; Var T: Dictionary): boolean; Var P: ponter; found: boolean; Begin P := T[h(x)]; Found := false; While (pnil)and(not found)do If P^. key = x then found := true ElseP := P^. Next; Member := found; End; 3 - Thm mt phn t vo t in thm mt phn t c kha x vo t in ta phi tnh h(x) xc nh xem n s c thm vo r/ lp no.Vtakhngquan tm nthtccphnt trongmirnnta ngi nt a thmphntmingayu r ny. Cu trc d liu - B mn CNPM Khoa CNTT HTN 89 Gii thut nh sau: Procedure Insert (x: KeyType; var T: Dictionary ); Var i: 1 .. N-1; P: Pointer; Begin If not Member(x, T) then Begin i := h(x); New(P); P^. key := x; P^. Next := T[i]; T[i]:= P; End; End; 5 - Xo mt phn t trong t in Xomtphntxtrongtin, ta lm nh sau: -Tnh gi tr bm h(x) -Kim tra xem phn t x c thuc lp c tr bi T[h(x)] khng? Nu c th loi b phn t ny. Khi loi x cn phn bit x nm u lp v x khng nm u lp.Gii thut nh sau Procedure Delete(x: KeyType; Var T : Dictionary); Var i: 0 .. N-1; P, Q : pointer; Found : Boolean; Begin i := h(x); if T[i]nil then if T[i]^.key = x then {loi x khi danh sch} T[i] := T[i]^.Next; Else Begin {xem xt cc thnh phn tip theo trong danh sch} Q := T[i]; P := Q^.Next; Found := false; While(P nil) and(not found) do Cu trc d liu - B mn CNPM Khoa CNTT HTN 90 If P^. Key= x then Begin {loi x khi d.s} Q^.Next := P^.Next; Found := true; End Else Begin Q := P; P := Q^.Next; End; End; End; 5.5.3.2. Ci t t in bng bng bm ng a) Th no l bng bm ng? Bngbmnglugiccphntcatinngaytrongmng(ccphn tcarilutrongchnhphntthicamng)chkhngdngmng lu tr cc con tr tr ti u ca cc danh sch lin kt r.Tng t nh bm m, trong bng bm ng r th i cha phn t c gi tr bmli,nhngvcthcnhiuphntccnggitrbmnntasgp trnghpsau:ta mun a vo ri mt phn t x nhng r ny b chim bimtphntyno=>gyr ang.Nhvykhithitkmtbng bmngtaphiccchgiiquyts ng ny. * Gii quyt ng Cch gii quyt ng gi l bm li (rehash) nh sau: - Chn tun t cc v tr h1,..., hk theo mt cch no cho ti khi gp mt v tr trng t x vo. Dy h1,..., hk gi l dy cc php th, k gi l tng s ln bm li, hi l gi tr hm bm ca ln bm li th i - C nhiu cch bm li.Mt chin lc n gin l bm li tuyn tnh, trong dy cc php th c dng : V d N=8 v cc phn t ca t in l a,b,c,d c gi tr bm ln lt l: h(a)=3, h(b)=0, h(c)=5, h(d)=3. Ta mun a cc phn t ny ln lt vo bng bm. Khi ubngbmlrng,cthcoimirchamtgitr cbit Empty, Emptykhngbngvibtkmtphntnomtacthxttrongtp hp cc phn t mun a vo bng bm. Tatavor3,bvor0,cvor5.Xtphntd,dch(d)=3 nhng r3bachimtatmvtrh1(d)=(h(d)+1)modN=4,vtrnyl mt r rngta t d vo. hi(x) = (h(x)+1) mod N Cu trc d liu - B mn CNPM Khoa CNTT HTN 91 01234567 badc Hnh 5.1 -Gii quyt ng trong bng bm ng bng chin lc bm li tuyn tnhTrongbngbmng,phpkimtramtthnhvin(thtcMEMBER (x,A))phixt dy cc r h(x),h1(x),h2(x),... cho n khi tm thy x hoc tm thy mtvtrtrng.Bivnuhk(x)lvtrtrngcgputinthxkhngth c tm gp mt v tr no xa hnna.Tuynhin,nichungiuchng vitrnghptakhnghxoimt phntnotrongbngbm.Nuchngta chpnhnphpxothchngtaquicrng phntbxascthaybimt gitrcbit,gilDeleted,gitrDeletedkhng bngvibtkmtphnt notrongtphpangxtvoncngphikhcgitr Empty. Empty cng l mt gi tr c bit cho ta bit trng. V d - Tm phn t e trong bng bm trn, gi s h(e)=5. Chng ta tm kim e ti cc v tr 5,5,6. r 6 l cha Empty, vy khng c e trong bng bm. -Tmd,vh(d)=3takhiutivtrnyvduytquaccr5,5.Phntd c tm thy ti r 5. * S dng bng bm ng ci t t in Di y l khai bo v th tc cn thit ci t t in bng bng bm ng. d dngminhhoccgitrDeletedvEmpty,gisrngtacncittingmcc chui 10 k t. Ta c th qui c: Empty l chui 10 du + v Deleted l chui 10 du *. b) Ci t t in bi bng bm ng Const N = ; Deleted = -1000; {Gia dinh gia tri cho o da bi xoa} Empty=1000; {Gia dinh gia tri cho o chua su dung} type ElementType = integer; Dictionary= array[ 0 .. N-1] of elementType; Var T : Dictionary; c) Ci t cc php ton t in trn bng bm ng: Vi mi gi kho x, thc hin cc php ton Insert, Delete, Member ta u phi xc nh v tr trong bng c cha x, hoc v tr trong bng cn t x vo. T tng tm ra cc v tr l thm d ln lt cc v tr h(x), h1(x), h2(x), .. iu c thc hin bi th tc Location + Cch lm:-Vimigitrkhox,thtcnychophpthmdccvtrtrongbng, xut pht t v tr c xc nh bi gi tr bm h(x), ri ln lt qua cc v tr h1(x), h2(x), cho ti khi hoc tm c v tr c cha x , hoc tm ra v tr trng u tin Cu trc d liu - B mn CNPM Khoa CNTT HTN 92 - Qu trnh thm d s dng li nu i qua ton b bng m khng thnh cng (Khng tm ra v tr cha x, hoc tm ra v tr trng u tin). Tham bink: Lu v tr m ti qu trnh thm d dng li. Thambinj:Luvtrloib(Deleted)utinhocvtrtrngutinmqu trnh thm d pht hin ra nu trong bng cn c cc v tr nh th1- Th tc xc nh v tr t x Procedure Location(x: keytype; var k,j : integer); Var I : integer;{ I ghi li gi tr bm u tin h(x)} Begin I := h(x); J : = I; If (T[i] = x )or(T[i] = empty )then k := I Else Begin K := (i+1)mod n; While (k i)and(T[k]x)and(T[k]enpty)do Begin If (T[k] = deleted )and(T[j]deleted)then j := k; K := (k+1)mod N; End; If (T[k]= empty)and(T[j]deleted)then j := k; End; End; 2- Th tc tm xem x c thuc t in T hay khng? Function Member(x : keytype; var T : Dictionary): boolean; var k, j :integer; Begin Location(x,k,j); If T[k]= x then Member := true Else Member := false; End; 3- Th tc thm mt phn t x vo t in T Procedure Insert (x : KeyType; var T : Dictionary); var k,j : integer; Begin Location(x,k,j); If (T[k]x) then Cu trc d liu - B mn CNPM Khoa CNTT HTN 93 If (T[j] = deleted)or(T[j] = empty )then T[j] := x Else Writeln(bng y) Else Writeln( bng c x); End; 4 Th tc xo phn t xthuc t in T Procedure Delete (x : keyType; var T : Dictionary); var k, j : integer; Begin Location(x,k,j); If T[k] = x then T[k] := deleted; End; 5.5.3.3 Cc phng php xc nh hm bm a) Phng php chia "Ly phn d ca gi tr kho khi chia cho s r" . Tc l hm bm c dng: H(x)= x mod B Phng php ny r rng l rt n gin nhng n c th khng cho kt qu ngu nhin lm. Chng hn B=1000 th H(x) ch ph thuc vo ba s cui cng ca kho m khng ph thuc vo cc s ng trc. Kt qu c th ngu nhin hn nu B l mt s nguyn t.b) Phng php nhn "Ly kho nhn vi chnh n ri chn mt s ch s gia lm kt qu ca hm bm". V d: x x2h(x)g m3s gia 5502 29181605181hoc 816 367 00135689135356 125601552516552525 298308898289 898982 V cc ch s gia ph thuc vo tt c cc ch s c mt trong kho do vy cc kho c khc nhau i cht th hm bm cho kt qu khc nhau. c) Phng php tch gp ivicckhodivkchthcthayingitathngdngphngphp phn on, tc l phn kho ra thnh nhiuon c kch thc bngnhau tmt u (tron tiucui),nichungmioncdibngdicaktquhm bm. Phn on c th l tch sau th gp: Cu trc d liu - B mn CNPM Khoa CNTT HTN 94 Cch lm:tchkharatngonrixpcconthnhhngccanhthng mturicthgp(thchinmtphptonno,vdnh:cng,tr,. chng li) ri p dng phng php chia c kt qu bm. v d: kho 17056329 tch thnh 329 056 017 cng li ta c 392. 392 mod 1000 = 392 l kt qu bm kho cho.