我目前正在实施一个用于在欧洲路由的导航系统。到目前为止,我已经实现了最短路径(Dijkstra和A *)。这是最简单的部分,现在我需要一些算法来获得最快的路径。它必须快速可靠。
我知道只需将价值分配给道路质量(例如1条高速公路,2条主干道......),然后将这些值乘以路线成本并最终使用Dijkstra或A *,就可以完成,但它并不复杂够了。
我正在寻找更准确的算法。地图本身包含各种数据,如道路质量,速度限制,交通灯位置等,我想使用它。
这有什么好的算法吗?或者至少对A *?
进行了很好的修改答案 0 :(得分:10)
在最短路径的实现中,您选择距离作为边缘的权重。
现在,如果你想找到最快的路径,你只需选择预期的旅行时间作为边缘的重量。同样,如果你想要最可靠的路径,你可以选择一些“可靠性”测量作为边缘的权重。
A *(虽然并不总是最佳的,因为它依赖于启发式功能)可能是此类应用程序的最佳选择。如果你的A *不够准确,我建议你去Dijkstras或花一些时间调整和改善你的启发式功能。
答案 1 :(得分:1)
这取决于“最快”路径的含义。如果您知道可以在路段的每个路段上行驶的平均速度,那么您可以转换图形,使边缘包含“行驶时间”而不是“距离”。然后你可以在新图上做一个最短路径算法。
但是你似乎提到这还不够好。我认为问题在于你必须定义“最快”的含义。道路质量如何影响速度?交通灯怎么样?这些都是您必须找到解决方法的变量。如果你作为一个人不知道你将使用的指标,那么很难让计算机去做。