Augmenting Data Structures: Interval Trees

Slides:



Advertisements
Similar presentations
Introduction to Algorithms
Advertisements

CSE 4101/5101 Prof. Andy Mirzaian Augmenting Data Structures.
Chapter 12 Binary Search Trees
Comp 122, Spring 2004 Binary Search Trees. btrees - 2 Comp 122, Spring 2004 Binary Trees  Recursive definition 1.An empty tree is a binary tree 2.A node.
Trees Types and Operations
CS 473Lecture X1 CS473-Algorithms I Lecture X Augmenting Data Structures.
David Luebke 1 5/22/2015 CS 332: Algorithms Augmenting Data Structures: Interval Trees.
Augnenting data structures Augment an existing data structure to apply to a new problem. Red-black tree as an example.
14. Augmenting Data Structures Hsu, Lih-Hsing. Computer Theory Lab. Chapter 13P Dynamic order statistics We shall also see the rank of an element―its.
David Luebke 1 5/22/2015 ITCS 6114 Universal Hashing Dynamic Order Statistics.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 10.
2IL50 Data Structures Spring 2015 Lecture 8: Augmenting Data Structures.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 12.
Lecture 12: Balanced Binary Search Trees Shang-Hua Teng.
10/22/2002CSE Red Black Trees CSE Algorithms Red-Black Trees Augmenting Search Trees Interval Trees.
Augmenting Data Structures Advanced Algorithms & Data Structures Lecture Theme 07 – Part II Prof. Dr. Th. Ottmann Summer Semester 2006.
David Luebke 1 7/2/2015 ITCS 6114 Binary Search Trees.
David Luebke 1 7/2/2015 Medians and Order Statistics Structures for Dynamic Sets.
David Luebke 1 7/2/2015 ITCS 6114 Red-Black Trees.
Introduction to Analysis of Algorithms CAS CS 330 Lecture 16 Shang-Hua Teng Thanks to Charles E. Leiserson and Silvio Micali of MIT for these slides.
David Luebke 1 8/7/2015 CS 332: Algorithms Graph Algorithms.
Red-Black Trees Lecture 10 Nawazish Naveed. Red-Black Trees (Intro) BSTs perform dynamic set operations such as SEARCH, INSERT, DELETE etc in O(h) time.
David Luebke 1 9/18/2015 CS 332: Algorithms Red-Black Trees.
Lecture X Augmenting Data Structures
Interval Trees CS302 Data Structures Modified from Dr Monica Nicolescu.
Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 11 Prof. Erik Demaine.
Red-Black Tree Insertion Start with binary search insertion, coloring the new node red NIL l Insert 18 NIL l NIL l 1315 NIL l
Augmenting AVL trees. How we’ve thought about trees so far Good for determining ancestry Can be good for quickly finding an element Good for determining.
2IL05 Data Structures Spring 2010 Lecture 9: Augmenting Data Structures.
David Luebke 1 3/19/2016 CS 332: Algorithms Augmenting Data Structures.
David Luebke 1 3/20/2016 CS 332: Algorithms Skip Lists.
64 Algorithms analysis and design BY Lecturer: Aisha Dawood.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 10.
Binary Search Trees Chapter 7 Objectives
Binary Search Trees What is a binary search tree?
DAST Tirgul 7.
Analysis of Algorithms CS 477/677
AA Trees.
File Organization and Processing Week 3
Introduction to Algorithms
BCA-II Data Structure Using C
Augmenting AVL trees.
CS 332: Algorithms Hash Tables David Luebke /19/2018.
CS 332: Algorithms Red-Black Trees David Luebke /20/2018.
Dynamic Order Statistics
Red-Black Trees.
Summary of General Binary search tree
CS200: Algorithms Analysis
Slide Sources: CLRS “Intro. To Algorithms” book website
Red-Black Trees Motivations
CS200: Algorithms Analysis
original list {67, 33,49, 21, 25, 94} pass { } {67 94}
Augmenting Data Structures
Slide Sources: CLRS “Intro. To Algorithms” book website
AVL Trees: AVL Trees: Balanced binary search tree
Search Sorted Array: Binary Search Linked List: Linear Search
Chapter 14: Augmenting Data Structures
Chapter 12: Binary Search Trees
CS6045: Advanced Algorithms
CS 583 Analysis of Algorithms
Introduction to Algorithms
Topic 6: Binary Search Tree Data structure Operations
CSE2331/5331 Topic 7: Balanced search trees Rotate operation
Data Structures and Algorithm Analysis Priority Queues (Heaps)
Algorithms, CSCI 235, Spring 2019 Lecture 22—Red Black Trees
Binary Search Trees Comp 122, Spring 2004.
Chapter 12&13: Binary Search Trees (BSTs)
Interval Trees CS302 Data Structures Modified from Dr Monica Nicolescu.
Analysis of Algorithms CS 477/677
AVL Trees: AVL Trees: Balanced binary search tree
Presentation transcript:

