ai_lab_9
import math
global dCount
def minimax( nodeIndex, depth, maximizingPlayer, values, alpha, beta):
print("node = ",nodeIndex)
print("depth = ",depth)
print("player = ",maximizingPlayer)
if depth == 0:
return values[nodeIndex-dCount]
if maximizingPlayer:
best = -math.inf
for i in range(1,3):
val = minimax( nodeIndex * 2 + i, depth - 1, False,values,alpha,beta)
print("max best before", best)
best = max(best, val)
alpha = max(alpha, best)
if beta <= alpha:
break
print("max best now",best)
print("Max best is ",best)
else:
best = math.inf
for i in range(1, 3):
val = minimax( nodeIndex * 2 + i, depth - 1,True, values,alpha,beta)
print("min best before", best)
best = min(best, val)
beta = min(beta, best)
if beta <= alpha:
break
print("min best as of now", best)
print("Min best is ", best)
return best
if name== "main":
values = [3,5,6,9,1,2,0,-1]
depth=3
dCount = 2 ** depth - 1
print("The optimal value is :", minimax(0,depth, True, values,-math.inf,math.inf))