Backtracking
A backtracking algorithm begins with an empty solution and extends the solution step by step. The search recursively goes through all different ways how a solution can be constructed.
Pruning the Search
Full search is sometimes really slow. So we try to optimize.