Top Banner
Heuristics for Efficient SAT Solving As implemented in GRASP, Chaff and GSAT.
36

Heuristics for Efficient SAT Solving

Dec 31, 2015

Download

Documents

Brendan Simpson

Heuristics for Efficient SAT Solving. As implemented in GRASP , Chaff and GSAT. Formulation of famous problems as SAT: Bounded Model Checking (1/4). Given a property p : (e.g. “ always signal_a = signal_b”) Is there a state reachable within k cycles, which satisfies  p ?. p. p. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Heuristics for Efficient SAT Solving

Heuristics forEfficient SAT Solving

As implemented in GRASP, Chaff and GSAT.

Page 2: Heuristics for Efficient SAT Solving

Given a property p: (e.g. “always signal_a = signal_b”)

Is there a state reachable within k cycles, which satisfies p ?

. . .s0 s1 s2 sk-1 sk

p p p p p

Formulation of famous problems as SAT:Bounded Model Checking (1/4)

Page 3: Heuristics for Efficient SAT Solving

The reachable states in k steps are captured by:

I s s s s s s sk k( ) ( , ) ( , ) ... ( , )0 0 1 1 2 1

The property p fails in one of the cycles 1..k:

p p pk1 2 ...

Formulation of famous problems as SAT:Bounded Model Checking (2/4)

Page 4: Heuristics for Efficient SAT Solving

( ): ( , )k I s s pi

k

i ii

k

i00

1

10

=

The safety property p is valid up to cycle k iff k is unsatisfiable:

. . .s0 s1 s2 sk-1 sk

p p p p p

Formulation of famous problems as SAT:Bounded Model Checking (3/4)

Page 5: Heuristics for Efficient SAT Solving

Example: a two bit counter

l l rr r' ( )'

Property: always (l r).

00

01 10

11

: ( )( )( )

( )( )( )

FHG

IKJ

FHGG

IKJJl r

l l r r rl l r r r

l rl rl r

0 01 0 0 1 0

2 1 1 2 1

0 0

1 1

2 2

I l r0:

For k = 2, k is unsatisfiable. For k = 4 k is satisfiable

:

Initial state:

Transition:

For k = 2:

Formulation of famous problems as SAT:Bounded Model Checking (4/4)

Page 6: Heuristics for Efficient SAT Solving

What is SAT?

SATisfying assignment!

Given a propositional formula in CNF, find an assignment to Boolean variables that makes the formula true:

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

A = {x1=0, x2=1, x3=0, x4=1}

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

A = {x1=0, x2=1, x3=0, x4=1}

Page 7: Heuristics for Efficient SAT Solving

Why SAT?

Fundamental problem from theoretical point of view Numerous applications:

– CAD, VLSI– Optimization– Bounded Model Checking and other type of formal verification– AI, planning, automated deduction

Page 8: Heuristics for Efficient SAT Solving

Given in CNF: (x,y,z),(-x,y),(-y,z),(-x,-y,-z)

Decide()

Deduce()

Resolve_Conflict()

-xx

-zz-yy

z -z y -y

() ()

(z ),(-z ) ()

(y),(-y,z ),(-y,-z )

()

() ()

(y),(-y)

(y,z ),(-y,z )

X

X X X X

A Basic SAT algorithm

Page 9: Heuristics for Efficient SAT Solving

While (true){

if (!Decide()) return (SAT);

while (!Deduce())

if (!Resolve_Conflict()) return

(UNSAT);}

Choose the next variable and value.Return False if all

variables are assigned

Apply unit clause rule.Return False if reached

a conflict

Backtrack until no conflict.

Return False if impossible

A Basic SAT algorithm

Page 10: Heuristics for Efficient SAT Solving

Basic Backtracking Search

Organize the search in the form of a decision tree

– Each node corresponds to a decision

– Depth of the node in the decision tree decision level

– Notation: x=v@d x 2 {0,1} is assigned to v at decision level d

Page 11: Heuristics for Efficient SAT Solving

Backtracking Search in Action

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

x1

x1 = 0@1

{(x1,0), (x2,0), (x3,1)}

x2 x2 = 0@2

{(x1,1), (x2,0), (x3,1) , (x4,0)}

x1 = 1@1

x3 = 1@2

x4 = 0@1 x2 = 0@1

x3 = 1@1

No backtrack in this example!

Page 12: Heuristics for Efficient SAT Solving

Backtracking Search in Action

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

4 = (x1 x2 x3)

1 = (x2 x3)

2 = (x1 x4)

3 = (x2 x4)

4 = (x1 x2 x3)

Add a clause

x4 = 0@1

x2 = 0@1

x3 = 1@1

conflict

{(x1,0), (x2,0), (x3,1)}

x2

x2 = 0@2 x3 = 1@2

x1 = 0@1

x1

x1 = 1@1

Page 13: Heuristics for Efficient SAT Solving

DLIS (Dynamic Largest Individual Sum)For a given variable x:

