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

Art*_* B. 9 algorithm graph-theory

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

我们G是一个有向图有一些负面的边缘.我们想要运行A*G.

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

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

我的印象是,在这种情况下,A*可以正常工作.

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


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

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

Mar*_*riy 5

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

1 2 -10
1 3 -3
3 2 -8
Run Code Online (Sandbox Code Playgroud)

从 1 到 2 存在权重为 -10 的路径。所以你首先得到这个并将其建立为到 2 的最小路径。但是有一条路径 (1-3-2) 比第一个路径更小。


Nit*_*apu 5

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

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