2011-03-31 111 views
0

我知道Minimax决策树是实现棋盘游戏AI的好方法。目前,我正试图实施一个名为Gomoku的游戏(连续5次)。但有一件事,我很困惑:Minimax/Alpha Beta算法 - 在Gomoku中寻找AI的移动

我环顾四周,似乎几乎所有的Minimax/AlphaBeta算法返回一个整数。具体对我来说,eval(bestGomokuBoard)的返回值。我应该如何找到胜利板的坐标?

这是我到目前为止所做的: 我有一个20x20的整数数组,代表一个空白空间(0),计算机(1)和播放器(2)。 为了减少开销,Minimax树中的每个节点都是较大阵列(较小的参考帧)的9x9阵列表示。我的eval函数返回一个int,我的minimax/alphabeta算法返回一个int。我如何找到AI动作的坐标?

并提前致谢!

回答

2

你可以做出两个稍微不同的最大函数。一个只返回一个整数(得分),另一个最大值函数(例如maxWithBestMoverootMax),它返回得分的最佳举措。递归调用顺序将比是:

maxWithBestMove --> min --> max --> min --> max.... 

已经在Negamax Framework看看笔记#2的chessprogramming维基。我给了here一个类似的答案。

+0

这就是为什么我爱Stackoverflow。我几乎在代码中提出了一个关于可怕错误的问题,但是当我看到这个答案时,我立即发现了问题的根源并修正了所有问题,尽管我的问题有所不同。然后我不需要问愚蠢的问题。 8) – 2013-03-11 12:29:57

+0

我很高兴我可以帮助你解答我的问题。 – 2013-03-11 20:37:15