foundation of computing systems

27
26.08.09 IT 60101: Lecture #12 1 Foundation of Computing Systems Lecture 12 Trees: Part VII

Upload: quynn-norman

Post on 30-Dec-2015

28 views

Category:

Documents


4 download

DESCRIPTION

Foundation of Computing Systems. Lecture 12 Trees: Part VII. Splay Tree. A binary search tree is one of the most important non-linear data structures. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 1

Foundation of Computing Systems

Lecture 12

Trees: Part VII

Page 2: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 2

Splay Tree

• A binary search tree is one of the most important non-linear data structures.

• a variety of methods are available to keep the tree balanced and hence to guarantee that operations such as searching, insertion and deletion can be done in O(log2n) time in the worst case.

• Height-balancing by AVL-rotations (AVL trees)

• Node colouring (red-black trees)

• No doubt that these trees are efficient so far searching, insertion and deletion of a node is concerned.

• But there are some situations, when the ways of balancing may not guarantee the optimal performance.

Page 3: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 3

Splay Tree• For example, consider the binary search trees T1 and T2

• Both the trees T1 and T2 contain the same set of key elements say, k1, k2, k3, k4, k5 in their five nodes such that k1 < k2 < k3 < k4 < k5

k2

k4k1

k3 k5 k4

k1

k3

k2 k5

T1 T2

Page 4: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 4

Splay Tree

Key Number of Number of Number of accesses comparisons comparisons

in tree T1 in tree T2

k1 1 1×2 1×3k2 1 1×1 1×2k3 10 10×3 10×1k4 2 2×2 2×3k5 3 3×3 3×2  

Total no. of comparisons 46 27

k2

k4k1

k3 k5 k4

k1

k3

k2 k5

T1 T2

Page 5: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 5

Splay Tree

• Definition

A splay tree is a binary search tree and it adjusts its balance dynamically providing lower access time of higher occurrence nodes.

Page 6: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 6

Splay Tree

• Operations• Searching

• Insertion

• Deletion

• Splaying

Page 7: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 7

Splaying Operation

• The basic idea of the splaying operation in a tree is that

after a node is accessed, it is pushed to the root.

– Not a simple swap operation (this may violates binary search tree property)

– Way out

• Restructuring is by a series of AVL rotations

Page 8: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 8

Splaying Operation: Bottom Up AVL Rotations

k 5

k 2

k 3

k 4

k 1

A

E

C

D

B

F

T A su b tree

k A tree n o d e

A cess p a th to k 2

(a ) A sp la y tre e a n d k 2 is b e in g a c c e sse d

k 5

k 2

k 3

k 4

k 1

A

E

C

D

B

F

(b ) T h e sp la y tre e a f te r th e ro ta tio n R 1b e tw e e n k 2 a n d k 1 ( in F ig . (a ) )

R 1

A fter ro ta tio n R 1

R 2

Page 9: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 9

Splaying Operation: Bottom Up AVL Rotations

A fte r ro ta tio n R 2

k 5

k 2

k 3

k 4

k 1

A

E

C

D

B

F

(b ) T h e sp la y tre e a f te r th e ro ta tio n R 1b e tw e e n k 2 a n d k 1 ( in F ig . (a ) )

R 2

k 5

k 2

k 3

k 4

k 1

A

E

CB

F

R 3

D

(c ) T h e sp la y tre e a fte r th e ro ta tio n R 2b e tw e e n k 2 a n d k 3 ( in F ig . (b ) )

Page 10: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 10

Splaying Operation: Bottom Up AVL Rotations

k 5

k 2

k 3

k 4

k 1

A

E

CB

F

R 3

D

(c ) T h e sp la y tr e e a f te r th e ro ta t io n R 2b e tw e e n k 2 a n d k 3 ( in F ig . (d ) )

k 5

k 2

k 3

k 4k 1

A E

C

B

F

R 4

D

(d ) T h e sp la y tre e a f te r th e ro ta tio n R 3b e tw e e n k 2 a n d k 4 ( in F ig . (c ) )

A fte r ro ta tio n R 3

Page 11: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 11

Splaying Operation: Bottom Up AVL Rotations

k 5

k 2

k 3

k 4k 1

A E

C

B

F

R 4

D

(d ) T h e sp la y tre e a f te r th e ro ta tio n R 3b e tw e e n k 2 a n d k 4 ( in F ig . (c ) ) k 5

k 2

k 3

k 4

k 1

A

E

C

B F

D

(e ) T h e sp la y tre e a fte r th e ro ta tio n R 4 b e tw e e n k 2 a n d k 5 ( in F ig . (d ) )

A fter ro ta tio n R 4

Page 12: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 12

Splaying Operation: Bottom Up AVL Rotations

k 5

k 2

k 3

k 4

k 1

A

E

C

D

B

F

T A su b tree

k A tree n o d e

A cess p a th to k 2

A sp la y tre e a n d k 2 is b e in g a c c e sse d

R 1

k 5

k 2

k 3

k 4

k 1

A

E

C

B F

D

T h e sp la y tre e a fte r th e ro ta tio n s

Page 13: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 13

Side Effect of Bottom Up AVL Rotations

• Although repeated applications of single AVL-rotation work, it possibly deteriorates the situation for the other nodes on (original) their access paths.

• As evident in the splaying operation just discussed, we see that the repeated applications of single AVL rotations have the effect of pushing k2 all the way to the root and subsequently making easy the future accessing of k2.

• Unfortunately, it has pushed up another node k1 almost as deep as k2.

