我无法理解这种伪我发现α+β修剪维基百科:α-β剪枝算法
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 β
什么是困惑我的是,如果玩家= MaxPlayer条件。我理解整个递归调用not(Player)函数来获取最小值,然后递归调用带有Player的函数,直到达到深度限制或找到目标状态。但是,我不明白
if β ≤ α
break
声明。我的理解是,第二个数值高于前一次调用(beta)中找到的最小值,即使用的值。但是由于这是函数的MAX部分,我们是不是想要HIGHEST值,而不是ANY值大于beta?
也许我的困惑在于初始化值。 alpha和beta初始化为空,还是分别初始化为-infinity和infinity? – user1427661
@ user1427661:是的,它们被初始化为infinity和-infinity,并在递归调用期间一路修改。 – amit