我不懂A *寻路

问题描述

| 据我了解: 将当前节点添加关闭列表中。 查找当前节点的相邻节点,如果它们不是不可移动节点且不在关闭列表中,则将该节点添加到打开列表中,并将父节点作为当前节点,并计算F,G和H值。如果该节点已经存在于打开列表中,请检查通过当前节点转到该节点是否会导致G值降低-如果是,请将该节点的父节点设为当前节点。 在打开的列表中找到具有最高F值的节点,并将当前节点设为该节点。 重复该操作,直到最终到达目标位置,然后遍历目标节点的父级,然后回到起始节点。那将是最好的道路。 因此,这对我的大脑来说很有意义,但是当我在图表上实际尝试时,我认为我没有正确理解它。 (从下图开始)从起始的绿色磁贴向下,一个F值为60的磁贴。在打开的列表中,其F值比右下方74的F值低。为什么选择74而不是60?     

解决方法

        我认为,您应该看一下Amit的A *页面。他们真的很能解释算法如何工作以及如何使其工作。 对于您的情况,该图显示了打开列表上第一个节点的G得分。当您查看该网站时,整个图首先是为第一个节点评估而构建的,并且作者表明,第一个最佳节点是右侧的节点。然后,前进将基于当前节点的得分加上下一个节点的移动成本使用G得分,该得分未在图中显示。 虽然在网站上说:   然后检查当前正方形最左边的最后一个正方形,以查看如果您通过当前正方形到达那里,G分数是否更低。没有骰子。 如果我没记错的话,它的G分数实际上是24(14(当前成本)+ 10(水平移动成本)),就像它下面的正方形一样。     ,        之所以不能移动到F值为60的正方形,是因为它位于“封闭列表”中。 F值为88和74的正方形位于“开放列表”中,可以进行下一步检查。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...