Beruflich Dokumente
Kultur Dokumente
K-D Trees
CSE 373 Data Structures Lecture 22
12/6/02
k-d Trees
Jon Bentley, 1975 Tree used to store spatial data.
Nearest neighbor search. Range queries. Fast look-up
y d b c x i g e
Range Queries
i h f y d b c x Circular query
K-D Trees - Lecture 22 4
g e
h f
k-d tree are guaranteed log2 n depth where n is the number of points in the set.
Traditionally, k-d trees store points in ddimensional space which are equivalent to vectors in d-dimensional space.
12/6/02 K-D Trees - Lecture 22 3
Rectangular query
12/6/02
h e query f
h e f y d
b c
s1
x s1 h y s2 f d b
x s1 h y s2 f x s3
d b
c
s1
a
s3
c
s1
12/6/02
12/6/02
10
x s1 h y s2 f x s3 a d b
x s1 h y s2 f x s3 a b
d b
a
s3
c
s1
a
s3
c
s1
12/6/02
11
12/6/02
12
x s1 h y s2 f x s3 a b y s4 d
s5 s2
x s1 h y s2 f x s3 a b x s5 y s4
d b
s2
a
s3
c
s1
a
s3
b c
s1
12/6/02
13
12/6/02
14
x s1 h y s2 f x s3 a b x s5 d y s4 d
s5 s2
x s1 h y s2 f x s3 a b x s5 d e y s4
d
s5
s2
a
s3
b c
s1
a
s3
b c
s1
12/6/02
15
12/6/02
16
x s1 h y s2 f x s3 a b x s5 d e y s4 g d
s5 s2
x s1 h y s2 f x s3 a b x s5 d e y s4 g y s6
d
s5
s6
s2
a
s3
b c
s1
a
s3
b c
s1
12/6/02
17
12/6/02
18
x s1 h y s2 f x s3 a b x s5 d e y s4 g y s7
x s1 h y s2 f x s3 a b x s5 d e y s4 g c y s7 y s6
d
s5
s6
d
s5
s6
s2
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
19
12/6/02
20
x s1 h y s2 f x s3 a b x s5 d e y s4 g c y s7 f
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f y s6 y s8
d
s5
s6
d
s5
s6
s2
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
21
12/6/02
22
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
d
s5
s6
s2
y s8
d
s5
s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
23
12/6/02
24
3
12/6/02 K-D Trees - Lecture 22 25 12/6/02
sorted points in each dimension 1 2 3 4 5 6 7 8 9 x a d g be i c h f y a c b d f e h g i h indicator for each set f a b c de f g h i 0 0 1 00 1 0 1 1 scan sorted points in y dimension and add to correct set
Finding the widest spread and equally divide into two subsets can be done in O(dn) time. We have the recurrence
T(n,d) < 2T(n/2,d) + O(dn)
Constructing the k-d tree can be done in O(dn log n) and dn storage
12/6/02 K-D Trees - Lecture 22 28
12/6/02
29
12/6/02
30
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
s6
s2
y s8 h i
d
s5
s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
31
12/6/02
32
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
s6
s2
y s8 h i
d
s5
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
33
12/6/02
34
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
s2
y s8 h i
d
s5
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
35
12/6/02
36
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
w s6
s2
y s8 h i
d
s5
w s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
37
12/6/02
38
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
w s6
s2
y s8 h i
d
s5
w s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
39
12/6/02
40
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
w s6
s2
y s8 h i
d
s5
w s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
41
12/6/02
42
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
w s6
s2
y s8 h i
d
s5
w s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
43
12/6/02
44
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
w s6
s2
y s8 h i
d
s5
w s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
45
12/6/02
46
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
w s6
s2
y s8 h i
d
s5
w s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
47
12/6/02
48
x s1 h f x s3 a b x s5 d e y s2 y s4 g c y s7 f h y s6 y s8 i
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
d
s5
w s6
s2
y s8 h i
d
s5
w s6
s2
a
s3
b
s1
s7
c x
a
s3
b
s1
s7
c x
12/6/02
49
12/6/02
50
Main is NNS(q,root,null,infinity)
h f x s3 a b
y s2 y s4 x s5 d e g c y s7 f
y s6 y s8 h i
d
s5
w s6
s2
a
s3
b
s1
s7
c x
12/6/02
51
The Conditional
q(n.axis) + w > n.value
n.axis = x
12/6/02
53
12/6/02
54
12/6/02
55
10