针对一个包含数百万个x,y坐标点的集合,如何快速查找距离某个位置最近的前1000个点?这里的“快速”指的是在家用电脑上约100毫秒内完成。
暴力算法意味着要进行数百万次乘法并将它们排序。即使是简单的Python应用程序也可以在不到一分钟的时间内完成,但对于交互式应用程序来说仍然太长。
点的边界框将是已知的,因此将空间分割成一个简单的网格是可能的。然而,点分布有些不均匀,所以我怀疑大多数网格方块会是空的,然后突然间有些方块会包含大部分的点。
编辑:不需要精确,实际上可以相当不准确。如果前1000个实际上只是前2000个中的一些随机点,那也不是很重要。
编辑:点集很少发生变化。