Mingda Zhao CSC 252 Algorithms Smith College Fall, 2000

Slides:



Advertisements
Similar presentations
Splay Tree Algorithm Mingda Zhao CSC 252 Algorithms Smith College Fall, 2000.
Advertisements

AVL Trees1 Part-F2 AVL Trees v z. AVL Trees2 AVL Tree Definition (§ 9.2) AVL trees are balanced. An AVL Tree is a binary search tree such that.
1 AVL Trees. 2 AVL Tree AVL trees are balanced. An AVL Tree is a binary search tree such that for every internal node v of T, the heights of the children.
1 AVL Trees (10.2) CSE 2011 Winter April 2015.
Red-Black Trees 4/16/2017 8:38 AM Splay Trees v z Splay Trees.
© 2004 Goodrich, Tamassia, Dickerson Splay Trees v z.
CSC 213 Lecture 7: Binary, AVL, and Splay Trees. Binary Search Trees (§ 9.1) Binary search tree (BST) is a binary tree storing key- value pairs (entries):
CSC 212 Lecture 19: Splay Trees, (2,4) Trees, and Red-Black Trees.
AVL Trees Amanuel Lemma CS252 Algoithms Dec. 14, 2000.
CSCE 3110 Data Structures & Algorithm Analysis AVL Trees Reading: Chap. 4, Weiss.
Fall 2006 CSC311: Data Structures 1 Chapter 10: Search Trees Objectives: Binary Search Trees: Search, update, and implementation AVL Trees: Properties.
Oct 26, 2001CSE 373, Autumn A Forest of Trees Binary search trees: simple. –good on average: O(log n) –bad in the worst case: O(n) AVL trees: more.
Jim Anderson Comp 750, Fall 2009 Splay Trees - 1 Splay Trees In balanced tree schemes, explicit rules are followed to ensure balance. In splay trees, there.
SPLAY TREE The basic idea of the splay tree is that every time a node is accessed, it is pushed to the root by a series of tree rotations. This series.
Lecture 23 Red Black Tree Chapter 10 of textbook
AVL Trees CSE, POSTECH.
Part-D1 Binary Search Trees
AA Trees.
File Organization and Processing Week 3
COMP9024: Data Structures and Algorithms
Red-Black Trees v z Red-Black Trees Red-Black Trees
Red-Black Trees 5/17/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
AVL Trees 5/17/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M.
Red-Black Trees 5/22/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
Week 7 - Friday CS221.
Binary Search Trees < > =
AVL Trees 6/25/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M.
Lecture 15 AVL Trees Slides modified from © 2010 Goodrich, Tamassia & by Prof. Naveen Garg’s Lectures.
Balanced Trees AVL : Adelson-Velskii and Landis(1962)
Splay Trees.
Red-Black Trees 9/12/ :44 AM AVL Trees v z AVL Trees.
MA/CSSE 473 Day 21 AVL Tree Maximum height 2-3 Trees
Lecture 25 Splay Tree Chapter 10 of textbook
CSE373: Data Structures & Algorithms Lecture 7: AVL Trees
AVL Trees 11/10/2018 AVL Trees v z AVL Trees.
AVL Trees 4/29/15 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H.
Red-Black Trees 11/13/2018 2:07 AM AVL Trees v z AVL Trees.
TCSS 342, Winter 2006 Lecture Notes
(2,4) Trees (2,4) Trees 1 (2,4) Trees (2,4) Trees
Red-Black Trees v z Red-Black Trees 1 Red-Black Trees
Red-Black Trees v z /20/2018 7:59 AM Red-Black Trees
Red-Black Trees v z Red-Black Trees Red-Black Trees
Red-Black Trees 11/26/2018 3:42 PM AVL Trees v z AVL Trees.
(2,4) Trees /26/2018 3:48 PM (2,4) Trees (2,4) Trees
Splay Trees In balanced tree schemes, explicit rules are followed to ensure balance. In splay trees, there are no such rules. Search, insert, and delete.
v z Chapter 10 AVL Trees Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++, Goodrich,
Copyright © Aiman Hanna All rights reserved
SPLAY TREES.
(2,4) Trees (2,4) Trees (2,4) Trees.
Balanced BSTs "The voyage of discovery is not in seeking new landscapes but in having new eyes. " - Marcel Proust CLRS, pages 333, 337.
Binary Search Trees < > =
CMSC 341 Splay Trees.
Red-Black Trees 1/16/2019 1:56 PM Splay Trees v z Splay Trees.
Red-Black Trees v z /17/2019 4:20 PM Red-Black Trees
Lecture No.20 Data Structures Dr. Sohail Aslam
(2,4) Trees 2/15/2019 (2,4) Trees (2,4) Trees.
(2,4) Trees /24/2019 7:30 PM (2,4) Trees (2,4) Trees
CMSC 341 Splay Trees.
AVL Trees 2/23/2019 AVL Trees v z AVL Trees.
CS202 - Fundamental Structures of Computer Science II
Red-Black Trees 2/24/ :17 AM AVL Trees v z AVL Trees.
(2,4) Trees (2,4) Trees (2,4) Trees.
(2,4) Trees /6/ :26 AM (2,4) Trees (2,4) Trees
CMSC 341 Splay Trees.
Red-Black Trees 5/19/2019 6:39 AM AVL Trees v z AVL Trees.
CMSC 341 Splay Trees.
Splay Trees Binary search trees.
Red-Black Trees v z /6/ :10 PM Red-Black Trees
CS210- Lecture 20 July 19, 2005 Agenda Multiway Search Trees 2-4 Trees
CS210- Lecture 19 July 18, 2005 Agenda AVL trees Restructuring Trees
Presentation transcript:

