Đề tài:
Splay tree và ứng dụng trong
Data Compression
1
Giới thiệu về Splay Trees
- Được các tác giả D.D.Sleator và
R.E.Tarjan đưa ra năm 1983
2
- Có thể truy nhập nhanh chóng các nút
vừa mới xét trước đó.
- Chi phí khấu hao thấp.
- Rõ ràng, dễ hiểu, dễ thực hiện với các
thao tác cơ bản: tìm kiếm, xoá,
chèn, …
•
Cây splay là cây nh phân tìm ki m, ị ế
s d ng các phép quay ử ụ để quay nút
đư cợ xét v g c.ề ố
•
Sắp xếp các nút vừa được xét, có tần
suất sử dụng cao về gốc
3
Một ví dụ về splay trees
với phép quay đặc trưng
4
Di chuyển nút được truy nhập x về gốc bởi phép quay
x
A
y
B C
<===>
y
x
B
C
A
Hai phng phỏp quay
- Bottom Up: Xuất phát từ nút đợc truy cập, ta quay nút
này từ dới lên trên cho đến khi nó trở thành nút gốc.
- Top Down: Xuất phát từ gốc của cây, ta quay nút này
từ trên xuống dới đến khi đến nút đang đợc truy
cập.
5
(Nu x l gc thỡ khụng phi lm gỡ)
- Trên cây splay, các phép quay đợc định nghĩa bằng
các quy tắc quay để quay dần nút đợc xét về gốc
Phương pháp Bottom up
6
Các phép quay
7
- Cã 3 quy t¾c quay: phô thuéc vµo cÊu tróc cña ®
êng dÉn truy cËp v lu«n ®¶m b¶o vÉn lµ BSTs:à
D¹ng 1: Zig
D¹ng 2: Zig-Zig
D¹ng 3: Zig-Zag
- Gi¶ sö x lµ nót ®îc truy cËp
Dạng 1: ZIG
Cha cña nót x lµ gèc cña c©y
Th c hi n: Quay nót x quanh nót cha cña xự ệ
8
Quay x quanh y
Dạng 2: ZIG - ZIG
-
Cha cña nót x kh«ng ph¶i lµ gèc, nót x vµ cha cña nót
x ®Òu lµ con tr¸i (hoÆc con ph¶i)
- Thùc hi n:ệ quay cha cña x quanh «ng cña x
quay x quanh cha cña x
9
Quay y quanh z
Quay x quanh y
Dạng 3: ZIG - ZAG
- Cha cña nót x kh«ng lµ gèc cña c©y, nót x lµ con tr¸i
(ph¶i), cha cña nót x lµ con ph¶i (tr¸i)
- Thùc hi n:ệ quay x quanh cha cña x
quay x quanh «ng cña x
10
Quay x quanh y Quay x quanh z
VÍ DỤ
¸p dông c¸c quy t¾c ®Ó quay nót a trë thµnh nót gèc
i
h
H
g
f
e
d
c
b
a
I
J
G
A
B
C
D
E
F
Cha cña a lµ nót b, kh«ng
ph¶i lµ nót gèc,
b vµ a ®Òu lµ con ph¶i,
¸p dông quy t¾c zig-zig
i
h
g
f
e
d
a
b
c
i
h
HH
f
e
d
a
b
c
II
JJ
GG
AA
BB
F
D
EE
DCC
i
h
H
g
f
a
d e
b
c
J
G
A
B
F
E
DC
i
h
H
f
a
d e
b
c
I
J
G
A
B
F
E
DC
Cha cña a lµ nót d, kh«ng
ph¶i lµ nót gèc,
d lµ con tr¸i, cßn a lµ con
ph¶i,
¸p dông quy t¾c zig-zag
11
VÍ DỤ - tiếp
¸p dông c¸c quy t¾c ®Ó quay nót a trë thµnh nót gèc
12
i
h
H
g
f
a
d e
b
c
J
G
A
B
F
E
DC
i
h
H
f
a
d e
b
c
I
J
G
A
B
F
E
DC
i
h
H
a
f
g
d
e
b
c
I
J
G
A
B
F
E
DC
i
h
H
a
f
d
e
b
c
I
J
G
A
B
F
E
DC
f
d
b
c
A
B
E
DC
a
h
i
I JH
g
e
GF
f
d
b
c
A
B
E
DC
a
h
i
I JH
e
GF
Cha cña a lµ nót f, kh«ng ph¶i
lµ nót gèc,
f lµ con tr¸i, cßn a lµ con ph¶i,
¸p dông quy t¾c zig-zag
Cha cña a lµ nót h, kh«ng
ph¶i lµ nót gèc,
a vµ h ®Òu lµ con tr¸i,
¸p dông quy t¾c zig-zig
Ph¬ng ph¸p Top - down
Phơng pháp Top - down
- Có 4 quy tắc quay: phụ thuộc vào cấu trúc của đ
ờng dẫn truy cập v luôn đảm bảo vẫn là BSTs:
Dạng 1: Zig
Dạng 2: Zig-Zig
Dạng 3: Zig-Zag
Dạng 4: Reasembling
Dạng 1: ZIG
Cha cña nót Y lµ gèc cña c©y.
Thùc hiÖn: Quay nót Y quanh nót cha cña Y. Nót Y trë
thµnh nót chó cña X.
15
Dạng 2: ZIG - ZIG
Cha cña nót Z kh«ng ph¶i lµ gèc, nót Z vµ cha cña nót Z
cïng lµ con tr¸i (hoÆc con ph¶i)
Thùc hiÖn: Quay cha cña Z quanh «ng cña Z
Quay Z quanh cha cña Z
16
Dạng 3: ZIG - ZAG
Cha cña nót Z kh«ng lµ gèc cña c©y, nót Z lµ con tr¸i (ph¶i),
cha cña nót Z lµ con ph¶i (tr¸i)
Thùc hiÖn: Quay cha cña Z quanh «ng cña Z
17
Dạng 4: Reassembling
thực hiện: sắp xếp lại cây
18
VÍ DỤ
¸p dông c¸c quy t¾c ®Ó quay nót 18 trë thµnh nót gèc
19
Z
i
g
-
Z
a
g
Z
i
g
-
Z
i
g
R
e
a
s
e
m
b
l
e
Zig
21
C¸c phÐp to¸n trªn Splay Tree
22
1. Find (i, T) - Tìm kiếm node i trên cây T
2. Catenate (T1,T2) – Nối 2 cây
3. Split (i,T) – Tách cây T tại node i
4. Insert (i,T) – Chèn node i vào cây T
5. Delete (i,T) – Xoá node i khỏi cây T
C¸c phÐp to¸n trªn Splay tree
23
Find (i, T) - Tìm kiếm nút i trên cây T
-
Tìm kiếm nút i trên T, như BST
-
Nếu tìm thấy, quay nút i về gốc
-
Nếu không có i, quay nút cuối cùng được thăm
trên đường dẫn tìm kiếm về gốc.
Find (i, T) - Tìm kiếm nút i trên cây T
24
VÝ dô tim nót 65 trªn c©y T
50
60
70
65
63
66
40
4320
16
25
50
60
70
65
63
66
40
4320
16
D¹ng zig
=>quay nót 65 quanh nót
70, quay nót 65 quanh 60
70
65
66
60
63
50
40
4320
16
D¹ng zig-zag
=> quanh 65 quanh 50
65
Find (i, T) - Tìm kiếm nút i trên cây T
25
VÝ dô tim nót 42 trªn c©y T
50
60
70
65
63
66
40
4320
16
25
D¹ng zig-zag =>quay nót
43 quanh nót 40, quay nót
43 quanh 50
Nót 42 kh«ng tim thÊy trªn c©y,
nót 43 ®îc th m lÇn cuèi cïng ă
trªn ®êng dÉn tim kiÕm
=> quay nót 43
43
40
20
16
43
50
60
70
65
63
66