algorithm - Minimax 和 tic tac toe - 我的算法正确吗?

标签 algorithm artificial-intelligence tic-tac-toe minimax

我为 TTT 实现了极小极大算法。当我让 AI 玩家迈出第一步时,它会将所有可能走法的极小极大值评估为 0。这意味着它可以选择网格上的任何方 block 作为第一步。但是,任何 Tic Tac Toe 指南都会告诉您,在迈出第一步时选择角落或中心方格是更好的选择,因为获胜的机会更高。

为什么我的算法没有反射(reflect)这一点?

编辑:澄清一下,我想问的是:这是 minimax 算法的限制还是我的实现不正确?

最佳答案

您的算法不必反射(reflect)这一点:如果您尝试所有起始位置,您会发现角落和中心比其他单元格为您提供更多获胜路径。

由于 tic-tac-toe 缺乏复杂性,minimax 可以从第一步开始一直向前看直到游戏结束。随着游戏的进行,可用移动的数量会迅速减少,因此完整搜索的完成速度非常快。

对于更复杂的游戏(奥赛罗、西洋跳棋、国际象棋),所谓的“开卷”变得更加重要。游戏开始时可用的着法数量非常多,因此传统的方法是从开局“书本”中选择一个着法,并在前三到六局中使用预先计算好的“书本着法”。不考虑书外的 Action ,在基本保持相同的 Action 上节省了大量 CPU。

关于algorithm - Minimax 和 tic tac toe - 我的算法正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16122946/

相关文章:

java - 旧 Java GUI Tic-Tac-Toe 上一片空白

algorithm - 给定一个网格,分割为n block 不同形状和大小的算法

algorithm - 找到修改后的阶乘 N 模一些与 N 互质的数

python - Pandas:应用滚动函数来计算新的列值

machine-learning - 决策树中的假设函数空间

c# - 我怎样才能使这个极小极大算法完美地工作

algorithm - 连接树中的节点

Java - 具有多个值的复杂数据结构和使用文件访问数据结构

python - 我自己的 Python OCR 程序

井字游戏中的 Java Alpha-Beta 修剪