Given a set of n points in d-dimensional Euclidean space, S ⊂ Ed , and a query point q ∈ Ed , we wish to determine the nearest neighbor of q, that is, the point of S whose Euclidean distance to q is minimum. The goal is to preprocess the point set S, such that queries can be answered as efficiently as possible. We assume that the dimension d is a constant independent of n. Although reasonably good solutions to this problem exist when d is small, as d increases the performance of these algorithms degrades rapidly. We present a randomized algorithm for approximate nearest neighbor searching. Given any set of n points S ⊂ Ed , and a constant > 0, we produce a data structure, such that given any query point, a point of S will be reported whose distance from the query point is at most a factor of (1 + ) from that of the true nearest neighbor. Our algorithm runs in O(log3 n) expected time and requires O(n log n) space. The data structure can be built in O(n2 ) expected time. The co...
Sunil Arya, David M. Mount