我花了一整天的时间试图在没有真正了解它的情况下实现minimax。现在,我想我理解minimax是如何工作的,但不是alpha-beta修剪。
这是我对极小极大的理解:
生成所有可能移动的列表,直到深度限制。
评估游戏区域对底部每个节点的有利程度。
对于每个节点(从底部开始),如果图层为最大,则该节点的得分是其子节点的最高得分。如果图层是min,则该节点的得分是其子项的最低得分。
如果您尝试最大分数,则执行得分最高的移动;如果您想要最低分数,则执行最低分数。
我对alpha-beta修剪的理解是,如果父图层是min并且你的节点得分高于最低得分,那么你可以修剪它,因为它不会影响结果。
然而,我不明白的是,如果你能计算出节点的分数,你需要知道低于节点的层上所有节点的分数(根据我对minimax的理解)。这意味着你将继续使用相同的CPU功率。
有人可以指出我错了吗?这个答案(Minimax explained for an idiot)帮助我理解了极小极大,但我不知道alpha beta修剪会有多大帮助。
谢谢。
答案 0 :(得分:15)
要了解Alpha-Beta,请考虑以下情况。这是白人转向,白人试图最大化得分,黑人试图最小化得分。
怀特评估移动A,B和C,并且发现最佳得分是20而C。现在考虑评估移动D时会发生什么:
如果白色选择移动D,我们需要考虑黑色的反向移动。在早期,我们发现黑色可以捕获白色女王,并且由于失去的女王,该子树获得的MIN得分为5。但是,我们还没有考虑所有黑人的反击。是否值得检查其余的?否。
我们不在乎黑人是否可以得分低于5,因为白人移动“C”可以将得分保持在20分。黑人不会选择得分高于5的反击因为他试图最小化得分并且已经找到了得分为5的移动。对于白色,只要D的MIN(5到目前为止)低于C(肯定是20),移动C优先于移动D.因此,我们在那里“修剪”树的其余部分,弹回一个级别并评估白色移动E,F,G,H ....到最后。
希望有所帮助。
答案 1 :(得分:3)
您无需评估节点的整个子树来确定其值。 Alpha Beta Pruning使用两个动态计算的边界alpha和beta来绑定节点可以采用的值。
Alpha是通过游戏树中的另一条路径保证最大玩家的最小值(无论最小玩家做什么)。该值用于在最小化级别执行截止(修剪)。当min玩家发现min节点的分数必然小于alpha时,它不需要再评估该节点的任何选择,因为max player已经有更好的移动(具有alpha值的那个)。 p>
Beta是保证最小玩家的最大值,用于在最大化级别执行截止。当max玩家发现最大节点的得分必然大于beta时,它可以停止评估来自该节点的任何更多选择,因为min玩家不会允许它采用这条路径,因为min玩家已经有了一条路径这保证了β值。
我已经详细解释了Alpha Beta Pruning,它的伪代码和一些改进:http://kartikkukreja.wordpress.com/2014/06/29/alphabetasearch/
答案 2 :(得分:1)
我认为你的问题暗示了对评估功能的误解
如果你能算出一个节点的分数,你需要知道一个低于节点的层上所有节点的分数(根据我对minimax的理解)
我不完全确定你在那里意味着,但听起来不对。 评估函数(EF)通常是一个非常快速的静态位置评估。这意味着它只需要查看单个位置并从中获得“判决”。 (IOW,你并不总是评估分支到 n plys)
现在很多次,评估确实是静态的,这意味着位置评估函数完全确定性。 这也是评估结果易于缓存的原因(因为每次评估一个位置时它们都是相同的)。
现在,例如国际象棋,通常有相当多的明显/隐蔽偏离上述:
根据游戏背景,可能会对位置进行不同的评估(例如,在游戏过程中确切的位置是否确实发生过;没有进行典当移动/捕获的移动次数,传球和施法机会)。解决这个问题最常见的“技巧”是将该状态实际纳入“位置” 1
通常会为游戏的不同阶段(开场,中间,结尾)选择不同的EF;这有一些设计影响(如何在更改EF时处理缓存评估?当不同层的EF不同时,如何进行alpha / beta修剪?)
说实话,我不知道国际象棋引擎如何解决后者(我只是为了我的玩具引擎而避免使用它)
我会参考以下在线资源:
<子> 1 就像'检查'/'僵持'条件一样,如果它们不是评价函数以外的特殊套装 子>
答案 3 :(得分:1)
(非常) mimimax 的简短说明:
您(董事会职位的评估员)可以选择播放n
次移动。你尝试了所有这些,并给(对手)评估员提供了董事会职位。
您选择具有这些评估的最小的移动。而评估是对您在开始时必须评估的董事会的评估。
(非常)α-β-pruning 的简短说明:
您(董事会职位的评估员)可以选择播放n
次移动。你可以尝试所有这些逐个并给(对手)评估员提供董事会职位 - 但你也可以传递你当前的评估(你的董事会)。
m
次动作。他尝试了所有这些并将新的董事会职位(一个接一个)交给(他的对手)评估员,然后选择最大的一个。 您选择具有这些评估的最小的移动。而评估是对您在开始时必须评估的董事会的评估。
答案 4 :(得分:1)
这是一个简短的答案 - 您可以知道节点的价值而无需计算其所有子节点的精确值。
一旦我们知道从父节点播放器的角度来看,子节点不能比先前评估的兄弟节点更好,我们就可以停止评估子子树。它至少是 。