修改 Minimax 为 Alpha-Beta 剪枝伪代码
Modify Minimax to Alpha-Beta pruning pseudo code
我正在学习 Alpha-Beta 伪代码,我想为 Alpha Beta 剪枝.
编写一个最简单的伪代码
我写了Minimax的伪代码:
function minimax(node, depth)
if node is a terminal node or depth ==0
return the heuristic value of node
else
best = -99999
for child in node
best = max(best, -minimax(child, depth-1))
return best
但是,我不知道如何将其修改为alpha-beta剪枝。有人可以帮忙吗?
在 Alpha-Beta 中,您会跟踪一个位置的保证分数。如果发现比对手在其先前位置(之前的一手)已经保证的分数更好的着法,您可以立即停止。
从技术上讲,每一方都会跟踪其下界得分(alpha),而您可以访问对手的下界得分(beta)。
以下伪代码未经测试,但思路如下:
function alphabeta(node, depth, alpha, beta)
if node is a terminal node or depth ==0
return the heuristic value of node
else
best = -99999
for child in node
best = max(best, -alphabeta(child, depth-1, -beta, -alpha))
if best >= beta
return best
if best > alpha
alpha = best
return best
在开始搜索时,您可以将 alpha 设置为 -INFINITY,将 beta 设置为 +INFINITY。严格来说,草图算法不是 alpha-beta 而是 Negamax。两者是相同的,所以这只是一个实现细节。
请注意,在 Alpha-Beta 中,移动顺序至关重要。如果大多数时候,你从最好的着法开始,或者至少是非常好的着法,你应该会看到相对于 Minimax 的巨大改进。
从受限的 alpha beta windows(不是 -INFINITY 和 +INFINITY)开始的额外优化。但是,如果你的假设被证明是错误的,你必须以更开放的方式重新开始搜索 search window.
我正在学习 Alpha-Beta 伪代码,我想为 Alpha Beta 剪枝.
编写一个最简单的伪代码我写了Minimax的伪代码:
function minimax(node, depth)
if node is a terminal node or depth ==0
return the heuristic value of node
else
best = -99999
for child in node
best = max(best, -minimax(child, depth-1))
return best
但是,我不知道如何将其修改为alpha-beta剪枝。有人可以帮忙吗?
在 Alpha-Beta 中,您会跟踪一个位置的保证分数。如果发现比对手在其先前位置(之前的一手)已经保证的分数更好的着法,您可以立即停止。
从技术上讲,每一方都会跟踪其下界得分(alpha),而您可以访问对手的下界得分(beta)。
以下伪代码未经测试,但思路如下:
function alphabeta(node, depth, alpha, beta)
if node is a terminal node or depth ==0
return the heuristic value of node
else
best = -99999
for child in node
best = max(best, -alphabeta(child, depth-1, -beta, -alpha))
if best >= beta
return best
if best > alpha
alpha = best
return best
在开始搜索时,您可以将 alpha 设置为 -INFINITY,将 beta 设置为 +INFINITY。严格来说,草图算法不是 alpha-beta 而是 Negamax。两者是相同的,所以这只是一个实现细节。
请注意,在 Alpha-Beta 中,移动顺序至关重要。如果大多数时候,你从最好的着法开始,或者至少是非常好的着法,你应该会看到相对于 Minimax 的巨大改进。
从受限的 alpha beta windows(不是 -INFINITY 和 +INFINITY)开始的额外优化。但是,如果你的假设被证明是错误的,你必须以更开放的方式重新开始搜索 search window.