SAT Solvers as Smart Search Engines
msoos.org
msoos.org
In my opinion, a brute force search algorithm is an algorithm that will explore the whole search space without any intelligent pruning of sub-trees (it will visit every element of the state space). Such an algorithm needs to use a state restoration policy, with three main flavours being saving undo-information (trailing asin SAT-solvers, Knuths dancing links), saving redo-information (in order to do recomputation), and copying (saving whole search states in each node) are all valid and useful. They can also be combined, with adaptive recomputation being quite nice in some cases (leaving copies of the seaerch state every now and then, closer togheter the farther down the tree one is).
I just tried to highlight brute force vs. partial evaluation&backtrack. But of course there are many other comparisons to be made. I'm just conscious that I have neither the time nor the expertise to do these all unfortunately :( I let Knuth do the heavy lifting, doing all the comparisons in his books.
Note: the author maintains a state-of-the-art SAT solver.
But this article is way above all that I read on this subject. Many thanks!
Just an example: "Modeling has lots of interesting constraints, one of which I often hear and I am confused by: that it should minimize the number of variables. Given the above, that SAT solvers can be seen at as partial evaluation engines that thrive on the fact that they can partially evaluate and partially backtrack"