Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 我不知道';我不懂寻路_Algorithm_Path Finding_A Star - Fatal编程技术网

Algorithm 我不知道';我不懂寻路

Algorithm 我不知道';我不懂寻路,algorithm,path-finding,a-star,Algorithm,Path Finding,A Star,据我所知: 将当前节点添加到关闭列表中 查找当前节点的相邻节点,如果它们不是不可访问的节点且不在关闭列表中,则将该节点添加到打开列表中,父节点为当前节点,并计算F、G和H值。如果节点已存在于打开列表中,请检查通过当前节点转到该节点是否会导致较低的G值-如果是,则将该节点的父节点设置为当前节点 在打开列表中找到F值最高的节点,并将当前节点设置为该节点 重复此操作,直到到达目的地,然后遍历目的地节点的父节点,然后返回起始节点。这将是最好的途径 所以,这对我的大脑来说是有意义的,但是当我在一张图表上尝

据我所知:

将当前节点添加到关闭列表中

查找当前节点的相邻节点,如果它们不是不可访问的节点且不在关闭列表中,则将该节点添加到打开列表中,父节点为当前节点,并计算F、G和H值。如果节点已存在于打开列表中,请检查通过当前节点转到该节点是否会导致较低的G值-如果是,则将该节点的父节点设置为当前节点

在打开列表中找到F值最高的节点,并将当前节点设置为该节点

重复此操作,直到到达目的地,然后遍历目的地节点的父节点,然后返回起始节点。这将是最好的途径

所以,这对我的大脑来说是有意义的,但是当我在一张图表上尝试它时,我认为我没有正确地理解它

(从下图中)从开始的绿色瓷砖往下走,即F值为60的瓷砖。它位于打开列表中,并且F值低于右下角的74。为什么选了74个而不是60个


在我看来,你应该看看。他们真的很好地解释了算法如何工作以及如何使其工作

对于您的案例,图表显示了开放列表上第一个节点的G分数。当你看这个网站时,整个图表首先是为第一个节点的评估而构建的,作者展示了第一个最好的节点就是右边的那个。然后,向前移动使用基于当前节点的得分加上下一个节点的移动成本的G得分,图中未显示

但网站上说:

最后一个方格,在当前方格的最左边,如果你通过当前方格到达那里,检查G分数是否更低。没有骰子


如果我没记错的话,它的G分数实际上是24(14(当前成本)+10(水平移动成本)),就像它下面的正方形一样。

之所以不移动到F值为60的正方形,是因为它在“关闭列表”中。其中,F值为88和74的正方形在“开放列表”中,可以在下一步进行检查。

Hmm?我想我现在明白了。60 F分数是最低的,因此将其中一个设为当前节点。然后将其添加到关闭列表中。它只是不断地继续,直到74以下的所有节点都在闭合列表中,然后使具有74的节点成为当前正方形。这是因为在页面的下方,你可以看到绿色节点下方1-2的G分数发生了变化,这意味着60节点已成为当前正方形。@gladoscc:哦,我的A*知识已经过时了。=/不过,我还是建议你读一读Amit的pages系列,它们会有很大帮助。