3

我读到了Gomoku,它可以使用 Minimax 和 Alpha-Beta Pruning 算法来实现。所以,我阅读了这些算法,现在了解了游戏将如何解决。但是当我坐下来写代码时,我遇到了如何处理它的问题。

如 ,

  • 如何设计 getNextMove 或 Max(Move) 等原型函数?
  • 下一步将如何搜索?
  • 直到我应该应用极小极大算法。
  • 我知道我可以在网上找到代码,但我想自己做。

谁能指出我正确的方向?

4

1 回答 1

5

教科书中介绍的极小极大算法通常应用于简单的游戏,例如井字游戏,其中最终状态可以在最小玩家和最大玩家之间仅几个回合内到达。但是,对于五子棋来说,不可能达到所有的最终状态。为什么我们需要达到最终状态?我们需要对一个动作进行评估,即一个动作是否好。

所以你的第一步是设计一个动作的评估函数,它告诉你如果你做一个动作,你将获得多少价值。例如,您连续有 3 个,沿着该行移动到 4 个将非常有价值。

假设你有一个非常聪明的评估函数,那么你每次都可以找到一个最优的着法,而无需任何搜索。所以在你做任何 min-max、alpha-beta 之前,你可能会设计一个好的评估函数。一个很好的例子是 Emacs 的 gomoku 源代码,它有一个很好的 AI 播放器,无需使用任何搜索。

接下来,您将转到 min-max 和 alpha-beta。

看来我没有回答你的问题。其实我不需要。我假设您知道最小最大甚至 alpha-beta 搜索井字游戏的详细信息。通过设计评估函数,您将对 gomoku 有更好的理解,并为它设计搜索算法,就像您现在可以为 tic-tac-tou 做的一样。

于 2010-03-13T12:52:26.853 回答