127
Motivation Interval trees Priority search trees Windowing queries Computational Geometry Lecture 14: Windowing queries Computational Geometry Lecture 14: Windowing queries

Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Windowing queries

Computational Geometry

Lecture 14: Windowing queries

Computational Geometry Lecture 14: Windowing queries

Page 2: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Zoom in; re-center and zoom in; select by outlining

Computational Geometry Lecture 14: Windowing queries

Page 3: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Computational Geometry Lecture 14: Windowing queries

Page 4: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Given a set of n axis-parallel linesegments, preprocess them into adata structure so that the ones thatintersect a query rectangle can bereported efficiently

Computational Geometry Lecture 14: Windowing queries

Page 5: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

How can a rectangle and an axis-parallel line segmentintersect?

Computational Geometry Lecture 14: Windowing queries

Page 6: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Essentially two types:

Segments whose endpoint lies inthe rectangle (or both endpoints)

Segments with both endpointsoutside the rectangle

Segments of the latter type alwaysintersect the boundary of the rectangle(even the left and/or bottom side)

Computational Geometry Lecture 14: Windowing queries

Page 7: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Instead of storing axis-parallelsegments and searching with arectangle, we will:

store the segment endpoints andquery with the rectangle

store the segments and querywith the left side and thebottom side of the rectangle

Note that the query problem is atleast as hard as rectangular rangesearching in point sets

Computational Geometry Lecture 14: Windowing queries

Page 8: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Instead of storing axis-parallelsegments and searching with arectangle, we will:

store the segment endpoints andquery with the rectangle

store the segments and querywith the left side and thebottom side of the rectangle

Question: How often might wereport the same segment?

Computational Geometry Lecture 14: Windowing queries

Page 9: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Avoiding reporting the same segment several times

Use one representation of each segment, and store a mark bitwith it that is initially false

When we think we should report a segment, we first check itsmark bit:

- if false, then report it and set the mark bit to true

- otherwise, don’t do anything

After a query, we need to reset all mark bits to false, for thenext query (how?)

Computational Geometry Lecture 14: Windowing queries

Page 10: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Instead of storing axis-parallel segments and searching with arectangle, we will:

store the segment endpoints and query with the rectangle

use range tree (from Chapter 5)

store the segments and query with the left side and thebottom side of the rectangle

need to develop data structure

Computational Geometry Lecture 14: Windowing queries

Page 11: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Current problem of our interest:

Given a set of horizontal (vertical) linesegments, preprocess them into a datastructure so that the ones intersecting avertical (horizontal) query segment can bereported efficiently

Question: Do we also need to storevertical segments for querying with verticalsegments?

Computational Geometry Lecture 14: Windowing queries

Page 12: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search treesWindowing queries

Windowing

Simpler query problem:

What if the vertical query segment is afull line?

Then the problem is essentially1-dimensional

Computational Geometry Lecture 14: Windowing queries

Page 13: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval querying

Given a set I of n intervals on the real line, preprocess theminto a data structure so that the ones containing a querypoint (value) can be reported efficiently

Computational Geometry Lecture 14: Windowing queries

Page 14: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Splitting a set of intervals

The median x of the 2n endpoints partitions the intervals intothree subsets:

Intervals Ileft fully left of x

Intervals Imid that contain (intersect) x

Intervals Iright fully right of x

x

Computational Geometry Lecture 14: Windowing queries

Page 15: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: recursive definition

The interval tree for I has a root node ν that contains x and

the intervals Ileft are stored in the left subtree of ν

the intervals Imid are stored with ν

the intervals Iright are stored in the right subtree of ν

The left and right subtrees are proper interval trees for Ileft

and Iright

How many intervals can be in Imid? How should we store Imid?

Computational Geometry Lecture 14: Windowing queries

Page 16: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: left and right lists

How is Imid stored?

x

Observe: If the query point is left of x, then only the leftendpoint determines if an interval is an answer

Symmetrically: If the query point is right of x, then only theright endpoint determines if an interval is an answer

Computational Geometry Lecture 14: Windowing queries

Page 17: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: left and right lists

x

Make a list Lleft using the left-to-right order of the leftendpoints of Imid

Make a list Lright using the right-to-left order of the rightendpoints of Imid

Store both lists as associated structures with ν

Computational Geometry Lecture 14: Windowing queries