Augmenting Data Structures: Interval Trees CS 332: Algorithms Augmenting Data Structures: Interval Trees David Luebke 1 5/10/2019

Administrivia Midterm Thursday, Oct 26 1 8.5x11 crib sheet allowed Exercise 1 assigned today: annotated solutions Solve a problem Document the solution process A required exercise, not a homework assignment Work alone 5 points, no grade Due Thursday in class I’ll try to provide feedback over the break David Luebke 2 5/10/2019

Review: Dynamic Order Statistics We’ve seen algorithms for finding the ith element of an unordered set in O(n) time OS-Trees: a structure to support finding the ith element of a dynamic set in O(lg n) time Support standard dynamic set operations (Insert(), Delete(), Min(), Max(), Succ(), Pred()) Also support these order statistic operations: void OS-Select(root, i); int OS-Rank(x); David Luebke 3 5/10/2019

Review: Order Statistic Trees OS Trees augment red-black trees: Associate a size field with each node in the tree x->size records the size of subtree rooted at x, including x itself: M 8 C 5 P 2 Q 1 A 1 F 3 D 1 H 1 David Luebke 4 5/10/2019

Review: OS-Select Example: show OS-Select(root, 5): OS-Select(x, i) { r = x->left->size + 1; if (i == r) return x; else if (i < r) return OS-Select(x->left, i); else return OS-Select(x->right, i-r); } M 8 C 5 P 2 Q 1 A 1 F 3 D 1 H 1 David Luebke 5 5/10/2019

Review: OS-Select Example: show OS-Select(root, 5): OS-Select(x, i) { r = x->left->size + 1; if (i == r) return x; else if (i < r) return OS-Select(x->left, i); else return OS-Select(x->right, i-r); } M 8 i = 5 r = 6 C 5 P 2 A 1 F 3 Q 1 D 1 H 1 David Luebke 6 5/10/2019

Review: OS-Select Example: show OS-Select(root, 5): OS-Select(x, i) { r = x->left->size + 1; if (i == r) return x; else if (i < r) return OS-Select(x->left, i); else return OS-Select(x->right, i-r); } M 8 i = 5 r = 6 C 5 i = 5 r = 2 P 2 A 1 F 3 Q 1 D 1 H 1 David Luebke 7 5/10/2019

Review: OS-Select Example: show OS-Select(root, 5): OS-Select(x, i) { r = x->left->size + 1; if (i == r) return x; else if (i < r) return OS-Select(x->left, i); else return OS-Select(x->right, i-r); } M 8 i = 5 r = 6 C 5 i = 5 r = 2 P 2 A 1 F 3 i = 3 r = 2 Q 1 D 1 H 1 David Luebke 8 5/10/2019

Review: OS-Select Example: show OS-Select(root, 5): OS-Select(x, i) { r = x->left->size + 1; if (i == r) return x; else if (i < r) return OS-Select(x->left, i); else return OS-Select(x->right, i-r); } M 8 C 5 P 2 Q 1 A 1 F 3 D 1 H 1 i = 5 r = 6 i = 5 r = 2 i = 3 r = 2 i = 1 r = 1 David Luebke 9 5/10/2019

Review: OS-Select Example: show OS-Select(root, 5): Note: use a sentinel NIL element at the leaves with size = 0 to simplify code, avoid testing for NULL OS-Select(x, i) { r = x->left->size + 1; if (i == r) return x; else if (i < r) return OS-Select(x->left, i); else return OS-Select(x->right, i-r); } M 8 C 5 P 2 Q 1 A 1 F 3 D 1 H 1 i = 5 r = 6 i = 5 r = 2 i = 3 r = 2 i = 1 r = 1 David Luebke 10 5/10/2019

Review: Determining The Rank Of An Element Idea: rank of right child x is one more than its parent’s rank, plus the size of x’s left subtree M 8 C 5 P 2 Q 1 A 1 F 3 D 1 H 1 OS-Rank(T, x) { r = x->left->size + 1; y = x; while (y != T->root) if (y == y->p->right) r = r + y->p->left->size + 1; y = y->p; return r; } David Luebke 11 5/10/2019

