1

我一直在努力弄清楚 MinMax 算法是如何工作的,希望 alpha-beta 修剪算法能够工作。我对发生的递归感到困惑。

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

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

非常感谢!五

4

1 回答 1

2

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

极小值的关键是产生一个分数。您的错误似乎是认为极小极大搜索功能需要返回最佳移动。它可以这样编码,但是对于您来说,在另一个执行移动、使用 minimax() 生成分数并取消执行移动的函数中使用顶级循环可能会更简单。跟踪得分最高的移动,并在循环完成或选择移动的时间用完时返回该移动。

于 2012-12-03T21:12:55.327 回答