Search 游戏搜索树,我必须先建立树吗?

Search 游戏搜索树,我必须先建立树吗?,search,view,tree,minimax,Search,View,Tree,Minimax,在博弈搜索树中,有很多算法可以得到最优解,比如极大极小算法。我开始学习如何用minimax算法解决这个问题,算法清晰。但我对树本身感到困惑,在像tic-tac-toe这样的游戏中,节点的数量不是很大,但在像国际象棋这样的其他游戏中有很多节点。我认为这需要很大的内存空间。那么,有什么算法可以同时评估和构建树呢 游戏状态树通常不是作为完整的数据结构构建的。相反,在创建状态时对其进行评估,大多数状态在创建过程中被丢弃。通常,会维护一个从正在评估的状态到游戏当前状态的链接列表。但是,如果一个动作比另一个

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

游戏状态树通常不是作为完整的数据结构构建的。相反,在创建状态时对其进行评估,大多数状态在创建过程中被丢弃。通常,会维护一个从正在评估的状态到游戏当前状态的链接列表。但是,如果一个动作比另一个动作好得多,那么错误动作的整行将被丢弃,因此它将不会占用内存空间

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