Page 18: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 19: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: storage

The main tree has O(n) nodes

The total length of all lists is 2n because each interval isstored exactly twice: in Lleft and Lright and only at one node

Consequently, the interval tree uses O(n) storage

Computational Geometry Lecture 14: Windowing queries

Page 20: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval querying

Algorithm QueryIntervalTree(ν ,qx)

1. if ν is not a leaf2. then if qx < xmid(ν)3. then Traverse list Lleft(ν), starting at the interval

with the leftmost endpoint, reporting all theintervals that contain qx. Stop as soon asan interval does not contain qx.

4. QueryIntervalTree(lc(ν),qx)5. else Traverse list Lright(ν), starting at the interval

with the rightmost endpoint, reporting allthe intervals that contain qx. Stop as soonas an interval does not contain qx.

6. QueryIntervalTree(rc(ν),qx)

Computational Geometry Lecture 14: Windowing queries

Page 21: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 22: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 23: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 24: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 25: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 26: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 27: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 28: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 29: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 30: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 31: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

s1

s2 s3

s4

s5s7

s8 s9

s10

s11

s12s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Lleft Lright

Computational Geometry Lecture 14: Windowing queries

Page 32: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query time

The query follows only one path in the tree, and that pathhas length O(logn)

The query traverses O(logn) lists. Traversing a list with k′

answers takes O(1+ k′) time

The total time for list traversal is therefore O(log+k), withthe total number of answers reported (no answer is foundmore than once)

The query time is O(logn)+O(logn+ k) = O(logn+ k)

Computational Geometry Lecture 14: Windowing queries

Page 33: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: query example

Algorithm ConstructIntervalTree(I)

Input. A set I of intervals on the real lineOutput. The root of an interval tree for I

1. if I = /0

2. then return an empty leaf3. else Create a node ν . Compute xmid, the median of the

set of interval endpoints, and store xmid with ν

4. Compute Imid and construct two sorted lists for Imid:a list Lleft(ν) sorted on left endpoint and a listLright(ν) sorted on right endpoint. Store these twolists at ν

5. lc(ν) ← ConstructIntervalTree(Ileft)6. rc(ν) ← ConstructIntervalTree(Iright)7. return ν

Computational Geometry Lecture 14: Windowing queries

Page 34: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQueryingConstruction

Interval tree: result

Theorem: An interval tree for a set I of n intervals uses O(n)storage and can be built in O(n logn) time. All intervals thatcontain a query point can be reported in O(logn+ k) time,where k is the number of reported intervals.

Computational Geometry Lecture 14: Windowing queries

Page 35: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

Computational Geometry Lecture 14: Windowing queries

Page 36: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

Suppose we use an interval tree on the x-intervals of thehorizontal line segments?

Then the lists Lleft and Lright are not suitable anymore to solvethe query problem for the segments corresponding to Imid

Computational Geometry Lecture 14: Windowing queries

Page 37: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

s1

s2

s3

s4

s5

s7

s8

s9

s10

s11

s12

s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

Computational Geometry Lecture 14: Windowing queries

Page 38: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

s1

s2

s3

s4

s5

s7

s8

s9

s10

s11

s12

s6

s7, s5, s6s5, s6, s7

s8s8

s9, s10s9, s10

s11, s12s12, s11

s4, s3, s2s4, s3, s2

s1s1

q

Computational Geometry Lecture 14: Windowing queries

Page 39: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

s5

s7

s6

s7, s5, s6s5, s6, s7

q

Computational Geometry Lecture 14: Windowing queries

Page 40: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

s7

s6

s7, s5, s6s5, s6, s7

q

s5

Computational Geometry Lecture 14: Windowing queries

Page 41: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

s7

s6

{ s2, s5, s6, s7, s9, s22 }

q

s5

s9

s2

s22

{ s2, s5, s6, s7, s9, s22 }

Computational Geometry Lecture 14: Windowing queries

Page 42: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

s7

s6

{ s2, s5, s6, s7, s9, s22 }

q

s5

s9

s2

s22

{ s2, s5, s6, s7, s9, s22 }

Computational Geometry Lecture 14: Windowing queries

Page 43: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Back to the plane

s7

s6

{ s2, s5, s6, s7, s9, s22 }

q

s5

s9

s2

s22

{ s2, s5, s6, s7, s9, s22 }

