有没有比Dijkstra算法更好的方法来找到不超过指定成本的最快路径

时间:2012-11-16 10:29:54

标签: algorithm dijkstra

我遇到了找到不超过指定成本的最快路径的问题。 这个问题也有类似问题,但它们之间存在很大差异。 这里,可以出现在数据中的唯一记录是从较低点到较高点的那些记录(例如,1 - > 3可能出现,但3 - > 1可能不出现)(见下文)。不知不觉中,我会使用Dijkstra。那些额外的信息,可能会让它在比Dijkstras算法更快的时间内完成。 你觉得怎么样?

假设我已经指定了最高费用和4条记录。

// specified cost
    10 
// end point
    5
//(start point) (finish point) (time) (cost)
    2 5 50 5
    3 5 20 9
    1 2 30 5
    1 3 30 7
// all the records lead from a lower to a higher point no.

我必须决定,是否有可能从第(1)点到第(5)点(当没有路径成本< =比我们得到的或者当1-5之间没有连接时)它是不可能的如果是这样的话,最快的方式是什么。

此类数据的输出为:

80 // fastest time
3 1 // number of points that (1 -> 2)  -> (2 -> 5)

请注意,如果有记录说您可以移动 1-> 2

1 2 30 5

它不允许您移动 2< -1

1 个答案:

答案 0 :(得分:1)

对于深度为n的每个节点,路径的最小成本为n/2 * (minimal first edge at the path + minimal edge connecting to the node) - 算术系列的总和。如果此计算超出所需的最大值,则无需检查后面的节点。关闭这些节点并在其余节点上应用Dijkstra。