You are on page 1of 13

BI 6: CY EN

1. GII THIU Cy tm kim nh phn l mt cu trc lu tr d liu tt vi tc tm kim nhanh. Tuy nhin trong mt s trng hp cy tm kim nh phn c mt s hn ch. N hot ng tt nu d liu c chn vo cy theo th t ngu nhin. Tuy nhin, nu d liu c chn vo theo th t uc sp xp s khng hiu qu. Khi cc tr s cn chn uc sp xp th cy nh phn tr nn khng cn bng. Khi cy khng cn bng, n mt i kh nng tm kim nhanh (hoc chn hoc xa) mt phn t cho. Chng ta kho st mt cch gii quyt vn ca cy khng cn bng: l cy en, l cy tm kim nh phn c thm mt vi c im . C nhiu cch tip cn khc bo m cho cy cn bng: chng hn cy 2-3-4. Tuy vy, trong phn ln trng hp, cy en l cy cn bng hiu qu nht, t ra th khi d liu c lu tr trong b nh ch khng phi trong nhng tp tin. Trc khi kho st cy en, hy xem li cy khng cn bng c to ra nh th no.

Hnh 1. Cc node c chn theo th t tng dn

Nhng node ny t sp xp thnh mt ng khng phn nhnh. Bi v mi node ln hn node c chn vo trc , mi node l con phi ca nt trc . Khi y, cy b mt cn bng hon ton. phc tp: Khi cy mt nhnh, s tr thnh mt danh sch lin kt, d liu s l mt chiu thay v hai chiu. Trong trng hp ny, thi gian truy xut gim v O(N), thay v O(log2N) i vi cy cn bng. bo m thi gian truy xut nhanh ca cy, chng ta cn phi bo m cy lun lun cn bng (t ra cng l cy gn cn bng). iu ny c ngha l mi node trn cy phi c xp x s node con bn phi bng s node con bn tri. 2. NH NGHA CY EN Cy en l mt cy nh phn tm kim (BST) tun th cc quy tc sau: (hnh 2) (1) Mi node phi l hoc en. (2) Node gc v cc node l (NIL) phi lun lun en. (3) Nu mt node l , nhng node con ca n phi en. (4) Mi ng dn t gc n mt l phi c cng s lng node en. Khi chn (hay xa) mt node mi, cn phi tun th cc quy tc trn -gi l quy tc en. Nu c tun th, cy s c cn bng.

Hnh 2. Mt v d v cy en S lng node en trn mt ng dn t gc n l c gi l chiu cao en (black height). Ta c th pht biu quy tc (4) theo mt cch khc l mi ng dn t gc n l phi c cng chiu cao en. Khai bo cu trc: typedef int Data; /* Kiu d liu kho */ typedef enum { BLACK, RED } nodeColor; typedef struct NodeTag { nodeColor color; /* Mu node (BLACK, RED) */ Data info; /* Kho s dng tm kim */ struct NodeTag *left; /* Con tri */ struct NodeTag *right; /* Con phi */ struct NodeTag *parent; /* Cha */ } NodeType; typedef NodeType *iterator; B : Mt cy en n-node c chiu cao h <= 2 log2(n+1) 3. PHP QUAY Thc ra quay khng c ngha l cc node b quay m ch s thay i quan h gia chng. Mt node c chn lm "nh" ca php quay. Nu chng ta ang thc hin mt php quay qua phi, node "nh" ny s di chuyn xung di v v bn phi, vo v tr ca node con bn phi ca n. Node con bn tri s i ln chim ly v tr ca n.

Hnh 3.

Quay tri v quay phi

Phi m bo trong php quay phi, node nh phi c node con tri. Nu khng chng c g quay vo im nh. Tng t, nu lm php quay tri, node nh phi c node con phi. 4. THM NODE MI Chng ta s xem xt vic m t qui trnh chn. Gi X, P, v G ch nh nhn nhng node lin quan. X l node vi phm quy tc (X c th l mt node mi c chn, hoc node con khi node cha v node con xung t , ngha l c cng mu ). X l mt node cho trc. P l node cha ca X. G l node ng b ca X (node cha ca P). Trong qu trnh thm vo node mi c th vi phm cc quy tc ca cy en, chng ta s thc hin cc thao tc sau y: Cc php lt mu trn ng i xung. Cc php quay khi node c chn. Cc php quay trn ng i xung.

