and
in a weighted manner. The solver differs from
the straight-forward lookahead architecture in two aspects: (1) lookahead is performed on a subset of the
free (unfixed) variables, and (2) if a certain lookahead significantly reduces the formula, the
DoubleLookahead procedure is called to check whether this lookahead will eventually result in
a conflict. Algorithms below show the pseudo-code of this architecture.
: At the beginning of each node, this set is filled by pre-selection
heuristics based on an approximation function of Diff. In contrast to earlier versions of march,
the size of
is not fixed to a percentage of the original number of variables. Currently, its size
equals a constant times the average number of detected failed literals.
(see algorithm 1). We denote by
that many clauses in
are reduced clauses of
. More specific, clauses
in
that are satisfied in
are not counted. If
, then there is a relatively high probability that during
DoubleLookahead(
)
will contain
the empty clause (
), forcing
to be satisfiability
equivalent to
.
, contains both literals of still unfixed variables in
.
. These implications trees are used to
decrease the number of unit propagations.
y and
x
y are
detected during the lookahead on x and
x
, y is assigned to true because it is a necessary assignment.
- Chu Min Li. A constrained-based approach to narrow search trees for satisfiability. Information processing letters 71 (1999), 75-80. [ link ]
- Marijn Heule, Joris van Zwieten, Mark Dufour and Hans van Maaren. March_eq: Implementing Additional Reasoning into an Efficient Lookahead Sat Solver. SAT 2004 Springer LNCS 3542 (2005), 345-359. [ .pdf ]