【问题标题】:GPS finding neighboring roadsGPS寻找邻近道路
【发布时间】:2011-11-29 19:03:53
【问题描述】:

所以我正在构建一个 GPS 应用程序。我有一个道路对象的集合,每个对象都包含一个起点和终点(以及道路弯曲的其他中间点)。我已经实现了 dijkstra 的算法来查找最短路径(其中道路是图中的节点),但在运行它之前,我需要确定哪些道路彼此相邻(连接)以便创建边。

简单(?)的方法是遍历每条道路并在嵌套循环中查看是否有其他道路也在同一点开始/结束。但这似乎是 O(N^2) 效率低下。一种想法是将道路预先划分为区域(即在英国会有 NW、NE、E、SE、SW 等),然后只在同一区域中寻找邻居,从而减少搜索空间。

向更有经验的程序员寻求建议,您将如何解决这个问题?

这不是家庭作业,我最近毕业了,我正在把它作为一个宠物项目来做,以获得一些实践经验并稍微充实简历。

编辑:我应该添加只在起点/终点连接的道路

【问题讨论】:

    标签: oop graph gps dijkstra


    【解决方案1】:

    您可以对所有 (x,y) 点进行排序,先按 x,然后按 y。对于 n 点,如果使用基数排序,这应该是 O(nlogn) 甚至是线性的。然后你只需要浏览列表;只要两个相邻的入口相等,它们对应的道路就会相交。

    【讨论】:

      猜你喜欢
      • 2011-06-24
      • 2015-02-13
      • 2016-01-08
      • 2013-06-08
      • 2018-11-05
      相关资源
      最近更新 更多