【发布时间】:2012-01-06 17:40:15
【问题描述】:
所以,我一直在玩最小最大树,以在两人棋盘游戏中创建一个简单的计算机玩家。我了解算法的基础知识,但有一个案例让我的火鸡大脑无法理解……当 MIN 可以分两步获胜时会发生什么?
例如,假设一个四连击/井字游戏类型的游戏,其中只有两个玩家中的一个可以拥有一个方格。如何让 MAX 占据一个方格仅仅是为了防止 MIN 获得方格?
让我们尝试一个简化的示例(以漂亮的 ASCII 艺术显示),其中选项是左和右。假设他的树太大而无法一直遍历到终端状态,所以中间值是根据启发式函数计算的(下面用 * 标记)。 -INF 是 MIN 获胜的最终状态。
MAX (a)
/ \
A B
/ \
MIN (b) MIN (c)
/ \ / \
A B A B
/ | | \
-INF *5 *22 *20
MIN 将选择状态 (b) 中的动作 A,得分为 -INF
MIN 将选择状态 (c) 中的动作 B,得分为 +20
MAX 将选择状态 (a) 中的动作 B,得分为 +20
当然,问题是如果 MAX 选择 B,那么 MIN 将执行操作 A(因为该方块仍然可用),因此 MIN 将获胜。我需要让MAX来实现在状态(a)中选择动作A的价值,以防止MIN在下一步中得到-INF。
我会在代码中进行大量测试以检查 MIN 是否可以获胜,但在我看来,算法应该解决这个问题。我认为我在确定导致此问题的 MAX 值时遗漏了一部分。
(编辑澄清)
【问题讨论】:
标签: artificial-intelligence minmax