Mingda Zhao CSC 252 Algorithms Smith College Fall, 2000 Splay Tree Algorithm Mingda Zhao CSC 252 Algorithms Smith College Fall, 2000

Contents What is Splay Tree? Splaying: zig-zig; zig-zag; zig. Rules: search; insertion; deletion. Complexity analysis. Implementation. Demos Conclusion References

What is Splay Tree? A balanced search tree data structure NIST Definition: A binary search tree in which operations that access nodes restructure the tree. Goodrich: A splay tree is a binary search tree T. The only tool used to maintain balance in T is the splaying step done after every search, insertion, and deletion in T. Kingston: A binary tee with splaying.

Splaying Left and right rotation Move-to-root operation Zig-zig Zig-zag Zig Comparing move-to-root and splaying Example of splaying a node

Left and right rotation Adel’son-Vel’skii and Landis (1962), Kingston Left rotation: Y X T1 T3 X Y T1 T2 T2 T3

Right Rotation: X Y T1 T3 Y X T1 T2 T2 T3

Move-to-root operation (x=3) Allen and Munro (1978), Bitner(1979), Kingston 4 2 6 1 3 5 7

Move-to-root operation (x=3) 4 3 6 2 5 7 1

Move-to-root operation (x=3) 4 2 6 1 5 7

Zig-zig splaying The node x and its parent y are both left children or both right children. We replace z by x, making y a child of x and z a child of y, while maintaining the inorder relationships of the nodes in tree T. Example: x is 30, y is 20, z is 10

Before splaying: 10 20 T1 30 T2 T3 T4

After splaying: 30 20 T4 10 T3 T1 T2

Zig-zag splaying One of x and y is a left child and the other is a right child. We replace z by x and make x have nodes y and z as its children, while maintaining the inorder relationships of the nodes in tree T. Example: z is 10, y is 30, x is 20

Before splaying: 10 30 T1 20 T4 T2 T3

After splaying: 20 10 30 T1 T2 T4 T3

Zig splaying X doesn’t have a grand parent(or the grandparent is not considered) We rotate x over y, making x’s children be the node y and one of x’s former children u, so as to maintain the relative inorder relationships of the nodes in tree T. Example: x is 20, y is 10, u is 30

Before splaying: 10 20 T1 30 T2 T3 T4

After splaying: 20 10 30 T1 T2 T4 T3

Move-to-root vs. splaying Move-to-root should improve the performance of the BST when there is locality of references in the operation sequence, but it is not ideal. The example we use before, the result is not balanced even the original tree was. Splaying also moves the subtrees of node x(which is being splayed) up 1 level, but move-to-root usually leaves one subtree at its original level. Example:

Example1:original tree 10 20 T1 30 T2 T3 T4

Example1:move-to-root 30 10 T4 20 T1 T2 T3

Example1:splaying 30 20 T4 10 T3 T1 T2

Example2:original tree 50 40 30 20 10

Example2: move-to-root 10 50 40 30 20

Example2:splaying 10 40 50 20 30

Splaying a node: original tree 20 25 40 10 30 50 15 35

Splaying a node: cont. 20 25 35 10 30 40 15 50

Splaying a node: cont. 35 25 40 20 30 50 10 15

Rules of splaying: Search When search for key I, if I is found at node x, we splay x. If not successful, we splay the parent of the external node at which the search terminates unsuccessfully.(null node) Example: see above slides, it can be for successfully searched I=35 or unsuccessfully searched say I=38.

Rules of splaying: insertion When inserting a key I, we splay the newly created internal node where I was inserted. Example:

Original tree 10

After insert key 15 10 15

After splaying 15 10

After insert key 12 15 10 12

After splaying 12 15 10

