Approximate Nearest Neighbor Search in High Dimensions

The nearest neighbor problem is defined as follows: Given a set of points in some metric space , build a data structure that, given any point , returns a point in that is closest to (its "nearest neighbor" in ). The data structure stores additional information about the set , which is then used to find the nearest neighbor without computing all distances between and . The problem has a wide range of applications in machine learning, computer vision, databases and other fields. To reduce the time needed to find nearest neighbors and the amount of memory used by the data structure, one can formulate the {\em approximate} nearest neighbor problem, where the the goal is to return any point such that the distance from to is at most , for some . Over the last two decades, many efficient solutions to this problem were developed. In this article we survey these developments, as well as their connections to questions in geometric functional analysis and combinatorial geometry.
View on arXiv