Orthogonal Range Search deBerg et. al (Chap.5) Fall 2005
1D Range Search Data stored in balanced binary search tree T Input: range tree T and range [x,x’] Output: all points in the range Fall 2005
Idea split-node Find split node x x’ split-node Find split node From split node, find path to m, the node x; report all right subtree along the path From split node, find path to m’, the node x’; report all left subtree along the path Check m and m’ Fall 2005
Performance T: O(n) storage, built in O(nlogn) Query: Worst case: Q(n) … sounds bad Refined analysis (output-sensitive) Output k: ReportSubTree O(k) Traverse tree down to m or m’: O(logn) Total: O(logn + k) Fall 2005
2D Kd-tree for 2D range search Kd-tree: special case of BSP Input: [x,x’][y,y’] Output: all points in range Fall 2005
Build kd-tree Break at median n/2 nodes Left (and bottom) child stores the splitting line Fall 2005
Step-by-Step (left subtree) 4 9 1,2,3,4,5 6,7,8,9,10 5 10 2 7 1 8 3 6 Fall 2005
4 9 6,7,8,9,10 5 10 2 1,2,3 4,5 7 1 8 3 6 Fall 2005
4 9 6,7,8,9,10 5 10 2 4,5 7 1 8 3 1,2 3 6 Fall 2005
4 9 6,7,8,9,10 5 10 2 4,5 7 1 8 3 3 6 1 2 Fall 2005
4 9 6,7,8,9,10 5 10 2 7 1 8 3 3 6 4 5 1 2 Fall 2005
Range Search Kd-Tree Idea: Traverse the kd-tree; visit only nodes whose region intersected by query rectangle If region is fully contained, report the subtree If leaf is reached, query the point against the range Fall 2005
Algorithm v lc(v) rc(v) rc(v) v lc(v) Fall 2005
Example l1 l1 l2 l3 l2 l3 Fall 2005
Region Intersection & Containment Each node in kd-tree implies a region in 2D (k-d in general): [xl,xh]×[yl,yh] Each region can be derived from the defining vertex and region of parent Note: the region can be unbounded The query rectangle: [x, x’]×[y, y’] Containment: [xl,xh] [x, x’] [yl,yh] [y, y’] Intersection test can be done in a similar way Fall 2005
Example (-,)×(-,) (-,0]×(-,) 4 3 1 2 1(-4,0) 2(0,3) 3(1,2) 4(3,-3) (-,0]×(-,) 4 3 1 2 Fall 2005
Example (-,)×(-,) (-,0]×(-,) 4 3 (-,0]×(-,0] 1 2 1(-4,0) 2(0,3) 3(1,2) 4(3,-3) (-,0]×(-,) 4 3 (-,0]×(-,0] 1 2 Fall 2005
Example (-,)×(-,) (0,)×(-,) 4 3 1 2 1(-4,0) 2(0,3) 3(1,2) 4(3,-3) (0,)×(-,) 4 3 1 2 Fall 2005
Example (-,)×(-,) (0,)×(-,) (0,)×(-3,) 4 3 1 2 1(-4,0) 2(0,3) 3(1,2) 4(3,-3) (0,)×(-,) (0,)×(-3,) 4 3 1 2 Fall 2005
Homework Research on linear algorithm for median finding. Write a summary. Build a kd-tree of the points on the following page. Do the range query according to the algorithm on p.13 Detail the region of each node and intersection/containment check Fall 2005
Read off coordinate from the sketching layout, e.g., a=(-4,2) b a c f e g h d Read off coordinate from the sketching layout, e.g., a=(-4,2) Query rectangle = [-2,4]×[-1,3] Fall 2005