Rules of splaying: deletion When deleting a key I, we splay the parent of the node x that gets removed. x is either the node storing I or one of its descendents(root, etc.). If deleting from root, we move the key of the right-most node in the left subtree of root and delete that node and splay the parent. Etc. Example:

Original tree 30 10 40 15 50 20

After delete key 30(root) 20 10 40 15 50

We are going to splay 15 20 10 40 15 50

After splaying 15 10 20 40 50

Complexity Worst case: O(n), all nodes are on one side of the subtree. (In fact, it is (n).) Amortized Analysis: We will only consider the splaying time, since the time for perform search, insertion or deletion is proportional to the time for the splaying they are associated with.

Amortized analysis Let n(v) = the number of nodes in the subtree rooted at v Let r(v) = log(n(v)), rank. Let r’(v) be the rank of node v after splaying. If a>0, b>0, and c>a+b, then log a + log b <= 2 log c –2 *Search the key takes d time, d = depth of the node before splaying.

Before splaying: Z Y T1 X T2 T3 T4

After splaying: X Y T4 Z T3 T1 T2

Cont. Zig-zig: variation of r(T) caused by a single splaying substep is: r’(x)+r’(y)+r’(z)-r(x)-r(y)-r(z) =r’(y)+r’(z)-r(x)-r(y) (r’(x)=r(z)) <=r’(x)+r’(z)-2r(x) (r’(y)<=r’(x) and r(y)>=r(x)) Also n(x)+n’(z)<=n’(x) We have r(x) + r’(z)<=2r’(x)-2 (see previous slide) r’(z)<=2r’(x)-r(x)-2 so we have variation of r(T) by a single splaying step is: <=3(r’(x)-r(x))-2 Since zig-zig takes 2 rotations, the amortized complexity will be 3(r’(x)-r(x))

Before splaying: Z Y T1 X T4 T2 T3

After splaying: X Z Y T1 T2 T4 T3

Cont. Zig-zag: variation of r(T) caused by a single splaying substep is: r’(x)+r’(y)+r’(z)-r(x)-r(y)-r(z) =r’(y)+r’(z)-r(x)-r(y) (r’(x)=r(z)) <=r’(y)+r’(z)-2r(x) (r(y)>=r(x)) Also n’(y)+n’(z)<=n’(x) We have r’(y)+r’(z)<=2r’(x)-2 So we have variation of r(T0 by a single splaying substep is: <=2(r’(x)-r(x))-2 <=3(r’(x)-r(x))-2 Since zig-zag takes 2 rotations, the amortized complexity will be 3(r’(x)-r(x))

Before splaying: Y X T1 Z T2 T3 T4

After splaying: X Y Z T1 T2 T4 T3

Cont. Zig: variation of r(T) caused by a single splaying substep is: r’(x)+r’(y)-r(x)-r(y) <=r’(x)-r(x) (r’(y)<=r(y) and r’(x)>=r(x)) <=3(r’(x)-r(x)) Since zig only takes 1 rotation, so the amortized complexity will be 3(r’(x)-r(x))+1

Cont. Splaying node x consists of d/2 splaying substeps, recall d is the depth of x. The total amortized complexity will be: <=(3(ri(x)-ri-1(x))) + 1 (1<=i<=d/2) recall: the last step is a zig. =3(rd/2(x)-r0(x)) +1 <=3(r(t)-r(x))+1 (r(t): rank of root)

Cont. So from before we have: 3(r(t)-r(x))+1 <=3r(t)+1 =3log n +1 thus, splaying takes O(log n). So for m operations of search, insertion and deletion, we have O(mlog n) This is better than the O(mn) worst-case complexity of BST

Implementation LEDA ? Java implementation: SplayTree.java and etc from previous files(?) Modified printTree() to track level and child identity, add a small testing part.

Demos A Demo written in Perl, it has some small bugs http://bobo.link.cs.cmu.edu/cgi- bin/splay/splay-cgi.pl An animation java applet: http://www.cs.technion.ac.il/~itai/ds2/frame splay/splay.html

Conclusion A balanced binary search tree. Doesn’t need any extra information to be stored in the node, ie color, level, etc. Balanced in an amortized sense. Running time is O(mlog n) for m operations Can be adapted to the ways in which items are being accessed in a dictionary to achieve faster running times for the frequently accessed items.(O(1), AVL is about O(log n), etc.)

References Data Structure and Algorithms in Java, Michael T. GoodRich. Algorithms and Data Structures, Jeffrey H Kingston http://www.cs.mcgill.ca/~rsinge/web251.html http://hissa.nist.gov/dads/HTML/splaytree.html NIST Data Strucrues and Problem Solving with C++, Frank M. Carrano. Source code: http://www.aw.com/cseng/ http://www.labmed.umn.edu/~micha\el/Splay/readme.html