寻找不超过指定成本的最快路径

时间:2012-11-15 18:38:22

标签: algorithm

我遇到了找到不超过指定成本的最快路径的问题。

假设我已经指定了最高费用和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

我必须决定,是否有可能从第(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

2 个答案:

答案 0 :(得分:2)

使用动态编程,如下所示:

Route(node, length, target, accumulated)

if length <= 0 return -1
if node == target return accumulated

For each adjacent node:
  current length = accumulated + Route(adjacent node, length - connecting edge weight, target, accumulated + connecting edge weight)
  min length = min(current length, min length)

return min length

答案 1 :(得分:0)

网络搜索发现http://www.cs.elte.hu/~alpar/publications/jour/AKCE_October_25.pdf表明这是一个合理的当前研究问题。在没有阅读论文的情况下,我的方法是使用动态编程,其中,对于每个节点,您为每个敏感K保留最短路径的记录,成本&lt; = K.您只需将K值保留在最短路径可用的位置随K变化的变化。如果成本或时间是可靠的小整数,这可能是可行的。如果没有,您可以构建示例问题,这些问题需要您计算并保留无法管理的部分解决方案。