I have a set of 3 dimensional points. I want a quick query of the k nearest neighbours of any of these points. I know that a usual way of doing this is oct-tree, however I think that with the below described data structure the query would be much faster.
I want a minimal graph on the points as vertices, which have the following property:
Between any 2 points P1, P2: there is a path in which for all interior point P3:
distance(P1, P3) <= distance(P1, P2).
My problem though is that I cannot figure out how to compute this minimal graph in an affordable time.
7 years later i think i can answer my own question :
The graph i was looking for is called monotone proximity graph – the most known example is the Delaunay triangulation/tetrahedralization.
Compared to space-partition trees: such a graph provides faster query time but needs more memory, takes much more time and computation may fail because of degeneracy problems.
Due to these problems of them, i think generally their application to speed up KNN queries is not advisable, and one should simply use kd-trees.