Algorithm 了解alpha-beta剪枝算法中的截止条件

Algorithm 了解alpha-beta剪枝算法中的截止条件,algorithm,search,artificial-intelligence,alpha-beta-pruning,Algorithm,Search,Artificial Intelligence,Alpha Beta Pruning,我很难理解我在维基百科上为alpha-beta删减找到的伪代码: function alphabeta(node, depth, α, β, Player) if depth = 0 or node is a terminal node return the heuristic value of node if Player = MaxPlayer for each child of node α :=

我很难理解我在维基百科上为alpha-beta删减找到的伪代码:

function alphabeta(node, depth, α, β, Player)         
    if  depth = 0 or node is a terminal node
        return the heuristic value of node
    if  Player = MaxPlayer
        for each child of node
            α := max(α, alphabeta(child, depth-1, α, β, not(Player)))     
            if β ≤ α
                break (* Beta cut-off *)
        return α
    else
        for each child of node
            β := min(β, alphabeta(child, depth-1, α, β, not(Player)))     
            if β ≤ α
                break (* Alpha cut-off *)
        return β
让我困惑的是if
Player=MaxPlayer
条件。我理解整个过程,使用
not(Player)
递归调用函数以获得最小值,然后使用
Player
递归调用函数,重复直到达到深度限制或找到目标状态。然而,我不明白这是怎么回事

if β ≤ α
    break 

声明。我对这一点的理解是,找到了比上一次调用(
β
)中找到的最小值高的第二个值,即所使用的值。但是因为这是函数的最大部分,我们不想要最高的值,而不仅仅是任何大于beta的值吗

这是算法的微调阶段,在
MaxPlayer
子句中(检查此节点中播放器的最大值时):

Beta是函数的参数,即“微调因子”。它代表到目前为止您所找到的最低分数。这意味着当前节点的父节点(最小化节点)已经找到了一个beta解决方案

现在,如果我们继续迭代所有子级,我们将得到至少与当前alpha一样好的结果。由于
beta=6
,我们可以在不继续计算的情况下返回6,因为上层的最小计算量将是
MIN(5,MAX(6,8,4))=MIN(5,6)=5

这是一个层次的直觉,当然是递归地“流动”到具有相同想法的所有层次


最小顶点中的修剪条件也是如此。

也许我的困惑在于初始化值。alpha和beta是初始化为空的,还是分别初始化为-infinity和-infinity?@user1427661:是的,它们被初始化为infinity和-infinity,并在递归调用过程中被修改。
     MIN
    /   \
   /     \
  /       \
 /         \
5          MAX
          / | \
         /  |  \
        /   |   \
       6    8    4