我有一个〜5000点的列表(指定为经度/纬度对),我想从用户指定的另一点中找到最近的5个点。最近点的算法
任何人都可以提出一个有效的算法来解决这个问题吗?我在Ruby中实现了这个功能,所以如果有一个合适的库,那么这将是很好的知道,但我仍然对算法感兴趣!
更新:有几个人问过关于这个问题的更多具体细节。所以这里是:
- 这5000点大部分都在同一个城市。外面可能有一些,但可以肯定的是,99%的人位于75公里半径范围内,并且所有人都在200公里范围内。
- 点的列表更改很少。为了争辩,我们假设它每天更新一次,并且在那个时候我们必须处理几千个请求。
如果是几个点这是确定一个走一个。 – Andrey
无论您选择哪种算法,您都可以通过比较平方距离而不是实际距离来节省一些时间。如果您不需要知道实际距离,则无需执行平方根操作。 –