– Cx,p – # unresolved clauses in which x appears positively

– Cx,n - # unresolved clauses in which x appears negatively

– Let x be the literal for which Cx,p is maximal

– Let y be the literal for which Cy,n is maximal

– If Cx,p > Cy,n choose x and assign it TRUE

– Otherwise choose y and assign it FALSE

Requires l (#literals) queries for each decision. (Implemented in e.g. Grasp)

Decision heuristics

Page 14: Heuristics for Efficient SAT Solving

Compute for every clause and every variable l (in each phase):

J(l) :=

Choose a variable l that maximizes J(l).

This gives an exponentially higher weight to literals in shorter clauses.

Jeroslow-Wang method

Decision heuristics

,

||2l

Page 15: Heuristics for Efficient SAT Solving

Let f*(x) be the # of unresolved smallest clauses containing x. Choose x that maximizes:

((f*(x) + f*(!x)) * 2k + f*(x) * f*(!x)

k is chosen heuristically.

  The idea:

– Give preference to satisfying small clauses.

– Among those, give preference to balanced variables (e.g. f*(x) = 3, f*(!x) = 3 is better than f*(x) = 1, f*(!x) = 5).

MOM (Maximum Occurrence of clauses of Minimum size).

Decision heuristics

Page 16: Heuristics for Efficient SAT Solving

VSIDS (Variable State Independent Decaying Sum)

4. Periodically, all the counters are divided by a constant.

3. The unassigned variable with the highest counter is chosen.

2. When a clause is added, the counters are updated.

1. Each variable in each polarity has a counter initialized to 0.

(Implemented in Chaff)

Decision heuristics

Page 17: Heuristics for Efficient SAT Solving

VSIDS (cont’d)

• Chaff holds a list of unassigned variables sorted by the counter value.

• Updates are needed only when adding conflict clauses.

• Thus - decision is made in constant time.

Decision heuristics

Page 18: Heuristics for Efficient SAT Solving

VSIDS is a ‘quasi-static’ strategy:

- static because it doesn’t depend on current assignment

- dynamic because it gradually changes. Variables that appear in recent conflicts have higher priority.

Decision heuristics

This strategy is a conflict-driven decision strategy.

“..employing this strategy dramatically (i.e. an orderof magnitude) improved performance ... “

Page 19: Heuristics for Efficient SAT Solving

A (CNF) dependency graph D (V,E):

A partitioning C1..Cn:

An abstract dependency graph D’(V’, E’):

Variable ordering (Abstract dependency graphs)

Page 20: Heuristics for Efficient SAT Solving

For (k) there exists a partition C1..Cn s.t. the abstract dependency graph is linear

C0 C1 C2 CkC3 Ck-1

V0 V1 V2 VkV3 Vk-1

...

Variable ordering (The natural order of (k))

Page 21: Heuristics for Efficient SAT Solving

I0PkRiding on unreachable states...

k should satisfy I0

I0Riding on legal executions...

(k) should satisfy Pk

Pk

Variable ordering (simple static ordering)

Page 22: Heuristics for Efficient SAT Solving

Implication graphs and learning

1 = (x1 x2)

2 = (x1 x3 x9)

3 = (x2 x3 x4)

4 = (x4 x5 x10)

5 = (x4 x6 x11)

6 = (x5 x6)

7 = (x1 x7 x12)

8 = (x1 x8)

9 = (x7 x8 x13)

1 = (x1 x2)

2 = (x1 x3 x9)

3 = (x2 x3 x4)

4 = (x4 x5 x10)

5 = (x4 x6 x11)

6 = (x5 x6)

7 = (x1 x7 x12)

8 = (x1 x8)

9 = (x7 x8 x13)

Current truth assignment: {x9=0@1 ,x10=0@3, x11=0@3, x12=1@2, x13=1@2}

Current decision assignment: {x1=1@6}

6

6

conflict

x9=0@1

x1=1@6

x10=0@3

x11=0@3

x5=1@64

4

5

5 x6=1@62

2

x3=1@6

1

x2=1@6

3

3

x4=1@6

We learn the conflict clause 10 : (: x1 Ç x9 Ç x11 Ç x10)

Page 23: Heuristics for Efficient SAT Solving

Implication graph, flipped assignment

x1=0@6

x11=0@3

x10=0@3

x9=0@1

x7=1@6

x12=1@2

7

7

x8=1@6

8

10

10

10 9

9

x13=1@2

9

Due to the conflict clause

1 = (x1 x2)

2 = (x1 x3 x9)

3 = (x2 x3 x4)

4 = (x4 x5 x10)

5 = (x4 x6 x11)

6 = (x5 x6)

7 = (x1 x7 x12)

8 = (x1 x8)

9 = (x7 x8 x13)

10 : (: x1 Ç x9 Ç x11 Ç x10)

1 = (x1 x2)

2 = (x1 x3 x9)

3 = (x2 x3 x4)

4 = (x4 x5 x10)

5 = (x4 x6 x11)

6 = (x5 x6)

7 = (x1 x7 x12)

8 = (x1 x8)

9 = (x7 x8 x13)

10 : (: x1 Ç x9 Ç x11 Ç x10)

Page 24: Heuristics for Efficient SAT Solving

Non-chronological backtracking

Non-chronological backtracking

x1

4

5

6

Decision level

Which assignments caused the conflicts ? x9= 0@1

x10= 0@3

x11= 0@3

x12= 1@2

x13= 1@2

Backtrack to decision level 3

3

These assignmentsAre sufficient forCausing a conflict.

Page 25: Heuristics for Efficient SAT Solving

Deduction() allocates new implied variables and conflicts. How can this be done efficiently ?

Observation: More than 90% of the time SAT solvers perform Deduction().

More engineering aspects of SAT solvers

Page 26: Heuristics for Efficient SAT Solving

Hold 2 counters for each clause :

val1( ) - # of negative literals assigned 0 in +

# of positive literals assigned 1 in .

val0() - # of negative literals assigned 1 in +

# of positive literals assigned 0 in .

Grasp implements Deduction() with counters

Page 27: Heuristics for Efficient SAT Solving

Every assignment to a variable x results in updating the counters for all the clauses that contain x.

Grasp implements Deduction() with counters

is satisfied iff val1() > 0

is unsatisfied iff val0() = ||

is unit iff val1() = 0 val0() = || - 1

is unresolved iff val1() = 0 val0() < || - 1..

Backtracking: Same complexity.

Page 28: Heuristics for Efficient SAT Solving

Chaff implements Deduction() with a pair of observers

Observation: during Deduction(), we are only interested in newly implied variables and conflicts.

These occur only when the number of literals in with value ‘false’ is greater than || - 2

Conclusion: no need to visit a clause unless (val0() > || - 2)

How can this be implemented ?

Page 29: Heuristics for Efficient SAT Solving

Chaff implements Deduction() with a pair of observers

Define two ‘observers’: O1(), O2().

O1() and O2() point to two distinct literals which are not ‘false’.

becomes unit if updating one observer leads to O1() = O2().

Visit clause only if O1() or O2() become ‘false’.

Page 30: Heuristics for Efficient SAT Solving

Both observers of an implied clause are on the highest decision levelpresent in the clause. Therefore, backtracking will un-assign them first.Conclusion: when backtracking, observers stay in place.

Chaff implements Deduction() with a pair of observers

1 2 3 4 5

V[1]=0

1 2 3 4 5

V[5]=0, v[4]= 0

1 2 3 4 5

V[2]=0

O1 O2

1 2 3 4 5 Unit clause

Backtrackv[4] = v[5]= Xv[1] = 1

1 2 3 4 5

Backtracking: No updating. Complexity = constant.

Page 31: Heuristics for Efficient SAT Solving

Chaff implements Deduction() with a pair of observers

The choice of observing literals is important. Best strategy is - the least frequently updated variables.

The observers method has a learning curve in this respect:

1. The initial observers are chosen arbitrarily.

2. The process shifts the observers away from variables that were recently updated (these variables will most probably be reassigned in a short time).

In our example: the next time v[5] is updated, it will point to a significantly smaller set of clauses.

Page 32: Heuristics for Efficient SAT Solving

GSAT: A different approach to SAT solving

for i = 1 to max_tries {

T := randomly generated truth assignment

for j = 1 to max_flips {

if T satisfies return TRUE

choose v s.t. flipping v’s value gives largest increase in

the # of satisfied clauses (break ties randomly).

T := T with v’s assignment flipped. } }

Given a CNF formula , choose max_tries and max_flips

Page 33: Heuristics for Efficient SAT Solving

Improvement # 1: clause weights

Initial weight of each clause: 1

Increase by k the weight of unsatisfied clauses.

Choose v according to max increase in weight

Clause weights is another example of conflict-driven decision strategy.

Page 34: Heuristics for Efficient SAT Solving

Improvement # 2: Averaging-in

Q: Can we reuse information gathered in previous tries in order to speed up the search ?

A: Yes! Rather than choosing T randomly each time, repeat ‘good assignments’ and choose randomly the rest.

Page 35: Heuristics for Efficient SAT Solving

Let X1, X2 and X3 be equally wide bit vectors.

Define a function bit_average : X1 X2 X3 as follows:

b1i b1

i = b2i

random otherwise

(where bji is the i-th bit in Xj, j {1,2,3})

Improvement # 2: Averaging-in (cont’d)

b3i :=

Page 36: Heuristics for Efficient SAT Solving

Improvement # 2: Averaging-in (cont’d)

Let Tiinit

be the initial assignment (T) in cycle i.

Let Tibest

be the assignment with highest # of satisfied clauses in

cycle i.

T1init := random assignment.

T2init := random assignment.

i > 2, Tiinit := bit_average(Ti-1

best, Ti-2best)