游戏搜索树,我是否必须首先构建树?

时间:2010-10-22 17:21:58

标签: search view tree minimax

在游戏搜索树中,有许多算法可以获得最优解,例如minimax算法。我开始学习如何用minimax算法解决这个问题,算法清晰。但我对树本身感到困惑,在游戏中像tic tac toe节点的数量不是很大,但在其他像国际象棋这样的节点上有很多。我认为这需要大量的内存空间。那么有没有算法同时评估和构建树?

1 个答案:

答案 0 :(得分:3)

游戏状态树通常不构建为完整的数据结构。相反,状态在创建时进行评估,并且大多数在此过程中被丢弃。通常,保持来自被评估回到当前游戏状态的状态的链表。但是,如果一个动作显示出比另一个动作好得多,那么穷人动作的整行将被丢弃,因此它将不会占用内存空间。

搜索像国际象棋这样的游戏的状态空间的一种简单方法是递归搜索给定深度。在这种情况下,实际上一次存在很少的游戏状态,而那些确实存在的游戏状态仅在调用堆栈上被引用。更复杂的算法将创建更大的树,但(特别是对于国际象棋)没有人会维护所有可能状态的树。对于国际象棋,广度优先搜索可能更好,使用队列而不是堆栈,这将仅维护树中某个深度的状态。更好的是优先级队列,其中存储最佳状态以进行进一步评估,并且最坏状态被完全丢弃。