A* 解决“积木世界”游戏的一个好的启发式函数是什么?

人工智能 搜索 一个明星 启发式函数
2021-10-25 11:33:01

我正在为块世界问题开发一个启发式解决方案。

我尝试使用不合适的块数作为我的h(n). 好像有点无效。

有人可以为这个问题指出一个合适的启发式方法,并用几个例子解释它是如何工作的。

块世界问题示例:

Initial(starting State):
Stack 0: D,B
Stack 1: A,E
Stack 2: C
Stack 3: F


Goal State:
Stack 0: A,B,C,D,E,F
1个回答

您可以开始对以下状态的不良情况进行处罚:

1) 堆栈 0 外的块数。

假设你在 stack 0 外的每个块中惩罚 10 个单位,那么上面的起始状态会在惩罚分数上增加 40 个单位

2)堆栈中的块数 0 在与目标状态不同的位置。

假设您在堆栈 0 的错误位置对堆栈 0 中的每个块进行 50 个单位的惩罚,那么起始状态将惩罚分数加 50(块 D)。

继续, 你可以添加尽可能多的惩罚,只要你认为有助于解决问题。

然后对于每一步,您列出所有可能的块移动,对于每个移动,您计算该移动产生的总罚分并选择得分最低的移动(如果平局选择第一个移动)。您不断重复上述操作,直到达到最终状态(罚分 0)。