import math
def minimax(tree, depth, isMax):
# If we reach leaf level
if depth == 1:
if isMax:
return max(tree)
else:
return min(tree)
# Maximizing player
if isMax:
best = -math.inf
for branch in tree:
value = minimax(branch, depth-1, False)
best = max(best, value)
return best
# Minimizing player
else:
best = math.inf
for branch in tree:
value = minimax(branch, depth-1, True)
best = min(best, value)
return best
# Tree from diagram
tree = [
[3,5,2,9],
[12,5,6],
[23,25,1]
]
depth = 2
print("Optimal Value:", minimax(tree, depth, True))