Remix.run Logo
▲ akoboldfrying 3 hours ago

> Instead of backtracking, Claude just imported an industrial-strength library made to solve these sorts of problems. OR-Tools CP-SAT is put out by Google and is made for solving constrained optimization problems, as well as satisfiability problems like this one.

I'm not familiar with CP-SAT, but TTBOMK all SAT solvers use a type of backtracking search underneath called DPLL. Modern ones are highly tuned in terms of which variable they choose to branch on next, and in what order to try its possible values; this can have an enormous impact on runtime. They probably use several tricks on top of that; the big one that I'm aware is conflict-driven clause learning, where the solver adds new constraints that it discovers as it goes along (e.g., it might be able to determine that x and y always have the same value in every solution), which can shrink the search space a lot.