def tree(dept, indx, val, height, who, alpha, beta):
if height == dept:
return val[indx]
if who:
best = -float('inf')
best = max(best, tree(dept + 1, indx * 2, val, height, False, alpha, beta))
alpha = max(alpha, best)
if beta <= alpha:
print(f"Pruned at Node[{indx}]: alpha ({alpha}) >= beta ({beta})")
return best
best = max(best, tree(dept + 1, indx * 2 + 1, val, height, False, alpha, beta))
alpha = max(alpha, best)
if beta <= alpha:
print(f"Pruned at Node[{indx}]: alpha ({alpha}) >= beta ({beta})")
return best
return best
else:
best = float('inf')
best = min(best, tree(dept + 1, indx * 2, val, height, True, alpha, beta))
beta = min(beta, best)
if beta <= alpha:
print(f"Pruned at Node[{indx}]: beta ({beta}) <= alpha ({alpha})")
return best
best = min(best, tree(dept + 1, indx * 2 + 1, val, height, True, alpha, beta))
beta = min(beta, best)
if beta <= alpha:
print(f"Pruned at Node[{indx}]: beta ({beta}) <= alpha ({alpha})")
return best
return best
val = [1, 2, 3, 4, 5, 6, 7, 8]
print("Minimax with Alpha-Beta Pruning:", tree(0, 0, val, 3, True, -float('inf'), float('inf')))
0 Comments