Based on slides by: Rob Powers Ian Gent Min-Max Trees Yishay Mansour Based on slides by: Rob Powers Ian Gent
Two Players Games One Search Tree for both Players Even layers – Max Player move Odd Layers – Min Player move The state evaluated according to heuristic function.
MinMax search strategy Generate the whole game tree. (Or up to a constant depth) Evaluate Terminal states (Leafs) propagate Min-Max values up from leafs Search for MAX best next move, so that no matter what MIN does MAX will be better off For branching factor b and depth search d the complexity is O(bd)
MinMax first Example
1 1 -2 -1
MinMax evaluation function function MinMax-Decision(game) returns an operator for each op in Operator[game] do Value[op] := MinMax-Value(Apply(op,game),game) end return the op with the highest Value[op] function MinMax-Value(state,game) returns an utility value if Terminal-Test[game](state) then return Utility[game](state) else if MAX’s turn return the highest MinMax-Value of Successors(state) else (MIN’s turn) return the lowest MinMax-Value of Successors(state)
Cuting Off Search We want to prune the tree: stop exploring subtrees with values that will not influence the final MinMax root decision In the worst case, no pruning. The complexity is O(bd). In practice, O(bd/2), with branching factor of b1/2 instead of b.
Alpha Beta First Example
Alpha-Beta search cutoff rules Keep track and update two values so far: alpha is the value of best choice in the MAX path beta is the value of best choice in the MIN path Rule: do not expand node n when beta <= alpha for MAX node return beta for MIN node return alpha
Alpha and Beta values At a Max node we will store an alpha value the alpha value is lower bound on the exact minimax score the true value might be if we know Min can choose moves with score < then Min will never choose to let Max go to a node where the score will be or more At a Min node, value is similar but opposite Alpha-Beta search uses these values to cut search
Alpha Beta in Action Why can we cut off search? Beta = 1 < alpha = 2 where the alpha value is at an ancestor node At the ancestor node, Max had a choice to get a score of at least 2 (maybe more) Max is not going to move right to let Min guarantee a score of 1 (maybe less)
Alpha and Beta values Max node has value Min node has value the alpha value is lower bound on the exact minimax score with best play M x can guarantee scoring at least Min node has value the beta value is upper bound on the exact minimax score with best play Min can guarantee scoring no more than At Max node, if an ancestor Min node has < Min’s best play must never let Max move to this node therefore this node is irrelevant if = , Min can do as well without letting Max get here so again we need not continue
Alpha-Beta Pruning Rule Two key points: alpha values can never decrease beta values can never increase Search can be discontinued at a node if: It is a Max node and the alpha value is the beta of any Min ancestor this is beta cutoff Or it is a Min node and the beta value is the alpha of any Max ancestor this is alpha cutoff
Alpha-Beta prunning function Max-Value(state,game,alpha,beta) returns minmax value of state if Cutoff-Test(state) then return Eval(state) for each s in Successor(state) do alpha := Max(alpha,Min-Value(s, game,alpha,beta)) if beta <= alpha then return beta end; return alpha function Min-Value(state,game,alpha,beta) returns beta := Min(beta,Max-Value(s, game,alpha,beta)) if beta <= alpha then return alpha end; return beta
#2b Left->Right = -, = +
#2b Left->Right = 7, = + = -, = 4 = 6, = + = 4, = 6 = -, = + = -, = 4 = 8, = + = 6, = 8 (Alpha pruning) = 4, = + = 8, = 6 = 4, = 3 = 4, = 8 = 5, = 6 (Alpha pruning) = 8, = + = 4, = 8 =5, =8 =5, =6
Beta Pruning 9 = 4, = + = -, = 4 = 4, = 8 = -, = + = 8, = + = 4, = 8 (Alpha pruning) = 4, = + = 8, = 6 = 4, = 3 = 4, = 8 (Alpha pruning) 9 = 8, = + = 4, = 8
Beta Pruning 9 = 4, = + = -, = 4 = 4, = 8 = -, = + = 8, = + = 9, = 8 (Beta pruning) (Alpha pruning) = 4, = + = 8, = 6 = 4, = 3 = 4, = 8 (Alpha pruning) 9 = 8, = + = 4, = 8
#2b Right->Left = -, = +
#2b Right->Left = 7, = + = 7, = 7 = 7, = 6 = -, = + (Alpha pruning) (Alpha pruning) = 7, = + = 7, = + (Alpha pruning) = 7, = -1 = 7, = + = 7, = 6 (Alpha pruning) =7, =+ =7, =+ =7, =+