Top Banner
BÀI BÁO CÁO MÔN: CẤU TRÚC DỮ LIỆU NÂNG CAO Giảng viên hướng dẫn: TS. Nguyễn Mạnh Hùng Nhóm học viên thực hiện: Lê Thu Hà Phạm Thị Thanh Tân Trương Thị Hồng Thúy 1
73

Bao Cao Splay Tree

Feb 15, 2015

Download

Documents

Do Hoa
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Bao Cao Splay Tree

BÀI BÁO CÁOMÔN: CẤU TRÚC DỮ LIỆU NÂNG CAO

Giảng viên hướng dẫn: TS. Nguyễn Mạnh Hùng

Nhóm học viên thực hiện: Lê Thu Hà Phạm Thị Thanh TânTrương Thị Hồng Thúy

1

Page 2: Bao Cao Splay Tree

Đề tài:

Splay tree và ứng dụng trong

Data Compression

2

Page 3: Bao Cao Splay Tree

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

3

- 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, …

Page 4: Bao Cao Splay Tree

• 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

4

Page 5: Bao Cao Splay Tree

Một ví dụ về splay treesvới phép quay đặc trưng

5

Di chuyển nút được truy nhập x về gốc bởi phép quay

x

Ay

B C

<===>

y

x

B

C

A

Page 6: Bao Cao Splay Tree

Hai phương 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.

6

