Because the form and complexity of the problems given to the solver may be quite different from each other, particularly across applications, complexity-directed solving is necessary to enable use of the same generic adaptive solver as applications and problems change. [0033] For the purposes herein, a particular problem P is either a constraint satisfaction problem or a constrained optimization p