This section presents a backtracking solver that finds the best solution to a given problem by performing depth-first traversal of the solution space. Program declares the concrete DepthFirstSolver class. This DepthFirstSolver class simply provides an implementation for the DoSolve routine.
Program: DepthFirstSolver Class Definition
The DoSolve routine for the DepthFirstSolver class is given in Program . Clearly, this routine simply does a complete, depth-first traversal of the solution space. Note that the implementation does not depend upon the characteristics of the problem being solved. In this sense the solver is a generic, abstract solver and can be used to solve any problem that has a tree-structured solution space!
Program: DepthFirstSolver Class DoSolve Member Function Definition
Since the DoSolve routine in Program visits all the nodes in the solution space, it is essentially a brute-force algorithm. And because the recursive routine backs up and then tries different alternatives, it is called a backtracking algorithm.