(Nếu x là gốc thì không phải làm 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

Page 7: Bao Cao Splay Tree

Phương pháp Bottom up

7

Page 8: Bao Cao Splay Tree

Các phép quay

8

- 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: ZigD¹ng 2: Zig-ZigD¹ng 3: Zig-Zag

- Gi¶ sö x lµ nót ® îc truy cËp

Page 9: Bao Cao Splay Tree

Dạng 1: ZIGCha 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

9

Quay x quanh y

Page 10: Bao Cao Splay Tree

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

10

Quay y quanh z

Quay x quanh y

Page 11: Bao Cao Splay Tree

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

11

Quay x quanh y

Quay x quanh z

Page 12: Bao Cao Splay Tree

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

HHf

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

Hf

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

12

Page 13: Bao Cao Splay Tree

VÍ DỤ - tiếp¸p dông c¸c quy t¾c ®Ó quay nót a trë thµnh nót gèc

13

i

h

H

g

f

a

d e

b

c

J

G

A

B F

E

DC

i

h

Hf

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

BF

E

DC

i

h

H

a

f

d e

b

c

I

J

G

A

BF

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 JHe

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

Page 14: Bao Cao Splay Tree

Ph ¬ng ph¸p Top - down

Page 15: Bao Cao Splay Tree

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

Page 16: Bao Cao Splay Tree

Dạng 1: ZIGCha 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.

16

Page 17: Bao Cao Splay Tree

Dạng 2: ZIG - ZIGCha 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

17

Page 18: Bao Cao Splay Tree

Dạng 3: ZIG - ZAGCha 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

18

Page 19: Bao Cao Splay Tree

Dạng 4: Reassemblingthực hiện: sắp xếp lại cây

19

Page 20: Bao Cao Splay Tree

VÍ DỤ¸p dông c¸c quy t¾c ®Ó quay nót 18 trë thµnh nót gèc

20

Zig-Zag Zig-Zig

Page 21: Bao Cao Splay Tree

Reasemble

Zig

Page 22: Bao Cao Splay Tree

22

Page 23: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay Tree

23

1. Find (i, T) - Tìm kiếm node i trên cây T2. Catenate (T1,T2) – Nối 2 cây3. Split (i,T) – Tách cây T tại node i4. Insert (i,T) – Chèn node i vào cây T5. Delete (i,T) – Xoá node i khỏi cây T

Page 24: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

24

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.

Page 25: Bao Cao Splay Tree

Find (i, T) - Tìm kiếm nút i trên cây T

25

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

43

20

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

43

20

16

D¹ng zig-zag

=> quanh 65 quanh 50

65

Page 26: Bao Cao Splay Tree

Find (i, T) - Tìm kiếm nút i trên cây T

26

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

Page 27: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay trees

27

Catenate (T1,T2) – Nối 2 cây T1 và T2 được 1 cây BST

• Tìm nút i lớn nhất trong cây T1• Quay i về làm gốc T1• Nối T2 làm con phải của nút gốc i

Lưu ý: giá trị của các nút trong cây T1 nhỏ hơn giá trị các nút trong cây T2

T1 T2

i

T1T2

i

T1 T2

Page 28: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

28

Nót lín nhÊt lµ 29, quay nót 29 (d¹ng zig-zig)

10

25

29

823

5

60

55

75

90

65

Nèi c©y T2 thµnh con ph¶i cña 29

60

55

75

90

65

VÝ dô nèi 2 c©y sau

10

25

29

8

23

5

C©y T1

C©y T2

29

Page 29: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

29

Tr êng hîp 1: i T

• Quay nót i vÒ làm gèc cña T• C¾t liªn kÕt tr¸i hoÆc liªn kÕt ph¶i cña nót i => c©y T ® îc t¸ch t¹i nót i thµnh 2 c©y :

T1, T2

Split (i,T) – Tách cây T tại node i

Quay i vÒ gèc

TT2

i

T1

iC¾t liªn kÕt ph¶i

cña i

C¾t liªn kÕt tr¸i cña i

T2T1

ii

T2T1

i

Page 30: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

30

Tr êng hîp 2: iT

• Quay nót i- (nót cã gi¸ trÞ liÒn tr íc i) hoÆc i+ ( nót cã gi¸ trÞ liÒn sau i) vÒ gèc cña T

• C¾t liªn kÕt ph¶i cña nót i- hoÆc liªn kÕt tr¸i cña i+

• => c©y T ® îc t¸ch t¹i nót i- hoÆc i+ thµnh 2 c©y: T1, T2

Split (i,T) – Tách cây T tại node i

T1

Quay i- vÒ gèc

T

T2

i

T1

i-

C¾t liªn kÕt ph¶i cña i-

C¾t liªn kÕt tr¸i cña i +

T2T1

ii-

Quay i + vÒ gèc

T2T1

i+

T2T1

i+

Page 31: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

31

C¾t liªn kÕt tr¸i cña nót 60

VÝ dô t¸ch c©y T t¹i nót 60 5

0

60

70

65

63

66

40

43

20

16

50

40

43

20

16

60

70

65

63

66

C©y T1

50

40

43

20

16 C©y T2

60

70

65

63

66

Quay nót 60 (d¹ng zig)

Page 32: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

32

C¾t liªn kÕt tr¸i cña nót 43

VÝ dô t¸ch c©y T t¹i nót 42

50

60

70

65

63

66

40

43

20

16

Quay nót 43 (42+)

(d¹ng zig-zag)

40

20

16

43

50

60

70

65

63

66

C©y T1

40

20

16 C©y

T2

43

50

60

70

65

63

66

43

Page 33: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

33

Insert (i,T) – Chèn nút i vào cây T

- Chèn nút vào như trong BST - Quay nút vừa được chèn về gốc- Nếu đã có i trong T thì quay nút đó về gốc

1

Page 34: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

34

- Thùc hiÖn Split(i,T) ta ® îc 2 c©y con T1, T2 - Nèi c©y T1 thµnh con bªn tr¸i cña nót i, T2

thµnh con bªn ph¶i cña nót i

Split(i,T)Nèi T2 thµnh con ph¶i cña i

T1 T2 T2T1

ii

T

Nèi T1 thµnh con tr¸i cña i

Insert (i,T) – Chèn nút i vào cây T2

Page 35: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

35

VÝ dô chÌn nót 42 vµo c©y T 5

0

60

70

65

63

66

40

43

20

16

Split(42,T)

42

C©y T1

40

20

16

C©y T2

43

50

60

70

65

63

66

40

20

16

43

50

60

70

65

63

66

Nèi c©y T1 thµnh con tr¸i cña 42Nèi c©y T2 thµnh con ph¶i cña 42

Page 36: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

36

• Quay nót i vÒ nót gèc cña c©y T (nÕu nót i kh«ng cã trªn c©y T thi quay nót ® îc thăm lÇn cuèi cïng trªn ® êng dÉn tim kiÕm)

• C¾t bá liªn kÕt tr¸i vµ liªn kÕt ph¶i cña nót i, ta ® îc hai c©y T1 vµ T2

• Xãa nót i• Catenate(T1, T2)

Quay nót i

C¾t liªn kÕt tr¸i vµ liªn kÕt ph¶i cña nót i, xãa

nót i T’T2T1

ii

T

Catenate(T1, T2)

T2T1

ii

Delete (i,T) – Xoá nút i khỏi cây T

Page 37: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

37

Quay nót 40 vÒ gèc

C¾t bá liªn kÕt tr¸i cña nót 40C¾t bá liªn kÕt ph¶i cña nót 40

VÝ dô xãa nót 40 khái c©y T

50

60

70

65

63 66

40

4320

16 25

40

20

16 25

50

60

70

65

63

66

43

Xãa nót 40 ® îc 2 c©y T1 vµ T2

50

60

70

65

63

66

43

T1

T2

Quay nót 25 cña c©y T1

20

16

25

Nèi T2 thµnh con ph¶i cña 25

40

Page 38: Bao Cao Splay Tree

C¸c phÐp to¸n trªn Splay tree

38

Nót 80 kh«ng cã trªn c©y T, nót 70 lµ nót ® îc th¨m lÇn cuèi cïng trªn ® êng dÉn t×m kiÕm => quay nót 70 (d¹ng zig-zig)

VÝ dô xãa nót 80 khái c©y T

50

60

70

65

63 66

40

4320

16 25 50

60

70

65

63 6640

4320

16 25

70

Page 39: Bao Cao Splay Tree

Phân tích khấu hao

39

Page 40: Bao Cao Splay Tree

Phân tích khấu hao

- KÝch th í c cña mét nót x trªn c©y splay kÝ hiÖu lµ s(x): s(x)=

xTy

)y(w

40

Gọi W(i) là trọng lượng nút i, w(i) dương, là hằng số bất kỳ

Bậc của nút x là r(x) = log 2 (s(x)) (thế năng của nút) Hàm thế năng: = tổng các bậc của các nút trong cây

- Hµm thÕ n ng cña mét c©y Splay: pf()=

Tx

)x(r

Trong ®ã T lµ toµn bé c c nót cña c©y splay, x lµ mét nót thuéc T

= ΔФ ≥ 0 mọi x € T do mỗi nút dịch chuyển dần về gốc nên bậc sau quay >= bậc trước quay

Thời gian của phép quay = tổng số lần quay trong phép quay đó.

Định nghĩa: kích thước nút x là s(x) = tổng trọng lượng các nút trong các cây con của x

Chi phí khấu hao = chi phí thực sự + hiệu thế năng

Page 41: Bao Cao Splay Tree

Chi phí khấu hao cho 1 bước trong phép quay cơ bản

41

Фend: thế năng của cây sau khi quay

Фo: thế năng của cây trước khi quay

- Cộng thêm hằng số 1 là chi phí thực sự của cây ban đầu biến

thành cây sau khi thực hiện phép quay.

Hay

Page 42: Bao Cao Splay Tree

Chi phí khấu hao cho 1 bước trong phép quay cơ bản

42

Delta phi = tổng rank của những nút bị biến đổi sau quay – tổng ranh của các nút đó trước quay

Trong đó: Y: nútT: cây trước khi quayR: cây sau khi quayrank+(y): thế năng của nút y sau khi quayRank-(y): thế năng của nút y trước khi quay

Page 43: Bao Cao Splay Tree

Chi phí khấu hao cho phép quaynút i về gốc r trong phép quay cơ bản

43

Chiều cao cây ban đầu = 2 (trong phép quay cơ bản), nút gốc có chiều cao là 0.Chi phí thực sự = 1

Trong đó: A: chi phí khấu hao quay nút i về gốcrank(r): thế năng của nút gốc Rank(y): thế năng của nút i trong cây trước

quay

Page 44: Bao Cao Splay Tree

Chi phí khấu hao cho phép quay nút i về gốc trong cây

splay

44

Tại bước j trong quá trình quay i về gốc:

Trong đó: Aj: chi phí khấu hao bước jtj: chi phí thời gian thực sự cho bước jФ(j-1): thế năng của cây trước bước truy cập jФ(j): thế năng của cây sau bước truy cập j

Page 45: Bao Cao Splay Tree

Chi phí khấu hao cho phép quay nút i về gốc trong cây

splay

45

Sau đó áp dụng cho m thao tác trong quá trình quay i về gốc, vậy tổng chi phí khấu hao là:

Page 46: Bao Cao Splay Tree

Chi phí khấu hao cho phép quay nút j về gốc trong cây

splay

46

Hiệu thế năng cực đại cay splay là:

Page 47: Bao Cao Splay Tree

Bæ ®Ò truy nhËp

Bæ ®Ò truy nhËp: Thêi gian khÊu hao tèi ®a ®Ó quay mét nót x trong mét c©y splay cã nót gèc t lµ:

3(r(t) - r(x)) + 1 = )))x(s)t(s

(log(O

47

Thời gian khấu trừ tối đa để quay nút x trong cây gốc t là:

Bổ đề :

Page 48: Bao Cao Splay Tree

Bæ ®Ò truy nhËp

48

Chứng minh:

Đối với mỗi phép quay cơ bản: •Gọi s, s’ và r, r’ tương ứng là kích thước và bậc của nút trước và sau quay.•Ta có thời gian khấu hao tối đa của mỗi phép quay: Zig là: 3.(r’(x) - r(x)) + 1 Zig – zig hoặc zig – zag là: 3.(r’(x) - r(x))

Page 49: Bao Cao Splay Tree

Bæ ®Ò truy nhËp

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))

Quay x quanh y

Thêi gian khÊu hao cña phÐp zig

49

Page 50: Bao Cao Splay Tree

Bæ ®Ò truy nhËp

tgkh = 2 +

= 2 + r’(x) + r’(y) + r’(z) - r(x) - r(y) - r(z)

= 2 + r’(y) + r’(z) - r(x) - r(y) do r’(x)= r(z)

2 + r’(x) + r’(z) - 2r(x) 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))

