Tải bản đầy đủ (.ppt) (72 trang)

Splay tree và ứng dụng trong Data Compression

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.86 MB, 72 trang )

Đề 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

×