Top Banner
CS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October 3, 2012 Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 1 / 26
26

CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Oct 16, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

CS 372: Computational GeometryLecture 7

Segment Trees

Antoine Vigneron

King Abdullah University of Science and Technology

October 3, 2012

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 1 / 26

Page 2: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

1 Introduction

2 Segment trees

3 Rectangle intersection

4 Stabbing queries in higher dimension

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 2 / 26

Page 3: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Outline

A new data structure: the segment tree.

Applications:I Stabbing queries.I Rectangle intersection.

Generalization to higher dimension.

Reference:

Textbook Chapter 10.

Dave Mount’s lecture notes, Lecture 13.

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 3 / 26

Page 4: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Stabbing Queries

Orthogonal range searching: data points, query rectangle.

Stabbing problem: data rectangles, query point.

Problem (One-dimensional stabbing problem)

Preprocess a set of n intervals so as to be able to report quickly the kintervals that contain a query number q.

In Rd :I Input: a set of n boxes, a query point q.I Output: the k boxes that contain q.

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 4 / 26

Page 5: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Motivation

In graphics and databases, geometric objects are often approximatedby their bounding box.

Object

Bounding box

Query: Which objects does point x belong to?

First find objects whose bounding boxes intersect x .

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 5 / 26

Page 6: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Segment Trees

A data structure to store intervals of R, or segments in R2.

Allows to answer stabbing queries.I In R2: Report the segments that intersect a query vertical line `.

Reported

Reported

Reported

`

I Query time: O(k + log n).I Space usage: O(n log n).I Preprocessing time: O(n log n).

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 6 / 26

Page 7: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Notation

Let S = (s1, s2, . . . , sn) be a set of segments in R2.

Let E be the set of the x-coordinates of the endpoints of thesegments of S .

First sort E :E = {e1, e2, . . . , em},

e1 < e2 < · · · < em.

I m 6 2n, with equality in general position.

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 7 / 26

Page 8: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Atomic Intervals

E splits R into m + 1 atomic intervals:I (−∞, e1]I [ei , ei+1] for i ∈ {1, 2, . . .m − 1}I [em,∞)

These intervals are stored at the leaves of the segment tree.

S

E

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 8 / 26

Page 9: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Internal Nodes

The segment tree T is a balanced binary search tree.

Each internal node u with children v and v ′ is associated with aninterval Iu = Iv ∪ I ′v .

An elementary interval is an interval associated with a node of T .(It can be an atomic interval).

Iu

Iv Iv ′

v v ′

u

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 9 / 26

Page 10: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Partitioning a Segment

Let s ∈ S be a segment whose endpoints have x-coordinates ei , ej .

[ei , ej ] is split into several elementary intervals.

These intervals are chosen as close as possible to the root.

Segment s is stored at each node associated with these elementaryintervals.

Es

root

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 10 / 26

Page 11: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Standard Lists

At each node u, we store a standard list of segments Lu.

Let ei < ej be the x-coordinates of the endpoints of s ∈ S .

Then s is stored in Lu iff Iu ⊂ [ei , ej ] and Iparent(u) 6⊂ [ei , ej ].(See previous slide and next slide.)

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 11 / 26

Page 12: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Example

root

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 12 / 26

Page 13: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Answering a Stabbing Query

root

