【问题标题】:MinMax Simple Demonstration for TicTacToe井字游戏的 MinMax 简单演示
【发布时间】:2012-12-02 22:34:10
【问题描述】:

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

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

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

非常感谢! V

【问题讨论】:

  • Google 发现很多关于这个话题的讨论。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多