You are on page 1of 38

1

TS Nguyn Mnh Hng BM CNPM


CU TRC D LIU NNG CAO
Cc kin thc yu cu
Tm tt ni dung mn hc
Phng php kim tra nh gi
Ti liu tham kho
2
TS Nguyn Mnh Hng BM CNPM
Cc kin thc yu cu
Cc thut ton v cu trc d liu c bn
Ngn ng lp trnh: C++, nhng khng s
dng class.
Cng c: VS C++, ng dng dng console.
3
TS Nguyn Mnh Hng BM CNPM
Tm tt ni dung mn hc
Cy cn bng AVL
Cy en (red black tree)
Cy nh phn t hiu chnh
Cy 2-3-4, Cy B, Cy B+
Interval Heap
Segment tree, Interval tree, Priority search tree
Prefix tree, Suffix tree
Phng php phn tch khu tr
Cu trc ng nh thc
Cu trc ng Fibonacci
Cu trc cc tp ri nhau

4
ng dng
ng dng trong nh ch mc cc CSDL ln.
ng dng xy dng thut ton tc cao nh tuyn
gi tin trong router.
ng dng khai ph d liu hiu nng cao trong CSDL
ln, nhiu chiu.
ng dng trong x l d liu khng gian
ng dng trong x l d liu Multimedia

TS Nguyn Mnh Hng BM CNPM
5
TS Nguyn Mnh Hng BM CNPM
Phng php kim tra nh gi
im chuyn cn: 10%
Kim tra gia hc phn (bt buc): 20%
Thi kt thc hc phn (bt buc): 70%

6
TS Nguyn Mnh Hng BM CNPM
Ti liu tham kho
Slides bi ging mn hc
Advanced Data Structures. Cambridge University
Press - 2008; PETER BRASS.
Introduction to Algorithms. McGraw Hill - 1990;
Thomas H. C., Charles E.L., and Ronald L.R.
Gio trnh thut ton. Thng k 2002. Nhm Ngc
Anh Th dch
Data Structures, Algorithms, and Object-Oriented
Programming; McGraw Hill; Gregory Heilleman -
1996.
Algorithms and Data Structures in C++; Tc gi Alan
Parker,1993
7
TS Nguyn Mnh Hng BM CNPM
Lecture 1: Cy cn bng
Cy nh phn tm kim (NPTK) c th b suy
bin thnh danh sch tuyn tnh.
Khi thi gian tm kim l O(N). tng
tc tm kim th chiu cao ca cy phi
nh.
tng tc tm kim th chiu cao ca cy
NPTK phi l O(log N). Cc cy NPTK nh
th gi l balanced binary search trees.
Examples are AVL tree, red-black tree.
8
TS Nguyn Mnh Hng BM CNPM
AVL Tree (Adelson-Velskii,Landis 1962 )
Chiu cao ca nt:
Chiu cao ca nt l bng 0
The height of an internal node is the maximum height
of its children plus 1


9
TS Nguyn Mnh Hng BM CNPM
AVL Tree
Cy AVL l cy NPTK trong :
Mi nt trn cy th chiu cao ca cy con tri v chiu cao
ca cy con phi chnh lch nhau khng qu 1
10
TS Nguyn Mnh Hng BM CNPM
AVL Tree
X gc ca cy AVL c chiu cao h.
N
h
s nt ti thiu trn cy chiu cao h.
Theo nh ngha, ta c







2
2
2 1
2
1 2
1



h
h
h h h
N
N
N N N
i h
i
h
N N
* 2
2

i=h/2;

/ 2
2
log / 2
(log ) *2
h
N
N h
N h

11
TS Nguyn Mnh Hng BM CNPM
Cc php quay
Khi thc hin cc php ton (insertion or deletion),
chng ta cn phi bin i cy m bo tch cht
cn bng.
C hai dng quay single rotations or double rotations.
C
x
y
A
B
Before
Rotation
y
x
A
B
C
After
Rotation
e.g. Single Rotation
12
TS Nguyn Mnh Hng BM CNPM
Cc php quay (cont.)
Khi thm/xa c th lm thay i chiu cao ca
cy.
Khi iu kin cn bng c th b vi phm.
Chng hn ti nt x s khc nhau ca left(x) v
right(x) l 2.
p dng cc php quay ti nt x hiu chnh
cy.


13
TS Nguyn Mnh Hng BM CNPM
Case 1: Cy lch tri
14
TS Nguyn Mnh Hng BM CNPM
Case 1.1: Quay n phi T1 quanh T
15
TS Nguyn Mnh Hng BM CNPM
Case 1.2: Quay n phi T1
16
TS Nguyn Mnh Hng BM CNPM
Case 1.3: Quay kp Left-Right vi T2
Quay tri T2 quanh T1, Quay phi T2 quanh T
17
TS Nguyn Mnh Hng BM CNPM
Case 2: Cy lch phi
18
TS Nguyn Mnh Hng BM CNPM
Case 2: Cy lch phi (Cont.)
Cc trng hp cy b lch phi ta thc hin
cc php quay n v quay kp tng t nh
trng hp cy lch tri nhng theo chiu
ngc li.
19
TS Nguyn Mnh Hng BM CNPM
Insertion
Tin hnh tng t nh thm kha trong CNPTK.

