Hi,
I am wondering if MiniSat has some feature or it can be extended to
use a "hint solution". A "hint solution" is a set of true/false
assignment to each variable, and it may not satisfy the formula that I
am trying to check. However, an actual solution of the formula may
match the hint closely in terms of number of variables that have same
assignment in the actual solution and the hint.
If there have any research on similar ideas, I would appreciate if you
let me know.
On Mon, Mar 28, 2011 at 12:14 AM, aliva <aliv...@gmail.com> wrote:
> Hi,
>
> I am wondering if MiniSat has some feature or it can be extended to
> use a "hint solution". A "hint solution" is a set of true/false
> assignment to each variable, and it may not satisfy the formula that I
> am trying to check. However, an actual solution of the formula may
> match the hint closely in terms of number of variables that have same
> assignment in the actual solution and the hint.
Yes, it's possible to specify suggested values for variables that will
be tried first during branching. This is done by the following method:
void setPolarity (Var v, lbool b);
Note that it gives the preferred sign of that variable. I.e.
"setPolarity(x,l_True)" will prefer to branch first on the signed "~x"
and "setPolarity(x,l_False)" will prefer the unsigned "x".
Also, this disables the normal phase-saving polarity heuristics for
that variable, and whether this will be useful or not is heavily
application dependent. The default heuristic behaviour can be restored
for a variable by calling "setPolarity(x,l_Undef)".
I hope this helps,
/Niklas