Thêi gian khÊu hao cña PHÉP zig- zig

Quay y quanh z

Quay x quanh y

50

Page 51: Bao Cao Splay Tree

Bæ ®Ò truy nhËp

tgkh = 2 + r’(x) + r’(y) + r’(z) - r(x) - r(y) - r(z)

= 2 + r’(y) + r’(z) - r(x) - r(y) do r’(x) = r(z)

2 + r’(y) + r’(z) - 2r(x) do r(x) r(y)

2r’(x) - r’(y) - r’(z) + r’(y) + r’(z) - 2r(x) do 2 2r’(x) - r(y) - r’(z)

2(r’(x) - r(x)) 3(r’(x) - r(x)) do r(x) r’(x)

Thêi gian khÊu hao cña phÐp zig- zag

Quay x quanh y

Quay x quanh z

51

Page 52: Bao Cao Splay Tree

ĐÞnh lý c©n b»ng

52

Định lý:

Thời gian để truy cập m nút trong cây splay n nút là: 0((m+n)log n)

Page 53: Bao Cao Splay Tree

Chứng minh định lý cân bằng

53

Page 54: Bao Cao Splay Tree

ĐÞnh lý tèi u tÜnh häc

54

Định lý:

Nếu tất cả các nút được truy cập ít nhất 1 lần thì tổng thời gian truy cập là:

