只要启发式是可以接受的,A *是否与负权重一起使用?

时间:2011-03-04 18:04:40

标签: algorithm graph-theory

这似乎是 true 但我在互联网上找不到任何人说这是,所以我想确定一下。如果您同意,请告诉我,如果是,为什么。理想情况下是纸张的链接,或者,如果您不同意,则是反例。

G成为带有一些负边的有向图。我们想在G上运行A *。

首先,如果G从源头到达目标的负周期并达到目标,则没有可接受的启发式,因为不可能低估达到目标的成本,因为它是-∞。 / p>

如果没有这样的周期,可能会有一些可接受的启发式。特别是,所有负边缘的总和将始终低估达到目标的成本。

我的印象是,在这种情况下,A *可能会正常工作。

P.S。我可以在图表上运行Bellman-Ford,检测负循环,如果没有,则重新加权以消除负边缘。但是,如果我知道没有负循环,我可以跳过它并运行A *。


这是非常错误的。顶点的成本是启发式和迄今为止构建的路径的总和......而启发式低估了达到目标的成本,启发式和到目前为止所采用的路径的总和可能不是。千里马culpa。

似乎用一个低估了达到目标的成本的函数对开放集进行排序,而通过一个给定的顶点可能会工作......如果一个人使用<sum of negative edges in the graph>作为这样的函数,它看起来像它退化成图遍历。

3 个答案:

答案 0 :(得分:4)

考虑具有3个节点和3个权重的示例:

1 2 -10
1 3 -3
3 2 -8

从1到2,存在重量为-10的路径。所以你首先得到它并将它建立为2的最小路径。然而,路径(1-3-2)小于第一个路径。

答案 1 :(得分:3)

在评分最高的答案给出的例子中: (2,-10)进入优先级队列。同意。 (3,x)也是如此,其中x <= - 11作为启发式是可接受的。 现在(3,x)弹出x&lt; -10,我们得到正确的解决方案。

我不能将此作为评论,因为我没有足够的声誉。

答案 2 :(得分:0)

  

这是非常错误的。顶点的成本是它的总和   启发式和迄今为止构建的路径......而启发式   低估了达到目标的成本,即启发式的总和   到目前为止所采取的路径可能不会。

A *永远不会扩展节点,使得启发式和到目前为止所采用的路径之和(f值)大于最佳路径长度。这是因为,沿着最优路径,总有一个节点的f值小于或等于最优成本。

因此,即使有负权重边,如果存在这样的路径,A *也会找到最佳路径,只要有有限数量的边,其f值小于最优成本。