If I have a set of N points in 2D space, defined by vectors X and Y of their locations. What is an efficient algorithm that will
- Select a fixed number (M) points to remove so as to maximize the shortest nearest-neighbor distance among the remaining points.
- Remove a minimum number of points so that the shortest nearest-neighbor distance among the remaining points is greater than a fixed distance (D).
Sorting by points by their shortest nearest neighbor distance and removing the points with the smallest values does not give the correct answer, as then you remove both points of close pairs, while you may only need to remove one of the points in those pairs.
For my case, I am usually dealing with 1,000-10,000 points, and I may remove 50-90% of points.