Graph 有向图上的A*算法

Graph 有向图上的A*算法,graph,graph-algorithm,a-star,Graph,Graph Algorithm,A Star,您好,有人能帮我理解A*算法是如何在这个图上工作的吗 我想找到从1到7的最低成本路径 下面是我如何解决这个问题的: 从1->7: {1,2}f = 2+7=9 {1,3}f = 11+0=11 {1,4}f = 1+11=12 扩展2 {1,3}f = 11+0=11 {1,4}f = 1+11=12 {1,2,5}f = (2+3)+5=10 扩展5 {1,3}f = 11+0=11 {1,4}f = 1+11=12 {1,2,5,3}f = (2+3+5)+0=10 {1

您好,有人能帮我理解A*算法是如何在这个图上工作的吗

我想找到从1到7的最低成本路径

下面是我如何解决这个问题的: 从1->7:

{1,2}f = 2+7=9
 {1,3}f = 11+0=11
 {1,4}f = 1+11=12
扩展2

{1,3}f = 11+0=11
 {1,4}f = 1+11=12
 {1,2,5}f = (2+3)+5=10
扩展5

{1,3}f = 11+0=11
 {1,4}f = 1+11=12
 {1,2,5,3}f = (2+3+5)+0=10
 {1,2,5,7}f = (2+3+7)+0=12
扩展3

{1,3}f = 11+0=11
 {1,4}f = 1+11=12
 {1,2,5,7}f = (2+3+7)+0=12
 {1,2,5,3,7}f = (2+3+5+1)+0 = 11
 {1,2,5,3,6}f = (2+3+5+1)+1=12

所以正确的答案是
{1,2,5,3,7}f=(2+3+5+1)+0=11
。我在写吗?

我将假设括号中的数字是使用某种启发式方法从给定节点到目标的估计距离(乍一看,它们似乎与可接受的启发式函数一致)。如果是这种情况,那么这就是成本方程中的h(x):

f(x)=g(x)+h(x)

g(x)将是从源到节点x的路径的实际成本。从节点1开始,我们有3条输出边:2、3和4

f(2)=g(2)+h(2)
f(3)=g(3)+h(3)
f(4)=g(4)+h(4)

填写图表中的数字,我们得到:

f(2)=2+7=9
f(3)=11+0=11
f(4)=1+11=12

f(2)是最低成本,因此我们选择节点2。下一步不是很有指导意义(因为我们只能转到节点5),只是要注意g(x)是从源节点到达节点x的实际成本,即边1->2的成本加上边2->5的成本:

g(5)=2+3=5

从那里g(3)和g(7)将把它们的边缘成本加到g(5)上。希望您现在看到这是如何进行的,并且能够完成这条路径

编辑: 他的例子有些混乱。我将尝试在这里使用的符号和我使用的符号之间进行转换

以另一个问题中的决策为例,我们选择了从S到A的路径。我们必须继续到节点X或Y的路径。它们显示:

{S,A,X}f=(1+4)+5=10
{S,A,Y}f=(1+7)+8=16

在我使用的符号中,这相当于:

f(X)=(1+4)+5=10,其中g(X)=(1+4)和h(X)=5
f(Y)=(1+7)+8=16,其中g(Y)=(1+7)和h(Y)=8


正如您在这两种情况下所看到的,当您试图决定下一步选择哪个节点(X或Y)时,您必须将到达该节点的实际成本g(X)与从该节点到达目标的估计成本h(X)相加。

在g(5)上,我们是否应该加上5的估计距离?所以g(5)=(2+3)+5=10?这就是我在一个例子中看到的,它增加了所涉及的边的成本加上该节点的估计距离。哪一个是正确的?我很困惑……请告诉我哪种方法是正确的……g(x)不包括任何估计;它是到达节点x的路径的实际长度。(h(x)是从节点x到目标的剩余路径的估计值。)例如,
g(1)=0
g(7)
将是作为最终答案找到的路径的长度。所以这个例子是错误的?也许如果你包含了这些信息,你的实际问题是什么,以及之前引起你困惑的帖子,这个帖子永远不会被关闭。我建议你用这些信息编辑你的问题,看看是否可以重新打开。至于你的问题,这个例子似乎完全正确。过一会儿我会看一下,然后再给你回复。从技术上讲,由于
{1,3}
{1,2,5,3,7}
在最后一步中的成本相同,你应该检查路径
{1,3,6}
{1,3,7}
,因为它们最终的成本可能与
{1,2,5,3,7}
相同。在某些图中,您可能会得到多条成本相同的路径。但它们不是:)。如果存在多条成本相同的路径,则考虑哪一条路径?
但它们不
——但您只知道这一点,因为您扩展了这些路径,发现它们的成本更高。:)至于从多条路径中选择哪条路径,您可以选择所有路径,第一条、最后一条、随机路径、边缘最少的路径、边缘最多的路径、边缘最北的路径。。。换句话说,这完全取决于你试图解决的问题和你的偏好。