Orthogonal Range Search deBerg et. al (Chap.5) Fall 2005 1 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 2 Idea 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 split-node x x’ 3 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 4 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 5 Build kd-tree T (n) O(n) 2T n / 2 T (n) O(n log n) Break at median n/2 nodes Left (and bottom) child stores the splitting line Fall 2005 6 Step-by-Step (left subtree) 4 9 5 1,2,3,4,5 10 6,7,8,9,10 2 7 1 8 3 6 Fall 2005 7 4 9 5 6,7,8,9,10 10 2 7 1 8 1,2,3 4,5 3 6 Fall 2005 8 4 9 5 6,7,8,9,10 10 2 7 1 4,5 8 3 6 1,2 Fall 2005 3 9 4 9 5 6,7,8,9,10 10 2 7 1 4,5 8 3 6 3 1 Fall 2005 2 10 4 9 5 6,7,8,9,10 10 2 7 1 8 3 6 3 1 Fall 2005 4 5 2 11 Range Search Kd-Tree Idea: Fall 2005 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 12 Algorithm v lc(v) rc(v) rc(v) v lc(v) Fall 2005 13 Example l1 l1 l2 l3 l2 l3 Fall 2005 14 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 15 Example 1(-4,0) 2(0,3) 3(1,2) 4(3,-3) (-,)×(-,) (-,0]×(-,) 2 3 3 1 4 Fall 2005 1 4 2 16 Example 1(-4,0) 2(0,3) 3(1,2) 4(3,-3) (-,)×(-,) (-,0]×(-,) 2 3 3 1 4 Fall 2005 (-,0]×(-,0] 1 4 2 17 Example 1(-4,0) 2(0,3) 3(1,2) 4(3,-3) (-,)×(-,) (0,)×(-,) 2 3 3 1 4 Fall 2005 1 4 2 18 Example 1(-4,0) 2(0,3) 3(1,2) 4(3,-3) (-,)×(-,) (0,)×(-,) 2 (0,)×(-3,) 3 3 1 4 Fall 2005 1 4 2 19 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 Fall 2005 Detail the region of each node and intersection/containment check 20 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 21