【问题标题】:Find Nearest Point correspond to given point in scatter diagram查找与散点图中给定点对应的最近点
【发布时间】: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


【解决方案1】:

最好的办法是在数据集上实现一些最小生成树算法,然后在添加数据时,将地址添加到 MST。 O(ElogV)

然后您将能够搜索每个节点邻接列表以找到最近的节点,而不是搜索整个表。 O(E)

或者写一个贪心算法来搜索图。给它一个点和一个向外看的半径,那么它就不会看>半径之外的点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2018-08-28
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多