4.1 Cc php lt mu trn ng i xung Php thm vo trong cy en bt u nh trn cy tm kim nh phn thng thng: i theo mt ng dn t node gc n v tr cn chn, i qua phi hay tri ty vo gi tr ca kha node v kha tm kim. Tuy nhin, trong cy en, n c im chn l phc tp bi cc php lt mu v quay. bo m khng vi phm cc quy tc mu, cn phi tin hnh cc php lt mu khi cn theo quy tc nh sau: Nu php thm vo lm xut hin tnh trng mt node en c hai node con , chng ta i cc node con thnh en v node cha thnh (tr khi node cha l node gc, n vn vn gi mu l en). Mt php lt mu nh hng n cc quy tc -en ra sao? chng ta gi node nh tam gic, node c mu en trc php lt l P (P thay cho node cha). Chng ta gi hai node con tri v phi ca P l X1 v X2. Xem hnh 4a. Hnh 4. Lt mu

Hnh 4a. trc khi lt mu, Hnh 4b sau khi lt mu.

Chng ta nhn thy sau khi lt mu chiu cao en ca cy khng i. Nh vy php lt mu khng vi phm quy tc (4). Mc d quy tc (4) khng b vi phm qua php lt, nhng quy tc 3 (mt node con v node cha khng th ng mu ) li c kh nng b vi phm. Nu node cha ca P l en, khng c vn vi phm khi P c i t en sang , nhng nu node cha ca P l , th sau khi i mu, ta s c hai node trn mt hng. iu ny cn phi c chun b truc khi i xung theo cy chn node mi. Chng ta c th gii quyt trng hp ny bng mt php quay. i vi node gc th php lt mu node gc v hai node con ca n vn lm cho node gc cng nh hai node con c mu en. iu ny trnh s vi phm quy tc 2 v quy tc 3 (xung t -). Trong trng hp ny, chiu cao en trn mi ng i t node gc tng ln 1, do quy tc 4 cng khng b vi phm. 4.2. Cc php quay khi chn node Thao tc chn node mi c th lm cho quy tc -en b vi phm. Do vy sau khi chn, cn phi kim tra xem c phm quy tc khng v thc hin nhng thao tc hp l. Nh xt trn, node mi c chn m ta gi l node X, lun lun . Node X c th nm nhng v tr khc nhau i vi P v G, nh trong hnh 5.

Hnh 5. Cc bin dng ca node c chn X l mt node chu ngoi nu n nm cng bn node cha P v P cng bn node cha G. iu ny c ngha l, X l node chu ngoi nu hoc n l node con tri ca P v P l node con tri ca G, hoc n l node con phi ca P v node P l node con phi ca G. Ngc li, X l mt node chu ni. Nu X l node chu ngoi, n c th hoc bn tri hoc bn phi ca P, ty vo vic node P bn tri hay bn phi node G. C hai kh nng tng t nu X l mt node chu ni. Bn trng hp ny c trnh by trong hnh 5. Thao tc phc hi quy tc -en c xc nh bi cc mu v cu hnh ca node X v nhng b con ca n. C 3 kh nng xy ra c xem xt nh sau:(hnh 6) 7

Hnh 6. Ba kh nng sau khi chn nt i) Kh nng 1: P en ii) Kh nng 2: P v X l chu ngoi ca G iii) Kh nng 3: P v X l chu ni ca G Chng ta s xt cc kh nng trn mt cch c th nh sau: i) Kh nng 1: P en P en l trng hp n gin. Node thm vo lun . Nu node cha en, khng c xung khc - (quy tc 3), v khng c vic cng thm vo s node en (quy tc 4). Do vy, khng b vi phm quy tc v mu. Thao tc chn hon tt. ii) Kh nng 2: P v X l chu ngoi ca G Nu node P v X l node chu ngoi, ta cn mt php quay n gin v mt vi thay i v mu. Bt u vi gi tr 50 ti node gc, v chn

