- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
虽然我了解 MiniMax 树和 alpha-beta 修剪概念,但我不明白为什么在许多(例如维基百科)有关 alpha-beta 修剪的资源中存在像 α >= β 这样的条件。具体来说,equals 令人困惑。据我所知,alpha beta 返回的移动是 minmax 返回的,但主要是速度更快。但是这个例子与之矛盾:
.
/ | \
1 3* 2
/ | / \ | \ \
1 1 5 3 4 3 2
上面是原始的最小-最大树。正如我们所见,它会选择得分为 3 的一步。现在让我们进行 alpha-beta:
.
/ | \
1 3* 3*
/ | / \ | \
1 1 5 3 4 3
它切断了最右边的移动,因为 3 >= 3。但是算法可以在 2 个移动之间进行选择,因为它们具有相同的分数,但正如我们在 min-max 中看到的那样,正确的选择稍差。如果算法仅指定 α > β,则不会发生这种情况,因此它也需要搜索 2。
那是维基百科伪代码(以及许多其他资源)中的拼写错误吗?或者我在这里误解了一些非常重要的事情。
最佳答案
Wikipedia 上的算法不返回走法,它返回根节点的分数,即 3。这个分数与 minimax 结果相同。您将需要稍微修改算法以获得下棋而不是得分。
这样做的一种方法是在当前状态的每个可能移动上运行 alphabeta 函数并播放得分最高的一个。按照维基百科上的链接给出 implementation就是这样做的。
我认为您还可以跟踪在 alphabeta 函数中找到的最佳着法,但如果多个节点在同一级别具有相同分数,则返回找到的第一个。这可能会更好,因为需要评估的节点更少。
关于algorithm - Alpha Beta 剪枝,alpha 等于或大于 beta。为什么等于?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31429974/
我不小心修剪了一些远程分支,我真的不知道这样做的后果是什么(我点击了 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
我是一名优秀的程序员,十分优秀!