In general, SAT problems are difficult to solve. However, in a few simple cases the very regular structure of the search space allows much more effective algorithms. One example is given by 1-SAT problems. In this case, each clause eliminates one value for a single variable allowing classical algorithms to examine the variables independently, giving an overall search cost of O(n) in spite of the exponentially large number of assignments. A 1-SAT problem has a solution if and only if each of the m clauses involves a distinct variable. Otherwise, both values for some variable will be in conflict, i.e., making a clause false, resulting in no solutions.
This simple structure allows for rapid search. SAT problems with larger clauses have a more complicated structure. Nevertheless, when the k-SAT problems are highly constrained, their structure is close to that of 1-SAT. To see this, consider a soluble k-SAT problem. With respect to a particular solution of that problem, define the good value for each variable as the value (true or false) it is assigned in that solution, while the opposite value is the bad one for that variable. For k-SAT problems with many constraints, the number of bad values in an assignment can usually be determined rapidly from its number of conflicts, even though determining exactly which variables have incorrect assigned values requires first finding the solution. In such cases, using the number of bad values results in a tractable algorithm as long as a priori knowledge of the solution is not assumed.
For example, consider soluble problems with the largest possible
number of constraints. For k-SAT, these maximally constrained
soluble problems have where
i.e., the single solution precludes any clause that conflicts with it.
An assignment with j bad values contains sets of k
variables all of which have the same values as the solution. Each of
the remaining sets conflicts with at least one clause in the
problem. Thus each assignment with j bad values has
conflicts. This quantity grows strictly monotonically with j for , so in these cases j is directly determined by the number
of conflicts. Assignments with
are not
distinguishable.
Assignments with j=n-k+1 can also be corrrectly determined by
including neighborhood information. To see this, consider an
assignment s with j bad values, and its n neighbors, i.e.,
assignments at Hamming distance one from s. Of these neighbors, j
have j-1 bad values, and the remaining n-j have j+1 bad
values. For , s has j neighbors with fewer conflicts
and n-j with more. Thus for these assignments, examining the number
of conflicts in the neighbors readily determines the value of
j. When j=n-k+1, the assignment continues to have j neighbors
with fewer conflicts, but now the remaining k-1 neighbors have the
same number of conflicts since the additional bad value does not
increase the number of conflicts. Finally, the neighbors of
assignments with
all have the same number of
conflicts. Thus examining the number of conflicts in an assignment's
neighbors determines the value of j, with the exception that
assignments with
are not distinguishable.
The value of j is the number of conflicts that s would have in the maximally constrained 1-SAT problem with the same solution as the given maximally constrained k-SAT problem. Thus for a maximally constrained k-SAT problem let
The value of can be determined rapidly, in much the
same way that a classical local search method checks the number of
conflicts among neighbors of its current state to determine which
assignment to move to next [42, 47]. Thus
is a computationally tractable approximation to the number of
conflicts each assignment would have in the corresponding 1-SAT
problem. Except for a few assignments with many conflicts,
gives the correct value. Specifically, only assignments with
at least n-k+3 bad values are given an incorrect value of j by this
approximation. In particular, the approximation is completely correct
for k=2.
While classical searches use the number of conflicts in an assignment
and its neighbors, another possibility for maximally constrained
problems is to use the number of conflicts in the assignment and
its complement (i.e., the assignment with opposite values for all
the variables). If the assignment has j bad values, its complement
will have n-j. As described above, the number of conflicts in an
assignment uniquely determines the corresponding value of j provided
. On the other hand, the number of conflicts in the
complement assignment uniquely determines j when
, or
. Thus, as long as n;SPMgt;2k, at least one of these conditions
will be true for all
and the correct value of j
can be determined.