我不明白A * Pathfinding

时间:2011-06-18 12:31:16

标签: algorithm path-finding a-star

据我所知:

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

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

在具有最高F值的打开列表中查找节点,并使当前节点成为节点。

重复直到最终到达目的地,然后浏览目标节点的父节点,然后您将返回到起始节点。那将是最好的途径。

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

(从下图)从起始绿色瓷砖向下,F值为60的那个。这是在开放列表中,并且具有比右下角74更低的F值。为什么选择74一个而不是60?

A*

2 个答案:

答案 0 :(得分:4)

在我看来,你应该看看Amit's A* Pages。他们真的很好地解释算法是如何工作的以及如何使其工作。

就您的情况而言,该图显示了打开列表中第一个节点的G分数。当您查看网站时,首先为第一个节点评估构建整个图表,并且作者显示第一个最佳节点是右侧的节点。然后,前进使用基于当前节点的分数加上下一个的移动成本的G分数,该分数未在图上显示。

虽然在网站上说:

  

如果你通过当前的广场到达那里,那么检查当前广场左边的最后一个广场,看看G得分是否低于 。没有骰子。

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

答案 1 :(得分:0)

您没有移动到F值为60的正方形的原因是因为它位于“关闭列表”中。 F值为88和74的正方形位于“打开列表”中,可以检查下一步行程。