Download presentation

Presentation is loading. Please wait.

Published byKaia Homer Modified about 1 year ago

1
Interval Trees Store intervals of the form [l i,r i ], l i <= r i. An interval is stored in exactly 1 node. So, O(n) nodes. 3 versions. Differing capability.

2
Version 1 Store intervals of the form [l i,r i ], l i <= r i. At least 1 interval per node. Static interval set. Report all intervals that intersect/overlap a given interval [l,r].

3
Definition—Version 1 A binary tree. Each node v has a point v.pt and two lists v.left and v.right. u.pt < v.pt for nodes u in left subtree of v. u.pt > v.pt for nodes u in right subtree of v. So, it is a binary search tree on pt.

4
Definition—Version 1 Intervals with r i < v.pt are stored in the left subtree of v. Intervals with l i > v.pt are stored in the right subtree of v. Intervals with l i <= v.pt <= r i are stored in v. v.left has these intervals sorted by l i. v.right has these intervals sorted by r i.

5
Example v.pt = 4 L = {a, e} R = {d} 1 e 13 a 24 c 46 b 36 f 57 d 2 4 LR v v.left = {c, f, b} v.right = {c,b,f}

6
Properties Each interval is stored in exactly one node. Each node stores between 1 and n intervals. Number of nodes is O(n). Sum of sizes of left and right lists is O(n). Tree height depends on how you choose the points v.pt.

7
Selection of v.pt v is the median of the end points of the intervals stored in the subtree rooted at v. 1 e 13 a 24 c 46 b 36 f 57 d 2 End points = {1, 2, 3, 4, 5, 6, 7} Use 4 as v.pt.

8
Selection of v.pt With median selection, tree height is O(log n). Median selection is possible only for static interval set. So, no inserts/deletes. Could relax to support insert/delete.

9
Find All Overlapping Intervals Query interval is [l,r]. v.pt [l,r] All intervals in v overlap. Search L and R for additional overlapping intervals. 4 LR v l r

10
Find All Overlapping Intervals v.pt l Intervals in v with r i >= l overlap. No interval in L overlaps. Search R for additional overlapping intervals. 4 LR v l r

11
Find All Overlapping Intervals v.pt r Intervals in v with l i <= r overlap. No interval in R overlaps. Search L for additional overlapping intervals. 4 LR v l r

12
Find All Overlapping Intervals Complexity O(log n) nodes encountered. All intervals in v overlap. Intervals in v with r i >= l overlap. Intervals in v with l i <= r overlap. O(log n + |output|) when v.left and v.right are sorted arrays. 4 LR v l r

13
Version 2 Store intervals of the form [l i,r i ], l i <= r i. Empty nodes permitted. Inserts and deletes. Answer queries of the form: which intervals include the point d.

14
Inserts & Deletes Difficult in version 1 because v.pt is median. Select v.pt (almost) arbitrarily and use a red-black tree. Each node stores between 0 and n intervals. At most 2n nodes permissible. Tree height is O(log n).

15
Need For Empty Nodes Deletion from a degree 2 node

16
Why Upto 2n Nodes Permissible When number of nodes > 2n, at least 1 degree 0 or degree 1 node must be empty. Empty degree 0 and 1 nodes are easily removed. So, no need to keep them around. 2n suffices to avoid having to handle empty degree 2 nodes.

17
LL Rotation Intervals change only for A and B. Those intervals of A that include B.pt need to be moved into B. A B B’ L BRBR ARAR After insertion. B A After rotation. BRBR ARAR B’ L

18
Remaining Rotations All insert/delete rotations require relocating intervals from O(1) nodes. O(1) rotations per insert/delete. Complexity of insert/delete is O(f(n) + log n), where f(n) is time needed to relocate O(n) intervals from one node to another.

19
All intervals that contain d 4 LR v d = v.pt All intervals in v. Done!

20
All intervals that contain d 4 LR v d < v.pt Intervals in v with large enough left end point. No interval in R overlaps. Search L for additional overlapping intervals. d > v.pt Similar O(log n + |output|)

21
Version 3 Store intervals of the form [l i,r i ], l i <= r i. Exactly 1 interval per node. Inserts and deletes. Report just 1 overlapping interval.

22
Version 3—Structure Red-black tree. Each node has exactly one interval v.int and one point v.max. v.max = max (right) end point of intervals in subtree rooted at v. Binary search tree on intervals. So, need an ordering relation for intervals.

23
Interval Ordering Ordered by left end points. Tie breaker for equal left end points. i and j are two intervals. i r j ) i j i j i j

24
Example 1 e 13 a 24 c 46 b 36 f 57 d 2 f,7 e,4 a,3c,4 d,7 b,6

25
Version 3—Search Search for an interval that has an overlap with Q = [l,r] If v.interval and Q overlap, done. Otherwise, if v.leftChild.max >= l search v.leftChild. Otherwise search v.rightChild. f,7 e,4 a,3c,4 d,7 b,6

26
Version 3—Search lr max v.leftChild.max >= l

27
Version 3—LL Rotation Max values changes only for A and B. A.max = max{A.interval.right, B R.max, A R.max}. B.max = max{B.interval.right, B’ L.max, A.max}. A B B’ L BRBR ARAR After insertion. B A After rotation. BRBR ARAR B’ L

28
Remaining Rotations All insert/delete rotations require computing max for O(1) nodes. O(1) rotations per insert/delete. Complexity of insert/delete is O(log n).

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google