Minimax algorithm
MINIMAX-DECISION calculates a best move in a ply (two turns by opposing players).  It assumes that it is moving for the first player, and thus wants to maximize its utility value for its move.
In odd levels of the tree the MAX-VALUE function is run, and at even levels, the MIN-VALUE function is run.
Calculation in the tree runs in a depth first manner until we reach a leaf (either at an even or an odd level) and the values are then propagated back up successively higher levels of the tree.

The either tree (initial state to the leaf nodes) must be searched before MINIMAX returns a decision.  As this is not a realistic possibility (except for trivially small games) we must change this initial version of the algorithm such that decision can be made in reasonable (e.g. real) time.