q

Computational Geometry Lecture 14: Windowing queries

Page 44: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Segment intersection queries

We can use a range tree (chapter 5) as the associatedstructure; we only need one that stores all of the endpoints,to replace Lleft and Lright

Instead of traversing Lleft or Lright, we perform a query withthe region left or right, respectively, of q

Computational Geometry Lecture 14: Windowing queries

Page 45: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Segment intersection queries

s7

s6

q

s5

s9

s2

s22

q

{ s2, s5, s6, s7, s9, s22 }all endpoints of

Computational Geometry Lecture 14: Windowing queries

Page 46: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Segment intersection queries

In total, there are O(n) range trees that together store 2n

points, so the total storage needed by all associated structuresis O(n logn)

A query with a vertical segment leads to O(logn) rangequeries

If fractional cascading is used in the associated structures, theoverall query time is O(log2 n+ k)

Question: How about the construction time?

Computational Geometry Lecture 14: Windowing queries

Page 47: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

3- and 4-sided ranges

Considering the associated structure, we only need 3-sidedrange queries, whereas the range tree provides 4-sided rangequeries

Can the 3-sided range query problem be solved more efficientlythan the 4-sided (rectangular) range query problem?

Computational Geometry Lecture 14: Windowing queries

Page 48: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Scheme of structure

s7

s6

q

s5

s9

s2

s22

q

{ s2, s5, s6, s7, s9, s22 }all right endpoints ofall left endpoints of

{ s2, s5, s6, s7, s9, s22 }

Computational Geometry Lecture 14: Windowing queries

Page 49: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Heap and search tree

A priority search tree is like a heap on x-coordinate and binarysearch tree on y-coordinate at the same time

Recall the heap:

6

1

2

3 7

4

8 11

5

131014129

Computational Geometry Lecture 14: Windowing queries

Page 50: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Heap and search tree

A priority search tree is like a heap on x-coordinate and binarysearch tree on y-coordinate at the same time

Recall the heap:

6

1

2

3 7

4

8 11

5

131014129

Report all values ≤ 4

Computational Geometry Lecture 14: Windowing queries

Page 51: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

If P = /0, then a priority search tree is an empty leaf

Otherwise, let pmin be the leftmost point in P, and let ymid bethe median y-coordinate of P\{pmin}

The priority search tree has a node ν that stores pmin andymid, and a left subtree and right subtree for the points inP\{pmin} with y-coordinate ≤ ymid and > ymid

pmin

ymid

pminymid

Computational Geometry Lecture 14: Windowing queries

Page 52: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 53: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 54: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 55: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 56: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 57: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 58: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 59: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 60: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 61: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 62: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree

p1

p2

p3

p4

p5

p6

p7

p8

p9

p10

p11

p12

p13

p14

p1

p8

p12

p14

p13

p10

p11

p9

p2

p3

p4

p7

p5

p6

Computational Geometry Lecture 14: Windowing queries

Page 63: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Query algorithm

Algorithm QueryPrioSearchTree(T,(−∞ : qx]× [qy : q′y])1. Search with qy and q′y in T

2. Let νsplit be the node where the two search paths split3. for each node ν on the search path of qy or q′y4. do if p(ν) ∈ (−∞ : qx]× [qy : q′y] then report p(ν)5. for each node ν on the path of qy in the left subtree of νsplit

6. do if the search path goes left at ν

7. then ReportInSubtree(rc(ν),qx)8. for each node ν on the path of q′y in the right subtree of νsplit

9. do if the search path goes right at ν

10. then ReportInSubtree(lc(ν),qx)

Computational Geometry Lecture 14: Windowing queries

Page 64: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Structure of the query

Computational Geometry Lecture 14: Windowing queries

Page 65: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Structure of the query

Computational Geometry Lecture 14: Windowing queries

Page 66: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Query algorithm

ReportInSubtree(ν ,qx)

Input. The root ν of a subtree of a priority search tree and avalue qx

Output. All points in the subtree with x-coordinate at most qx

1. if ν is not a leaf and (p(ν))x ≤ qx

2. then Report p(ν)3. ReportInSubtree(lc(ν),qx)4. ReportInSubtree(rc(ν),qx)

This subroutine takes O(1+ k) time, for k reported answers

Computational Geometry Lecture 14: Windowing queries

