Minimax / Alpha Beta 算法 - 在五子棋中寻找 AI 的走法
据我所知,极小极大决策树是实现棋盘游戏人工智能的好方法。目前,我正在尝试实现一个名为 Gomoku(连续 5 个)的游戏。但有一件事情让我感到困惑:
我环顾四周,似乎几乎所有 Minimax/AlphaBeta 算法都返回一个整数。特别对我来说,eval(bestGomokuBoard) 的返回值。我该如何找到获胜棋盘的坐标?
这是我到目前为止所做的: 我有一个 20x20 整数数组,代表空白空间 (0)、计算机 (1) 和玩家 (2)。 为了减少开销,极小极大树中的每个节点都是较大数组(较小参考系)的 9x9 数组表示。我的 eval 函数返回一个 int,我的 minimax/alphabeta 算法返回一个 int。如何找到AI移动的坐标?
并预先感谢您!
I understand that a Minimax decision tree is a good approach to implementing an AI for a board game. Currently, I am trying to implement a game called Gomoku (5 in a row). But there is one thing that I am confused about:
I've looked around and it seems that almost all Minimax/AlphaBeta algorithms return an integer. Specifically for me, the return value of eval(bestGomokuBoard). How am I supposed to find the coordinate of the winning board?
Here is what I have done so far:
I have a 20x20 Array of integers, representing an empty space(0), computer(1), and player(2).
To reduce overhead, each node in the Minimax Tree is a 9x9 array representation of the larger array (a smaller frame of reference). My eval function returns an int, my minimax/alphabeta algorithm returns an int. How do I find the coordinates of the AI's move?
And thank you in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以制作两个略有不同的最大函数。一个仅返回整数(分数),另一个 max 函数(例如 maxWithBestMove 或 rootMax)返回分数和最好的举动。递归调用顺序将是:
看看 Negamax 中的注释 #2国际象棋编程维基上的框架。我在此处给出了类似的答案。
You can make two slightly different max-functions. One which returns only an integer (the score), and another max-function (e.g. maxWithBestMove or rootMax), which returns the score and the best move. The recursive call order would than be:
Have a look at Note #2 in the Negamax Framework on the chessprogramming wiki. A similar answer I gave here.