如何使用min max算法设计一种有效的十六进制算法算法,因为它的分支因子太高了。 正常的tic tac toe游戏可以使用简单的最小最大算法进行,但在这种情况下,对于11 * 11棋盘游戏,我们有121种组合,所以对于这个如何减少组合的数量是什么方法最小化这么多组合
答案 0 :(得分:0)
游戏的动作树只能完全探索像tic-tac-toe这样的简单东西。其他游戏,如国际象棋,将会过于深入,并且每次运动都有太多选项(大分支因子)。
在你的问题的一般层面上,有一些措施来对抗这种限制。
最重要的是,您需要一种启发式方法来为中间游戏位置分配值。这使您可以应用minimax,即使无法分析游戏结尾的所有动作。这些启发式方法可能非常简单。例如,在国际象棋中你可以给棋子一个值(棋子1,骑士3等等)并简单地加起来。考虑到电路板上的位置等等,你可能会让它变得更复杂,但这里的性能会有所妥协。这是许多人工智能系统的基础。
经典改进称为alpha-beta pruning。这是基于以有序的方式评估运动树的节点,从而可以省略已经保证比其他分支更差的分支,从而提高效率。 (例如,考虑一个分支,其中一个玩家可以强制获胜运动:在这个分支内的这种运动的替代方案并不重要,因为如果游戏以这种方式进行,该玩家将总是强制获胜运动。)
其他算法改变了我们探索运动树的方式。 Monte-Carlo tree search就是一个例子。这里的核心思想是评估节点并以协调的方式探索树(与之前相反,我们首先尽可能深地探索树,然后我们评估叶子)。在这里,我们有一个探索 - 剥削均衡(你必须决定你是否想要开发更有前途的头寸,或者你是否愿意探索新的,可能令人失望的动作)。