MinMax简单演示TicTacToe

时间:2012-12-02 22:34:11

标签: c++ minimax game-theory alpha-beta-pruning

我一直在拔出我的头发试图找出MinMax算法,并希望alpha-beta修剪算法有效。我对发生的递归感到困惑。

  • 首先,每个中间板是否得分?或者只有终端游戏板。
  • 其次,究竟是什么回归?该程序如何知道下一步的位置?我看到我应该返回棋盘分数(在tictactoe中,-1,0,1),但该程序如何知道接下来应该播放哪个动作。

我试过找一个简单的C或c ++程序来证明这一点,但我运气不好。我正在尝试学习这些算法,我可以为我的计算机编程课程的其余部分创建一个演示文稿。

非常感谢! V

1 个答案:

答案 0 :(得分:2)

仅对终端位置(在静止搜索之后)进行评分。非终端位置将递归minimax()调用返回的分数与迄今为止返回的最佳分数进行比较。在alpha-beta的情况下,返回的分数也与alpha值进行比较。

极小极大点正在产生一个分数。你的错误似乎是认为minimax搜索功能需要返回最佳移动。它可以用这种方式编码,但是你可以更简单地在另一个执行移动的函数中使用顶级循环,使用minimax()来生成分数并执行移动。以最佳分数跟踪移动并在循环完成或选择移动的时间用完时返回该移动。