我遇到了找到不超过指定成本的最快路径的问题。 这个问题也有类似问题,但它们之间存在很大差异。 这里,可以出现在数据中的唯一记录是从较低点到较高点的那些记录(例如,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 。
答案 0 :(得分:1)
对于深度为n的每个节点,路径的最小成本为n/2 * (minimal first edge at the path + minimal edge connecting to the node)
- 算术系列的总和。如果此计算超出所需的最大值,则无需检查后面的节点。关闭这些节点并在其余节点上应用Dijkstra。