- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我花了一整天的时间在没有真正理解的情况下尝试实现 minimax。现在,我想我了解 minimax 的工作原理,但不了解 alpha-beta 剪枝。
这是我对极小极大的理解:
生成所有可能移动的列表,直到深度限制。
评估游戏 field 对底部每个节点的有利程度。
对于每个节点(从底部开始),如果层数最大,则该节点的分数是其子节点的最高分数。如果该层为 min,则该节点的分数是其子节点的最低分数。
如果您想获得最高分数,请执行得分最高的 Action ;如果您想要最低分数,请执行最低分数。
我对alpha-beta剪枝的理解是,如果parent layer是min,你的node的score比minimum score高,那你就可以prune了,不会影响结果。
但是,我不明白的是,如果你能计算出一个节点的分数,你将需要知道比该节点低一层的所有节点的分数(我对minimax的理解)。这意味着您仍将使用相同数量的 CPU 能力。
谁能指出我错在哪里?这个答案 ( Minimax explained for an idiot ) 帮助我理解了 minimax,但我不明白 alpha beta 修剪会有什么帮助。
谢谢。
最佳答案
要理解 Alpha-Beta,请考虑以下情况。轮到白棋了,白棋试图最大化分数,黑棋试图最小化分数。
白方评估 A、B 和 C 步,发现 C 的最佳分数是 20。现在考虑评估步 D 时会发生什么:
如果白棋选择D,我们需要考虑黑棋的反棋。早期,我们发现黑色可以捕获白色皇后,并且由于丢失皇后,该子树的 MIN 得分为 5。然而,我们并没有考虑所有的黑人反击。是否值得检查其余部分?没有。
我们不关心黑方是否可以得到低于 5 的分数,因为白方走“C”可以将分数保持在 20。黑方不会选择得分高于 5 的反击,因为他试图最小化得分并且已经找到得分为 5 的着法。对于白色,一旦 D 的 MIN(目前为 5)低于 C 的 MIN(肯定是 20),着法 C 优于移动 D。所以我们在那里“修剪”树的其余部分,弹出一个级别并评估白色移动 E、F、G、H .... 到最后。
希望对您有所帮助。
关于algorithm - Minimax 的 Alpha-beta 剪枝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7888754/
我不小心修剪了一些远程分支,我真的不知道这样做的后果是什么(我点击了 Git Extensions 中的“Prune remote branches”按钮,以为它会删除一个远程分支)。 官方文档说“g
扎克伯格说,Llama3-8B还是太大了,不适合放到手机中,有什么办法? 量化、剪枝、蒸馏,如果你经常关注大语言模型,一定会看到这几个词,单看这几个字,我们很难理解它们都干了些什么,但
我正在尝试实现通过转置表增强的 alpha-beta 最小-最大剪枝。我使用这个伪代码作为引用: http://people.csail.mit.edu/plaat/mtdf.html#abmem f
我花了一整天的时间在没有真正理解的情况下尝试实现 minimax。现在,我想我了解 minimax 的工作原理,但不了解 alpha-beta 剪枝。 这是我对极小极大的理解: 生成所有可能移动的列表
我有一个代码将 Tensorflow Probability(需要 TF 2.00)与 Keras Pruning 混合,修剪第一个密集层的权重并为 TF 概率提供输入,在同一模型中具有两个代码(Ke
这是我的 minimax 方法,它实现了 alpha beta 修剪和内存: public int[] newminimax499(int a, int b){ int bestPos=-1;
在我的方法 newminimax49 中,我有一个使用 memoization 的极小极大算法以及在此 post 中向我建议的其他一般改进.该方法使用简单的启发式棋盘评估函数。我的问题基本上是关于 a
虽然我了解 MiniMax 树和 alpha-beta 修剪概念,但我不明白为什么在许多(例如维基百科)有关 alpha-beta 修剪的资源中存在像 α >= β 这样的条件。具体来说,equals
我是一名优秀的程序员,十分优秀!