Algorithm 负最大否定

Algorithm 负最大否定,algorithm,minimax,search-tree,negamax,Algorithm,Minimax,Search Tree,Negamax,对不起,如果这是一个愚蠢的问题,但我感到困惑。Negamax在开始时检查是否已达到结束状态或最大深度。然后插入一个评估函数,该函数返回状态的负或正分数(一个对一方有利,另一方不利,反之亦然)。我发现下面的否定句很难让我清醒过来。这是否意味着返回的分数乘以-1?这能实现什么?我欣赏leaf sates的“泡泡”备份在最低/最高分数之间交替进行 线条:-NegaMax(c,深度+1,单色)这用于在交替移动的游戏中翻转透视。在每个状态下,您都希望根据当前玩家计算分数(正面是好的,负面是坏的)。当你观察

对不起,如果这是一个愚蠢的问题,但我感到困惑。Negamax在开始时检查是否已达到结束状态或最大深度。然后插入一个评估函数,该函数返回状态的负或正分数(一个对一方有利,另一方不利,反之亦然)。我发现下面的否定句很难让我清醒过来。这是否意味着返回的分数乘以-1?这能实现什么?我欣赏leaf sates的“泡泡”备份在最低/最高分数之间交替进行


线条:-NegaMax(c,深度+1,单色)

这用于在交替移动的游戏中翻转透视。在每个状态下,您都希望根据当前玩家计算分数(正面是好的,负面是坏的)。当你观察某个儿童状态时,对手将移动到那里,因此negamax将根据他返回估计分数。你需要否定它才能得到第一个玩家的分数

示例:在每个状态中,选择最大被否定子级数:

这用于在交替移动的游戏中翻转透视图。在每个状态下,您都希望根据当前玩家计算分数(正面是好的,负面是坏的)。当你观察某个儿童状态时,对手将移动到那里,因此negamax将根据他返回估计分数。你需要否定它才能得到第一个玩家的分数

示例:在每个状态中,选择最大被否定子级数:
我不知道你为什么要增加深度。Negamax将当前玩家的位置最大化。执行搜索时,应调用
-negamax(位置,深度-1)
。当你做出一个动作时,你想在每一个动作上逆转评估分数。例如,如果要移动的是白色,则eval应该是规则的,如果要移动的是黑色,则eval应该将黑色作为正值进行评分,因此
if(turn==black),则eval=-eval
。你这样做是因为negamax算法最大化了玩家的得分。

我不知道你为什么要增加深度。Negamax将当前玩家的位置最大化。执行搜索时,应调用
-negamax(位置,深度-1)
。当你做出一个动作时,你想在每一个动作上逆转评估分数。例如,如果要移动的是白色,则eval应该是规则的,如果要移动的是黑色,则eval应该将黑色作为正值进行评分,因此
if(turn==black),则eval=-eval
。你这样做是因为negamax算法使玩家得分最大化。

但是如果我们有两个终端状态,分别从父节点状态的-2和-500进行评估,从最小化的角度来看,你会选择2到500(乘以-1)选择500,这很好,但如果从最大化者的角度来看,你会选择500,这是不对的?!很明显,我遗漏了一些非常明显的东西,因为negmax工作正常,但如果您能帮助我理解这一点,那就太好了。@user2976086 negamax的想法是,两个玩家都是最大化者,但其中一个会最大化否定分数。如果我们有应该移动的玩家输球的状态,那么不管是哪一个玩家,它都会有分数
-无穷大。Negamax总是选择这样一种状态,因为它的否定分数是
+无穷大
。这更有意义!因此,我创建并放入negamax的评估函数将返回一个对任何一方都不明确获胜的州的分数,该分数将乘以玩家(-1或+1)。然而,如果双方都明显获胜,只需返回负无穷大(不要乘以玩家)?@user2976086,在大多数游戏中,最终状态都是失败的(对手刚刚俘获了我的国王并赢得了比赛),所以这是
-inf
,但有时他们赢了(对手刚刚输掉了比赛),所以
+inf
。你之前说过“…如果我们有应该移动的玩家输球的状态,它将有分数-无穷大,不管它是哪个玩家…”但是如果我们有两个终端状态,从父节点状态分别在-2和-500处评估,从最小化的角度来看,你会选择2和500之间(乘以-1)选择500,这很好,但如果从maximiser的角度来看,你会选择500,这是不对的?!我显然遗漏了一些非常明显的东西,因为negmax工作正常,但如果你能帮助我理解这一点,那就太好了。@user2976086 negamax的想法是,两个玩家都是最大化者,但其中一个会最大化否定分数。如果我们有一个应该移动的玩家输球的状态,那么无论是哪一个玩家,它都会有分数
-无穷
。Negamax总是选择这样一个状态,因为它的否定分数是
+无穷
。这更有意义!所以我创建并放入Negamax的求值函数将返回一个状态的分数ren不清楚哪一方获胜,分数将乘以玩家(-1或+1)。但是,如果任何一方获胜,只要返回负无穷大(不要乘以玩家)?@user2976086,在大多数游戏中,最终状态都是失败的(对手刚刚俘获了我的国王并赢得了比赛),所以这是
-inf
,但有时他们会赢(对手刚刚输掉了比赛),所以
+inf
。你之前说过“…如果我们有一个状态,在这个状态下应该移动的玩家输了,它将有分数-无穷大,不管它是哪个玩家…”