Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm A*算法搜索_Algorithm_Tree_Path Finding - Fatal编程技术网

Algorithm A*算法搜索

Algorithm A*算法搜索,algorithm,tree,path-finding,Algorithm,Tree,Path Finding,我有一棵像下面那棵一样的树。边上的数字是成本(g),节点中的数字是从启发式函数(h)到目标的估计距离。球门用灰色遮住 如果我从S开始,路线,A星搜索(f(x)=g(x)+h(x))的遍历是否如下:S>B>h>M 这是一个有趣的问题,因为如果我们在贪婪搜索ALGO中寻找下一步的函数= f(x)=h(x)< /代码>,我们只考虑节点中的值并选择至少一个。基于此,我们将从S开始,然后继续A(最低值最佳),但最左边的分支是不正确的,因为它不会导致任何目标节点。我认为贪婪的搜索会在这棵树上失败,这对吗

我有一棵像下面那棵一样的树。边上的数字是成本(g),节点中的数字是从启发式函数(h)到目标的估计距离。球门用灰色遮住

如果我从S开始,路线,A星搜索(
f(x)=g(x)+h(x)
)的遍历是否如下:
S>B>h>M


这是一个有趣的问题,因为如果我们在贪婪搜索ALGO中寻找下一步的函数= <代码> f(x)=h(x)< /代码>,我们只考虑节点中的值并选择至少一个。基于此,我们将从S开始,然后继续A(最低值最佳),但最左边的分支是不正确的,因为它不会导致任何目标节点。我认为贪婪的搜索会在这棵树上失败,这对吗

否,贪婪搜索将遍历S->A->D->B->F。
启发式搜索只是试图加快搜索速度,但它不会使搜索失败,最糟糕的情况是,它比没有启发式搜索花费的时间更长。

首先,这不是一棵树,而是一棵树,因为有些节点有多个父节点


其次,是的,A*将使用此启发式返回正确的结果,因为启发式是(即,它从不高估真实成本)。如果不是这样,A*可能不会返回正确的结果。

+1用于此正确答案、使用正确的术语以及指出树/DAG上A*所需的条件。另一个答案完全错了。-1这个答案不正确。*搜索并不总是返回最优结果-启发式必须是一致的(即,保持三角形等式<代码>启发式(当前,目标)@BenjaminGruenbaum:事实上,可接受性始终是A*的正确性标准。但是,具有一致的启发式很好,因为它允许我们加快算法的速度(特别是,我们可以保证以最佳方式到达封闭列表中的任何节点,因此它将永远不必重新排队到开放列表中。非一致性启发法并非如此)@BlueRaja DannyPflughoeft不在图上它不在图上。在图上,很可能有一个不一致的可接受的启发式。我脑海中的简单例子:G=(V,E)是一个加权有向图。V=(s=开始,B,G=目标)。E=(s,B)成本2000,(B,G)成本1000,(a,G)成本2200。让我们定义一个启发式H,H(s)=2100,H(B)=50,H(G)=0.H显然是可接受的(所有启发式成本都小于实际距离)但是,A*在这里找到的解决方案:S->B->G需要花费3000美元,而最佳解决方案A->G需要花费2200美元。@BenjaminGruenbaum:这是不正确的,A*在该示例中找到了正确的路径。打开
B
后,算法会注意到
G
已经在打开列表中,因此会将
f(B-->G)
f进行比较(S-->G)
,请注意,这将导致更高的成本。因此,当
G
最终退出队列时,它的父级仍然是
S
。如果您想进一步讨论这个问题,请提出一个关于a*和可采性的新问题,并从这里将我链接到它。@BlueRaja DannyPflughoeft抱歉,忘记了ping。这是一个回复:这是我想要的在评论中编数字,在我的头脑中建立图表:)无论如何,这里有一个简短的例子,说明一个可接受但不一致的启发式方法在*