GPS寻找邻近的道路

时间:2011-10-28 21:51:05

标签: oop graph gps dijkstra

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

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

寻求更多经验丰富的程序员的建议,你会如何解决这个问题?

这不是一个功课,最近刚毕业我作为一个宠物项目正在努力获得一些实践经验并填写简历。

编辑:我应该添加只在开始/结束点连接的道路

1 个答案:

答案 0 :(得分:1)

你可以先对x,然后按y对所有(x,y)点进行排序。对于n个点,如果使用基数排序,则该值应为O(nlogn)或甚至是线性的。然后你只需要查看清单;只要两个相邻的条目相等,它们相应的道路就会相交。