A * - 简单的图形示例 - 错误的结果

时间:2011-08-18 19:08:05

标签: algorithm a-star

我已经实施并使用了A *几次,并且认为我知道有关A * ...的所有信息。直到我遇到这个例子:

A* directed graph example

该图由4个节点和6个有向加权边组成。每个节点用H=…表示启发式。启发式显然是可以接受的,所以我没有看到任何问题。

问题是找到从开始目标的路线,总成本最低。正确的解决方案是采用成本36和18的边缘。

我对A *的实现执行以下步骤(省略与关闭列表相关的任何操作):

  • 起始节点是{G = 0,H = 200, - > F = 200}并被选为“当前节点”
  • 其所有邻居都已添加到公开列表= {{G=5, H=100, F=105}, {G=36, H=100, F=136}}
  • 选择新的“当前节点”,即打开列表中具有最小F的节点,该节点是F = 105的节点,图像中的上部节点。
  • 该节点的邻居被添加到开放列表中,该列表具有{{G = 36,H = 100,F = 136},{G = 58,H = 0,F = 58}}的元素。 / LI>
  • 再次选择一个新的当前节点,即目标节点,因此算法终止,并选择成本为5和53的路径。

因此实现会产生错误的结果。这些步骤应该不会发生什么?

1 个答案:

答案 0 :(得分:4)

对于可接受的启发式,它必须以上面的为目标的实际成本。你的启发式是不可接受的,这就是你得到错误答案的原因。例如,请参阅Wikipedia article on A*