Algorithm 我该如何从Gomoku开始?

Algorithm 我该如何从Gomoku开始?,algorithm,gomoku,Algorithm,Gomoku,我了解到它可以使用Minimax和Alpha-Beta修剪算法来实现。因此,我阅读了这些算法,现在了解了如何解决游戏。但当我坐下来编写代码时,我面临着如何处理它的问题 如: 如何设计getNextMove或Max(Move)等原型函数 下一步怎么走 直到什么时候我才应该应用minimax算法 我知道我可以在网上找到代码,但我想自己做 有人能给我指出正确的方向吗?教科书中介绍的极小极大算法通常应用于简单的游戏,例如tic tac tou,在这种游戏中,最小玩家和最大玩家之间只需几圈就可以达到最

我了解到它可以使用Minimax和Alpha-Beta修剪算法来实现。因此,我阅读了这些算法,现在了解了如何解决游戏。但当我坐下来编写代码时,我面临着如何处理它的问题

如:

  • 如何设计getNextMove或Max(Move)等原型函数
  • 下一步怎么走
  • 直到什么时候我才应该应用minimax算法
  • 我知道我可以在网上找到代码,但我想自己做

有人能给我指出正确的方向吗?

教科书中介绍的极小极大算法通常应用于简单的游戏,例如tic tac tou,在这种游戏中,最小玩家和最大玩家之间只需几圈就可以达到最终状态。然而,对于Gomoku来说,不可能达到所有最终状态。为什么我们需要达到最终状态?我们需要对一个动作进行评估,即一个动作是否好

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

假设您有一个非常聪明的评估函数,那么您每次都可以在不进行任何搜索的情况下找到最佳移动。所以在你做任何最小-最大,α-β之前,你可能会设计一个好的评估函数。Emacs的gomoku源代码就是一个很好的例子,它有一个很好的AI播放器,不需要使用任何搜索

下一步,移动到最小最大值和alpha beta


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

Alpha/beta和minimax都需要能够评估当前棋盘位置对当前玩家的有利程度,并且这种评估在很大程度上取决于特定类型的游戏。您必须熟悉Gomouku,根据您对游戏的了解,尝试各种评估功能,并选择性能最好的。这与其说是一个编程问题,不如说是一个Gomoku问题。