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

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

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

GRASP SAT solver

Presented by Constantinos BartzisSlides borrowed from Pankaj Chauhan

J. Marques-Silva and K. Sakallah

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!

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

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}

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. Make new decision assignments to

explore new regions of search space2. Infer implied assignments by a

deduction process. May lead to unsatisfied clauses, conflict.

The assignment is called conflicting assignment.

3. If there is a conflict backtrack

DPLL in action

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 )

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

x2

UU

x3 = 1@2

x1 = 0@1

//

//

//

x2 = 0@2

x4 = 1@2

conflict

UU

////

//

DPLL in action

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 )

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

x2

x3 = 1@2

x1 = 0@1

//

//

//

x2 = 0@2

x4 = 1@2

conflict

UU//

//

x2 = 1@2

x4 = 1@2

conflict

DPLL in action

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 )

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

x2

x3 = 1@2

x1 = 0@1//

//

x2 = 0@2

x4 = 1@2

conflict

//

x2 = 1@2

x4 = 1@2

conflict

x2

x1 = 1@1

x2 = 0@2

x4

x4 = 1@2

{(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 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

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

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

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

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

C() = (x1 x9 x10 x11)

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

(x,v(x)) if A(x) =

(x) [ causesof(y) ]o/w(y,v(y)) (x)

causesof(x) =

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

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)

C()=(x1 x9 x10 x11)

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)

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

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)

C() = (x1 x9 x10 x11)

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)

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

Current decision assignment: {x1=0@6}

x11=0@3

x10=0@3

x9=0@1

C() C()

C()

x1=0@6

Non-chronological backtracking

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

AC(’) = {x9 =0@1, x10 = 0@3, x11 = 0@3, x12=1@2, x13=1@2}

C() = (x9 x10 x11 x12 x13)

Decision level

4

5

x1

6

'

3

Backtrack level is given by

= d-1 chronological backtrack < d-1 non-chronological backtrack

Backtracking

= max{(x)|(x,v(x))AC(’)} = max{(x)|(x,v(x))AC(’)}

Procedure Diagnose()

What’s next?

Reduce overhead for constraint propagation

Better decision heuristics Better learning, problem specific Better engineering

Chaff