1 / 30

GRASP SAT solver

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 = (x 2  x 3 )

shamus
Télécharger la présentation

GRASP SAT solver

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GRASP SAT solver J. Marques-Silva and K. Sakallah Presented by Constantinos Bartzis Slides borrowed from Pankaj Chauhan

  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} SATisfying assignment!

  3. 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

  4. 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  unsatisfyingassignment {(x1,1), (x4,1)} • |A= 1  satisfying assignment {(x1,0), (x2,1), (x4,1)} • |A= X  unresolved {(x1,0), (x2,0), (x4,1)} 1 = (x2  x3) 2 = (x1  x4) 3 = (x2  x4) A = {x1=0, x2=1, x3=0, x4=1}

  5. Terminology • An assignment partitions the clause databaseinto three classes • Satisfied • Unsatisfied • Unresolved • Free literals: unassigned literals of a clause • Unitclause: unresolved with only one free literal

  6. 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  xis assigned tovat decision leveld

  7. Basic Backtracking Search • Iteration: • 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. • If there is a conflict backtrack

  8. x1 x2 DPLL in action x1 = 0@1  1 = (x1  x2  x3  x4) 2 = (x1  x3  x4) 3 = (x1  x2  x3) 4 = (x3  x4) 5 = (x4  x1  x3) 6 = (x2  x4) 7 = (x2  x4 )   U / /  U / x2 = 0@2  / / /   x3 = 1@2   x4 = 1@2 conflict

  9. x1 x2 DPLL in action x1 = 0@1  1 = (x1  x2  x3  x4) 2 = (x1  x3  x4) 3 = (x1  x2  x3) 4 = (x3  x4) 5 = (x4  x1  x3) 6 = (x2  x4) 7 = (x2  x4 )   / x2 = 0@2 / x2 = 1@2 / U   x3 = 1@2  x4 = 1@2  / /  x4 = 1@2 conflict conflict

  10. x1 x4 x2 x2 DPLL in action x1 = 0@1  1 = (x1  x2  x3  x4) 2 = (x1  x3  x4) 3 = (x1  x2  x3) 4 = (x3  x4) 5 = (x4  x1  x3) 6 = (x2  x4) 7 = (x2  x4 ) / / x1 = 1@1 /    x2 = 0@2 x2 = 0@2  x2 = 1@2   x3 = 1@2  x4 = 1@2   x4 = 1@2 x4 = 1@2 conflict conflict {(x1,1), (x2,0), (x4,1)}

  11. DPLL Algorithm Deduction Decision Backtrack

  12. 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

  13. GRASP search template

  14. 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

  15. GRASP Deduction • Boolean Constraint Propagation using implication graphs E.g. for the clause  = (x y), ify=1, then we must havex=1 • For a variable xoccuring in a clause, assignment 0 to all other literals is calledantecedent assignmentA(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 ofx • Antecedent assignment of a decision variable is empty

  16. 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)}

  17. 4 x2=1@6 x5=1@6 1 4 3 6 x4=1@6  conflict 6 3 2 5 2 5 x6=1@6 x3=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=1@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) x10=0@3 x1=1@6 x9=0@1 x11=0@3

  18. GRASP Deduction Process

  19. 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

  20. 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 occurrenceof  again

  21. 4 x2=1@6 x5=1@6 1 4 3 6 x4=1@6  conflict 6 3 2 5 2 5 x6=1@6 x3=1@6 Learning x10=0@3 x1=1@6 x9=0@1 x11=0@3 C() = (x1  x9  x10  x11)

  22. (x,v(x)) if A(x) =  causesof(x) = (x) [ causesof(y)]o/w (y,v(y))  (x) 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

  23. 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

  24. Backtracking Failure driven assertions (FDA): • If C() involves current decision variable, a 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

  25. 4 x2=1@6 x5=1@6 1 4 3 6 x4=1@6  conflict 6 3 2 5 2 5 x6=1@6 x3=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=1@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) x10=0@3 x1=1@6 x9=0@1 x11=0@3

  26. 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 C() x10=0@3 x1=0@6 C() C() x11=0@3

  27. Decision level 3 4 5 x1 6  ' Non-chronological backtracking x8=1@6 x9=0@1 C() 8 9 x10=0@3 ’ x13=1@2 x1=0@6 C() 9 9 C() 7 x11=0@3 x7=1@6 7 x12=1@2 AC(’) = {x9 =0@1, x10 = 0@3, x11 = 0@3, x12=1@2, x13=1@2} C() = (x9  x10  x11   x12   x13)

  28. Backtracking • Backtrack level is given by • = d-1chronological backtrack • < d-1non-chronological backtrack  = max{(x)|(x,v(x))AC(’)}

  29. Procedure Diagnose()

  30. What’s next? • Reduce overhead for constraint propagation • Better decision heuristics • Better learning, problem specific • Better engineering Chaff

More Related