如何将最小最大算法应用于十六进制游戏

How to apply min max algorithm to a hex game

如何使用最小最大算法为十六进制游戏设计一个有效的算法,因为它的分支因子太高了。 正常的井字游戏是使用简单的最小最大算法制作的,但在这种情况下,对于 11*11 的棋盘游戏,我们有 121 种组合,因此如何减少组合的数量是什么方法最小化这么多组合

游戏的动作树只能针对像井字游戏这样的简单内容进行充分探索。其他游戏,如国际象棋,太深了,每一步都有太多选择(分支因子大)。

在您的问题的一般层面上,有一些措施可以解决此限制。

最重要的是,您需要一种启发式方法来为中间游戏位置分配一个值。这使您能够应用 minimax,即使无法分析直到游戏结束的所有动作。这些启发式方法可能非常简单。例如,在国际象棋中,您可以给棋子一个值(兵 1,马 3,等等)然后简单地相加。考虑到在董事会中的位置等等,您可能会使它变得更复杂一些,但这里会在性能方面做出妥协。这是许多人工智能系统的基础。

一个经典的改进叫做alpha-beta pruning。这是基于对运动树的节点进行有序的评估,使得已经保证比其他的差的分支可以被省略,从而提高效率。 (例如,考虑一个玩家可以强制执行获胜动作的分支:此分支中此动作的替代方案并不重要,因为如果游戏以这种方式进行,该玩家将始终强制执行获胜动作)。

其他算法改变了我们探索运动树的方式。 Monte-Carlo tree search 就是一个例子。这里的核心思想是评估节点并以协调的方式探索树(与之前相反,我们首先尽可能深入地探索树,然后评估叶子)。这里我们有一个探索-开发平衡(你必须决定是否要开发更有前途的位置,或者你是否想要探索新的、可能令人失望的动作)。