Birn et al.: Nearest Neighbors 1 Simple and Fast Nearest Neighbor Search

Marcel Birn, Manuel Holtgrewe, Peter Sanders, Johannes Singler Birn et al.: Nearest Neighbors 2 2D Nearest Neighbor Search

Preprocess S = {(x1,y1),..., (xn,yn)}. Query: q = (x,y) −→ closest point in S () Birn et al.: Nearest Neighbors 3 Application Example

Geographic Information Systems, e.g., Route Planning Birn et al.: Nearest Neighbors 4 A Greedy Algorithm

Preprocessing: Delaunay (not Yao graph etc. !) Query: Start at any point in S. Follow any edge towards q. Iterate until no improvement possible. still linear time. . . Birn et al.: Nearest Neighbors 5 Multiple Levels

Start with a sample of points from S. Closest point in sample → starting point in next level.

 How many levels?

 Complicated data structure? Birn et al.: Nearest Neighbors 6 n Levels?

Randomly number points in S.

Function nlevelNN(q) u:= s1 538 1 6 4 2 7 for i := 1 to n do u:= greedyNN(u, q, DT(s1..k)) return u

Sounds like quadratic space and at least linear time??? Birn et al.: Nearest Neighbors 7 Full Delaunay Hierarchy (FDH)

n G:= (1..n, [ Ek) i=1 where Gk =(1..k,Ek):= Delaunay triangulation of points 1..k. 538 1 6 4 2 7 538 1 6 4 2 7

G has a linear expected number of edges e.g., [Guibas et al. 92]. Birn et al.: Nearest Neighbors 8 FDH-Based n Level Search!

Procedure nn(q, {s1,...,sn}) u:= s1 repeat foreach neighbor v of u in G with u > v in increasing order do invariant u is nearest neighbor of q wrt 1..v − 1 if ||q − sv||2 < ||q − su||2 then 538 1 6 4 2 7 u:= v break for loop until no improvement found return u Birn et al.: Nearest Neighbors 9 Analysis

Theorem: Expected number of nodes visited ≤ ln n + 1

Proof Idea: si is visited ⇔si is closest to q wrt 1..i. This event has probability 1/i. harmonic sum claim.

i Birn et al.: Nearest Neighbors 10 Bad Inputs

# of inspected edges might be Ω(n) Birn et al.: Nearest Neighbors 11 Implementation

Store coordinates redundantly in edge array. Scan logarithmic number of pieces. Never worse than greedy scanning algorithm.

x: 1 2 3 4 5 6 7 8 #:538 1 6 4 2 7

q=(2.8, 0) 1 2 3 4 2(7,0) 3(2,0) 4(6,0)6(5,0) 8(3,0) 4(6,0) 7(8,0)5(1,0) 8(3,0) 6(5,0) Birn et al.: Nearest Neighbors 12 Other Approaches

optimal kd−Tree Delaunay Hierarchy currently preferred relatively complicated +point location in practice implementation? [CGAL, Mount et al.] [Devillers92] Birn et al.: Nearest Neighbors 13 Instances

[Devillers02]

95%

5%

in square on circle on parabola mixed Birn et al.: Nearest Neighbors 14 Experiments: Square

10 s] µ

1 time per query [ CGAL Delaunay hierarchy FDH exact ANN kd-tree CGAL kd-tree FDH array, inexact 0.1 128 512 211 213 215 217 219 221 223 number of points (n) Birn et al.: Nearest Neighbors 15 Experiments: Circle (parabola similar) 104 ANN kd-tree CGAL Delaunay hierarchy CGAL kd-tree 1000 FDH, exact FDH, inexact s] µ 100

10 time per query [

1

0.1 128 512 211 213 215 217 219 221 223 number of points (n) Birn et al.: Nearest Neighbors 16 Experiments: Mixed 1000 ANN kd-tree CGAL Delaunay hierarchy CGAL kd-tree FDH, exact 100 FDH, inexact s] µ

10 time per query [ 1

0.1 128 512 211 213 215 217 219 221 223 number of points (n) Birn et al.: Nearest Neighbors 17 More Related Work

 Several n-level geom. data structures on more complex objects (. . . ) and for point location. [BoissonatTeillaud86], [Guibas et al. 92],. . .

 Contraction Hierarchies – route planning with n levels [Geisberger et al. 2008]

 n-level Graph Partitioning [with Vitaly Osipov] Birn et al.: Nearest Neighbors 18 Conclusions

Full Delaunay Hierarchies

 (mostly) fast

 simple

 elegant Birn et al.: Nearest Neighbors 19 Open Problems

 Comparison with worst case efficient algorithms

 Make worst case efficient, e.g., replace high degree nodes? move high degree nodes in hierarchy?

 Higher Dimensions???

 More n-level algorithms?