Kim tra cc nt trn ng dn t nt mi thm
n gc. Vi mi nt x bt gp trn path kim tra
left(x) v right(x). Nu tha mn k cn bng th
b qua v xt tip nt trn. Nu khng tha mn
th phi tin hnh quay n hoc kp.

Vi php thm nt, phi quay ti a mt ln (hoc
quay n hoc quay kp)
20
TS Nguyn Mnh Hng BM CNPM
Insertion
Gi s x l nt c s chnh lnh ca left(x) v
right(x) ln hn 1 (bng 2).
Gi s chiu cao ca x l h+3
C 4 TH sau:
Chiu cao ca left(x) l h+2 (height of right(x) is h)
H of left(left(x)) is h+1 single rotate with left child
H of right(left(x)) is h+1 double rotate with left child
Chiu cao ca right(x) l h+2 (height of left(x) is h)
H of right(right(x)) is h+1 single rotate with right child
H of left(right(x)) is h+1 double rotate with right child

21
TS Nguyn Mnh Hng BM CNPM
Single rotation
Thm nt mi vo cy con A lm cho chiu cao ca cy con A
tng ln 1 (bng h+1).
K cn bng b vi phm ti nt x.
chiu cao ca left(x) is h+2
chiu cao ca right(x) is h.
quay phi nt y quanh nt x.
Nghing tri
Nghing phi
22
TS Nguyn Mnh Hng BM CNPM
Single rotation
Single rotation takes O(1) time.
Insertion takes O(log N) time.
Thm nt vo cy con C.
K cn bng b vi phm ti nt x.
23
TS Nguyn Mnh Hng BM CNPM
5
3
1
4
Insert 0.8
AVL Tree
8
0.8
5
3
1
4
8
x
y
A
B
C
3
5
1
0.8
4
8
After rotation
24
TS Nguyn Mnh Hng BM CNPM
Double rotation
Thm nt vo cy con B1 or B2.
K cn bng b vi phm ti nt x.
Quay tri z quanh y; quay phi z quanh x
also called left-right rotate
25
TS Nguyn Mnh Hng BM CNPM
Double rotation
Thm nt vo cy con B1 or B2.
K cn bng b vi phm ti nt x.
Quay phi z quanh y; quay tri z quanh x
also called right-left rotate
26
TS Nguyn Mnh Hng BM CNPM
5
3
1 4
Insert 3.5
AVL Tree
8
3.5
5
3
1
4
8
4
5
1
3
3.5
After Rotation
x
y
A z
B
C
8
27
TS Nguyn Mnh Hng BM CNPM
An Extended Example
Insert 3,2,1,4,5,6,7, 16,15,14
3
Fig 1
3
2
Fig 2
3
2
1
Fig 3
2
1
3
Fig 4
2
1
3
4
Fig 5
2
1
3
4
5
Fig 6
Single rotation
Single rotation
28
TS Nguyn Mnh Hng BM CNPM
2
1
4
5
3
Fig 7
6
2
1
4
5
3
Fig 8
4
2
5
6
1 3
Fig 9
4
2
5
6
1 3
7
Fig 10
4
2
6
7
1 3
5 Fig 11
Single rotation
Single rotation
29
TS Nguyn Mnh Hng BM CNPM
4
2
6
7
1 3
5
16
Fig 12
4
2
6
7
1 3
5
16
15
Fig 13
4
2
6
15
1 3
5
16
7
Fig 14
Double rotation
30
TS Nguyn Mnh Hng BM CNPM
5
4
2
7
15
1 3
6
16
14
Fig 16
4
2
6
15
1 3
5
16
7
14
Fig 15
Double rotation
31
TS Nguyn Mnh Hng BM CNPM
Deletion
Xa nt x nh trong CNPTK.
Kim tra cc nt trn path t nt thay th n nt
gc. Vi mi nt x bt gp trn path, kim tra left(x)
v right(x). Nu tha mn K cn bng th xt tip
nt trn, nu khng tha mn th thc hin php
quay tng ng.
Vi php xa nt th sau khi thc hin php quay
nt x, chng ta vn c th phi thc hin php quay
cc nt trn ca x. V vy sau khi quay chng ta
vn phi tip tc xt cc nt pha trn

32
TS Nguyn Mnh Hng BM CNPM
Single rotations in deletion
rotate with left child
Xa nt trn cy con C.
33
TS Nguyn Mnh Hng BM CNPM
Single rotations in deletion
rotate with right child
Xa nt trn cy con A.
34
TS Nguyn Mnh Hng BM CNPM
Double rotation
Xa nt trn cy con C.
also called left-right rotate
35
TS Nguyn Mnh Hng BM CNPM
Double rotation
Xa nt trn cy con A.
also called right-left rotate
36
TS Nguyn Mnh Hng BM CNPM
V d xa nt X
X
37
Cu trc d liu
typedef int KEY;
struct tree_node{
KEY key;
tree_node *left,*right;
int height;
} ;

TS Nguyn Mnh Hng BM CNPM
38
Quay phai nut con trai cua nut p quanh nut p
void right_rotation(tree_node *p){
tree_node *c;
KEY tmp_key;
tmp_key=p->key;
p->key=p->left->key;
p->left->key=tmp_key;
c=p->left;
p->left=p->left->left;
c->left =c->right;
c->right=p->right;
p->right=c;
}

TS Nguyn Mnh Hng BM CNPM

You might also like