A*搜索中水壶问题的启发式函数



我对启发式价值有疑问。这就是我的困惑:

volume of the 3 jugs = (10,6,5) initial state = (10,0,0) goal state = (8,3,0)

我选择用A*搜索这个谜题。是不是像h(x,y,z)=(x*a)+(y*b)+(z*c)x y z是每个水壶里的水的体积a b c是水壶是空的还是空的。如果为空则等于0,如果不是则等于1。因为我在网上搜索的时候很困惑。你们能帮我指路吗?我也是人工智能的新手。谢谢。

对于A*最基本的启发是,不要遵循导致重复状态的分支。您保留所有先前状态的集合,如果下一个状态在集合中已经存在,则不遵循分支。

对于你的特定问题,一个可能的启发式函数可能是一个取你的下一个"状态"的函数。(罐的体积)减去"目标";状态,并根据您的下一个状态与目标的距离返回增量分数。特定的问题在每个独特的状态下最多有6个分支,所以你会选择遵循delta分数最低的分支。

h(state)  = dot(abs(state - goal), 1 / volume)

最新更新