Page 67: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Query algorithm

The search paths to y and y′ have O(logn) nodes. At eachnode O(1) time is spent

No nodes outside the search paths are ever visited

Subtrees of nodes between the search paths are queried like aheap, and we spend O(1+ k′) time on each one

The total query time is O(logn+ k), if k points are reported

Computational Geometry Lecture 14: Windowing queries

Page 68: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

DefinitionQuerying

Priority search tree: result

Theorem: A priority search tree for a set P of n points usesO(n) storage and can be built in O(n logn) time. All pointsthat lie in a 3-sided query range can be reported inO(logn+ k) time, where k is the number of reported points

Computational Geometry Lecture 14: Windowing queries

Page 69: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Scheme of structure

s7

s6

q

s5

s9

s2

s22

q

{ s2, s5, s6, s7, s9, s22 }all right endpoints ofall left endpoints of

{ s2, s5, s6, s7, s9, s22 }

Computational Geometry Lecture 14: Windowing queries

Page 70: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Storage of the structure

Question: What are the storage requirements of thestructure for querying with a vertical segment in a set ofhorizontal segments?

Computational Geometry Lecture 14: Windowing queries

Page 71: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Query time of the structure

Question: What is the query time of the structure forquerying with a vertical segment in a set of horizontalsegments?

Computational Geometry Lecture 14: Windowing queries

Page 72: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Result

Theorem: A set of n horizontal line segments can be stored ina data structure with size O(n) such that intersection querieswith a vertical line segment can be performed in O(log2 n+ k)time, where k is the number of segments reported

Computational Geometry Lecture 14: Windowing queries

Page 73: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Result

Recall that the windowing problem is solved with acombination of a range tree and the structure just described

Theorem: A set of n axis-parallel line segments can be storedin a data structure with size O(n logn) such that windowingqueries can be performed in O(log2 n+ k) time, where k is thenumber of segments reported

Computational Geometry Lecture 14: Windowing queries

Page 74: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Interesting

Just to confuse you (even more)....

A priority search tree can be used to solve the intervalstabbing problem (store 1-dim intervals, query with a point)(!?)

Computational Geometry Lecture 14: Windowing queries

Page 75: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Transformation

Let I be a set of n intervals. Transform each 1-dim interval[a,b] to the point (a,b) in the plane

A query with value q is transformed to the 2-sided range(−∞,q]× [q,+∞)

Correctness: q ∈ [a,b] if and only if (a,b) ∈ (−∞,q]× [q,+∞)

Computational Geometry Lecture 14: Windowing queries

Page 76: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Transformation

Computational Geometry Lecture 14: Windowing queries

Page 77: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Example query

(8,8)

8

Computational Geometry Lecture 14: Windowing queries

Page 78: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Example query

(26,26)

26

Computational Geometry Lecture 14: Windowing queries

Page 79: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationInterval trees

Priority search trees

Food for thought

Question: Can an interval tree be used (after sometransformation) to answer 3-sided range queries?

Question: Can the priority search tree be used as the maintree for the structure that queries with a vertical line segmentin horizontal line segments?

Question: Can the priority search tree or the interval tree beaugmented for interval stabbing counting queries?

Computational Geometry Lecture 14: Windowing queries

Page 80: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Windowing queries

Computational Geometry

Lecture 15: Windowing queries

Computational Geometry Lecture 15: Windowing queries

Page 81: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Windowing

Zoom in; re-center and zoom in; select by outlining

Computational Geometry Lecture 15: Windowing queries

Page 82: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Windowing

Computational Geometry Lecture 15: Windowing queries

Page 83: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Windowing

Given a set of n axis-parallel linesegments, preprocess them into adata structure so that the ones thatintersect a query rectangle can bereported efficiently

Computational Geometry Lecture 15: Windowing queries

Page 84: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Windowing

Given a set of n arbitrary,non-crossing line segments,preprocess them into a datastructure so that the ones thatintersect a query rectangle can bereported efficiently

Computational Geometry Lecture 15: Windowing queries

Page 85: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Windowing

Two cases of intersection:

An endpoint lies inside the querywindow; solve with range trees

The segment intersects a side ofthe query window; solve how?

Computational Geometry Lecture 15: Windowing queries

Page 86: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Using a bounding box?

