David Ruby, Dennis Kibler
Decomposing a difficult problem into simpler subproblems is a classic problem solving technique. Unfortunately, the most difficult subproblems can be as difficult, if not more difficult, than the original problem. This is not an obstacle to problem solving if the difficult subproblems recur in other problems. If the difficult subproblems recur often, then its solution need only be learned once and reused. Steppingstone is a learning problem solver that decomposes a problem into simple and difficult-but-recurring subproblems. It solves the simple subproblems with an inexpensive constrained problem solver. To solve the difficult subproblems, Steppingstone uses an unconstrained problem solver. Once it solves a difficult subproblem, it uses the solution to generate a sequence of subgoals, or stepping-stones, that can be used by the constrained problem solver to solve this difficult subproblem when it occurs again. In this paper we provide analytical evidence for Steppingstone’s capabilities as well as empirical results from our work with the domain of logic synthesis.