Iterative deepening A star (ID A*) 是一种内存有界搜索。我的问题是,当我们从 ID A* 中的打开状态 s
到达新状态 s'
时,为什么我们不测试是否 s'
是否已经处于“打开状态”或“关闭状态”?
对于某些问题,例如:数独,因为状态永远不会达到两次,因为“问题状态图”是一棵树。然而,对于其他问题,例如:一个8字谜题,它很可能会一次又一次地达到一个状态。因此,绝对应该测试一个状态是否已经“访问”(处于打开或关闭状态)。
如果必须进行此类测试,则 ID A* 不再受内存限制,因为必须存储所有可能状态的大型哈希表。
最佳答案
我们不测试 s' 是否重复,以保持内存配置文件较小。一般来说,IDA* 实际上会将同一个状态展开多次。
关于algorithm - 为什么迭代加深A星不需要测试重复状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19213751/