cc node 25, 75 v 12. Ta cn phi lm mt php lt mu trc khi chn node 12. By gi, chn node mi X l 6. (hnh 7a. )xut hin li: cha v con u , v vy cn phi c cc thao tc nh sau: (hnh 7) Trong trng hp ny, ta c th p dng ba bc phc hi tnh en v lm cho cn bng cy. Sau y l cc bc y: -i mu node G - node ng b ca node X (trong th d ny l node 25). -i mu node P - node cha ca node X (node 12) -Quay vi node G (25) v tr nh, theo hung lm nng node X ln (6). y l mt php quay phi. Khi ta hon tt ba buc trn s bo ton cy en. Xem hnh 7b. Trong th d ny, node X l node chu ngoi ca mt node con tri. C mt trng hp i xng khi node X l node chu ngoi nhng ca mt node con phi. Th lm iu ny bng cch to nn cy 50, 25, 75, 87, 93 (vi php lt mu khi cn). Chnh sa cy bng cch i mu node 75 v 87, v quay tri vi node 75 l node nh. Mt ln na cy li c cn bng.

Hnh 7. Node P v X l node chu ngoi iii) Kh nng 3: P v X l chu ni ca G Nu node P v X l node chu ni, chng ta cn thc hin hai php quay v mt vi php i mu. Cy en c to thnh t cc node 50, 25, 75, 12 v 18. (cn phi lt mu trc khi chn node 12). Xem hnh 8a. Lu l node 18 l node chu ni. Node ny v node cha u (cha v con u ).

10

hnh 8.c

Hnh 8. Kh nng 3: P v X l node chu ni Chnh li s sp xp ny cng kh rc ri hn. Nu ta c quay phi node ng b G (25) nh, nh ta lm trong kh nng 2, node chu trong X (18) i ngang hn l i ln, nh th cy s khng cn cn bng nh trc.

11

(Th lm iu ny, ri quay tr li, vi node 12 nh, phc hi cy nhu c). Phi cn mt gii php khc. Th thut cn dng khi X l node chu ni l tin hnh hai php quay hn l mt php. Php quay u bin X t mt node chu ni thnh node chu ngoi, nh trong hnh 8b. By gi, trng hp l tng t nh kh nng 1, v ta c th p dng cng mt php quay, vi node ng b nh, nh lm trc y. Kt qu nh trong hnh 8c. Chng ta cng cn t mu li cc nt. Ta lm iu ny trc khi lm bt c php quay no (th t khng quan trng, nhng nu ta i n khi sau khi quay mi t mu li node th kh m bit phi gi chng nh th no). Cc bc l: - i mu node ng b ca node X ( node 25). - i mu node X ( node X y l node 18). - Quay tri vi node P - node cha ca X - nh ( node cha y l 12). - Quay ln na vi node ng b ca X (25) nh, v hng nng X ln (quay phi). 5. LOI B NODE Trong cy BST chng ta thy rng php loi b phc tp hn so vi php thm vo. Trong cy en php loi b cng phc tp hn rt nhiu so vi php thm vo v yu cu m bo quy tc en. Chng ta c th tham kho trong phn ci t.

Nu xa mt nt th chiu cao en ca cy khng i Nu xa mt nt en th chng ta phi cn bng li cy.

12

6. TNH HIU QU CA CY EN Ging nh cy tm kim nh phn thng thng, cy en c th cho php vic tm kim, chn v xa trong thi gian O(log2N). Thi gian tm kim l gn nh bng nhau i vi hai loi cy, v nhng c im ca cy en khng s dng trong qu trnh tm kim. iu bt li l vic lu tr cn cho mi node tng cht t iu tit mu -en (mt bin boolean). c th hn, theo Sedgewick, trong thc t tm kim trn cy en mt khong log2N php so snh, v c th chng minh rng n khng cn hn 2*log2N php so snh. Thi gian chn v xa tng dn bi mt hng s v vic phi thc thi php lt mu v quay trn ng i xung v ti nhng im chn. Trung bnh mt php chn cn khong chng mt php quay. Do , chn hy cn chim O(log2N) thi gian, nhng li chm hn php chn trong cy nh phn thng. Bi v trong hu ht cc ng dng, c nhiu thao tc tm kim hn l chn v xa, c l khng c nhiu bt li v thi gian khi dng cy en thay v cy nh phn thung. D nhin, iu thun li l trong cy en, d liu sp xp khng lm gim hiu sut O(N). Mt tr ngi trong cy en l vic ci t cc php ton phc tp hn so vi cy BST. Chng ta c th tham kho cc php ton thm vo v loi b trong phn ci t.

13

You might also like