我是python的新手,我试图对一组值执行alpha-beta修剪,我的输出应该是从树中修剪的值,这是输出返回根节点的最佳值的代码,但是我希望输出是被修剪的子节点的值。如果有人可以引导我完成该操作,那将是非常不错的。
谢谢
示例: 输入: 2 4 13 11 1 3 3 7 3 3 2 2 输出: 3 6 7 10 11
代码:
MAX,MIN = 1000,-1000
def minimax(深度,nodeIndex,maximizingPlayer, 值,alpha,beta):
# Terminating condition. i.e
# leaf node is reached
if depth == 3:
return values[nodeIndex]
if maximizingPlayer:
best = MIN
# Recur for left and right children
for i in range(0, 2):
val = minimax(depth + 1, nodeIndex * 2 + i,
False, values, alpha, beta)
best = max(best, val)
alpha = max(alpha, best)
# Alpha Beta Pruning
if beta <= alpha:
break
return best
else:
best = MAX
# Recur for left and
# right children
for i in range(0, 2):
val = minimax(depth + 1, nodeIndex * 2 + i,
True, values, alpha, beta)
best = min(best, val)
beta = min(beta, best)
# Alpha Beta Pruning
if beta <= alpha:
break
return best
如果名称 ==“ 主要”:
values = [2,4,13,11,1,3,3,7,3,3,2,2]
print("The optimal value is :", minimax(0, 0, True, values, MIN, MAX))