15-398: GRASP and Chaff

advertisement
GRASP SAT solver
J. Marques-Silva and K. Sakallah
Presented by Constantinos Bartzis
Slides borrowed from Pankaj Chauhan
What is SAT?


Given a propositional formula in CNF, find an
assignment to boolean variables that makes the
formula true
E.g.
1 = (x2  x3)
2 = (x1  x4)
3 = (x2  x4)
A = {x1=0, x2=1, x3=0, x4=1}
SATisfying
assignment!
Why is SAT important?


Fundamental problem from theoretical
point of view
Numerous applications




CAD, VLSI
Optimization
Model Checking and other kinds of formal
verification
AI, planning, automated deduction
Terminology

CNF formula 



x1,…, xn: n variables
1,…, m: m clauses
Assignment A






1 = (x2  x3)
2 = (x1  x4)
3 = (x2  x4)
A = {x1=0, x2=1, x3=0, x4=1}
Set of (x,v(x)) pairs
|A| < n  partial assignment {(x1,0), (x2,1), (x4,1)}
|A| = n  complete assignment {(x1,0), (x2,1), (x3,0), (x4,1)}
|A= 0  unsatisfying assignment {(x1,1), (x4,1)}
|A= 1  satisfying assignment {(x1,0), (x2,1), (x4,1)}
|A= X  unresolved {(x1,0), (x2,0), (x4,1)}
Terminology

An assignment partitions the clause database into
three classes

Satisfied

Unsatisfied

Unresolved

Free literals: unassigned literals of a clause

Unit clause: unresolved with only one free literal
Basic Backtracking Search
Organize the search in the form of a
decision tree




Each node is an assignment, called decision
assignment
Depth of the node in the decision tree 
decision level (x)
x=v@d  x is assigned to v at decision level d
Basic Backtracking Search

Iteration:
1.
2.
Make new decision assignments to explore
new regions of search space
Infer implied assignments by a deduction
process.

3.
May lead to unsatisfied clauses, conflict. The
assignment is called conflicting assignment.
If there is a conflict backtrack
DPLL in action



U

U



x1
1 = (x1  x2  x3  x4)
x1 = 0@1
2 = (x1  x3  x4)
3 = (x/1  /x2  x3)
4 = (x/3  x4)
5 = (x/4  x/1   x/3)
6 = (x2  x4)
7 = (x2  x4 )
x2
x2 = 0@2
 x3 = 1@2
 x4 = 1@2
conflict
DPLL in action



x1
1 = (x1  x2  x3  x4)
x1 = 0@1
2 = (x1  x3  x4)
3 = (x/1  x2  x3)
4 = (x3  x4)
5 = (x4  x/1   x3)

U

6 = (x/2  x4)
7 = (x/2  x/4 )
x2
x2 = 0@2
 x3 = 1@2
x2 = 1@2
 x4 = 1@2
 x4 = 1@2
conflict
conflict
DPLL in action
 1 = (x/1  /x2  x3  x4)
 2 = (x/1  x3  x4)
 3 = (x1  x2  x3)
 4 = (x3  x4)
 5 = (x4  x1   x3)
 6 = (x2  x4)
 7 = (x2  x4 )
x1
x1 = 0@1
x1 = 1@1
x2
x2
x2 = 0@2
 x3 = 1@2
x2 = 1@2
 x4 = 1@2
 x4 = 1@2
conflict
x2 = 0@2
x4
x4 = 1@2
conflict
{(x1,1), (x2,0), (x4,1)}
DPLL Algorithm
Deduction
Decision
Backtrack
GRASP


GRASP stands for Generalized seaRch
Algorithm for the Satisfiability Problem
(Silva, Sakallah, ’96)
Features:



Implication graphs for BCP and conflict
analysis
Learning of new clauses
Non-chronological backtracking
GRASP search template
GRASP Decision Heuristics


Procedure decide()

Which variable to split on

What value to assign
Default heuristic in GRASP:
Choose the variable and assignment that directly
satisfies the largest number of clauses

Other possibilities exist
GRASP Deduction

Boolean Constraint Propagation using implication
graphs
E.g. for the clause  = (x  y), if y=1, then we must have x=1

For a variable x occuring in a clause, assignment 0 to all
other literals is called antecedent assignment A(x)

