最基本的 minimax 只评估叶节点,标记获胜、失败和平局,并将这些值备份到树上以确定中间节点值。在博弈树难以处理的情况下,您需要使用截止深度作为您的极小极大函数的附加参数。一旦达到深度,您需要对不完整状态运行某种评估函数。
minimax 搜索中的大多数评估函数都是特定于域的,因此为您的特定游戏寻找帮助可能很困难。请记住,评估需要返回某种特定玩家获胜的位置百分比期望值(通常是最大值,尽管在使用 negamax 实现时不是)。几乎任何研究较少的游戏都将与另一个研究较多的游戏非常相似。这与游戏拾音器密切相关。仅使用 minimax 和 alpha beta,我猜这个游戏很容易上手。
如果你必须为非终端位置创建一个评估函数,这里有一点帮助分析棍子游戏,你可以决定它是否对日期游戏有用。
通过查看最终位置和所有可能导致该位置的移动,开始寻找一种强制结果的方法。在棍子游戏中,终端位置是在最后一步中剩余 3 个或更少的棍子。因此,立即进入最终位置的位置将 4 棒留给您的对手。现在的目标是无论如何都给你的对手留下 4 根棍子,这可以通过留给你 5、6 或 7 根棍子来完成,并且你想迫使对手将你留在其中一个位置。为了让你进入 5、6 或 7,你的对手需要的位置是 8。不断地继续这个逻辑,一个模式很快就会变得可用。总是给你的对手一个能被 4 整除的数字,你赢了,否则,你输了。
这是一个相当琐碎的游戏,但确定启发式的方法很重要,因为它可以直接应用于您的作业。由于最后一步在前,并且您一次只能更改 1 个日期属性,因此您知道要赢,还需要恰好剩下 2 步……以此类推。
祝你好运,让我们知道你最终做了什么。