170 likes | 268 Views
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.
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?