grasp-an efficient sat solver pankaj chauhan. 6/19/201515-398: grasp and chaff2 what is sat? given a...
Post on 20-Dec-2015
217 Views
Preview:
TRANSCRIPT
04/18/23 15-398: GRASP and Chaff 2
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}
1 = (x2 x3)
2 = (x1 x4)
3 = (x2 x4)
A = {x1=0, x2=1, x3=0, x4=1}
SATisfying assignment!
04/18/23 15-398: GRASP and Chaff 3
What is SAT? Solution 1: Search through all
assignments! n variables 2n possible assignments,
explosion!
SAT is a classic NP-Complete problem, solve SAT and P=NP!
04/18/23 15-398: GRASP and Chaff 4
Why SAT? Fundamental problem from
theoretical point of view Numerous applications
CAD, VLSI Optimization Model Checking and other type of
formal verification AI, planning, automated deduction
04/18/23 15-398: GRASP and Chaff 5
Outline Terminology Basic Backtracking Search GRASP Pointers to future work
Please interrupt me if anything is not clear!
04/18/23 15-398: GRASP and Chaff 6
Terminology CNF formula
x1,…, xn: n variables 1,…, m: m clauses
Assignment A 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)}
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}
04/18/23 15-398: GRASP and Chaff 7
Terminology Assignment A (contd.)
|A= X unresolved {(x1,0), (x2,0), (x4,1)} An assignment partitions the
clause database into three classes Satisfied, unsatisfied, unresolved
Free literals: unassigned literals of a clause
Unit clause: #free literals = 1
04/18/23 15-398: GRASP and Chaff 8
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
04/18/23 15-398: GRASP and Chaff 9
Basic Backtracking Search Iterate through:
1. Make new decision assignments to explore new regions of search space
2. Infer implied assignments by a deduction process. May lead to unsatisfied clauses, conflict! The assignment is called conflicting assignment.
3. Conflicting assignments leads to backtrack to discard the search subspace
04/18/23 15-398: GRASP and Chaff 10
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!
04/18/23 15-398: GRASP and Chaff 11
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
04/18/23 15-398: GRASP and Chaff 13
GRASP GRASP is 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!
04/18/23 15-398: GRASP and Chaff 15
GRASP Decision Heuristics
Procedure decide() Choose the variable that satisfies
the most #clauses == max occurences as unit clauses at current decision level
Other possibilities exist
04/18/23 15-398: GRASP and Chaff 16
GRASP Deduction Boolean Constraint Propagation using
implication graphsE.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
04/18/23 15-398: GRASP and Chaff 17
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 vars in the unsatisfied clause
Decision level for an implied assignment is(x) = max{(y)|(y,v(y))A(x)}
04/18/23 15-398: GRASP and Chaff 18
Example Implication Graph
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
04/18/23 15-398: GRASP and Chaff 20
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 backtrack
04/18/23 15-398: GRASP and Chaff 21
Learning Determine the assignment that
caused the conflict, negation of this assignment is called conflict induced clause C() The conjunct of this assignment is
necessary condition for So adding C() will prevent the
occurrence of again
04/18/23 15-398: GRASP and Chaff 22
Learning Find C() by a backward traversal
of the IG, find the roots of the IG in the transitive fanin of
For our example IG, C() = (x1 x9 x10 x11)
04/18/23 15-398: GRASP and Chaff 23
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
Learning (some math)
(x,v(x)) if A(x) =
(x) [ causesof(y) ]o/w(y,v(y)) (x)
causesof(x) =
04/18/23 15-398: GRASP and Chaff 24
Learning (some math) Deriving conflicting clause C()
from the conflicting assignment AC() is straight forward
For our IG,
C() = xv(x)
(x,v(x)) AC()
AC() = {x1=1@6, x9 =0@1, x10 = 0@3, x11 = 0@3}
04/18/23 15-398: GRASP and Chaff 25
Learning Unique implication points (UIPs) of
an IG also provide conflict clauses Learning of new clauses increases
clause database size Heuristically delete clauses based
on a user parameter If size of learned clause > parameter,
don’t include it
04/18/23 15-398: GRASP and Chaff 26
BacktrackingFailure driven assertions (FDA):
If C() involves current decision variable, then after addition, it becomes unit clause, so 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
04/18/23 15-398: GRASP and Chaff 27
Continued IG
9
9
’
x12=1@2
x7=1@6
x8=1@6
x1=0@6
x11=0@3
x10=0@3
x9=0@1
7
7
8
C() C()
C() x13=1@2
9
Due to C()
x1
Decision level
3
5
6
’
04/18/23 15-398: GRASP and Chaff 28
Backtracking
Conflict Directed Backtracking Now deriving a new IG after setting
x1=0 by FDA, we get another conflict ’
Non-chronological backtrack to decision level 3, because backtracking to any level 5, 4 would generate the same conflict ’
04/18/23 15-398: GRASP and Chaff 29
Conflict Directed Backtracking contd.
Backtrack level is given by
= d-1 chronological backtrack < d-1 non-chronological backtrack
AC(’) = {x9 =0@1, x10 = 0@3, x11 = 0@3, x12=1@2, x13=1@2}
C() = (x9 x10 x11 x12 x13)
Backtracking
= max{(x)|(x,v(x))AC(’)} = max{(x)|(x,v(x))AC(’)}
top related