Orthogonal range search

advertisement
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
Download