Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 分枝因子与深度_Algorithm_Minimax - Fatal编程技术网

Algorithm 分枝因子与深度

Algorithm 分枝因子与深度,algorithm,minimax,Algorithm,Minimax,问题 一个简单的双人游戏包括一堆N根火柴和两个 交替轮换的球员。在每一回合中,一名玩家移除1, 从桩上取下2或3根火柴棒。移除最后一个的玩家 火柴棒输掉了比赛 A)博弈树的分支因子和深度是什么(给出用N表示的一般解)?搜索范围有多大 空间 B)游戏中有多少独特的状态?对于大N,可以做些什么来提高搜索效率 回答 A)我说过分支因子是3,但我证明了这一点,因为玩家最多只能移除3个匹配项,这意味着我们的树通常会有三个孩子。第二部分关于深度,我不确定 B)nx2,其中N是剩余的匹配数。但我不知道我们如何

问题

一个简单的双人游戏包括一堆N根火柴和两个 交替轮换的球员。在每一回合中,一名玩家移除1, 从桩上取下2或3根火柴棒。移除最后一个的玩家 火柴棒输掉了比赛

A)博弈树的分支因子和深度是什么(给出用N表示的一般解)?搜索范围有多大 空间

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

回答

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


B)nx2,其中N是剩余的匹配数。但我不知道我们如何才能使搜索更有效?也许引入Alpha-beta修剪

任何时候的比赛状态都可以通过轮到谁以及每个球员的比赛次数来描述。在n次移动之后,有3^n个可能的历史记录,但对于较大的n,可能的状态要比3^n少很多,因此您可以节省时间,例如,通过识别即将遇到的状态,您已经遇到并计算出以前的值


另请参见-如果这是Nim或各种Nim,那么已经为其制定了有效的策略。

游戏在任何时候的状态都可以通过轮到谁以及每位玩家的比赛次数来描述。在n次移动之后,有3^n个可能的历史记录,但对于较大的n,可能的状态要比3^n少很多,因此您可以节省时间,例如,通过识别即将遇到的状态,您已经遇到并计算出以前的值

另请参见-如果这是Nim或各种Nim,那么已经为其制定了有效的策略。

a: 至于深度,想象一下最长的比赛会是什么样子。这是一个游戏,由两名玩家组成,每回合只移除一场比赛。因为有n个匹配,这样的游戏将进行n轮:树的深度为n

B: 只有2*N个状态,每个状态都可以从3个火柴棒计数较高的状态访问。因为随着游戏的进行,匹配的数量必然会减少,所以可能的状态图是DAG(有向无环图)。因此,可以用动态规划方法来分析这个博弈。最后,您将看到,最佳移动仅取决于
nmod4
,其中N是剩余匹配数

编辑:《代码》第4版的校对思路: 每一个位置都不是输家就是赢家。失利的情况是,无论你打什么,如果你的对手打得最好,你都会输。同样,获胜的位置是一种情况,如果你采取正确的行动,对手就无法获胜。N=1是一个失败的位置(根据游戏的定义)。因此,N=2,3,4是获胜的位置,因为通过移除适当数量的比赛,你将对手置于失败的位置。N=5是一个失败的位置,因为无论你取消多少场比赛,你都会让对手处于一个胜利的位置。N=6,7,8是获胜的位置。。。你明白了

现在,我们要把这个证明形式化:假设一个位置
N
是一个失败的位置,当且仅当
nmod4=1
。如果在某个整数
k
上是真的,那么可以证明
k+1
上是真的。正如我们前面所展示的,
k=4
是正确的。对于任何
N

A,重复出现的情况都是如此: 至于深度,想象一下最长的比赛会是什么样子。这是一个游戏,由两名玩家组成,每回合只移除一场比赛。因为有n个匹配,这样的游戏将进行n轮:树的深度为n

B: 只有2*N个状态,每个状态都可以从3个火柴棒计数较高的状态访问。因为随着游戏的进行,匹配的数量必然会减少,所以可能的状态图是DAG(有向无环图)。因此,可以用动态规划方法来分析这个博弈。最后,您将看到,最佳移动仅取决于
nmod4
,其中N是剩余匹配数

编辑:《代码》第4版的校对思路: 每一个位置都不是输家就是赢家。失利的情况是,无论你打什么,如果你的对手打得最好,你都会输。同样,获胜的位置是一种情况,如果你采取正确的行动,对手就无法获胜。N=1是一个失败的位置(根据游戏的定义)。因此,N=2,3,4是获胜的位置,因为通过移除适当数量的比赛,你将对手置于失败的位置。N=5是一个失败的位置,因为无论你取消多少场比赛,你都会让对手处于一个胜利的位置。N=6,7,8是获胜的位置。。。你明白了


现在,我们要把这个证明形式化:假设一个位置
N
是一个失败的位置,当且仅当
nmod4=1
。如果在某个整数
k
上是真的,那么可以证明
k+1
上是真的。正如我们前面所展示的,
k=4
是正确的。通过重复,任何有意义的
N

都是如此。你是如何得到mod 4的值的?我不明白你是怎么得出这个结论的。我加了一个证明草图。这只是做观察,然后通过重复来证明。这是有意义的。你是如何得到mod 4的值的?我不明白你是怎么得出这个结论的。我加了一个证明草图。这只是关于做ob