【问题标题】:Branching Factor and Depth分支因子和深度
【发布时间】:2016-04-19 23:11:55
【问题描述】:

问题

一个简单的两人游戏包括一堆 N 根火柴和两个 交替轮流的玩家。每回合,玩家移除 1, 2或3根火柴堆。删除最后一个的玩家 火柴杆输了。

A) 博弈树的分支因子和深度是多少(给出一个用N表示的通解)?搜索量有多大 空间?

B) 游戏中有多少个独特的状态?对于大 N 可以做些什么来提高搜索效率?

回答

A) 我说分支因子是 3,但我证明这是合理的,因为玩家最多只能删除 3 个匹配项,这意味着我们的树通常会有三个孩子。关于深度的第二部分,我不确定。

B) N x 2 其中 N 是剩余匹配数。我不确定我们如何才能使搜索更有效率?也许引入 Alpha-beta 修剪?

【问题讨论】:

    标签: algorithm minimax


    【解决方案1】:

    一个: 对于深度,想象一下最长的游戏会是什么样子。这是由两名玩家组成的游戏,每回合仅移除 1 场比赛。由于有 n 次匹配,这样的游戏将需要 n 轮:树的深度为 n。

    乙: 只有 2*N 个状态,每个状态都可以从 3 个较高火柴棒数的状态访问。由于随着游戏的进行,匹配的数量必然会减少,因此可能状态的图是 DAG(有向无环图)。因此,动态规划方法可以分析该博弈。最后,你会看到最优移动只取决于N mod 4,N 是剩余匹配数。

    编辑:N mod 4 的证明想法: 每个位置要么是输,要么是赢。失败的位置是一种无论你玩什么,如果你的对手发挥最佳,你就会输的情况。同样,获胜位置是一种情况,如果你下正确的动作,对手就无法获胜。 N=1 是一个失败的位置(根据游戏的定义)。因此,N=2,3,4 是获胜的位置,因为通过删除正确数量的匹配项,您会将对手置于失败的位置。 N = 5 是一个失败的位置,因为无论您删除多少允许的匹配项,您都将对手置于获胜位置。 N=6,7,8 是获胜的位置......你明白了。

    现在只是将这个证明正式化:假设当且仅当N mod 4 = 1 时,仓位N 是亏损仓位。如果直到某个整数k 为真,那么您可以证明k+1 也是如此。正如我们之前所展示的,直到k = 4 都是如此。通过重复,任何N 都是如此。

    【讨论】:

    • 有道理。你是如何获得 mod 4 的价值的?我不明白你是怎么到达 4 的。
    • 我添加了一个证明草图。它只是进行观察,然后通过递归来证明它。
    【解决方案2】:

    任何时候的游戏状态都可以通过轮到谁和每个玩家进行的比赛次数来描述。在 n 次移动之后,有 3^n 种可能的历史,但对于较大的 n,可能的状态少于 3^n,因此您可以通过例如认识到您即将遇到您已经遇到的状态和计算出之前的值。

    另见https://en.wikipedia.org/wiki/Nim - 如果这是 Nim 或各种 Nim,已经制定了有效的策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多