是否有可能解决Dots and Boxes游戏?

时间:2015-02-06 14:17:35

标签: artificial-intelligence scripting-language

我试图证明可计算性的游戏是Dots and Boxes

然而,我没有使用定理,而是试图通过创建一个AI,该游戏应该在该游戏中为玩家1或玩家2赢得100%的胜利。 如果创造一个100%的胜利AI是不可能的,那么我的目标是创造一个至少比所有其他AI更好的。截至目前,我正在用PHP编写所有内容,因为我正在与另一个用脚本语言编写的AI竞争。

这整件事是递归的,基本逻辑是: 计算所有可能移动的整个树 如果是我的AI,那么选择具有AI玩家最大点数的路线。如果是对手的AI,那么选择我的AI点数最少的路线。 Aka计算每个节点的保证点数。

计算完整棵树后,选择保证点数最多的路线。在偶数点上,随机选择。

整个计算过程将大致永远地计算在15x15板上,但是现在我想要的是在3x3矩阵上计算它。我将为数据库中的前6-8个移动存储最佳移动,以便现在必须再次重新计算它们,这将每个计算的复杂性从24改变!到18!

整件事情可行吗?我计算动作的方式有问题吗?有更好的方法吗?

2 个答案:

答案 0 :(得分:6)

问题有一个非常大的搜索空间,对于4x4网格,我们在搜索空间中有40个边缘,因此有2 ^ 40个状态。因此,对于更大的地图,完全不可能解决整个游戏。

有什么解决方案?首先,您可以查看Barker和Korf的工作Solving Dots-And-Boxes。这种问题是最先进的(2012年,现在也许,现在还不确定)。他们结合使用经典的Alpha-Beta修剪算法和一系列特定问题的解决方案。

您还可以尝试将Monte Carlo Tree Search应用于此问题。我并不知道这方面的工作,但蒙特卡洛已被证明是Go游戏的成功(在某种意义上类似于你的问题)。

答案 1 :(得分:4)

机器学习应该通过最初消除许多具有不良结果的分支来减少计算时间。它可能需要更长的时间来解决3x3板等小问题,但是当你开始在更大的板上测试你的算法时,它(我不能肯定地说没有写出两种算法并尝试它们)会更快,因为它应该是at = log(n)函数的一些变量。

例如,使用Reinforcement Learning它基本上会按照您的建议执行,计算大量的决策树。但是,它会了解到一些动作(例如那些给反对者提供一个盒子的动作)是不好的,并且不会浪费太多时间计算移动成功。

可行吗?取决于你有多少免费处理时间。使用一个小网格,直到您编写了一个像样的AI算法,然后您可以运行一台机器并观察它自己学习。没有比看着你的创作学到更多东西更令人满意了。就像生个孩子一样......可以在Dots and Boxes中击败你。