computational geometry piyush kumar (lecture 5: range searching) welcome to cis5930

Post on 05-Jan-2016

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Computational Geometry

Piyush Kumar(Lecture 5: Range Searching)

Welcome to CIS5930

Range Searching : recap

1D Range search kD trees Range Trees Fractional Cascading

Range Searching

Preprocess a set P of objects for efficiently answering queries.

Typically, P is a collection of geometric objects (points, rectangles, polygons) in Rd.

Query Range, Q : d-rectangles, balls, halfspaces, simplices, etc..

Either count all objects in P Q or report the objects themselves.

Courtesy Bhosle

Q1

Example: Points in R2

Q2

Applications

Databases Spatial databases (G.I.S.) Computer Graphics Robotics Vision

Range Trees (1D)

2 4 5 7 8 12 15 19

6 17 7

7 19151282 4 5

2

4

5 8

12

15Counting ?Reporting?

Range Trees (2d)

P4P3P2P1

P3

P2

P4

P1

P1

P2

P3

P4

P8P7P6P5

P5 P8

P6

P7

Query and Space Complexity(counting)

1D Query : O(log n) Space: O(n)

2D Query : O(log n) Space O(nlogn) Construction time : O(nlogn)

d-D Query : O(logd-1n) Space: O(nlogd-1n) Construction time : O(nlogd-1n)

Kd-Trees

a typical struct Int cut_dim; // dim orthogonal to cutting plane Double cut_val; // location of cutting plane Int size; // number of points in subtree

The best implementation of kd-trees I know of:

http://www.cs.umd.edu/~mount/ANN/

Look at kd_tree.cc and kd_tree.h

kD-Trees (k-dimensional Trees)

1-d tree : split along median point and recursively build subtrees for the left and right sets.

Higher dimensions : same approach, but cycle through the dimensions. Or, select the next dimension as the one with the widest spread.

Efficiency of query processing drops as dimensions increase (becomes almost linear). However, the space requirement remains linear : O(n.d)

kD-Trees (Contd.)

a b

c

d

e

f

g

f

n

m

l

k j

ih

o

l

m

j

e

i

g

h

b

k

a

d

c

n

o

Q(n) = 2.Q(n/4) + 1

Q(n) = O(n1/2)

i.e. Query answered in O(n1-1/d + m) time where m is the output size

kD-Trees (Contd.)

Query complexity : How many cells can a query box intersect ?

• Any axis parallel line can intersect atmost 2 of these 4 cells.• Each of these 4 cells contain exactly n/4 points.

Let us consider a facet of the query

Kd-Tree

Summarizing Building (preprocessing time): O(n log

n) Size: O(n) Range queries: O(sqrt(n)+k)

In higher dimensions Building: O(dnlogn) Size: O(dn) Counting Query: O(n1-1/d)

QuadTrees

4-way partitions Linear space Used in real life more than kd-trees

Octrees

3D Version of Quadtrees 8 child nodes Applications Range searching Collision detection Mesh generation Visibility Culling Computer games

General Sets of points

We assumed till now that the x,y coordinates of the points are distinct and do not overlap the coordinates of the query. How do we relax this?

More on the Chalk board…

top related