computational geometry - search in high dimension and kd-trees · 2018-05-15 · computational...
TRANSCRIPT
Computational GeometrySearch in High dimension and kd-trees
Ioannis Emiris
Dept Informatics & Telecoms, National Kapodistrian U. AthensATHENA Research & Innovation Center, Greece
Spring 2018
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 1 / 57
Contents
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 2 / 57
Outline
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 3 / 57
Range query interpreted geometrically
date of birth
salary
3000
4000
19500000 19559999
G. Ometerborn: Aug 19, 1954salary: $3200
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 4 / 57
Range query in 3 dimensions
date of birth
salary
3000
4000
19500000 19559999
2
4
chlidren
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 5 / 57
The geometric approach
We are interested in answering queries on d fields of the records inour database.
Transform the records to points in d-dimensional space.
The transformed range query asks for all points inside ad-dimensional axis-parallel box (may be unbounded).
Such a query is called “rectangular” or “orthogonal” range query.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 6 / 57
1-Dimensional Range Search
Problem
Preprocess a set of points P = {p1, p2, . . . , pn} ∈ R so as to answerqueries efficiently:Which points lie inside a query interval [x : x ′]?
Arrays
O(n) space, O(n log n) preprocess, O(k + log n) query
But, do not generalize in higher dim,
do not allow efficient updates: O(n).
Balanced Binary Search Trees (BBST)
The leaves of T store the points of P,
internal nodes store splitting values that guide the search.
E.g. red-black trees, AVL trees.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 7 / 57
A search with the interval [18 : 77]
3 10
3
19 23
19
30
4930
10 37
37 59 62
59
70 80
70
62
23
89 100
89
100 105
80
49
µ µ′
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 8 / 57
A search with the interval [x , x ′]
Search for x and x ′ in T . The search ends to leaves µ and µ′.
Report all points stored at leaves between µ and µ′ plus, possibly, thepoints stored at µ and µ′.
Remark
The leaves to be reported are the ones of subtrees that are rooted atnodes whose parents are on the search paths to µ and µ′.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 9 / 57
A search with the interval [x , x ′]
Search for x and x ′ in T . The search ends to leaves µ and µ′.
Report all points stored at leaves between µ and µ′ plus, possibly, thepoints stored at µ and µ′.
Remark
The leaves to be reported are the ones of subtrees that are rooted atnodes whose parents are on the search paths to µ and µ′.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 9 / 57
The selected subtrees
µ µ′
root(T )
vsplit
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 10 / 57
Correctness and Performance
Any reported point lies in the query range.
Any point in the range is reported.
O(n) storage.
O(n log n) preprocessing.
O(log n) update.
Θ(n) worst case case query cost.
O(k + log n) output sensitive query cost: O(k) to report the pointsplus O(log n) to follow the paths to x , x ′.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 11 / 57
Outline
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 12 / 57
kd-Trees in the plane
Problem
Preprocess points P = {p1, p2, . . . , pn} ⊂ R2, to answer queries efficiently:Which points lie inside a query rectangle [x : x ′]× [y : y ′]?p = (px , py ) lies in the rectangle iff px ∈ [x , x ′] & py ∈ [y , y ′].
kd-trees
Generalize BBST: they split current pointset at median value, but usedifferent coordinate at each level.
Left subtree contains half (or one less) points with smaller coordinate andpoint with median value.
Points shall correspond to leaves (and plane regions).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 13 / 57
The way the plane is subdivided
l1
l2l3
l4
l5
l6
l7
l9
p1p2
p3
p4
p5
p6
p7
p8
p9
p10
l8
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1p1
p2
p3
p4
p5
p6
p7
p8
p9
p10
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1
l2
p1p2
p3
p4
p5
p6
p7
p8
p9
p10
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1
l2l3
p1p2
p3
p4
p5
p6
p7
p8
p9
p10
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1
l2l3
l4
p1p2
p3
p4
p5
p6
p7
p8
p9
p10
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1
l2l3
l4
l5p1
p2
p3
p4
p5
p6
p7
p8
p9
p10
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1
l2l3
l4
l5
l6
p1p2
p3
p4
p5
p6
p7
p8
p9
p10
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1
l2l3
l4
l5
l6
l7p1
p2
p3
p4
p5
p6
p7
p8
p9
p10
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1
l2l3
l4
l5
l6
l7p1
p2
p3
p4
p5
p6
p7
p8
p9
p10
l8
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The way the plane is subdivided
l1
l2l3
l4
l5
l6
l7p1
p2
p3
p4
p5
p6
p7
p8
p9
p10
l8l9
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 14 / 57
The corresponding binary tree
p5 p4
l4
p2
l5
p10
l6
l2 l3
p9
l1
p3 p1
p2
l5
p3 p1
l8 p2
l5
p3 p1
l9p7
l7
p6 p8
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 15 / 57
BuildKdTree(P , depth)
if P contains only one point thenreturn a leaf storing this point
elseif depth is even then
split P with vertical ` through median x-coord. of points in PP1 ← points left of ` or on `P2 ← points right of `
else {depth is odd}split P with horizontal ` through median y -coord. of points in PP1 ← points below ` or on `P2 ← points above `
end ifvleft ← BuidKdTree(P1, depth + 1); vright ← BuidKdTree(P2, depth + 1)create a node v storing `lc(v)→ vleft ; rc(v)→ vrightreturn v
end if
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 16 / 57
Building time and storage
Remarks
Split at the n2 -th smallest (median) coordinate: O(n) time,
or preprocess by sorting both on x- and y -coordinates.
The building time satisfies the recurrence:
T (n) =
{O(1) if n = 1O(n) + 2T (n2 ) if n > 1
T (n) = O(n log n) which subsumes sorting.
O(n) storage: points stored at leaves, leaf contains ≥ 1 points(alternatively stored at internal/splitting nodes).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 17 / 57
Nodes in a kd-tree and regions in the plane
l1
l2
l3
l1
l2
l3
v
region(v)
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 18 / 57
Regions and the query algorithm
Internal nodes of a kd-tree correspond to rectangular regions of theplane: can be unbounded on one or more sides.
Regions of all nodes at a specific level partition the plane.
region(root(T )) is the whole plane.
Point stored at (leaf of) subtree rooted at v iff it lies in region(v)
Search the subtree of v only if the query rectangle intersectsregion(v).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 19 / 57
A query on a kd-tree
l1
l2l3
l4
l5
l6
l7p1
p2
p3
p4
p5
p6
p7
p8
p9
p10
l8l9
p5 p4
l4 l5
p10
l6
l2 l3
p9
l1
p1
l5
p1
l8 p2
l5
p3 p1
l9p7
l7
p6 p8
p2
p3
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 20 / 57
Algorithm
SearchKdTree(v ,R)
if v is a leaf thenreport point stored at v if in R
elseif region(lc(v)) is fully contained in Rthen
ReportSubtree(lc(v))else
if region(lc(v)) intersects R thenSearchKdTree(lc(v),R)
end ifend ifif region(rc(v)) is fully contained in Rthen
ReportSubtree(rc(v))else
if region(rc(v)) intersects R thenSearchKdTree(rc(v),R)
end ifend if
end if
Input: root v , range R.
Works for any query R,e.g. disk, triangle.
O(k) to report k points.
How many other nodes vare visited? i.e. for howmany v , query rangeintersects region(v)?
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 21 / 57
Query time analysis
Any vertical line intersects region(lc(root(T ))) orregion(rc(root(T ))) but not both.
If a vertical line intersects region(lc(root(T ))) it always intersects theregions corresponding to both children of lc(root(T )).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 22 / 57
Query time analysis
The number of intersected regions (by vertical line) in a kd-treestoring n points, satisfies the recurrence:
Q(n) =
{O(1) if n = 12 + 2Q(n4 ) if n > 1
Q(n) = O(√n)⇒ time = O(
√n + k) for rectangular query
The analysis is rather pessimistic: In many practical situations thequery range is small and will intersect much fewer regions.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 23 / 57
Outline
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 24 / 57
Introduction
Given a distance function/metric:
Preprocess: set of points/objects P = {p1, . . . , pn} in d dimensions.
Query: Given a d-dimensional query point/object q, report the closestp ∈ P to q.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 25 / 57
Motivation
Points model general objects (e.g. handwritten digits)
Distance between points inverse to similarity measure
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 26 / 57
Several applications
Machine Learning: clustering/classification.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 27 / 57
Several applications
Pattern Recognition and Classification
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 28 / 57
Several applications
Searching multimedia databases.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 29 / 57
NN in R
Sort/store the n points, use binary search for queries, then:
Prepreprocessing in O(n log n) time
Data structure requiring O(n) space
Answer the query in O(log n) time
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 30 / 57
NN in R2
Preprocessing: Voronoi Diagram in O(n log n).
Storage = O(n).
Given query q, find the cell it belongs (point location) in O(log n).NN = site of cell containing q.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 31 / 57
Exact NN in Rd
Is it faster than linear-time?
Curse of Dimensionality:
Complexity of Voronoi diagram grows rapidly = O(ndd/2e).
Planar point location methods do not extend to higher dimensions.
The volume of the space increases so fast that data becomes sparse
State of the art:
kd-trees: Sp = O(n), Query = O(d · n1−1/d).Most practical for d � log n: O(log n) expected for “random” points
Randomized [Clarkson’88]: Sp = O(ndd/2e+δ), Q ' log n· exp(d).
n hyperplanes: point location O(d5 log n), Sp = O(nd+δ) [Meiser’93]
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 32 / 57
Outline
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 33 / 57
Nearest Neighbor in high dimension
Exact NN
Given set P in d dimensions, and query point q, its NN is point p0 ∈ P:
dist(p0, q) ≤dist(p, q), ∀p ∈ P.
Approximate NN
Given set P in d dimensions, approximation factor 1 > ε > 0, and querypoint q, an ε-NN, or ANN, is any point p0 ∈ P:
dist(p0, q) ≤ (1 + ε) dist(p, q), ∀p ∈ P.
•
•
•
•
•
• •
•
•q
•NN
•x∗1
•x∗2
r(1 + ε)r
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 34 / 57
Approximate NN in Rd
BBD tree [Arya,Mount et al.98]: optimal query for d = O(1) BBD
In practice like kd-trees:
cgal offers “lazy” kd-treesann [Mount] for d ≤ 60flann [Lowe-Muja], kd-geraf [E-Samaras]: randomized
Locality sensitive hashing (LSH) for ε-NNSp = O(dn1+ρ), Q = O(dnρ), ρ = 1/(1 + ε)2.[Indyk,Motwani’98] [Panigrahy’06] [Andoni,Indyk’06]
Dimensionality reduction [Anagnostopoulos,E,Psarros’15’17]Sp = O∗(dn), Q = O∗(dnρ), ρ = 1 + ε2/ log ε < 1
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 35 / 57
NN formulations
Standard computational geometry: the space is Euclidean Rd , forconstant d .
Complex data: treat d as an asymptotic quantity and seek solutionshaving no exponential dependence on d .
Wish to treat arbitrary metric (nonvector) spaces.
Structure, especially for metric spaces: may assume a growth-limitingproperty, e.g. constant doubling dimension: twice the ball is includedin constant number of balls (true for Euclidean).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 36 / 57
Grid for Uniform points
n uniformly distributed points in [0, 1]d
Cell structure (array) using parameter c = O(1)– Expected #points per box = c (high c increases box search).– Expected n/c boxes (high c reduces array size).– Each box of volume = c/n, edge length (c/n)1/d < 1.
Query lands in a box in O(1), checks points in box.– Given current best distance, check 3d − 1 adjacent boxes.– In expectation, O(1) boxes visited, in time O(c).– Expected query time = O(c + 3d).[Bentley-W.-Yao’80,Bentley’90].
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 37 / 57
Outline
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 38 / 57
Outline
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 39 / 57
kd-trees
Assuming d > 2 but small.
Iterate through splitting coordinates; various strategies to pick them
Leaves contain ≥ 1 points; bound #levels.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 40 / 57
NN search
Procedure NN(node), given query q
if node is leaf thenSearch all points in node, update best-dist
else {internal node}if split-coor(q) ≤ node’s split-value then
NN(left-child) // standard branchif split-coor(q) + best-dist > node’s split-value then
NN(right-child) // recurse to checkend if
else {split-coor(q) > node’s split-value}NN(right-child)if split-coor(q)− best-dist ≤ node’s split-value then
NN(left-child)end if
end if left/rightend if internal node
Overall topdown algorithm: NN(root).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 41 / 57
Complexity
Sp = O(d · n).
construction of balanced tree: O(d · n log n) by sorting per dimension,O(n log n) by linear-time median computation.
(Few) Insert/delete operations in balanced kd-tree = O(log n)
Exact Range query = O(d · n1−1/d + k).
In practice, ANN ' O(log n) when d = O(1), since O(1) expectedneighbors for random (e.g. uniform) distribution. See also BBD-trees:O((d/ε)d log n).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 42 / 57
Complexity
Sp = O(d · n).
construction of balanced tree: O(d · n log n) by sorting per dimension,O(n log n) by linear-time median computation.
(Few) Insert/delete operations in balanced kd-tree = O(log n)
Exact Range query = O(d · n1−1/d + k).
In practice, ANN ' O(log n) when d = O(1), since O(1) expectedneighbors for random (e.g. uniform) distribution. See also BBD-trees:O((d/ε)d log n).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 42 / 57
Extension
k Nearest Neighbors
Store k current best points.
Current ball encloses k current best points.
Eliminate sibling if none of its points can be closer than any of kcurrent best points, i.e. if sibling region outside current ball.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 43 / 57
Splitting at max spread
median of set closest to box centre
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 44 / 57
Outline
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 45 / 57
Randomization
Construct:
Create r kd-trees s.t. searches are largely independent.
Find O(1) coord’s maximizing variance: Pick one randomly
May sample the data; split it about the mean of the sample.
Use bounded #levels; bucket contain several points.
Principal Component Analysis finds moment axes: rotate to alignthem with the coordinte axes. Or, random rotation.
Search:
Upper bound on total #nodes to be searched.
Priority queue stores candidates across r trees.
Similar effect to r lower-dim projection [Silpa-Anan,Hartley’08]
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 46 / 57
FLANN: Fast Library for ANN
Typically r ≤ 6 independent trees.
Target d = 128, n > 104 (SIFT encoding of images).
Given data: Automatic choice of configuration,and algorithm (Randomized kd-trees, Hierarchical k-means trees)
[Lowe:IJCV04], software [Lowe,Muja]
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 47 / 57
kd-GeRaF
Implement k-ANN
Simultaneous search, no backtracking.
Quickselect algorithm to find median in O(n)
Accelerated distance computations (dot product, see below)
Public domain C++: https://github.com/gsamaras/kd_GeRaF
(WebApp: 195.134.67.90:8080)
[Avrithis,E,Samaras’15]
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 48 / 57
Randomization
RotationEvery tree uses a randomly rotated pointset, thus using adifferent set of dimensions/coordinates.
Split dimensionPick t dimensions of highest variance. Choose one randomlyat every node while building the tree.
Split ValueThe pointset’s median in split dimension plus uniformlydistributed δ ∈ [−3∆√
d, 3∆√
d], ∆ = diameter of pointset.
ShufflingThe split value may be witnessed in several points, instead ofpicking always the same point, shuffle them to break ties.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 49 / 57
Performance
Parameters (auto or manual)
r Number of trees in forest (points are stored once)
t Number of hi-variance dimensions used for splits
Maximum number of points-per-leaf
c Maximum number of leaves to be checked during search
ε Determine search accuracy
Practical complexity
Automatic parameter configuration yields fastest preprocessing,successful trade-off between accuracy and speed.
Most competing methods suffer from slow parameter configuration,running out of memory, unstable search behaviour.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 50 / 57
Implementation
Search
Descend every tree to leaf, store unvisited branch nodes inmin-priority queue Q.
Examine nodes in Q, until c/1 + ε leaves are checked.
On descending a tree:– at leaf: update currently best distance.– at node: if query in the left half-space: insert right child to Q,descend to left child; or vice versa.
Distance computation
‖x − q‖2 = ‖x‖2 + ‖q‖2 − 2q · x , where the first two can be stored.Offers up to 10% speedup.
Project idea: ‖x − q‖2 − ‖y − q‖2 reduces to 2q · (y − x).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 51 / 57
Experiments
Faster than ann/bbd, flann for d ≥ 1, 000 (up to 10,000), n ≤ 106.
(i) SIFT images: n = 106, d = 128, BBD out of memory.GIST: d = 960 (ii) n = 105 (iii) n = 106, query < 1s, 90% exact.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 52 / 57
Experiments on Oxford set, CroW features (neural nets)
n = 5062 images, d = 512.Brute force: 5.22 sec. Build takes 2 sec for kd-Geraf.
points per leaf trees no t max leaf check miss(%) time(ms)
1 1 4 2 4 0.21 1 4 4 0 0.31 4 4 4 0 0.5
Search with ”Noisy” queries.
points per leaf trees no t max leaf check miss(%) time(s)
16 8 32 32 3.6 0.0116 32 64 64 0 0.0316 64 64 4 0 0.02
Search with Oxford queries.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 53 / 57
Outline
1 Orthogonal Range Search2D orthogonal range search
2 Nearest NeighborsApproximate nearest neighbor
3 Treeskd-treesRandomized kd-treesBalanced Box-Decomposition trees
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 54 / 57
BBD-trees
Box: set theoretic difference of two boxes,one enclosed in the other (inner is optional)
”Empirical runtimes for most distributionsshow little/no practical advantage overkd-trees” [Arya,Mount,et al’94,98].
Complexity:
O(1) points per leaf, space = O(dn).
Height = O(log n): every 4 levels reduce #points by > 2/3.
Construct = O(dn log n).
k εNNs in time O((d/ε)d + k) log n).
Dynamic: point insertion/deletion = O(log n).
overview
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 55 / 57
Construction
Tree constructed by applying 2 operations, when cell contains > 1 points:
(Fair) Split:– by hyperplane parallel to a coordinate plane, through midpoint.– If inner box exists, do not intersect it.– Exponential decrease of region size (quadtree).
Shrink:– partitions box into inner and outer boxes.– If inner box exists, it lies inside new inner box.– Exponential decrease in number of points per cell (kd-tree).
Two strategies:– Splits and Shrinks alternate.– Split until both children with < 2/3 of parent’s points, then Shrink.
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 56 / 57
ANN search
Algorithm
1 Find leaf that contains query q; min-dist δ from q to points in leaf
2 Order leaves in increasing distance from q (priority search).
3 Find closest leaf to q, compute min-distance δ from q to points in cell
4 While distance of next closest leaf < δ(1 + ε), compute min-distancebetween q and points in cell: if < δ, this distance becomes δ.
Time Complexity
Point location = O(log n).
#cells explored = c < (1 + 6d/ε)d .
ANN query = O(cd log n).
I.Emiris (Athens, Greece) Computational Geometry Spring 2018 57 / 57