Recursion

minimax(node, depth, maximizing): if depth = 0, return eval. If max, return max over children of minimax(c, d-1, false).

Advertisement

Alpha-beta pruning

Cut branches proven worse than current best. α ≥ β → prune. Best case O(b^(d/2)) instead of O(b^d).

Advertisement

Move ordering

Better move ordering → more pruning. Iterative deepening + transposition table + killer heuristic.

Modern additions

Null-move pruning. Aspiration windows. Late move reductions. Chess engines combine dozens.