If the query window intersects theline segment, then it also intersectsthe bounding box of the line segment(whose sides are axis-parallelsegments)

So we could search in the 4n

bounding box sides

Computational Geometry Lecture 15: Windowing queries

Page 87: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Using a bounding box?

But: if the query window intersectsbounding box sides does not implythat it intersects the correspondingsegments

Computational Geometry Lecture 15: Windowing queries

Page 88: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Windowing

Current problem of our interest:

Given a set of arbitrarily oriented,non-crossing line segments, preprocessthem into a data structure so that the onesintersecting a vertical (horizontal) querysegment can be reported efficiently

Computational Geometry Lecture 15: Windowing queries

Page 89: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing againWindowing queries

Using an interval tree?

q q

Computational Geometry Lecture 15: Windowing queries

Page 90: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Interval querying

Given a set I of n intervals on the real line, preprocess theminto a data structure so that the ones containing a querypoint (value) can be reported efficiently

We have the interval tree, but we will develop an alternativesolution

Computational Geometry Lecture 15: Windowing queries

Page 91: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Interval querying

Given a set S = {s1,s2, . . . ,sn } of n segments on the real line,preprocess them into a data structure so that the onescontaining a query point (value) can be reported efficiently

s1

s2

s3

s4 s5

s6 s7

s8

The new structure is called the segment tree

Computational Geometry Lecture 15: Windowing queries

Page 92: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Locus approach

The locus approach is the idea to partition the solution spaceinto parts with equal answer sets

s1

s2

s3

s4 s5

s6 s7

s8

For the set S of segments, we get different answer sets beforeand after every endpoint

Computational Geometry Lecture 15: Windowing queries

Page 93: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Locus approach

Let p1,p2, . . . ,pm be the sorted set of unique endpoints of theintervals; m ≤ 2n

p1 p2 p3 p4 p5 p6 p7 p8

s1

s2

s3

s4 s5

s6 s7

s8

The real line is partitioned into

(−∞,p1), [p1,p1],(p1,p2), [p2,p2], (p2,p3), . . . , (pm,+∞),

these are called the elementary intervals

Computational Geometry Lecture 15: Windowing queries

Page 94: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Locus approach

We could make a binary search tree that has a leaf for everyelementary interval(−∞,p1), [p1,p1],(p1,p2), [p2,p2], (p2,p3), . . . , (pm,+∞)

Each segment from the set S can be stored with all leaveswhose elementary interval it contains: [pi,pj] is stored with

[pi,pi],(pi,pi+1), . . . , [pj,pj]

A stabbing query with point q is then solved by finding theunique leaf that contains q, and reporting all segments that itstores

Computational Geometry Lecture 15: Windowing queries

Page 95: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Locus approach

(−∞, p1)[p1, p1]

(p1, p2)[p2, p2]

(p2, p3)[p3, p3]

(p3, p4)[p4, p4]

(p4, p5)[p5, p5]

(p5, p6)[p6, p6]

(p6, p7)[p7, p7]

(p8,+∞)(p7, p8)[p8, p8]

s1

s2

s3

s4 s5

s6 s7

s8

Computational Geometry Lecture 15: Windowing queries

Page 96: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Locus approach

s1

s2

s3

s4 s5

s6 s7

s8

p1 p2 p3 p4 p5 p6 p7 p8

Computational Geometry Lecture 15: Windowing queries

Page 97: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Locus approach

Question: What are the storage requirements and what isthe query time of this solution?

Computational Geometry Lecture 15: Windowing queries

Page 98: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Towards segment trees

In the tree, the leaves storeelementary intervals

But each internal nodecorresponds to an interval too:the interval that is the unionof the elementary intervals ofall leaves below it

(pi, pi+1)[pi+1, pi+1]

(pi+1, pi+2)[pi+2, pi+2]

(pi, pi+2]

pi pi+1 pi+2

Computational Geometry Lecture 15: Windowing queries

Page 99: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Towards segment trees

s1

s2

s3

s4 s5

s6 s7

s8

p1 p2 p3 p4 p5 p6 p7 p8

(p2, p4] (p6,+∞)

(p1, p2]

Computational Geometry Lecture 15: Windowing queries

Page 100: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Towards segment trees

Let Int(ν) denote the interval of node ν

To avoid quadratic storage, we store any segment sj as highas possible in the tree whose leaves correspond to elementaryintervals

