我目前正在制作一个道路网络寻路程序,希望能够使用A *寻路找到最短路线(按距离)和最快路线(时间)。
对于最短的路线,我使用(道路的长度)作为成本,而我使用从相邻节点到末端节点的欧氏距离作为启发式算法。这很好。
但是,当试图(按时间)查找最快路线时,我假设汽车将一直以限速行驶,因此我将(道路长度/道路限速)用作成本。对于启发式算法,我使用从邻近节点到末端节点的欧几里得距离除以用于到达该邻近节点的道路的速度限制。这似乎很好用,但是当我在相同的起点和终点之间使用最短路径算法时,通常会得到更快的行驶时间,这不是我想要的。
我了解我的费用和启发式方法必须具有相同的程度,并且启发式功能必须一致且可以接受。我不确定我是否正在设计成本和启发式方法以正确地找到最快的路线。如果我还没有遵循正确的想法,我将如何找到最快的道路?
编辑:已解决
使用到目标节点的直线距离/网络中任何道路的最高速度限制,因为启发式意味着估算的成本(时间)将永远不会高估路径的真实成本。我的代码中的问题是我最初的启发式方法被高估了。 @btilly的建议解决了这个问题,因为启发式是可以接受的,并且会低估成本。