170 likes | 278 Views
This lecture focuses on the concept of range searching in computational geometry, covering 1D range search, kD trees, and range trees, along with fractional cascading techniques for efficient query processing. The presentation explains how to preprocess a set of geometric objects (points, rectangles, etc.) for answering queries such as counting or reporting objects that intersect a specified query range. We will delve into the query complexities for 1D and 2D trees, comparisons between kD-trees, quad-trees, and octrees, and their applications in databases, computer graphics, and robotics.
E N D
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
Example: Points in R2 Q1 Q2
Applications • Databases • Spatial databases (G.I.S.) • Computer Graphics • Robotics • Vision
7 4 12 2 5 8 15 2 4 5 7 8 12 15 19 Range Trees (1D) 6 17 2 4 5 7 8 12 15 19 Counting ? Reporting?
Range Trees (2d) P3 P8 P5 P2 P6 P4 P7 P1 P3 P2 P4 P1 P1 P2 P3 P4 P5 P6 P7 P8
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 widestspread. • Efficiency of query processing drops as dimensions increase (becomes almost linear). However, the space requirement remains linear : O(n.d)
kD-Trees (Contd.) c o m d f l n a b e g j k h i f k h n d i j l a b o c g e m
kD-Trees (Contd.) • Query complexity : How many cells can a query box intersect ? Let us consider a facet of the query • Any axis parallel line can intersect atmost 2 of these 4 cells. • Each of these 4 cells contain exactly n/4 points. 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-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?