Lecture 18: Screw that, I want It All
description
Transcript of Lecture 18: Screw that, I want It All
LECTURE 18:SCREW THAT, I WANT IT ALL
CSC 213 – Large Scale Programming
Today’s Goal
Review Map & Dictionary implementations What do they do well? When would they be
used? Why do they suck so much another is
needed? Discuss how we can get it all NOW with BSTs Why greedy approach could be useful &
helpful Seeing how idea of splay tree not balanced
or Zen What & when to splay node in a BST
Map & Dictionary ADT
Implementation
Searching Adding Removing
Ordered List O(log n) O(n) O(n)Unordered List
O(n) O(n)/O(1) O(n)
Hash O(n) O(n) O(n) if lucky/good
O(1) O(1) O(1)
BST O(n) O(n) O(n)AVL /
balancedO(log n) O(log n) O(log n)
Map & Dictionary ADT
Implementation
Searching Adding Removing
Ordered List O(log n) O(n) O(n)Unordered List
O(n) O(n)/O(1) O(n)
Hash O(n) O(n) O(n) if lucky/good
O(1) O(1) O(1)
BST O(n) O(n) O(n)AVL /
balancedO(log n) O(log n) O(log n)
Ideal: Hash Without Withdrawal Want O(1) times that hash provides
At the same time scared of slowdowns from bad hash
Or lack hash function that can work with your data
BSTs provide safety that array-based hash lacks Worst-case only O(log n) as long as tree is
balanced Requires way to keep tree balanced (e.g.,
AVL) and Need O(1) access to tree’s nodes, but how?
Implementing Map with Tree
Accessing root much faster than going to leaves In real-world, really want important data
near root Which key best at root of Tree of NHL
teams? BST: Key for Entry added first
Implementing Map with Tree
Accessing root much faster than going to leaves In real-world, really want important data
near root Which key best at root of Tree of NHL
teams? BST: Key for Entry added first
AVLTree: Random Entry near midpoint
Implementing Map with Tree
Accessing root much faster than going to leaves In real-world, really want important data
near root Which key best at root of Tree of NHL
teams? BST: Key for Entry added first
AVLTree: Random Entry near midpoint
SplayTree: Most recently used key
Building a SplayTree
Another approach which builds upon BST Not an AVLTree, however, but a new BST
subclass
Concept Behind Splay Trees
Splay trees do NOT maintain balance Recently used nodes clustered near top of BST
Most recently accessed nodes take O(1) time
Other nodes may need O(n) time to find, however
Concept Behind Splay Trees
Splay trees do NOT maintain balance Recently used nodes clustered near top of BST
Most recently accessed nodes take O(1) time
Other nodes may need O(n) time to find, however
SplayTree Complexity
Without balancing, keeps BST's O(n) complexity Worst-case performance is like all
unbalanced trees But splaying gives expected O(log n)
complexity Averages complexity of O(1) & O(n)
operations If work concentrated on small subset, time
is faster Worst-case hard to create without knowing
tree
Be Kind: Splay Your Tree
Assumes nodes reused soon after initial use At end of each method, moves node up to
root Using node now O(1) and will only slowly
drop in tree Splay tree with each find, insert & remove AVL-like restructuring to reorganize nodes
in tree But
Be Kind: Splay Your Tree
Assumes nodes reused soon after initial use At end of each method, moves node up to
root Using node now O(1) and will only slowly drop
in tree Splay tree with each find, insert & remove AVL-like restructuring to reorganize nodes in
tree But
continues rotationsuntil node becomes
root
How To Splay
How To Splay
Uses trinode restructuring but not like AVL does Not balancing: selects node, parent, &
grandparent Always move node to root of subtree when
splaying When splaying, new types restructures
also exist Node & parent always used in these
rotations Rotations will also use grandparent, if it
exists Moving node to tree root is goal of
splaying May get a balanced tree, but WANT IT
ALL, ASAP
When To Use Splay Tree
What applications are good for a splay tree?
Where would splay trees be a BAD IDEA?
Splay Node Rotations
Uses different nodes than AVL tree rotations AVLTree moves node down to balance
tree's tao Hedonistic ideal moves node to SplayTree's root
Splay Node Rotations
Uses different nodes than AVL tree rotations AVLTree moves node down to balance
tree's tao Hedonistic ideal moves node to SplayTree's root
AVLTree
Splay Node Rotations
Uses different nodes than AVL tree rotations AVLTree moves node down to balance
tree's tao Hedonistic ideal moves node to SplayTree's root
AVLTree SplayTree
Zig-Zag When Splaying a Tree When node median of parent &
grandparent Just like in AVL tree, perform trinode
restructuring Use 7(+1) variables to set node's parent &
childrenparent
node
T2 T3
T4
grandparent
T1
parent
node
T2 T3 T4
grandparent
T1
Zig-Zig When Splaying a Tree When node, parent, & grandparent in a
line Rotation differs from AVL tree's trinode
restructure
parent
node
grandparent
T1
T4
T2
T3
Zig-Zig When Splaying a Tree When node, parent, & grandparent in a
line Rotation differs from AVL tree's trinode
restructure Greed is very good: splay node to subtree
rootparent
node
T2
T3
T4grandparent
T1
parent
node
grandparent
T1
T4
T2
T3
Splaying Right Child Of Root Simplest process is when parent is the
root Single rotation completes splaying process
Splaying does not stop until you reach the top Rotation not always used, may only need
restructuresroot
node
T3
T1
T2
Splaying Right Child Of Root Simplest process is when parent is the
root Single rotation completes splaying process
Splaying does not stop until you reach the top Rotation not always used, may only need
restructuresroot
node
T3
T1
T2
Splaying Right Child Of Root Simplest process is when parent is the
root Single rotation completes splaying process
Splaying does not stop until you reach the top Rotation not always used, may only need
restructures root
node
T2
T3
T1
root
node
T3
T1
T2
Splaying Left Child Of Root
Simplest process is when parent is the root Single rotation completes splaying process
Splaying does not stop until you reach the top Rotation not always used, may only need
restructures
T2
T3
T1
root
node
T3
T1
T2
node
root
Which Node Gets Splayed?
Method
Node to splay
findIf found, splay node containing matchIf not found, splay last node in treeSearch
add Splay node for new Entry
remove
If found, splay parent of external node removedIf not found, splay last node in treeSearch
Which Node Gets Splayed?
Method
Node to splay
findIf found, splay node containing matchIf not found, splay last node in treeSearch
add Splay node for new Entry
remove
If found, splay parent of external node removedIf not found, splay last node in treeSearch
Only internal nodes can be splayed When operation end with leaf, splay its
parent
For Next Lecture
Weekly assignment #7 now available on Angel
Project #1 due Friday at midnight
Remember class on Friday is BST Problem Day
Midterm #1 in class week from Friday Open-book, open-note exam (as usual) Use any lecture’s slides IF you have notes
on them No computers, calculators, or friends,
however