Fall 2005 1
Orthogonal Range Search
deBerg et. al (Chap.5)
Fall 2005 2
1D Range SearchData 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
Find split nodeFrom split node, find path to , the node x; report all right subtree along the pathFrom split node, find path to ’, the node x’; report all left subtree along the pathCheck and ’
x x’
split-node
Fall 2005 4
Performance
T: O(n) storage, built in O(nlogn)Query: Worst case: (n) … sounds bad Refined analysis (output-sensitive)
Output k: ReportSubTree O(k) Traverse tree down to or ’: O(logn) Total: O(logn + k)
Fall 2005 5
2D Kd-tree for 2D range search
Kd-tree: special case of BSPInput: [x,x’][y,y’]Output: all points in range
Fall 2005 6
Build kd-tree
Break at median n/2 nodesLeft (and bottom) child stores the splitting line
)log()(
2/2)()(
nnOnT
nTnOnT
Fall 2005 7
Step-by-Step (left subtree)
5
8
10
9
6
7
2
3
4
1
1,2,3,4,5 6,7,8,9,10
Fall 2005 8
5
8
10
9
6
7
2
3
4
1
6,7,8,9,10
1,2,3 4,5
Fall 2005 9
5
8
10
9
6
7
2
3
4
1
6,7,8,9,10
4,5
1,2 3
Fall 2005 10
5
8
10
9
6
7
2
3
4
1
6,7,8,9,10
4,5
3
1 2
Fall 2005 11
5
8
10
9
6
7
2
3
4
1
6,7,8,9,10
3
1 2
4 5
Fall 2005 12
Range Search Kd-Tree
Idea: Traverse the kd-tree; visit only nodes wh
ose region intersected by query rectangle If region is fully contained, report the sub
tree If leaf is reached, query the point against
the range
Fall 2005 13
Algorithm v
lc(v) rc(v)
v
lc(v)
rc(v)
Fall 2005 14
Examplel1 l1
l2
l2 l3
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 vert
ex 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
2
3
4
1
1(-4,0)2(0,3)3(1,2)4(3,-3)
1 2
3 4
(-,0]×(-,)
(-,)×(-,)
Fall 2005 17
Example
2
3
4
1
1(-4,0)2(0,3)3(1,2)4(3,-3)
1 2
3 4
(-,0]×(-,)
(-,)×(-,)
(-,0]×(-,0]
Fall 2005 18
Example
2
3
4
1
1(-4,0)2(0,3)3(1,2)4(3,-3)
1 2
3 4
(-,)×(-,)
(0,)×(-,)
Fall 2005 19
Example
2
3
4
1
1(-4,0)2(0,3)3(1,2)4(3,-3)
1 2
3 4
(-,)×(-,)
(0,)×(-,)
(0,)×(-3,)
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
a
h
b
d
g
fc
e
Read off coordinate from the sketching layout, e.g., a=(-4,2)Query rectangle = [-2,4]×[-1,3]