【发布时间】:2017-06-13 12:10:12
【问题描述】:
我在数据库表中保存了地址坐标(纬度,经度)的集合。
基于用户当前位置,例如用户在 (55,65),应该有一个有效的算法来预测与用户当前位置 (55,65) 相对应的最近地址,例如在这种情况下,最近的地址是 Address13。 查找每个点的距离并不是有效的解决方案,因为地址数据可能会增长到数百万。
【问题讨论】:
-
对于 2D 中的最近邻问题,kD-tree 是一种方便的解决方案。查找这个词。
-
由于您需要查看每个点,因此任何算法都需要 O(n)。简单的算法也是 O(n) 所以我看不出你想要什么。你会用相同的点和不同的“用户当前位置”多次计算吗?这可能会更有效,但不是只寻找一个使用当前位置。
-
此算法将在配备 GPS 的移动应用程序中实现。当用户旅行时,他打开应用程序,应用程序将根据他当前的位置建议最近的地址(例如必胜客)。所以位置可以随着用户的移动而改变。
-
如果地址永远不会改变,最好按照@YvesDaoust 的建议将数据存储在 k-d 树中。
-
如果您有一百万个位置 (?),您可能正在使用一些外部数据库 GIS,它肯定支持位置查询。
标签: algorithm math geometry linear-algebra graph-algorithm