O(m + q(i) log (m/q(i)) )Trong đó: q(i): tổng thời gian – số lần - truy cập tới nút iN: số nút của cây splayM: số nút được truy cập

Page 55: Bao Cao Splay Tree

Chứng minh Định lý tối ưu tĩnh học

55

Mà theo gt: mỗi nút được truy cập ít nhất 1 lần nên ta có:

Page 56: Bao Cao Splay Tree

Chứng minh Định lý tối ưu tĩnh học

56

Page 57: Bao Cao Splay Tree

Ứng dụng: Nén dữ liệu qua cây splay

57

Page 58: Bao Cao Splay Tree

Ứng dụng: Nén dữ liệu qua cây splay

58

Mã hoá - Giả sử cần nén văn bản xuất từ một bảng chữ cái - Xây dựng cây nhị phân biểu diễn các ký tự của tại các nút lá - Để mã hoá ký tự x:

+ Trên đường dẫn từ gốc tới x, mã hoá là 0 nếu đi sang trái và mã hoá là 1 nếu đi sang phải.

+ Quay nút cha của x được cây mới, sử dụng cây này để mã hoá ký tự tiếp theo.

Page 59: Bao Cao Splay Tree

Ví dụ: mã hoá chuỗi ký tự aabg...

59

X©y dùng c©y nhÞ ph©n mµ c¸c chữ c¸i ë l¸ cña nã

e f g ha b c d e f g ha b c d

0

0

0

