interval trees

23
Interval Trees Store intervals of the form [l i ,r i ], l i <= r i . Insert and delete intervals. Version 1 Answer queries of the form: which intervals intersect/overlap a given interval [l,r]. Version 2—Variant Report just 1 overlapping interval.

Upload: rusty

Post on 06-Jan-2016

75 views

Category:

Documents


0 download

DESCRIPTION

Interval Trees. Store intervals of the form [ l i ,r i ], l i

TRANSCRIPT

Page 1: Interval Trees

Interval Trees

• Store intervals of the form [li,ri], li <= ri.

• Insert and delete intervals.

• Version 1 Answer queries of the form: which intervals

intersect/overlap a given interval [l,r].

• Version 2—Variant Report just 1 overlapping interval.

Page 2: Interval Trees

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.

Page 3: Interval Trees

Definition—Version 1

• Intervals with ri < v.pt are stored in the left subtree of v.

• Intervals with li > v.pt are stored in the right subtree of v.

• Intervals with li <= v.pt <= ri are stored in v.

v.left has these intervals sorted by li.

v.right has these intervals sorted by ri.

Page 4: Interval Trees

Example

• v.pt = 4

• L = {a, e}

• R = {d}

1 e

1 3a

2 4c

4 6b

3 6f

5 7d

2

4

L R

v

• v.left = {c, f, b}

• v.right = {c,b,f}

Page 5: Interval Trees

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.

Page 6: Interval Trees

Selection of v.pt

• v is the median of the end points of the intervals stored in the subtree rooted at v.

1 e

1 3a

2 4c

4 6b

3 6f

5 7d

2

• End points = {1, 2, 3, 4, 5, 6, 7}

• Use 4 as v.pt.

Page 7: Interval Trees

Selection of v.pt

• With median selection, tree height is O(log n).• Median selection is possible only for static interval set.• Also, requiring each node to have at least 1 interval, makes it difficult to do a

delete.

Page 8: Interval Trees

Relaxation

• Select v.pt arbitrarily.

• Use a red-black tree.

• Each node stores between 0 and n intervals.

• At most 2n nodes permissible.

• Tree height is O(log n).

Page 9: Interval Trees

Need For Empty Nodes

• Deletion from a degree 2 node.

20

10

6

2 8

15

40

30

25 35

7

18

Page 10: Interval Trees

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.

Page 11: Interval Trees

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 BR

AR

After insertion.

B

A

After rotation.

BR AR

B’L

Page 12: Interval Trees

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.

Page 13: Interval Trees

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

L R

vl r

Page 14: Interval Trees

Find All Overlapping Intervals

• v.pt l Intervals in v with ri >= l

overlap. No interval in L overlaps. Search R for additional

overlapping intervals.

4

L R

vl r

Page 15: Interval Trees

Find All Overlapping Intervals

• v.pt r Intervals in v with li <= r

overlap. No interval in R overlaps. Search L for additional

overlapping intervals.

4

L R

vl r

Page 16: Interval Trees

Find All Overlapping Intervals

• Complexity O(log n) nodes encountered All intervals in v overlap. Intervals in v with ri >= l

overlap. Intervals in v with li <= r

overlap.

• O(log n + |output|) when v.left and v.right are sorted arrays.

4

L R

vl r

Page 17: Interval Trees

A Variant

• 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.

Page 18: Interval Trees

Interval Ordering

• Ordered by left end points. Tie breaker for equal left end points.• i and j are two intervals.• i < j iff li < lj or (li = lj and ri > rj)

ij

ij

i

j

Page 19: Interval Trees

Example

1 e

1 3a

2 4c

4 6b

3 6f

5 7d

2

f,7

e,4

a,3 c,4

d,7

b,6

Page 20: Interval Trees

A Variant—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,3 c,4

d,7

b,6

Page 21: Interval Trees

A Variant—Search

l r

max

v.leftChild.max >= l

Page 22: Interval Trees

A Variant—LL Rotation

• Max values changes only for A and B. A.max = max{A.interval.right, BR.max, AR.max}. B.max = max{B.interval.right, B’L.max, A.max}.

A

B

B’L BR

AR

After insertion.

B

A

After rotation.

BR AR

B’L

Page 23: Interval Trees

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).