The above algorithm will assign a value of positive or negative infinity to any position since the value of every position will be the value of some final winning or losing position. This can be extended if we can supply a heuristic evaluation function which gives values to non-final game states without considering all possible following complete sequences. We can then limit the minimax algorithm to look only at a certain number of moves ahead. This number is called the "look-ahead" or "ply".

The algorithm can be thought of as exploring the nodes of a *game tree*. The *effective branching factor* of the tree is the average number of children of each node (i.e., the average number of legal moves in a position). The number of nodes to be explored increases exponentially with the number of plies. The number of nodes to be explored for the analysis of a game is therefore the power of plies of the branching factor. It is therefore impossible to completely analyze games such as chess using the minimax algorithm.

The performance of the naive minimax algorithm may be improved dramatically, without affecting the result, by the use of alpha-beta pruning. Other heuristic pruning methods can also be used, but not all of them are guaranteed to give the same result as the un-pruned search.

See also:

- transposition table
- refutation table
- computer chess
- horizon effect

*Article originally from FOLDOC; copied with permission. Feel free to update as needed.*