Is Negamax always supposed to return a positive value?

function negamax(node, depth, α, β, color)    if node is a terminal node or depth = 0        return color * the heuristic value of node    else        foreach child of node            val := -negamax(child, depth-1, -β, -α, -color)            {the following if statement constitutes alpha-beta pruning}            if val≥β                return val            if val≥α                α:=val        return α

所以,如果以上是我从维基百科复制的negamax代码,并且它被调用如下:

negamax(origin, depth, -inf, +inf, 1)

那么,无论我们以什么深度调用这个函数,它总是会返回一个正值吗?这里假设启发式值本身总是正的。


回答:

是的,如果叶节点的评估分数是正的,negamax将返回一个正值。这就是通过颜色值进行乘法的作用,它确保了如果递归的negamax调用次数为奇数时,会有一个反向的否定来抵消最终的否定。因为在奇数次递归调用中,颜色值总是等于-1。如果递归调用次数为偶数,所有否定都会相互抵消,颜色值将为1,这不会影响返回值。

请注意,如果你调用negamax时color == -1(轮到另一方移动),你必须对该调用进行否定以获得正确的值。即:

-negamax(origin, depth, -inf, +inf, -1)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注