Review: Determining The Rank Of An Element Example 1: find rank of element with key H M 8 C 5 P 2 OS-Rank(T, x) { r = x->left->size + 1; y = x; while (y != T->root) if (y == y->p->right) r = r + y->p->left->size + 1; y = y->p; return r; } A 1 F 3 Q 1 D 1 H 1 y r = 1 David Luebke 12 5/10/2019

Review: Determining The Rank Of An Element Example 1: find rank of element with key H M 8 C 5 P 2 OS-Rank(T, x) { r = x->left->size + 1; y = x; while (y != T->root) if (y == y->p->right) r = r + y->p->left->size + 1; y = y->p; return r; } A 1 F 3 y r = 1+1+1 = 3 Q 1 D 1 H 1 r = 1 David Luebke 13 5/10/2019

Review: Determining The Rank Of An Element Example 1: find rank of element with key H M 8 C 5 y r = 3+1+1 = 5 P 2 OS-Rank(T, x) { r = x->left->size + 1; y = x; while (y != T->root) if (y == y->p->right) r = r + y->p->left->size + 1; y = y->p; return r; } A 1 F 3 r = 3 Q 1 D 1 H 1 r = 1 David Luebke 14 5/10/2019

Review: Determining The Rank Of An Element Example 1: find rank of element with key H M 8 y r = 5 C 5 r = 5 P 2 OS-Rank(T, x) { r = x->left->size + 1; y = x; while (y != T->root) if (y == y->p->right) r = r + y->p->left->size + 1; y = y->p; return r; } A 1 F 3 r = 3 Q 1 D 1 H 1 r = 1 David Luebke 15 5/10/2019

Review: Determining The Rank Of An Element Example 2: find rank of element with key P M 8 C 5 P 2 y r = 1 OS-Rank(T, x) { r = x->left->size + 1; y = x; while (y != T->root) if (y == y->p->right) r = r + y->p->left->size + 1; y = y->p; return r; } A 1 F 3 Q 1 D 1 H 1 David Luebke 16 5/10/2019

Review: Determining The Rank Of An Element Example 2: find rank of element with key P M 8 y r = 1 + 5 + 1 = 7 C 5 P 2 r = 1 OS-Rank(T, x) { r = x->left->size + 1; y = x; while (y != T->root) if (y == y->p->right) r = r + y->p->left->size + 1; y = y->p; return r; } A 1 F 3 Q 1 D 1 H 1 David Luebke 17 5/10/2019

Review: Maintaining Subtree Sizes So by keeping subtree sizes, order statistic operations can be done in O(lg n) time Next: maintain sizes during Insert() and Delete() operations Insert(): Increment size fields of nodes traversed during search down the tree Delete(): Decrement sizes along a path from the deleted node to the root Both: Update sizes correctly during rotations David Luebke 18 5/10/2019

Reivew: Maintaining Subtree Sizes y 19 x 19 rightRotate(y) x 11 y 12 7 6 leftRotate(x) 6 4 4 7 Note that rotation invalidates only x and y Can recalculate their sizes in constant time Thm 15.1: can compute any property in O(lg n) time that depends only on node, left child, and right child David Luebke 19 5/10/2019

Review: Methodology For Augmenting Data Structures Choose underlying data structure Determine additional information to maintain Verify that information can be maintained for operations that modify the structure Develop new operations David Luebke 20 5/10/2019

Interval Trees The problem: maintain a set of intervals E.g., time intervals for a scheduling program: 10 7 11 5 8 4 18 15 23 21 17 19 i = [7,10]; i low = 7; ihigh = 10 David Luebke 21 5/10/2019

Interval Trees The problem: maintain a set of intervals E.g., time intervals for a scheduling program: Query: find an interval in the set that overlaps a given query interval [14,16]  [15,18] [16,19]  [15,18] or [17,19] [12,14]  NULL 10 7 11 5 8 4 18 15 23 21 17 19 i = [7,10]; i low = 7; ihigh = 10 David Luebke 22 5/10/2019

Interval Trees Following the methodology: Pick underlying data structure Decide what additional information to store Figure out how to maintain the information Develop the desired new operations David Luebke 23 5/10/2019

Interval Trees Following the methodology: Pick underlying data structure Red-black trees will store intervals, keyed on ilow Decide what additional information to store Figure out how to maintain the information Develop the desired new operations David Luebke 24 5/10/2019

