Download presentation
Presentation is loading. Please wait.
1
GRASP-an efficient SAT solver
Pankaj Chauhan
2
SATisfying assignment!
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! 8/2/2019 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! 8/2/2019 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 8/2/2019 15-398: GRASP and Chaff
5
Outline Terminology Basic Backtracking Search GRASP
Pointers to future work Please interrupt me if anything is not clear! 8/2/2019 15-398: GRASP and Chaff
6
Terminology CNF formula Assignment A 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} Manually write down the examples of all types of assignments For unsat, same as A but with x1=1 8/2/2019 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 8/2/2019 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 is assigned to v at decision level d 8/2/2019 15-398: GRASP and Chaff
9
Basic Backtracking Search
Iterate through: Make new decision assignments to explore new regions of search space Infer implied assignments by a deduction process. May lead to unsatisfied clauses, conflict! The assignment is called conflicting assignment. Conflicting assignments leads to backtrack to discard the search subspace 8/2/2019 15-398: GRASP and Chaff
10
Backtracking Search in Action
1 = (x2 x3) 2 = (x1 x4) 3 = (x2 x4) x1 x1 = x2 x2 = x1 = x4 = x2 = Say which step is which. x3 = x3 = {(x1,1), (x2,0), (x3,1) , (x4,0)} {(x1,0), (x2,0), (x3,1)} No backtrack in this example! 8/2/2019 15-398: GRASP and Chaff
11
Backtracking Search in Action
Add a clause 1 = (x2 x3) 2 = (x1 x4) 3 = (x2 x4) 4 = (x1 x2 x3) x1 x1 = x1 = x4 = x2 x2 = x2 = x3 = x3 = conflict {(x1,0), (x2,0), (x3,1)} 8/2/2019 15-398: GRASP and Chaff
12
Davis-Putnam revisited
Deduction Decision Backtrack 8/2/2019 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! 8/2/2019 15-398: GRASP and Chaff
14
GRASP search template 8/2/2019 15-398: GRASP and Chaff
Decide: simple one, choose the one with most # of sat. clauses Deduce: do BCP Diagnose: do learning Erase: erase assignment at current decision level Search tree is maintained implicitly in procedure call stack 8/2/2019 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 8/2/2019 15-398: GRASP and Chaff
16
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 8/2/2019 15-398: GRASP and Chaff
17
(x) = max{(y)|(y,v(y))A(x)}
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)} Tell them it is assigned to each node in the search tree 8/2/2019 15-398: GRASP and Chaff
18
Example Implication Graph
Current truth assignment: Current decision assignment: 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) 4 1 3 6 conflict 2 5 8/2/2019 15-398: GRASP and Chaff
19
GRASP Deduction Process
8/2/2019 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 8/2/2019 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 8/2/2019 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) 8/2/2019 15-398: GRASP and Chaff
23
Learning (some math) 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) = (x) [ causesof(y) ]o/w (y,v(y)) (x) causesof(x) = 8/2/2019 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() = x9 x10 = x11 = 8/2/2019 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 8/2/2019 15-398: GRASP and Chaff
26
Backtracking Failure 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 8/2/2019 15-398: GRASP and Chaff
27
Continued IG ’ x1 ’ Decision level 3 x9=0@1 x8=1@6 C() 8
9 ’ 5 C() 9 9 C() 7 x1 7 6 Due to C() ’ 8/2/2019 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 ’ 8/2/2019 15-398: GRASP and Chaff
29
Backtracking Conflict Directed Backtracking contd.
Backtrack level is given by = d-1 chronological backtrack < d-1 non-chronological backtrack AC(’) = {x9 x10 = x11 = C() = (x9 x10 x11 x12 x13) = max{(x)|(x,v(x))AC(’)} 8/2/2019 15-398: GRASP and Chaff
30
Procedure Diagnose() 8/2/2019 15-398: GRASP and Chaff
31
Is that all? Huge overhead for constraint propagation
Better decision heuristics Better learning, problem specific Better engineering! Chaff 8/2/2019 15-398: GRASP and Chaff
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.