迭代加深A star(ID A *)是一种记忆有界搜索。我的问题是,当我们从ID A *中的开放状态s'
到达新状态s
时,为什么我们不测试s'
是否已处于“开放状态”或“封闭的国家“?
对于某些问题,例如:数独,因为状态永远不会达到两次,因为“问题状态图”是一棵树。然而,对于其他问题,例如:8个谜题,它可能一次又一次地达到状态。因此,绝对应该测试一个州是否已经“被访问”(无论是在开放状态还是关闭状态)。
如果必须进行此类测试,则ID A *不再受内存限制,因为必须存储所有可能状态的大型哈希表。
答案 0 :(得分:1)
我们不测试s'是否重复以保持内存配置文件较小。通常,IDA * 实际上会多次扩展相同的状态。
答案 1 :(得分:1)
AI编程通常是尝试许多不同的算法调整,以找到最适合您需求的算法。如果很可能已经访问过新状态,那么增加确定状态是否已被访问的额外开销可能是性能改进。但是可能还有许多其他变量需要考虑,例如算法如何适应问题,可用内存,处理能力,可扩展性。我认为成为一名优秀的AI程序员意味着您了解不同算法的优缺点,并了解了有多少不同的问题会影响每种算法的性能。我不认为您应该认为像ID A *这样的算法仅限于不考虑是否已达到状态。如果您认为通过考虑重新进入状态会表现更好,请尝试一下,看看是否能改进您的解决方案。