在博弈搜索树中,有很多算法可以得到最优解,比如极小极大算法。我开始学习如何用极小极大算法解决这个问题,算法清晰。但是我对树本身感到困惑,在像井字游戏这样的游戏中节点的数量不是很大,但在像国际象棋这样的其他游戏中却有很多节点。我认为这需要很大的内存空间。那么是否有任何算法可以同时评估和构建树?
问问题
1592 次
1 回答
3
游戏状态树通常不会构建为完整的数据结构。相反,状态在创建时就被评估,并且大多数在此过程中被丢弃。通常,维护从被评估状态返回到游戏当前状态的链表。但是,如果显示一个动作比另一个好得多,那么差动作的整行将被丢弃,因此它将不占用内存空间。
为象棋之类的游戏搜索状态空间的一种简单方法是递归地进行搜索到给定的深度。在这种情况下,实际上很少有游戏状态同时存在,而那些确实存在的游戏状态只是在调用堆栈上引用。更复杂的算法将创建一个更大的树,但(尤其是对于国际象棋)没有一个会维护所有可能状态的树。对于国际象棋,广度优先搜索可能更好,使用队列而不是堆栈,这将只维护树中某个深度的状态。更好的是优先级队列,其中存储最好的状态以供进一步评估,而最差的状态被完全丢弃。
于 2010-10-22T18:11:59.947 回答