E.g. for  = (x  y  z),
A(x) = {(y,0), (z,1)}, A(y) = {(x,0),(z,1)}, A(z) = {(x,0), (y,0)}

Variables directly responsible for forcing the value of x

Antecedent assignment of a decision variable is empty
Implication Graphs


Nodes are variable assignments x=v(x)
(decision or implied)
Predecessors of x are antecedent assignments
A(x)



No predecessors for decision assignments!
Special conflict vertices  have A() =
assignments to variables in the unsatisfied clause
Decision level for an implied assignment is
(x) = max{(y)|(y,v(y))A(x)}
Example Implication Graph
Current truth assignment: {x9=0@1 ,x10=0@3, x11=0@3, x12=1@2, x13=1@2}
Current decision assignment: {x1=1@6}
1 = (x1  x2)
x10=0@3
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)
x1=1@6
x2=1@6
1
2
2
x9=0@1
3
3
x3=1@6
4
4
x4=1@6
5
5
x11=0@3
x5=1@6
6
6

conflict
x6=1@6
GRASP Deduction Process
GRASP Conflict Analysis



After a conflict arises, analyze the implication
graph at current decision level
Add new clauses that would prevent the
occurrence of the same conflict in the future 
Learning
Determine decision level to backtrack to, might
not be the immediate one  Non-chronological
backtracking
Learning

Determine the assignment that caused
conflict 



Backward traversal of the IG, find the roots of the
IG in the transitive fanin of 
This assignment is necessary condition for 
Negation of this assignment is called conflict
induced clause C()

Adding C() to the clause database will prevent
the occurrence of  again
Learning
x10=0@3
x1=1@6
x2=1@6
1
2
2
x9=0@1
3
3
x3=1@6
4
4
x4=1@6
5
5
x5=1@6
6

6
conflict
x6=1@6
x11=0@3
C() = (x1  x9  x10  x11)
Learning

For any node of an IG x, partition A(x) into
(x) = {(y,v(y)) A(x)|(y)<(x)}
(x) = {(y,v(y)) A(x)|(y)=(x)}

Conflicting assignment AC() = causesof(),
where
(x,v(x)) if A(x) = 
causesof(x) =
(x) 
[

(y,v(y))  (x)
causesof(y)
]o/w
Learning



Learning of new clauses increases
clause database size
Increase may be exponential
Heuristically delete clauses based on a
user provided parameter

If size of learned clause > parameter, don’t
include it
Backtracking
Failure driven assertions (FDA):
 If  () involves current decision variable, a
C


different assignment for the current variable
is immediately tried.
In our IG, after erasing the assignment at
level 6, C() becomes a unit clause x1
This immediately implies x1=0
Example Implication Graph
Current truth assignment: {x9=0@1 ,x10=0@3, x11=0@3, x12=1@2, x13=1@2}
Current decision assignment: {x1=1@6}
1 = (x1  x2)
x10=0@3
2 = (x1  x3  x9)
x2=1@6
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)
C()=(x1  x9  x10  x11)
1
x1=1@6
2
2
x9=0@1
3
3
x3=1@6
4
4
x4=1@6
5
5
x11=0@3
x5=1@6
6
6

conflict
x6=1@6
Example Implication Graph
Current truth assignment: {x9=0@1 ,x10=0@3, x11=0@3, x12=1@2, x13=1@2}
Current decision assignment: {x1=0@6}
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)
C() = (x1  x9  x10  x11)
x9=0@1
x10=0@3
C()
C()
C()
x11=0@3
x1=0@6
Non-chronological backtracking
Decision
level
x8=1@6
x9=0@1
x10=0@3
C()
C()
C()
x11=0@3
8
9
x1=0@6
7
7
9
3
’
x13=1@2
9
4
x7=1@6
5
x12=1@2
C() = (x9  x10  x11   x12   x13)
6
x1
AC(’) = {x9 =0@1, x10 = 0@3, x11 = 0@3, x12=1@2, x13=1@2}

'
Backtracking

Backtrack level is given by
 = max{(x)|(x,v(x))AC(’)}


 = d-1 chronological backtrack
 < d-1 non-chronological backtrack
Procedure Diagnose()
What’s next?

Reduce overhead for constraint
propagation

Better decision heuristics

Better learning, problem specific

Better engineering
Chaff
Download