Algorithm 只要启发式是可接受的,A*是否适用于负权重?

Algorithm 只要启发式是可接受的,A*是否适用于负权重?,algorithm,graph-theory,Algorithm,Graph Theory,这似乎是真的,但我在网上找不到任何人这样说,所以我想确定一下。请告诉我你是否同意,如果同意,为什么。最好是一篇论文的链接,或者,如果你不同意的话,一个反例 设G是一个具有负边的有向图。我们想在G上运行* 首先,如果G具有可从源到达并达到目标的负循环,则不存在可接受的启发式,因为不可能低估实现目标的成本,因为它是-∞ 然而,如果没有这样的循环,则可能存在一些可接受的启发式。特别是,所有负面因素的总和总是低估了实现目标的成本 我的印象是,在这种情况下,A*可能很好用 另外,我可以在图表上运行Bell

这似乎是真的,但我在网上找不到任何人这样说,所以我想确定一下。请告诉我你是否同意,如果同意,为什么。最好是一篇论文的链接,或者,如果你不同意的话,一个反例

G
是一个具有负边的有向图。我们想在
G
上运行*

首先,如果
G
具有可从源到达并达到目标的负循环,则不存在可接受的启发式,因为不可能低估实现目标的成本,因为它是
-∞

然而,如果没有这样的循环,则可能存在一些可接受的启发式。特别是,所有负面因素的总和总是低估了实现目标的成本

我的印象是,在这种情况下,A*可能很好用

另外,我可以在图表上运行Bellman Ford,检测负循环,如果没有,则重新称重以去除负边。但是,如果我知道没有负循环,我可以跳过它,运行一个*


这完全是错误的。顶点的代价是启发式和迄今为止建立的路径的总和。。。虽然启发式方法低估了实现目标的成本,但启发式方法和迄今为止采取的路径之和可能不会。最大的过失


似乎用一个低估了实现目标的成本的函数对开放集进行排序,而通过一个给定的顶点可能会起作用。。。如果将
用作这样的函数,它看起来会退化为图形遍历。

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

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

从1到2,存在权重为-10的路径。首先得到这个,并将它建立为2的最小路径。然而,有一条路径(1-3-2)比第一条路径小。

在排名靠前的答案给出的示例中: (2,-10)进入优先级队列。同意。 (3,x)也是如此,其中x 这完全是错误的。顶点的代价是 启发式和迄今为止建立的路径。。。而启发式 低估了达到目标的成本,即启发式的总和 而迄今为止所走的道路可能并非如此

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


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

也可以在cstheory.stackexchange.com.Argh上询问,是的,如果我的启发式是常数,我基本上再次得到Dijkstra。。。我应该看到的。我正在用一种不同的启发式方法处理一类特殊的图形,我一直认为它更一般。这里没有PM,但我希望你在我的编辑中输入。。。如果不使用路径成本顶层[a]+启发式[a,目标],而是使用启发式[source,a]+启发式[source,goal],那么最终的图形遍历将扩展节点,从而降低以后发现成本的可能性。我相信这是错误的,正如尼特什在下文中所述。树搜索将使用负启发式,但图搜索可能不会。一个*图搜索甚至可以被一个正的可接受启发式打破。“就是这样。”Ant,我的意思是负启发。在这种情况下,由于我们有负的边权重,允许的启发式必须在某些地方是负的。此外,我们需要使用树搜索范式而不是图形搜索来实现它。添加到引用的文本中(换句话说):如果启发式低估了实现目标的成本,那么到目前为止所采用的路径加上启发式肯定会低估最小路径(使用当前节点)的成本。