对Minimax进行beta修剪

我花了一整天的时间尝试实现极小极小,但没有真正理解它。 现在,我想我理解minimax是如何工作的,但不是alpha-beta修剪。

这是我对minimax的理解:

  • 生成所有可能移动的列表,直到深度限制。

  • 评估一个游戏领域对底部每个节点的有利程度。

  • 对于每个节点(从底部开始),如果图层最大,那么该节点的得分是其子节点的最高分数。 如果该图层为最小值,则该节点的得分是其子节点的最低得分。

  • 如果您尝试最大化分数,请执行得分最高的移动;如果您想要最小分数,请执行最低分移动。

  • 我对alpha-beta修剪的理解是,如果父层最小并且您的节点比最低分数高,那么您可以修剪它,因为它不会影响结果。

    然而,我不明白的是,如果你可以计算出一个节点的分数,你就需要知道一个低于该节点的层上的所有节点的分数(在我对minimax的理解中)。 这意味着你将使用相同数量的CPU功率。

    任何人都可以指出我错了什么? 这个答案(Minimax解释为一个白痴)帮助我了解minimax,但我没有得到alpha beta beta修剪如何帮助。

    谢谢。


    要了解Alpha-Beta,请考虑以下情况。 这是白人转身,白人试图最大限度地提高分数,黑人正试图将分数降到最低。

    White评估移动A,B和C,并发现C的最佳分数是20。现在考虑评估移动D时会发生什么:

    如果白选择移动D,我们需要考虑黑方的反移动。 在早期,我们发现黑色可以捕捉到白色女王,而且由于丢失了女王,该子树得到5分MIN。 但是,我们并没有考虑所有的黑人反击。 其余值得检查吗? 没有。

    我们并不在乎黑人能否得分低于5分,因为白人移动“C”可以将得分保持在20.黑方不会选择分数高于5的反移动,因为他试图最小化得分并且已经找到移动,得分为5.对于白色,只要D的MIN(到目前为止)低于C(当然是20),移动C优先于移动D. 所以我们在那里“修剪”其余的树,弹出一个关卡并评估白色移动E,F,G,H ....到最后。

    希望有所帮助。


    您不需要评估节点的整个子树来决定其值。 Alpha Beta Pruning使用两个动态计算的边界alpha和beta来限制节点可以采用的值。

    Alpha是通过游戏树中的另一条路径保证最大玩家的最小值(不论最小玩家是干什么的)。 该值用于在最小化级别执行截断(修剪)。 当最小牌手发现最小节点的得分必须小于α时,它不需要评估该节点的更多选择,因为最大牌手已经有了更好的移动(具有α值的移动)。

    Beta是min player被保证的最大值,用于在最大化级别执行截止。 当最大玩家发现最大节点的得分必然大于β时,它可以停止评估来自该节点的更多选择,因为最小玩家不允许它采取该路径,因为最小玩家已经有路径这保证了beta的价值。

    我已经写了Alpha Beta Pruning的详细解释,它的伪代码和一些改进:http://kartikkukreja.wordpress.com/2014/06/29/alphabetasearch/


    (非常) mimimax的简短说明:

  • 您(董事会职位的评估员)可以选择进行n移动。 你尝试所有这些,并给予(对手)评估者董事会职位。

  • 对手评估新的棋局位置(对于他,对手方) - 除非已达到最大深度或其他条件并调用静态评估器,否则通过基本上同样的方法递归调用(他的对手)评估者,并且然后选择最大评估并将评估发回给您。
  • 您选择具有最低评价的举措。 这个评估是你开始评估董事会的评估。


  • (非常) α-β修剪的简短解释:

  • 您(董事会职位的评估员)可以选择进行n移动。 你逐一尝试所有这些并给予(对手)评估者董事会职位 - 但是你也传递了你当前的评估(董事会)。

  • 对手评估新的棋盘位置(对于他,对手方)并将评估发回给您。 但他是怎么做到的? 他可以选择进行m动作。 他尝试所有这些方法,并向(他的对手)评估者提供新的董事会职位(一个接一个),然后选择最大的职位。
  • 关键的一步 :如果他回来的任何评估结果大于您给他的最低评分,那么肯定他最终会返回至少那么大的评估值(因为他想要最大化 )。 而且你肯定忽略了这个价值(因为你想尽量减少 ),所以他不再为他还没有评估过的董事会工作。
  • 您选择具有最低评价的举措。 这个评估是你开始评估董事会的评估。

  • 链接地址: http://www.djcxy.com/p/56303.html

    上一篇: beta pruning for Minimax

    下一篇: Horizontally and Vertically center text for TextView in Android