Algorithm 最快路径算法

Algorithm 最快路径算法,algorithm,path-finding,Algorithm,Path Finding,我目前正在实施一个导航系统,用于穿越欧洲。到目前为止,我已经实现了最短路径(Dijkstra和A*)。这是最简单的部分,现在我需要一些最快路径的算法。它必须快速可靠 我知道,只需为道路质量赋值(例如1条公路、2条主要公路……),然后将这些值乘以路线成本,最后使用Dijkstra或a*,就可以做到这一点,但这还不够复杂 我在寻找更精确的算法。地图本身包含各种数据,如道路质量、速度限制、交通灯位置等,我想使用它 有什么好的算法吗?或者至少是对*?的良好修改,这取决于您所说的“最快”路径的含义。如果您

我目前正在实施一个导航系统,用于穿越欧洲。到目前为止,我已经实现了最短路径(Dijkstra和A*)。这是最简单的部分,现在我需要一些最快路径的算法。它必须快速可靠

我知道,只需为道路质量赋值(例如1条公路、2条主要公路……),然后将这些值乘以路线成本,最后使用Dijkstra或a*,就可以做到这一点,但这还不够复杂

我在寻找更精确的算法。地图本身包含各种数据,如道路质量、速度限制、交通灯位置等,我想使用它


有什么好的算法吗?或者至少是对*?

的良好修改,这取决于您所说的“最快”路径的含义。如果您知道在每段道路上可以行驶的平均速度,那么您可以转换图形,使边缘包含“行驶时间”而不是“距离”。然后,您可以对新图形执行最短路径算法


不过,你似乎提到这还不够好。我认为问题在于你必须定义“最快”的含义。道路质量如何影响速度?交通灯呢?这些都是你必须想办法解释的变量。如果你作为一个人不知道你将要使用的度量标准,那么很难让计算机去做

在最短路径实现中,您选择了距离作为边的权重

现在,如果您想找到最快的路径,只需选择预期行程时间作为边的权重即可。类似地,如果希望获得最可靠的路径,可以选择一些“可靠性”度量作为边的权重


*(虽然并不总是最优的,因为它依赖于启发式函数)可能是这种类型应用程序的最佳选择。如果你的A*不够精确,我建议你要么选择Dijkstras,要么花一些时间调整和改进你的启发式函数。

最快路径算法只是一种最短路径算法,其中边缘权重是加权旅行时间而不是距离。A*仍然是你的最佳选择,你只需要根据可用数据想出一个很好的方法来估计权重(并提出一个启发式)。为什么你不能在计算边缘成本时考虑所有因素(如你建议的道路质量)?我认为必须有更好的方法。但是,如果每个人都认为修改后的A*是最好的解决方案,那么我会很好地使用它。A*中没有任何内容规定您应该选择什么作为边权重。因此,从某种意义上说,它仍然不是a*.a*的修改版本。a*始终是最优的,只要它的启发式是可接受的,至少根据计算机科学对“最优”Hmm的定义。。我不确定我是否明白在这种情况下可接受的含义。然而,我怀疑对于一个具有任意边权的图来说,有这样的启发式函数是可能的。你当然可以-这些情况下的可容许函数很容易找到(例如对于实际距离-你只是测量架空线(你是这样叫它的吗?),谢谢你的回答。将不同的权重与简单的启发式(如欧几里德距离)混合真的可以吗?我想我至少需要将启发式调整为加权。你的启发式函数应该尽可能准确地估计剩余的距离/旅行时间/等等。