• Another side effect happens to a node like k3 which was earlier closer to root now goes far away from the root

• A possible way to avoid the side effects is to follow splaying strategy of both double and single AVL-rotations, but selectively.

Page 14: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 14

Splaying Operations

p

x

T1 T 2

T 3

x

pT1

T2 T 3

Single AVL-rotation

(left-to -right)

p

XT1

T2 T 3

x

p T 3

T 2T1

Single AVL-rotation

(right-to -left)

(a) rotationZig

(b) rotationZag

Page 15: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 15

Splaying Operations

g

T4

T 3

T 2T1

x

p1

2

x

p

g

T1

T2

T 3 T4

Double left-to-left

AVL-rotation

(c) rotationZig-Zig

Page 16: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 16

Splaying Operations

Double right-to-righ t

AVL-rotation

g

p

x

T4T3

T 2

T1

1

2

x

p

g

T4

T3

T2T1

(d) rotationZag-Zag

Page 17: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 17

Splaying Operations

g

T4

T 3T 2

T1

p

x1

2

x

p g

T1 T2 T 3 T4

Double AVL ro tation

righ t-to-left andle ft-to-right rotation

(e) rotationZig-Zag

Page 18: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 18

Splaying Operations

g

T1 p

T4

T 3T2

x

2

1

x

pg

T1 T2 T 3 T4

Double AVL ro tation

le ft-to-right andrigh t-to-left rotation

(f) rotationZag-Zig

Page 19: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 19

Case 1: Zig or Zag

• Case 1:  zig or zag

• If the parent of the x is the root of the tree then

• if x is the left child – perform zig

• else (i.e. x is the right child)

– perform zag

p

x

T 1 T 2

T 3

x

pT 1

T 2 T 3

S in g le A V L -ro ta tio n(le ft-to -rig h t)

Z ig ro ta tio n

p

xT 1

T 2 T 3

x

p

T 1 T 2

T 3S in g le A V L -ro ta tio n

(rig h t- to -le ft)

Zag ro ta tio n

Page 20: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 20

Case 2: Zig-Zig or Zag-Zag

• Case 2:  zig-zig or zag-zag

• If x has both a parent (p) and a grandparent (g)

• If x is the left child of p and p is the left child of g

– perform zig-zig

• else (i.e. x is the right child of p and p is the right child of g)

– perform zag-zag

x

pT 1

T 2

T 4

g

p

T 1

T 3

T 4

D o u b le le ft- to -le ftA V L -ro ta tio n

Z ig -Z ig ro ta tio n

g

T 3

x

T 2

1

2

g

pT 1

T 2

T 4

x

p

T 1

T 3

T 4

D o u b le r ig h t-to -righ tA V L -ro ta tio n

Zag -Z a g ro ta tio n

x

T 3

g

T 2

1

2

Page 21: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 21

Case 3: Zig-Zag or Zag-Zig

• Case 3:  zig-zag or zag-zig

• If x has both a parent (p) and a

grandparent (g)

• If x is the right child of p and p is the left child of g then

– perform zig-zag

• else (i.e. x is the left child of p and p is the right child of g)

– perform zag-zig

g

p

T 1

T 2

T 4

x

p

T 1 T 3 T 4

D o u b le A V L ro ta tio nrigh t-to -le ft an d

left-to -righ t ro ta tio n

Z ig -Z ag ro ta tio n

x

T 3

g

T 2

1

2

g

pT 1

T 2

T 4

x

p

T 1 T 3 T 4

D o u b le A V L ro ta tio nle ft- to -rig h t an d

rig h t-to -le ft ro ta tio n

Zag -Z ig ro ta tio n

x

T 3

g

T 2

1

2

Page 22: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 22

Illustration of Splaying Operation

k5

k4

k3

k1

A

B C

k2

D

E

Fzig-zag

zig-zig k5

k4

k2

k3k1

A B C D

E

F

k2

k1

k3

k4

k5A B

C D E F

(a) A splay tree wherek is being accessed2

(b) Splay tree afterthe zig-zag

(c) F inal splay tree after the zig-zig

Page 23: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 23

Illustration of Splaying Operation

32

31

30

3

2

1

(a) A skewed binary search tree with 1, 2, 3, ..., 32 numbers insertedin their descending order. This tree contains only left children

Page 24: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 24

Illustration of Splaying Operation

3 2

3 0

2 6

1

2

3

R e su lt o f sp la y in g th e tre e in a t n o d e 1 .

4

5

2 7

3 1

3 2

3 1

3 0

1

2

3

A sk e w e d b in a ry se a rc h tre e w ith

Page 25: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 25

Illustration of Splaying Operation

2 8

2 4

2 0

1

3

2

R e su lt o f sp la y in g th e tre e a t n o d e 2 .

4

6

2 7

2 6

75

2 5

3 1

3 02 9

3 2

3 2

3 0

2 6

1

2

3

A b in a ry se ra c h tre e

4

5

2 7

3 1

Page 26: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 26

Illustration of Splaying Operation h

i

g

c

d

ea

b

f

b

e

g

c

f

h

i

a

d

zig-zig

e

a g

c

b

i

h

f

d

zig-zag

e

g

c

f

d

zigi

h

a

b

Page 27: Foundation of Computing Systems

26.08.09 IT 60101: Lecture #12 27

For detail implementation of splaying operation on binary search trees see the book

Classic Data StructuresChapter 7

PHI, 2nd Edn., 17th Reprint