我读到Gomoku可以使用Minimax和Alpha-Beta Pruning算法实现它。所以,我阅读了这些算法,现在了解游戏将如何解决。但是,当我坐下来编写代码时,我面临着如何处理它的问题。
如同,
任何人都可以指出我正确的方向吗?
答案 0 :(得分:5)
教科书中提出的minimax算法通常应用于简单的游戏,例如: tic-tac-tou,最终状态只能在最小玩家和最大玩家之间的几个转弯内到达。但是,对于Gomoku来说,不可能达到所有最终状态。为什么我们需要达到最终状态?我们需要对移动进行评估,即移动是否良好。
所以你的第一步是设计一个移动的评估函数,它告诉你如果你做一次移动你将获得多少价值。例如你有一个3连续,沿着那一行移动来制作4将是非常有价值的。
假设您有一个非常聪明的评估功能,那么每次都可以找到最佳的移动而无需任何搜索。所以在你做任何min-max,alpha-beta之前,你可能会设计一个好的评估函数。一个很好的例子是Emacs的gomoku源代码,它有一个很好的AI播放器而不使用任何搜索。
接下来转到min-max和alpha-beta。
似乎我没有回答你的问题。其实我不需要。我假设你知道最小 - 最大甚至alpha-beta搜索tic-tac-tao的细节。通过设计评估功能,您将更好地理解gomoku,并为此设计搜索算法,就像您现在可以为tic-tac-tou做的那样。