【问题标题】:How to approach writing five-in-a-row Tic Tac Toe game AI?如何编写 5-in-a-row Tic Tac Toe 游戏 AI?
【发布时间】:2012-02-22 12:08:14
【问题描述】:

我受到同事的挑战,要求我创建一个井字游戏 AI,它可以玩 5 人一排游戏(而不是传统的 3 人游戏)。我最初的想法是我创建了一个“记分牌”,即游戏中的每个单元格的分数都在 0 到无穷大之间。 AI 会找到形状并确定哪些位置具有多少价值并为单元格打分。最后,得分最高的单元格是选择。

有没有更好的方法来解决这个问题?

【问题讨论】:

  • 您可以在这个主题中查看答案:stackoverflow.com/questions/1545158/…
  • 我真的不知道如何将蒙特卡洛或如此复杂的野兽应用到像井字游戏/五子棋这样的游戏中。
  • “记分卡”基本上就是极小极大……一种为状态转换(可能的移动)分配值的算法。这通常与修剪相结合,修剪通过忽略(而不是递归)某些您知道不会是最佳的转换来减少计算。这可能是解决这个问题的最直接的方法(假设它不能像下面提到的那样直接解决,这会带来所有的乐趣)。欲了解更多信息,请参阅:en.wikipedia.org/wiki/…
  • @prelic,事情没那么简单。有些方格只有在与其他方格组合时才有价值。这种关系不会是累加的,甚至不是线性的。这是一个开始,但不是全部。

标签: artificial-intelligence theory tic-tac-toe


【解决方案1】:

5x5 Tic-Tac-Toe 可能仍然足够小,可以直接解决,这取决于您的时间限制,如果您对棋盘对称性很了解的话。奇怪的是,我昨晚刚刚写了一个通用技术的描述,对于这个问题:

How to code simple AI for a windows phone board game?

如果不是,那仍然是一个很好的起点。对我来说,下一个最明显的事情是更改董事会评估功能,并在您的时间限制内尽可能深入地搜索树。这个想法是,作为一个人,你可能对什么是强项和弱点有一些想法。因此,作为猜测,我们知道连续五次获胜,因此将 X 获胜指定为 +5,O 获胜指定为 -5。获胜的一种方法是在此之前连续获得四个,因此如果 X 连续四个,则可能值 4,如果 O 连续四个,则可能值 -4。这个想法是,如果你不能一直搜索到树下,你可以使用极小极大技术尽可能地搜索,确信你正在朝着强大的位置努力。

那个board eval函数只是一个例子。想出一个好的电路板评估功能可能很棘手,而且我所描述的功能遗漏了一些明显的细节。

要尝试的另一件事是使用遗传算法和神经网络来进化棋盘评估功能。现在的想法是将棋盘位置输入神经网络,神经网络进行棋盘评估,并让它们根据我上面描述的技术,锦标赛风格进行游戏。然后,在锦标赛回合之后,从获胜者和失败者中创建新的神经网络(通过遗传算法)。董事会评估功能自然演变。

【讨论】:

  • 我不明白的是,树与井字游戏有什么关系?如何将二维单元格数组映射到树?
  • @rFactor,不要将电路板位置(单元格)与电路板位置混淆。典型的 3x3 Tic Tac Toe 游戏有 9 个棋盘位置,但棋盘位置的数量要多得多。棋盘位置是游戏的完整状态。这里有一个很好的说明:scienceblogs.com/goodmath/2008/07/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多