以有效的方式存储点以供将来计算距离

问题描述

我遇到了一些关于解决以下问题的有效算法的讨论:

假设我们有一张点的地图,并且有一些点表示停车。地图上的某个特定点有一辆车突然在寻找停车位,因此需要找到(为简单起见)最近的 10 个停车位。

问题是,如何巧妙地保存积分?按什么顺序?相对于什么?如何对距离进行分类

说明:

  1. 按城市保存积分,并不能解决问题,因为可能在邻近城市有更近的停车位。

  2. 朴素算法显然是不需要的 - 检查所有距离。

解决方法

我会尝试用正方形划分这个区域,每个正方形都将存储点(如果它将是“少量点”(易于计算)或包含点的 4 个较小的正方形 - 这样您就可以轻松获得最近点 - 通过检查最多 4 个方格。此外,如果这不符合您的需求,我会推荐 Nearest neighbor search 提到的 Yakov Galka 另外我会考虑例如 Google(地图)提出的方法,您可以找到最近的加油站等,但我找不到任何值得阅读的东西。