interval trees store intervals of the form [l i,r i ], l i

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

Upload: kaia-homer

Post on 14-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Interval Trees

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

• An interval is stored in exactly 1 node.

• So, O(n) nodes.

• 3 versions.

• Differing capability.

Version 1

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

• At least 1 interval per node.

• Static interval set.

• Report all intervals that intersect/overlap a given interval [l,r].

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.

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.

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}

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.

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.

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.

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

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

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

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

Version 2

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

• Empty nodes permitted.

• Inserts and deletes.

• Answer queries of the form: which intervals include the point d.

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

Need For Empty Nodes

• Deletion from a degree 2 node.

20

10

6

2 8

15

40

30

25 35

7

18

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.

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

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.

All intervals that contain d

4

L R

v• d =v.pt

All intervals in v. Done!

All intervals that contain d

4

L R

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

Version 3

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

• Exactly 1 interval per node.

• Inserts and deletes.

• Report just 1 overlapping interval.

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.

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

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

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

d,7

b,6

Version 3—Search

l r

max

v.leftChild.max >= l

Version 3—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

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