More precisely: sj is stored with ν if and only if

Int(ν) ⊆ sj but Int(parent(ν)) 6⊆ sj

Computational Geometry Lecture 15: Windowing queries

Page 101: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Towards segment trees

(pi, pi+1)[pi+1, pi+1]

(pi+1, pi+2)[pi+2, pi+2]

(pi, pi+2]

pi pi+1 pi+2

(pi, pi+2]

pi−2 pi−1

(pi−2, pi+2]

(pi−2, pi+2]

sj

ν

Int(ν)

Int(parent(ν))

Computational Geometry Lecture 15: Windowing queries

Page 102: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Segment trees

A segment tree on a set S of segments is a balanced binarysearch tree on the elementary intervals defined by S, and eachnode stores its interval, and its canonical subset of S in a list(unsorted)

The canonical subset (of S) of a node ν is the subset ofsegments sj for which

Int(ν) ⊆ sj but Int(parent(ν) 6⊆ sj

Computational Geometry Lecture 15: Windowing queries

Page 103: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Segment trees

s1

s2

s3

s4 s5

s6 s7

s8

p1 p2 p3 p4 p5 p6 p7 p8s1, s2

s1, s2

s3, s4

s1, s3, s4

s5

s5s3, s5

s6

s6

s7

s6, s7

s8

s7, s8 s7, s8

s1

Computational Geometry Lecture 15: Windowing queries

Page 104: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Segment trees

s1

s2

s3

s4 s5

s6 s7

s8

p1 p2 p3 p4 p5 p6 p7 p8s1, s2

s1, s2

s3, s4

s1, s3, s4

s5

s5s3, s5

s6

s6

s7

s6, s7

s8

s7, s8 s7, s8

s1

Computational Geometry Lecture 15: Windowing queries

Page 105: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Segment trees

Question: Why are no segments stored with nodes on theleftmost and rightmost paths of the segment tree?

Computational Geometry Lecture 15: Windowing queries

Page 106: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Query algorithm

The query algorithm is trivial:

For a query point q, follow the path down the tree to theelementary interval that contains q, and report all segmentsstored in the lists with the nodes on that path

Computational Geometry Lecture 15: Windowing queries

Page 107: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Example query

s1

s2

s3

s4 s5

s6 s7

s8

p1 p2 p3 p4 p5 p6 p7 p8s1, s2

s1, s2

s3, s4

s1, s3, s4

s5

s5s3, s5

s6

s6

s7

s6, s7

s8

s7, s8 s7, s8

s1

Computational Geometry Lecture 15: Windowing queries

Page 108: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Example query

s1

s2

s3

s4 s5

s6 s7

s8

p1 p2 p3 p4 p5 p6 p7 p8s1, s2

s1, s2

s3, s4

s1, s3, s4

s5

s5s3, s5

s6

s6

s7

s6, s7

s8

s7, s8 s7, s8

s1

Computational Geometry Lecture 15: Windowing queries

Page 109: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Query time

The query time is O(logn+ k), where k is the number ofsegments reported

Computational Geometry Lecture 15: Windowing queries

Page 110: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Segments stored at many nodes

A segment can be stored in several lists of nodes. How badcan the storage requirements get?

Computational Geometry Lecture 15: Windowing queries

Page 111: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Segments stored at many nodes

Lemma: Any segment can be stored at up to two nodes ofthe same depth

Proof: Suppose a segment si is stored at three nodes ν1, ν2,and ν3 at the same depth from the root

ν1 ν2 ν3

sisisi

parent(ν2)

si

Computational Geometry Lecture 15: Windowing queries

Page 112: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Segments stored at many nodes

If a segment tree has depth O(logn), then any segment isstored in at most O(logn) lists ⇒ the total size of all lists isO(n logn)

The main tree uses O(n) storage

The storage requirements of a segment tree on n segments isO(n logn)

Computational Geometry Lecture 15: Windowing queries

Page 113: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Segments and range queries

Note the correspondence with 2-dimensional range trees

ν

µ µ′ p

p

p

p

Computational Geometry Lecture 15: Windowing queries

Page 114: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Result

Theorem: A segment tree storing n segments (= intervals) onthe real line uses O(n logn) storage, can be built in O(n logn)time, and stabbing queries can be answered in O(logn+ k)time, where k is the number of segments reported

Property: For any query, all segments containing the querypoint are stored in the lists of O(logn) nodes

Computational Geometry Lecture 15: Windowing queries

Page 115: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

DefinitionQueryingStorage

Stabbing counting queries

Question: Do you see how to adapt the segment tree so thatstabbing counting queries can be answered efficiently?

Computational Geometry Lecture 15: Windowing queries

Page 116: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

Back to windowing

Problem arising from windowing:

Given a set of arbitrarily oriented,non-crossing line segments, preprocessthem into a data structure so that the onesintersecting a vertical (horizontal) querysegment can be reported efficiently

Computational Geometry Lecture 15: Windowing queries

Page 117: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

Idea for solution

The main idea is to build a segment tree on the x-projectionsof the 2D segments, and replace the associated lists with amore suitable data structure

Computational Geometry Lecture 15: Windowing queries

Page 118: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

s1

s2

s3

s4

s5

s6

s7 s8

p1 p2 p3 p4 p5 p6 p7 p8s1, s2

s1, s2

s3, s4

s1, s3, s4

s5

s5s3, s5

s6

s6

s7

s6, s7

s8

s7, s8 s7, s8

s1

Computational Geometry Lecture 15: Windowing queries

Page 119: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

s1

s2

s3

s4

s5

s6

s7 s8

p1 p2 p3 p4 p5 p6 p7 p8s1, s2

s1, s2

s3, s4

s1, s3, s4

s5

s5s3, s5

s6

s6

s7

s6, s7

s8

s7, s8 s7, s8

s1

Computational Geometry Lecture 15: Windowing queries

Page 120: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

Observe that nodes now correspond to vertical slabs of theplane (with or without left and right bounding lines), and:

if a segment si is stored with a node ν , then it crosses theslab of ν completely, but not the slab of the parent of ν

the segments crossing a slab have a well-definedtop-to-bottom order

Int(ν)

sj sj is stored at oneor more nodesbelow ν

Computational Geometry Lecture 15: Windowing queries

Page 121: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

s1

s3

s4

s5

p3 p4

s1, s3, s4

s5

s5

Computational Geometry Lecture 15: Windowing queries

Page 122: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

s1

s3

s4

s5

p3 p4

s1, s3, s4

s5

s5

Computational Geometry Lecture 15: Windowing queries

Page 123: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

Querying

Recall that a query is done with a verticalline segment q

Only segments of S stored with nodes onthe path down the tree using thex-coordinate of q can be answers

At any such node, the query problem is:which of the segments (that cross the slabcompletely) intersects the vertical querysegment q?

q

Computational Geometry Lecture 15: Windowing queries

Page 124: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

Querying

We store the canonicalsubset of a node ν in abalanced binary search treethat follows thebottom-to-top order in itsleaves

q

s1

s2

s3

s4

s5

s6

s7

s1

s2

s4

s6

s5

s3

s1

s2

s3

s4

s5

s6

s7

Computational Geometry Lecture 15: Windowing queries

Page 125: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

Data structure

A query with q follows one path down the main tree, usingthe x-coordinate of q

At each node, the associated tree is queried using theendpoints of q, as if it is a 1-dimensional range query

The query time is O(log2 n+ k)

Computational Geometry Lecture 15: Windowing queries

Page 126: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

Data structure

The data structure for intersection queries with a verticalquery segment in a set of non-crossing line segments is asegment tree where the associated structures are binarysearch trees on the bottom-to-top order of the segments inthe corresponding slab

Since it is a segment tree with lists replaced by trees, thestorage remains O(n logn)

Computational Geometry Lecture 15: Windowing queries

Page 127: Computational Geometry - PUC-Riolaber/interval_priority_trees.pdfComputational Geometry Lecture 14: Windowing queries Motivation Interval trees Priority search trees Definition Querying

MotivationSegment trees

Windowing again

Segment tree variationQueryingStorage

Result

Theorem: A set of n non-crossing line segments can bestored in a data structure of size O(n logn) so that intersectionqueries with a vertical query segment can be answered inO(log2 n+k) time, where k is the number of answers reported

Theorem: A set of n non-crossing line segments can bestored in a data structure of size O(n logn) so that windowingqueries can be answered in O(log2 n+ k) time, where k is thenumber of answers reported

Computational Geometry Lecture 15: Windowing queries