【问题标题】:How do i start with Gomoku?我如何从 Gomoku 开始?
【发布时间】:2010-03-13 12:03:58
【问题描述】:

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

如,

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

谁能指点我正确的方向?

【问题讨论】:

  • Alpha/beta 和 minimax 都需要评估当前棋盘位置对当前玩家的优势程度的能力,并且该评估在很大程度上取决于特定类型的游戏。您将不得不熟悉五子库,并根据您对游戏的了解,尝试各种评估功能,并选择性能最佳的一款。这更像是一个五子棋问题而不是编程问题。

标签: algorithm gomoku


【解决方案1】:

教科书中介绍的极小极大算法通常应用于简单的游戏,例如: tic-tac-tou,最终状态在 min player 和 max player 之间仅几个回合即可到达。然而,对于五子棋来说,不可能达到所有的最终状态。为什么我们需要达到最终状态?我们需要对移动进行评估,即移动是否好。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2012-07-10
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多