Professional Documents
Culture Documents
Tai Lieu Splay Tree
Tai Lieu Splay Tree
Mn hoc Cu truc d liu nng cao la mt mn c ban, nn tang cho mi ngi hoc va lam v cng ngh thng tin. Trong mn hoc nay, chung ta c tim hiu, nghin cu rt nhiu cu truc d liu cung vi nhng ng dung cua chung trong thc t. Tai liu nay nhm gii thiu v cu truc splay tree cy splay va ng dung splay tree trong nen d liu. Chung ti xin trn trng t lng bit n ti Tin s Nguyn Manh Hung - ngi trc tip ging dy mn hc Cu truc d liu nng cao. Chung ti cng xin chn thnh cm n cc bn b v ng nghip nhit tnh gip ti hon thnh bi tp ny. Mc d c gng nhng chc hn tai liu khng trnh khi nhng thiu st. V vy chung ti rt mong c Thy cng cc bn nhn xt v gp ti c tai liu ny c hon thin hn. Chung ti xin trn thanh cam n!
Ha Ni, thang 5 nm 2009 Nhom hoc vin thc hin: L Thu Ha Pham Thi Thanh Tn Trng Thi Hng Thuy
MUC LUC
1.1 Gii thiu v Splay tree.................................................................3 1.2 Nguyn tc hot ng cua splay tree............................................4 1.2.1 Phng phap Bottom Up.........................................................4 1.2.2 Phng phap phn tich Top Down........................................6 1.3 Cac phep cp nht trn Splay Tree................................................9 1.3.3 Split (i,T) Tch cy T ti node i...........................................10 1.3.4 Insert (i,T) .............................................................................12 1.3.5 Delete (i,T) Xo nt i khi cy T.........................................13 1.4. Phn tch khu hao.....................................................................14 1.4.1 Chi ph khu hao cho 1 bc trong php quay c bn..........15 1.4.2 Chi ph khu hao cho php quay nt i v gc r trong php quay c bn....................................................................................15 1.4.3 B truy nhp ....................................................................16 1.4.4 inh ly cn bng ..................................................................17 1.4.5 inh ly ti u tinh hoc...........................................................18 2.1 S dung phep quay Splaying trong nen d liu ...........................20 2.2 S dung phep quay Semi - Splaying trong nen d liu ...............23
1. Splay tree
1.1 Gii thiu v Splay tree Splay tree c cc tc gi D.D.Sleator v R.E.Tarjan a ra nm 1983. Cy Splay l cy tm kim nh phn, song mi php ton trn cy i km theo thao tc cu trc li cy, nh cac cy t iu chinh khac la cy AVL hay cy o en, c gi l splaying cy. Vi cy AVL hoc cy - en, chng ta khng quan tm ti tn sut truy cp ca cc phn t d liu, m thay cho iu chng ta lun lun m bo cy khng bao gi mt cn bng ti mi nh, v do thi gian thc hin cc php ton trn cy l O(logn). ci t cy AVL hoc cy - en, ta cn phi a vo mi nh thng tin v s cn bng hoc v mu ca nh . Trong khi o, Splaying cy nhm mc ch gim bt tng thi gian truy cp d liu bng cch dch chuyn cc d liu c thng xuyn truy cp ln gn gc cy, v v vy s truy cp ti cc d liu s nhanh hn. u im ca Splay cy l chng ta khng cn lu thng tin v s cn bng ca cc nh, v do , tit kim c b nh v s ci t cng n gin hn. Bn canh o, Splay tree la cy nhi phn tim kim nn cung kha ro rang, d hiu va d dang thc hin cac thao tac c bn nh: tm kim, xo, chn, Y tng cua Splay tree la sp xp cc nt va c xt, c tn sut s dng cao v gc va xem xt vi cc nt trong c nhiu con chu hay cc nt l. Vic chuyn mt nh v bt k ln gc cy l rt n gin bng cch s dng cc php quay cy (tri hoc phi), mi ln quay nh v c chuyn ln 1 mc. Chng hn, di chuyn nt c truy nhp x v gc bi php quay:
1.2 Nguyn tc hot ng cua splay tree Trn cy splay, cc php quay c nh ngha bng cc quy tc quay quay dn nt c xt v gc C 2 phng php quay: - Bottom Up: Xut pht t nt c truy cp, ta quay nt ny t di ln trn cho n khi n tr thnh nt gc. - Top Down: Xut pht t gc ca cy, ta quay nt ny t trn xung di n khi n nt ang c truy cp. - Trn cy splay, cc php quay c nh ngha bng cc quy tc quay quay dn nt c xt v gc. Nu x la gc cua cy thi khng phai thc hin gi. 1.2.1 Phng phap Bottom Up Ph thuc vo cu trc ca ng dn truy cp v lun m bo cy Splay vn la cy tim kim nhi phn, phng phap Bottom Up s dung 3 quy tc quay c ban sau: Dng 1: Zig Gia s cha cua nut x la gc cua cy, ta thc hin quay x quanh nut cha cua x.
Dng 2: Zig-Zig Cha ca nt x khng phai l gc ca cy, nt x l con tri ( hoc con phi) cua nut gc, cha ca nt x l con
Quay y quanh z
Quay x quanh y
phi (hoc con tri) cua nut gc. Ta thc hin phep quay cha cua x quanh ng cua x va quay x quanh cha ca x.
Dng 3: Zig-Zag Cha ca nt x khng l gc ca cy, nt x l con tri (hoc con phi) cua nut gc, cha ca nt x l con phi (hoc con tri) cua nut gc. Ta thc hin quay x quanh cha ca x va quay x quanh ng ca x. Quay x quanh y Quay x quanh z
i i h g f A d c b e G H I J h
J I
B C
i h g a J I H a d b c e h
Cha ca a l nt f, khng phi l nt gc, f l con tri, cn a l con phi. p dng quy tc zig-zag
g d b c e
H G
E D
G h a I
C J
E D
f d b c F e
A B
H G
E D
1.2.2 Phng phap phn tich Top Down Ph thuc vo cu trc ca ng dn truy cp v lun m bo cy Splay vn la cy tim kim nhi phn, phng phap Bottom Up s dung 4 quy tc quay c ban sau: Dng 1: Zig Cha ca nt Y l gc ca cy, ta thc hin: Quay nt Y quanh nt cha ca Y. Nt Y tr thnh nt ch ca X.
Dng 2: Zig - Zig Cha ca nt Z khng phi l gc, nt Z v cha ca nt Z cng l con tri (hoc con phi) cua nut gc. Ta thc hin: Quay cha ca Z quanh ng ca Z va quay Z quanh cha ca Z
Dang 3: Zig Zag Cha ca nt Z khng l gc ca cy, nt Z l con tri (hoc con phi), cha ca nt Z l con phi (tri) cua nut gc. Ta thc hin quay cha ca Z quanh ng ca Z.
g -Za g i Z
Zi gZi g
-6-
Zig
Re a
se
m bl e
1.3 Cac phep cp nht trn Splay Tree 1.3.1 Find (i, T) - Tm kim nt i trn cy T - Tm kim nt i trn T, nh BST - Nu tm thy, quay nt i v gc - Nu khng c i, quay nt cui cng c thm trn ng dn tm kim v gc. V d tim nt 65 trn cy T
5 0 4 0 2 0 1 6 2 5 6 3 4 3 6 65 5 6 6 5 0 4 0 2 0 1 6 4 3 6 3 6 5 7 0 6 0 7 0
Dng zig-zag
=>quay nt 65 quanh nt
70, quay nt 65 quanh 60
2 0 1 6 4 0 4 3
5 0 6 5 6 3 6 6 7 0
6 0
6 6
6 0
V d tim nt 42 trn cy T
5 0 4 0 2 0 1 6 2 5 6 3 4 3 6 5 6 6 6 0 7 0
Nt 42 khng tim thy trn cy, nt 43 c thm ln cui cng trn ng dn tim kim => quay nt 43
4 3 4 0 2 0 1 6 6 5 6 3 6 6 5 0 6 0 7 0
i T1 T2 T1
V d ni 2 cy
i T2 T1 T2
sau
1 0 8 2 3 2 5 2 9 5 5
6 0 7 5 6 5 9 0
Cy T1
2 9 2 5 1 0 8 5 2 3 5 5 6 5 6 0
Cy T2
7 5 9 0
1.3.3 Split (i,T) Tch cy T ti node i Trng hp 1: i T Quay nt i v lm gc ca T Ct lin kt tri hoc lin kt phi ca nt i 10
Ct lin kt phi ca i
i
Quay i v gc
T 1 T 2
T 1
T i 2
Ct lin kt tri ca i
T 1 T 2
Trng hp 2: i T gc ca T Ct lin kt phi ca nt i- hoc lin kt tri ca i+ => cy T c tch ti nt i- hoc i+ thnh 2 cy: T1, T2
Quay i- v gc
T 1 i -
i -
Ct lin kt phi ca iT 2 T 1 T i 2 +
Quay i + v gc
i +
T1
Ct lin kt tri ca i +
T 2
T V d tch cy T ti nt 60 1
5 0 4 0 2 0 1 6 6 3 4 3 6 5 6 6 6 0
T 1
T 2
6 0 7 0 6 5 6 6
Ct lin kt tri ca nt 60
Cy T1
Cy T2
-9-
11
1.3.4 Insert (i,T) Insert (i,T) - Phep chen 1 - Chn nt vo nh trong BST - Quay nt va c chn v gc - Nu c i trong T th quay nt v gc Insert (i,T) Phep chen 2: - Thc hin Split(i,T) ta c 2 cy con T1, T2 - Ni cy T1 thnh con bn tri ca nt i, T2 thnh con bn phi ca nt i
Ni T1 thnh con tri ca i Split(i,T)
T 1 T 2
T 1
T 2
V d chn nt 42 vo cy T
4 0 4 3 5 0 6 0
5 0 4 0 2 0 1 6 6 3 4 3 6 5 6 6 6 0 7 0
Split(42,T )
1 6
2 0
Cy T1
4 2 6 5 4 3 5 0 6 0 7 0 6 5 6 3 6 6 6 3 6 6
7 0
4 0 2 0
Cy T2
1 6
12
1.3.5 Delete (i,T) Xo nt i khi cy T Quay nt i v nt gc ca cy T (nu nt i khng c trn cy T thi quay nt c thm ln cui cng trn ng dn tim kim) Ct b lin kt tri v lin kt phi ca nt i, ta c hai cy T1 v T2 Xa nt i Catenate(T1, T2)
i i
Quay nt i
Catenate(T1, T2)
T
V d xa nt 40 khi cy T
5 0 4 0 2 0 1 6 2 5 6 3 4 3 6 5 6 0
Quay nt 40 v gc
2 0
40 5 0 2 5 4 3 6 0 7 0
7 0
1 6
6 6 2 0 1 6
2 5
5 0 4 3 6 0 7 0 6 5 6 3 6 6 6 3
6 5 6 6
V d xa nt 80 khi cy T
5 0 4 0 2 0 1 6 2 5 6 3 4 3 6 5 6 6 6 0 7 0 2 0 4 0 4 3 2 5 5 0 6 3 6 0
7 0
6 5 6 6
13
1 6
1.4. Phn tch khu hao Khi mt kiu d liu c ci t v c s dng trong mt chng trnh p dng th thng thng l mt dy cc php ton ca kiu d liu s c thc hin, ch t khi ch thc hin mt vi php ton. Nhng t trc n nay, ta mi ch quan tm nh gi thi gian chy ca mi php ton ring bit, v c th l nh gi thi gian chy trong trng hp xu nht v thi gian chy trung bnh ca mi php ton. Chng ta c th nh gi thi gian chy trong trng hp xu nht ca mt dy php ton bng phng php n gin sau. nh gi thi gian chy trong trng hp xu nht ca mi php ton trong dy, sau ly tng nhn c cn trn ca thi gian chy trong trng hp xu nht ca c dy php ton. Tuy nhin cch nh gi ny l qu th, bi v khi mt php ton c thc hin, n c th lm thay i v tr ca cc d liu trong cu trc v do c th lm cho trng hp xu nht ca cc php ton c thc hin sau khng xy ra. Nh vy thi gian chy thc t trong trng hp xu nht ca mt dy php ton c th thp hn nhiu so vi tng thi gian chy trong trng hp xu nht ca mi php ton trong dy. Phng php phn tch khu hao cho php ta c th nh gi cn trn cht ca thi gian chy ca mt dy php ton. Phng php ny thng c s dng nh gi thi gian chy ca mt dy php ton trn cc cu trc d liu t iu chnh. Gi W(i) l trng lng nt i, w(i) dng, l hng s bt k S(x) kch cua nt x= trng cc nt trong cy con ca x: - K chla th cthc ca mt nt xtng trn c ylng splay k hi u l cc s(x): s(x)= w ( y)
yTx
Bc ca nt x l rank(x) = r(x) = log 2 (s(x)) (th nng ca nt) Hm th nng: = tng cc bc ca cc nt trong cy Thi gian ca php quay = tng s ln quay trong php quay .
- Hmthnng camt cy Splay: pf( )= r(x)
x T
Trong :
R: cy sau khi quay rank+(y): th nng ca nt y sau khi quay Rank-(y): th nng ca nt y trc khi quay Vy ta co: 0 mi x T, do mi nt dch chuyn dn v gc nn bc sau quay >= bc trc quay. Khi o: Chi ph khu hao = chi ph thc s + hiu th nng 1.4.1 Chi ph khu hao cho 1 bc trong php quay c bn
Trong o: end: th nng ca cy sau khi quay o: th nng ca cy trc khi quay Cng thm hng s 1 l chi ph thc s ca cy ban u bin thnh cy sau khi thc hin php quay.
Trong :
Y: nt T: cy trc khi quay R: cy sau khi quay rank+(y): th nng ca nt y sau khi quay Rank-(y): th nng ca nt y trc khi quay
1.4.2 Chi ph khu hao cho php quay nt i v gc r trong php quay c bn
Trong :
A: chi ph khu hao quay nt i v gc rank(r): th nng ca nt gc Rank(y): th nng ca nt i trong cy trc quay
Chiu cao cy ban u = 2 (trong php quay c bn), nt gc c chiu cao l 0.Chi ph thc s = 1
Trong :
Aj: chi ph khu hao bc j tj: chi ph thi gian thc s cho bc j (j-1): th nng ca cy trc bc truy cp j (j): th nng ca cy sau bc truy cp j
Sau p dng cho m thao tc trong qu trnh quay i v gc, vy tng chi ph khu hao l:
1.4.3 B truy nh p Thi gian khu hao ti B truy nhp: a quay mt nt x trong mt gian khu tr ti a quay nt x trong cy gc t l: c y Thi splay c nt gc t l:
s(t ) )) s( x )
Gi s, s v r, r tng ng l kch thc v bc ca nt trc v sau quay. Ta c thi gian khu hao ti a ca mi php quay: Zig l: 3.(r(x) - r(x)) + 1 Zig zig hoc zig zag l: 3.(r(x) - r(x))
Thi gian khu khao cua phep quay Zig : tgkh = 1 + = 1 + r(x) + r(y) - r(x) - r(y) 1 + r(x) + r(y) - r(x) - r(y) (do r(y) r(y)) 1 + r(x) - r(x) 1 + 3(r(x) - r(x)) (do r(x) r(x)) 16
Thi gian khu khao cua phep quay Zig Zig: tgkh = 2 + = 2 + r(x) + r(y) + r(z) - r(x) - r(y) - r(z) = 2 + r(y) + r(z) - r(x) - r(y) 2 + r(x) + r(z) - 2r(x) do r(x)= r(z) do r(y) r(x), r(x) r(y)
2r(x) - r(x) - r(z) + r(x) + r(z) - 2r(x) do 2 2r(x) - r(x) - r(z) 3(r(x) - r(x)) Thi gian khu khao cua phep quay Zig Zag tgkh = 2 + r(x) + r(y) + r(z) - r(x) - r(y) - r(z) = 2 + r(y) + r(z) - r(x) - r(y) 2 + r(y) + r(z) - 2r(x) do r(x) = r(z) do r(x) r(y)
B truy nhp: Thi gian khu hao ti a quay mt nt x trong mt V y: Thi gian khugc tr ti a quay nt x trong cy gc t l: c y splay c nt t l: 3(r(t) - r(x)) +1 = O(log(
1.4.4 inh ly cn bng nh l: Thi gian truy cp m nt trong cy splay n nt l: O((m+n)log n) Chng minh: Ban u, gia s rng mi nut co trong lng la 1/n, khi o:
do r(x) r(x)
s(t ) )) s( x )
Sau khi cac nut a c a v cung trong lng tc la: w(i j)=w(i)=1/n va w=1, ta c:
17
Vy: Thi gian truy cp m nut trong cy Splay n nut co phc tap la O((m+n)log n) 1.4.5 inh ly ti u tinh hoc Nu tt c cc nt c truy cp t nht 1 ln th tng thi gian truy cp l: O(m + q(i) log (m/q(i)) ) Trong : q(i): tng thi gian s ln - truy cp ti nt i n: s nt ca cy splay m: s nt c truy cp Chng minh nh l ti u tnh hc Gia s hang tai nut i la q(i)/m (tng cua tt ca cac q(i) la m) va tng trong lng cua w la 1, khi o:
Vy: Nu tt c cc nt c truy cp t nht 1 ln th tng thi gian truy cp l: O(m + q(i) log (m/q(i)) ) Mi php ton trn cy Splay km theo 1 hoc 2 php quay cy. Thi gian thc hin mi php ton l t l vi thi gian thc hin php quay cy tng ng. Do thi 18
gian chy thc t ca mt dy php quay cy tng ng vi dy php ton b chn trn bi thi gian khu hao ca dy php quay cy . Thi gian khu hao ca mt php lm quay l O(logn). Vy thi gian thc hin mt dy php lm quay tng ng vi mt dy m php ton l O(mlogn). iu cng c ngha l thi gian thc hin mt dy m php ton trn cy Splay xut pht t cy rng l O(mlogn).
19
20
0 0 a b c d e f g h
a b
d e f g h
a b
d e f g h
M ha k t b la 10 21
Quay nt cha ca b, ta c cy mi
b c d e f g h
M ha k t g la 1110 Thc hin giai ma: Gii m v m ha phi thng nht vi nhau v cy ban u. Thc hin giai ma la qua trinh ngc vi ma hoa Phn tch vic nn d liu thng qua cy splay - Vic nn d liu qua cy splay hiu qu nh th no? - Gi s m l # ca cc k t trong xu gc - Chiu di ca xu sau nn = m+chi ph cc php quay m chi ph cc php quay, theo nh l ti u tnh hc c xc nh: O(m + q(i) log (m/q(i)) ) Ta c m + O(m + q(i) log (m/q(i)) ) = O(m + q(i) log (m/q(i)) ) c bit, chiu di ca chui sau khi nn thng qua b m Huffman t nht l q(i) log (m/q(i)). Nhng xy dng c b m ha Huffman, ta cn bit trc tn sut xut hin ca cc k t trong chui. m ha mt chui cc k t bng m Huffman ta phi tri qua hai qu trnh c chui. Ln c ln th nht nm c tn xut xut xut hin cc k t trong chui, xy dng bng m. Ln c th hai mi thc hin vic m ha da vo bng m. m ha mt chui cc k t bng Splay Tree ta khng cn phi quan tm n tn xut ca cc k t trng chui. V cc k t trong chui thuc mt bng ch ci nht nh, ta xy dng mt cy nh phn m cc l ca cy l cc k t thuc bng ch ci ny. Cy nh phn ny c th dng m ha mt chui k t vi tn xut xut hin cc k t l bt k. Qu trnh m ha ch cn c chui k t mt ln. Hot ng ca Splay Tree l lin tc 22
y cc nt c thm sau mi php ton v gc, nn cc k t c tn xut xut hin cao s t ng c y v gc. V vy qu trnh m ha mang hiu qua nn cao 2.2 S dung phep quay Semi - Splaying trong nen d liu Xet mt dang khac cua Splay Tree la Semi splaying (ban quay) D. Jones (88) ch ra rng k thut nn qua cy semi-splay (mt bin th ca cy splay) c th cnh tranh c vi m ho Huffman ng (Vitter 87) Vi phep quay nh binh thng regular splaying ta co phep zigzig thc hin nh sau:
inh nghia phep ban quay (semi - splaying) nh sau: xoay cha cua x la y quanh ng cua x la z. Sau o xet tip vi y
z
*
D x
C A B C D
Dang zig va zig zag thc hin nh vi slaying thng thng. Nn d liu qua semi-splay M hoa : - M ho k t x: trn ng dn t gc ti x, m ho l 0 nu i sang tri v m ho l 1 nu i sang phi. - Nu l semi play zig-zig th bn quay theo quy tc trn - Xon cy sao cho k t c m l l cc tri V d m ha aabg 23
0 0 0
a b c d e f g h
M ha k t a la 000 a l nt cc tri nn khng phi xon cy
24
M ha k t b la 100
M ha k t g la 10110 nh sau:
25
Nhn chung khng th c phng pht nn tng qut no cho kt qu tt i vi tt c cc loi tp tin v nu khng ta s p dng n ln phng php nn ny t c mt tp tin nh tu . K thut nn ap dung cu truc Splay tree thng c p dng cho cc tp tin vn bn ma trong c mt s k t no c xc sut xut hin nhiu hn cc k t khc.
26
KT LUN
Splay tree c cc tc gi D.D.Sleator v R.E.Tarjan a ra nm 1983. Splaying cy nhm mc ch gim bt tng thi gian truy cp d liu bng cch dch chuyn cc d liu c thng xuyn truy cp ln gn gc cy, v v vy s truy cp ti cc d liu s nhanh hn. u im ca Splay cy l chng ta khng cn lu thng tin v s cn bng ca cc nh, v do , tit kim c b nh v s ci t cng n gin hn. K thut nn ap dung cu truc Splay tree thng c p dng cho cc tp tin vn bn ma trong c mt s k t no c xc sut xut hin nhiu hn cc k t khc. Vi thi gian co han nn cha th nghin cu su cung nh tim hiu nhiu hn na cac ng dung cua splay tree. Rt mong nhn c s ong gop y kin cua thy giao va cac hoc vin khac.
27
28