【发布时间】:2010-10-24 17:06:02
【问题描述】:
给定一组具有 x,y 坐标的数百万个点,选择什么算法可以快速找到距某个位置最近的 1000 个点?这里的“快速”是指在家用电脑上大约 100 毫秒。
蛮力意味着进行数百万次乘法然后对它们进行排序。虽然即使是简单的 Python 应用程序也可以在不到一分钟的时间内完成,但对于交互式应用程序来说仍然太长了。
点的边界框是已知的,因此可以将空间划分为一个简单的网格。但是这些点的分布有些不均匀,所以我怀疑大多数网格方块会是空的,然后突然其中一些会包含大部分点。
编辑:不一定要准确,实际上可能很不准确。例如,如果前 1000 名实际上只是前 2000 名中的一些随机点,那也没什么大不了的。
编辑:点集很少改变。
【问题讨论】:
-
是否必须准确,或者是否也可以,例如选择的 1000 个中有 900 个是最接近的 1000 个?
-
点的集合是固定的吗?在一组点发生变化之前,您会为几个不同的位置获取最接近的 1000 个点吗?
标签: algorithm gis partitioning distance linear-algebra