M· hãa kÝ tù a

aabg...

000

a

Page 60: Bao Cao Splay Tree

Ví dụ - tiếp60

Quay nót cha cña a, ® îc c©y míi

M· hãa kÝ tù a tiÕp theoe f g h

a

b

c d

e f g h

a

b

c d

0

aabg...000 0 a

Page 61: Bao Cao Splay Tree

Ví dụ - tiếp61

Vì nút cha của a đã là gốc nên không phải quay

M· hãa kÝ tù b

aabg...0000

e f g h

a

b

c d

e f g h

a

b

c d

1

0

10 b

Page 62: Bao Cao Splay Tree

Ví dụ - tiếp62

Quay nót cha cña b, ta ® îc c©y míi

M· hãa kÝ tù g

aabg...0000101110

e f g h

c d

a b

e f g h

c d

a b

1

1

1

0

1110

g

Page 63: Bao Cao Splay Tree

Ứng dụng: Nén dữ liệu qua cây splay

63

Gi¶i m·C©n ®èi.Gi¶i m· vµ m· hãa ph¶i thèng nhÊt víi nhau vÒ c©y ban ®Çu.

Page 64: Bao Cao Splay Tree

Phân tích việc nén dữ liệu thông qua cây splay

64

- Việc nén dữ liệu qua cây splay hiệu quả như thế nào?

- Giả sử m là # của các ký tự trong xâu gốc

- Chiều dài của xâu sau nén = m+chi phí các phép quay

mà chi phí các phép quay, theo định lý tối ưu tĩnh học được

xác định: O(m + q(i) log (m/q(i)) )

có m + O(m + q(i) log (m/q(i)) )

=O(m + q(i) log (m/q(i)) )

Khi xây dựng theo mã hoá Huffman, ≥ q(i) log (m/q(i))

và cần phải biết trước tần suất xuất hiện của các ký

tự.

Page 65: Bao Cao Splay Tree

65

D. Jones (88) chỉ ra rằng kỹ thuật nén qua cây semi-splay (một biến thể của cây splay) có thể cạnh tranh được với mã hoá Huffman động (Vitter 87)

Page 66: Bao Cao Splay Tree

66

Semi - splaying

==>Semi-splay zig - zig

z

y

x

A B

C

D

==>

Regular zig - zig

*

x

y

z

DC

B

A

*

z

y

x

A B

C

D

*

y

z

DC

x

A B

*

Tiếp tục xét quay với y …

Page 67: Bao Cao Splay Tree

Nén dữ liệu qua semi-splay

67

Mã hoá

- Mã hoá ký tự x: trên đường dẫn từ gốc tới x, mã hoá là 0 nếu đi sang trái và mã hoá là 1 nếu đi sang phải.- Nếu là semi play zig-zig thì bán quay theo quy tắc trên - Xoắn cây sao cho ký tự được mã là lá cực trái

Page 68: Bao Cao Splay Tree

Ví dụ:

VÝ dô m· hãa aabg

e f g ha b c d

0

0

0

M· hãa kÝ tù a

aabg...

000

a

68

a lµ nót cùc tr¸i nªn kh«ng ph¶i xo¾n c©y

Page 69: Bao Cao Splay Tree

Ví dụ:

e f g ha b c d

D¹ng semi zig-zig

e f g h

a

b

c d

e f g h

a

b

c d

D¹ng semi zig- zig

69

Page 70: Bao Cao Splay Tree

Ví dụ

e f g h

a

b

c d

0

M· hãa kÝ tù a tiÕp theo

aabg...000 0 a

70

Do nót cha cña a ë gèc nªn ta kh«ng ph¶i quay nã

Page 71: Bao Cao Splay Tree

Ví dụ

e f g h

a

b

c d

1

0

0

M· hãa kÝ tù b

aabg...0000 100 b

71

Page 72: Bao Cao Splay Tree

Ví dụ:

72

e f g h

a

b

c d e f g h

b

c d

axo¾n c©y ®Ó

nót

b trë thµnh l¸ cùc tr¸i

e f g h

b

c d

a

e f g h

b

c d

aD¹ng semi zig-

zig

D¹ng semi zig- zig

Page 73: Bao Cao Splay Tree

Ví dụ:

e f g h

b

c d

a

1

1

1

0

0

M· hãa kÝ tù g

aabg...0000100 10110

g

73