`

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 13 / 26

Page 14: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Pseudocode

Answering a stabbing query

Algorithm ReportStabbing(u, x`)Input: The root u of T , the x-coordinate x` of `.Output: The segments in S that cross `.1. Output Lu.2. if u is an internal node3. then if x` ∈ Iu.left4. then ReportStabbing(u.left, x`).5. if x` ∈ Iu.right6. then ReportStabbing(u.right, x`) .

Query time: O(k + log n).

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 14 / 26

Page 15: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Inserting a Segment

E

s

root

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 15 / 26

Page 16: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Pseudocode

Inserting a segment into a segment tree

Algorithm Insert(u, s)Input: The root u of T , a segment s = ((x1, y1), (x2, y2)).1. if Iu ⊂ [x1, x2]2. then Lu ← Lu ∪ {s}3. else4. if (x1, x2] ∩ Iu.left 6= ∅5. then Insert(u.left, s)6. if [x1, x2) ∩ Iu.right 6= ∅7. then Insert(u.right, s)

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 16 / 26

Page 17: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Property

Property

Any segment s is stored at most twice at each level of the segment tree T .

Proof (by contradiction):

Suppose that s is stored at more than 2 nodes at level i .

Let u be the leftmost such node, u′ be the rightmost.

Let v be another node at level i containing s.

u v u′

s

v .parent

Then Iv .parent ⊂ [x1, x2].

So s cannot be stored at v .

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 17 / 26

Page 18: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Analysis

The property in previous slide implies:

Space usage O(n log n).I Actually space usage is Θ(n log n). (Example?)

Insertion in O(log n) time.(Similar proof: four nodes at most are visited at each level).

Query time O(k + log n).

Preprocessing:I Sort endpoints in Θ(n log n) time.I Build empty segment tree over these endpoints in O(n) time.I Insert n segments into T in O(n log n) time.I Overall Θ(n log n) preprocessing time.

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 18 / 26

Page 19: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Rectangle Intersection

Problem (rectangle intersection reporting)

Given a set a set B of n boxes in R2, report all the pairs of boxes b, b′ ∈ Bsuch that b ∩ b′ 6= ∅.

Using segment trees, we give an O(k + n log n) time algorithm whenk is the number of intersecting pairs.

I This is optimal.I Faster than our line segment intersection algorithm.

Space usage: Θ(n log n) due to segment trees.I Space usage is not optimal.

(Space O(n) is possible with the same running time.)

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 19 / 26

Page 20: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Example

b4

b3

b1

b2

b5

Output: (b1, b3),(b2, b3),(b2, b4),(b3, b4).

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 20 / 26

Page 21: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Two Types of Intersections

Overlap

Intersecting edges.I Reduces to intersection

reporting for axis-alignedsegments.

Inclusion

We can find them using stabbingqueries.

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 21 / 26

Page 22: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Reporting overlaps

Equivalent to reporting intersecting edges.

Plane sweep approach.

Sweep line status: BBST containing the horizontal line segments thatintersect the sweep line, by increasing y -coordinates.

Each time a vertical line segment is encountered, report intersectionby range searching in the BBST.

Preprocessing time: O(n log n) for sorting endpoints.

Running time: O(k + n log n).

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 22 / 26

Page 23: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Reporting inclusions

Still using plane sweep.

Sweep line status: the boxes that intersect the sweep line `, in asegment tree with respect to y -coordinates.

I The endpoints are the y -coordinates of the horizontal edges of theboxes.

I At a given time, only rectangles that intersect ` are in the segment tree.I We can perform insertion and deletions in a segment tree in O(log n)

time.

Each time a vertex of a box is encountered, perform a stabbing queryin the segment tree.

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 23 / 26

Page 24: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Remarks

At each step a box intersection can be reported several times.

In addition there can be overlap and vertex stabbing a box at thesame time.

To obtain each intersecting pair only once, make some simple checks.(How?)

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 24 / 26

Page 25: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Stabbing Queries in Higher Dimension

Problem (Stabbing queries in Rd)

Preprocess a set B of n boxes in Rd , so as to be able to report quickly allthe boxes that contain a query point q.

Approach:

We use a multi-level segment tree.

Inductive definition, induction on d .

First, we store B in a segment tree T with respect to x1-coordinate.

At each node u of T , store a (d − 1)-dimensional multi-level segmenttree over Lu, with respect to (x2, x3 . . . xd).

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 25 / 26

Page 26: CS 372: Computational Geometry Lecture 7 Segment TreesCS 372: Computational Geometry Lecture 7 Segment Trees Antoine Vigneron King Abdullah University of Science and Technology October

Stabbing Queries in Higher Dimension

We assume we are in fixed dimension, that is, d = O(1).

Answering queries:

Search for q in T .

For each node in the search path, query recursively the(d − 1)-dimensional multi-level segment tree.

There are O(log n) such queries.

By induction on d , we can prove:I Query time: O(k + logd n).I Space usage: O(n logd n).I Preprocessing time : O(n logd n).

Antoine Vigneron (KAUST) CS 372 Lecture 7 October 3, 2012 26 / 26