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.