使用Dijkstra或Bellman-Ford算法修改最短路径

时间:2010-12-25 13:56:32

标签: c++ algorithm shortest-path dijkstra bellman-ford

我们如何使用Dijkstra或Bellman-Ford的算法在图中找到最短路径,如果我们去特定顶点,其中一些边会受到影响。这样,受影响的边缘长度将大于或小于原始长度。

1 个答案:

答案 0 :(得分:1)

如果我理解这一点,您希望根据当前路径中访问的节点更改图表中边缘的成本。评论的一个例子是:

“Edge AB的长度为3,但如果你也访问节点C,则AB的长度为5”

现在,似乎没有办法像Djikstra的算法那样使用,因为在该算法中有一个贪婪的步骤,它在每个阶段选择“最佳”节点。此时“最佳”节点可能在以后发生变化(由于上述规则)这一概念违反了贪婪方法的概念,该方法假设我们按照从最佳到最差的成本有效地访问节点。我不确定这是否是NP硬的建议,但它肯定不能从一开始就使用Dijikstra方法。但问题为+1。