State-of-the-art in SAT solvers Vibhav Gogate. SAT formulas A set of propositional variables and clauses involving variables (x1+x2’+x3) and (x2+x1’+x4)

Post on 15-Jan-2016

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

State-of-the-art in SAT solvers

Vibhav Gogate

SAT formulas

A set of propositional variables and clauses involving variables (x1+x2’+x3) and (x2+x1’+x4) x1,x2, x3 and x4 are variables (True or false)

Literals: Variable and its negation x1 and x1’

A clause is satisfied if one of the literals is true x1=true satisfies clause 1 x1=false satisfies clause 2

Solution: An assignment that satisfies all clauses

SAT solvers Given 10 minutes of time Started with DPLL (1962)

Able to solve 10-15 variable problems Satz (Chu Min Li, 1995)

Able to solve some 1000 variable problems Chaff (Malik et al., 2001)

Intelligently hacked DPLL , Won the 2004 competition Able to solve some 10000 variable problems

Current state-of-the-art Minisat and SATELITEGTI (Chalmer’s university, 2004-2006) Jerusat and Haifasat (Intel Haifa, 2002) Ace (UCLA, 2004-2006)

DPLL Example

{p,r},{p,q,r},{p,r}

{T,r},{T,q,r},{T,r}

{F,r},{F,q,r},{F,r}

p=T p=F

{q,r} {r},{r}{}

SIMPLIFY

SIMPLIFY

SIMPLIFY

DPLL Algorithm as seen by SAT solver

While (1) {if (decide_next_branch()) { //1. Branching

while (deduce()==conflict) { //2. Deducingblevel=analyze_conflicts() // 3. Learningif (blevel < 0)

return UNSATelse backtrack(blevel) // 4. Backtracking

}else RETURN UNSAT;

}

Chaff implementation

While (1) {if (decide_next_branch()) { //1. Branching

while (deduce()==conflict) { //2. Deducingblevel=analyze_conflicts() // 3. Learningif (blevel < 0)

return UNSATelse backtrack(blevel) // 4. Backtracking

}else RETURN UNSAT;

}Use conflict-directed backjumping + Learning

Learning

Adding information about the instance into the solution process without changing the satisfiability of the problem. In CNF representation it is accomplished by adding clauses

into the clause database Knowledge of failure may help search in other

spaces Learning is very effective in pruning the search

space for structured problems It is of limited use for random instances Why? Still an open question

Chaff implementation

While (1) {if (decide_next_branch()) { //1. Branching

while (deduce()==conflict) { //2. Deducingblevel=analyze_conflicts() // 3. Learningif (blevel < 0)

return UNSATelse backtrack(blevel) // 4. Backtracking

}else RETURN UNSAT;

}Boolean constraint propagation: Main factor

Naive Implementation of Deduce or Unit propagation

Check every clause after an assignment is made and reduce it if possible Repeat if a unit clause is generated (implication)

After backtrack, revert all clauses to their original form as they were before.

Very slow. A solver would spend 85-90% of the time doing

unit propagation Why not speed it up?

Chaff implementation

While (1) {if (decide_next_branch()) { //1. Branching

while (deduce()==conflict) { //2. Deducingblevel=analyze_conflicts() // 3. Learningif (blevel < 0)

return UNSATelse backtrack(blevel) // 4. Backtracking

}else RETURN UNSAT;

}Variable ordering heuristics

Other issues

Clause Deletion Learned clauses slows down the bcp and eat up

memory Delete clauses periodically Various heuristics for this purpose

Winner of SAT competition 2004.

But Chaff no longer State of the Art

More hacking Minisat (2006, winner of SAT RACE 2006)

Based on chaff but a better faster implementation Some new things like conflict analysis and

minimization but basically same as chaff

Benchmarks

Random Crafted Industrial

SAT race 2006

SAT race 2006

top related