Interval Trees Following the methodology: Pick underlying data structure Red-black trees will store intervals, keyed on ilow Decide what additional information to store We will store max, the maximum endpoint in the subtree rooted at i Figure out how to maintain the information Develop the desired new operations David Luebke 25 5/10/2019

Interval Trees What are the max fields? int max [17,19] [5,11] [21,23] [4,8] [15,18] [7,10] What are the max fields? David Luebke 26 5/10/2019

Interval Trees Note that: int max [17,19] 23 [5,11] 18 [21,23] 23 [4,8] 8 [15,18] 18 [7,10] 10 Note that: David Luebke 27 5/10/2019

Interval Trees Following the methodology: Pick underlying data structure Red-black trees will store intervals, keyed on ilow Decide what additional information to store Store the maximum endpoint in the subtree rooted at i Figure out how to maintain the information How would we maintain max field for a BST? What’s different? Develop the desired new operations David Luebke 28 5/10/2019

Interval Trees What are the new max values for the subtrees? [11,35] 35 [6,20] 20 [6,20] ??? [11,35] ??? rightRotate(y) leftRotate(x) … 14 … 19 … 30 … ??? What are the new max values for the subtrees? David Luebke 29 5/10/2019

Interval Trees What are the new max values for the subtrees? [11,35] 35 [6,20] 20 [6,20] ??? [11,35] ??? rightRotate(y) leftRotate(x) … 14 … 19 … 30 … 14 … 19 … 30 What are the new max values for the subtrees? A: Unchanged What are the new max values for x and y? David Luebke 30 5/10/2019

Interval Trees What are the new max values for the subtrees? [11,35] 35 [6,20] 20 [6,20] 35 rightRotate(y) leftRotate(x) … 14 … 19 … 30 … 14 … 19 … 30 What are the new max values for the subtrees? A: Unchanged What are the new max values for x and y? A: root value unchanged, recompute other David Luebke 31 5/10/2019

Interval Trees Following the methodology: Pick underlying data structure Red-black trees will store intervals, keyed on ilow Decide what additional information to store Store the maximum endpoint in the subtree rooted at i Figure out how to maintain the information Insert: update max on way down, during rotations Delete: similar Develop the desired new operations David Luebke 32 5/10/2019

Searching Interval Trees IntervalSearch(T, i) { x = T->root; while (x != NULL && !overlap(i, x->interval)) if (x->left != NULL && x->left->max  i->low) x = x->left; else x = x->right; return x } What will be the running time? David Luebke 33 5/10/2019

IntervalSearch() Example Example: search for interval overlapping [14,16] [17,19] 23 [5,11] 18 [21,23] 23 [4,8] 8 [15,18] 18 [7,10] 10 IntervalSearch(T, i) { x = T->root; while (x != NULL && !overlap(i, x->interval)) if (x->left != NULL && x->left->max  i->low) x = x->left; else x = x->right; return x } David Luebke 34 5/10/2019

IntervalSearch() Example Example: search for interval overlapping [12,14] [17,19] 23 [5,11] 18 [21,23] 23 [4,8] 8 [15,18] 18 [7,10] 10 IntervalSearch(T, i) { x = T->root; while (x != NULL && !overlap(i, x->interval)) if (x->left != NULL && x->left->max  i->low) x = x->left; else x = x->right; return x } David Luebke 35 5/10/2019

Correctness of IntervalSearch() Key idea: need to check only 1 of node’s 2 children Case 1: search goes right Show that  overlap in right subtree, or no overlap at all Case 2: search goes left Show that  overlap in left subtree, or no overlap at all David Luebke 36 5/10/2019

Correctness of IntervalSearch() Case 1: if search goes right,  overlap in the right subtree or no overlap in either subtree If  overlap in right subtree, we’re done Otherwise: xleft = NULL, or x  left  max < x  low (Why?) Thus, no overlap in left subtree! while (x != NULL && !overlap(i, x->interval)) if (x->left != NULL && x->left->max  i->low) x = x->left; else x = x->right; return x; David Luebke 37 5/10/2019

Correctness of IntervalSearch() Case 2: if search goes left,  overlap in the left subtree or no overlap in either subtree If  overlap in left subtree, we’re done Otherwise: i low  x left max, by branch condition x left max = y high for some y in left subtree Since i and y don’t overlap and i low  y high, i high < y low Since tree is sorted by low’s, i high < any low in right subtree Thus, no overlap in right subtree while (x != NULL && !overlap(i, x->interval)) if (x->left != NULL && x->left->max  i->low) x = x->left; else x = x->right; return x; David Luebke 38 5/10/2019