Skip to content

Algorithm Design Paradigms

A design paradigm is a reusable way to expose structure in a problem.

Paradigm Central question
Divide and conquer Can independent smaller instances be combined?
Greedy Can one locally optimal safe choice be committed now?
Dynamic programming Which overlapping subproblems determine the optimum?
Backtracking Can invalid partial solutions be abandoned early?
Randomized Can randomness simplify behavior or improve expected cost?

Choosing a paradigm does not prove correctness. Greedy algorithms need a structural argument, dynamic programs need a correct recurrence and dependency order, and backtracking needs complete coverage of the search space.