📜  游戏中的最优决策

📅  最后修改于: 2022-05-13 01:58:09.135000             🧑  作者: Mango

游戏中的最优决策

只要文明存在,人类的智力就一直被游戏所利用,有时甚至达到了惊人的程度。游戏因其抽象字符而成为 AI 研究人员感兴趣的主题。游戏的状态很容易描述,参与者通常仅限于少数具有预定结果的动作。体育比赛,如槌球和冰球,包含明显更复杂的描述、更多种类的可能动作,以及定义活动合法性的相当模糊的规定。除了机器人足球,这些实体游戏并没有激起人工智能社区的兴趣。

游戏通常很有趣,因为它们很难解决。例如,国际象棋的平均分支因子约为 35,游戏通常会扩展到每个玩家 50 步,因此搜索树大约有 35100 或 10154 个节点(尽管搜索图“仅”有大约 1040 个唯一节点)。因此,游戏就像现实世界一样,需要做出某种决定的能力,即使在不可能计算出最佳选择的情况下也是如此。

低效率在游戏中也受到严厉惩罚。虽然 A 搜索的半效率实现只需要两倍的时间来完成,但在所有其他因素相同的情况下,一个在利用其可用时间方面效率只有一半的国际象棋软件几乎肯定会被打死。作为这项研究的结果,出现了一些关于充分利用时间的有趣建议。

游戏中的最优决策

让我们从有两个玩家的游戏开始,出于显而易见的原因,我们将他们称为 MAX 和 MIN。 MAX是第一个移动的,然后他们轮流直到游戏结束。比赛结束时,获胜的玩家获得积分,而失败的玩家获得惩罚。游戏可以形式化为一种具有以下元素的搜索问题:

  • S 0游戏的初始状态,它描述了它在开始时是如何设置的。
  • 玩家(s):定义状态中的哪个玩家有动作。
  • Actions (s):返回一个州的一组合法动作。
  • 结果(s,a):定义移动结果的转换模型。
  • Terminal-Test (s):终端测试,如果游戏结束则返回 true,否则返回 false。终端状态是游戏已经结束的状态。
  • 效用 (s, p):效用函数(也称为支付函数或目标函数)确定在玩家p的终端状态s中结束的游戏的最终数值。国际象棋的结果是赢、输或平,其值为 +1、0 或 1/2。双陆棋的收益范围从 0 到 +192,但某些游戏的可能结果范围更大。零和游戏(令人困惑地)被定义为对所有玩家的总奖励对于每个游戏实例都相同的游戏。国际象棋是一种零和游戏,因为每场游戏的收益为 0 + 1、1 + 0 或 1/2 + 1/2。 “恒和”是一个更可取的名称,22 但零和是通常的术语,如果每个参与者都被收取 1 的费用,那么它是有意义的。

游戏的游戏树由开始状态、ACTIONS函数和 RESULT函数——其中节点是游戏状态,边表示运动。下图描绘了井字游戏树的一部分(noughts 和 crosss)。 MAX 可以从他的起始位置进行九种不同的动作。游戏在设置 X 的 MAX 和设置 O 的 MIN 之间交替进行,直到我们到达与终端状态相对应的叶节点,例如一个玩家连续三个或所有方块都被填满。从MAX的角度看,终端状态的效用值用每个叶子节点上的数字表示;高值被认为对 MAX 有利,对 MIN 不利

井字游戏的游戏树相对较短,只有 9 个! = 362,880 个终端节点。然而,由于国际象棋中有超过 1040 个节点,因此博弈树最好被视为在现实世界中无法实现的理论构造。但是,无论博弈树有多大,MAX 的目标都是找到一个稳固的举措。叠加在整个游戏树上并检查足够多的节点以允许玩家确定要进行什么移动的树称为搜索树。

导致目标状态的一系列动作 - 一个胜利的最终状态 - 将是典型搜索问题的最佳解决方案。 MIN 在对抗性搜索中对此有话要说。因此,MAX 必须设计一个或有策略,指定 MAX 的初始状态移动,然后是 MAX 在每个可能的 MIN 响应产生的状态下的移动,然后是 MAX 在每个可能的 MIN 对这些移动的反应产生的状态下的移动,等等。这与 AND-OR 搜索方法非常相似,MAX 充当 OR,MIN 充当 AND。当与一个绝对可靠的对手对战时,最佳策略产生的结果至少与任何其他计划一样出色。我们将从演示如何找到最佳计划开始。

我们将转到下图中的简单游戏,因为即使是像井字游戏这样简单的游戏也太复杂了,我们无法在一页上绘制完整的游戏树。 MAX 的根节点移动由字母 a1、a2 和 a3 指定。 MIN 对 a1 的可能答案是 b1、b2、b3 等等。在 MAX 和 MIN 各走一步后,本场比赛结束。 (在游戏术语中,这棵树由两个半步组成,并且是一个深度,每一步都称为一个层。)这个游戏中的终端状态具有从 2 到 14 的效用值。

游戏的效用函数

给定博弈树 (n),可以从每个节点的极小极大值中找到最优策略,我们将其表示为 MINIMAX。假设两个玩家从那里到游戏结束都处于最佳状态,处于相应状态的效用(对于 MAX)是节点的极小最大值。终端状态的用处显然是它的极小值。此外,如果给定选项,MAX 更愿意转移到最大值状态,而 MIN 想转移到最小值状态。所以这就是我们所拥有的:

\begin{aligned} &\text { MINIMAX }(s)= \\ & \begin{cases}\operatorname{UTILITY}(s) & \text { if TERMINAL-TEST }(s) \\ \max _{a \in A c t i o n s(s)} \operatorname{MINIMAX}(\operatorname{RESULT}(s, a)) & \text { if } \operatorname{PLAYER}(s)=\operatorname{MAX} \\ \min _{a \in A c t i o n s(s)} \operatorname{MINIMAX}(\operatorname{RESULT}(s, a)) & \text { if } \operatorname{PLAYER}(s)=\operatorname{MIN}\end{cases} \end{aligned}

多人游戏中的最优决策

让我们用这些定义来分析上所示的博弈树。游戏的 UTILITY函数为底层的终端节点提供效用值。因为第一个 MIN 节点 B 具有三个后继状态,其值为 3、12 和 8,所以其极小最大值为 3。极小最大值 2 也被其他两个 MIN 节点使用。根节点是一个 MAX 节点,极小最大值分别为 3、2 和 2,因此极小最大值为 3。我们还可以找到极小极大决策的根:动作 a1 是 MAX 的最佳选择,因为它导致最大极小值。

这种最佳 MAX 游戏的概念要求 MIN 也以最佳方式进行——它最大化了 MAX 的最坏情况结果。如果 MIN 没有达到最佳状态会发生什么?然后,证明 MAX 可以表现得更好就很简单了。其他策略对次优对手的表现可能优于极小极大方法,但它们总是会胜过最优对手。