Complete search is a broad class of computational solutions that aim to exhaustively visit the search space (i.e., it tries all possible solutions). This is contrasted with local search, which only visits a subset of the search space.

If our problem is one that can be reasonably solved in polynomial time, odds are that we can use complete search. If we cannot, the best thing to do is to implement a dynamic programming algorithm or a local search algorithm (a greedy one).

An important type of complete search problem involves generating subsets or permutations.