Presentation is loading. Please wait.

Presentation is loading. Please wait.

Orthogonal Range Search

Similar presentations


Presentation on theme: "Orthogonal Range Search"— Presentation transcript:

1 Orthogonal Range Search
deBerg et. al (Chap.5) Fall 2005

2 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

3 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

4 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

5 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

6 Build kd-tree Break at median n/2 nodes
Left (and bottom) child stores the splitting line Fall 2005

7 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

8 4 9 6,7,8,9,10 5 10 2 1,2,3 4,5 7 1 8 3 6 Fall 2005

9 4 9 6,7,8,9,10 5 10 2 4,5 7 1 8 3 1,2 3 6 Fall 2005

10 4 9 6,7,8,9,10 5 10 2 4,5 7 1 8 3 3 6 1 2 Fall 2005

11 4 9 6,7,8,9,10 5 10 2 7 1 8 3 3 6 4 5 1 2 Fall 2005

12 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

13 Algorithm v lc(v) rc(v) rc(v) v lc(v) Fall 2005

14 Example l1 l1 l2 l3 l2 l3 Fall 2005

15 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

16 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

17 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

18 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

19 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

20 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

21 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


Download ppt "Orthogonal Range Search"

Similar presentations


Ads by Google