• Non ci sono risultati.

Boolean Satisfiability

N/A
N/A
Protected

Academic year: 2021

Condividi "Boolean Satisfiability"

Copied!
6
0
0

Testo completo

(1)

Boolean Satisfiability

Gianpiero Cabodi Stefano Quer

Politecnico di Torino Torino, Italy

{gianpiero.cabodi,stefano.quer}@polito.it http://staff.polito.it/{gianpiero.cabodi,stefano.quer}/

References

™ Resolution

—Davis & Putnam, JACM’60

™ Backtrack Search

—Davis et. al, CACM’62

‹Non-chronological backtracking and clause recording

—Marques-Silva & Sakallah, ICCAD’96

—Bayardo & Schrag, AAAI’97; Zhang, CADE’97

‹Relevance-based learning

—Bayardo & Schrag, AAAI’97

‹Conflict-induced necessary assignments

—Marques-Silva & Sakallah, ICCAD’96

‹Randomization and restarts

—Gomes & Selman, AAAI’98

—Baptista & Marques-Silva, CP’2000

‹Formula simplification

—Li, AAAI’2000; Marques-Silva, CP’2000

™ Stalmarck’s Method

—Stalmarck, Patent’89

—Groote & Warners, CWI TechRep’1999

™ Recursive Learning

—Kunz & Pradhan, ITC’92

—Marques-Silva & Glass, DATE’99

™ Local Search

—Selman & Kautz, IJCAI’93

Outline

™ Boolean Satisfiability (SAT)

™ Basic Algorithms

‹DP

‹DPLL

™ Circuit SAT

‹Gate-to-CNF

‹Circuit-to-CNF

‹SAT on Circuit

‹DIMACS files

Boolean Satisfiability (SAT)

™ Given a suitable representation for a Boolean function f (X)

‹Find an assignment X* such that f (X*) = 1 OR

‹Prove that such an assignment does not exist, i.e., f(X) = 0 for all possible assignments

™ In the “classical” SAT problem, f (X) is represented as

‹Product-of-sums (POS) OR

‹Conjunctive normal form (CNF)

™ SAT belongs to NP

‹There is a non-deterministic Touring Machine deciding SAT in polinomial time

‹On a real – deterministic computer this would require exponential time

™ Many decision (yes/no) problems can be formulated either directly or indirectly in terms of Boolean Satisfiability

(2)

Conjunctive Normal Form (CNF)

Clause

Positive Literal

Negative Literal ϕ = ( a + c ) ( b + c ) (¬a + ¬b + ¬c )

ϕ = (a + ¬b)(¬a + b + ¬c )(a + c + d )(¬a + ¬b + ¬c )

a assigned 0b assigned 1c and d unassigned violated satisfied unresolved satisfied

Literal & Clause Classification

Davis-Putnam (DP) Procedure

™ Search for consistent assignment to entire cone of requested vertex by systematically trying all combinations (may be partial!!!)

™ Keep a queue of vertices that remain to be justified

‹Pick decision vertex from the queue and case split on possible assignments

‹For each case

—Propagate as many implications as possible – generate more vertices to be justified

– if conflicting assignment encountered undo all implications and backtrack

—Recur to next vertex from queue

Algorithm DPLL ()

while (ChooseNextAssignment ()) while (Deduce() == CONFLICT)

bLevel = AnalyzeConflict ()

if (bLevel < 0) return (UNSATISFIABLE) else Backtrack (bLevel)

return (SATISFIABLE)

™ ChooseNextAssignment

‹picks next decision variable and assignment

™ Deduce

‹does Boolean Constraint Propagation (BCP - implications)

™ AnalyzeConflict

‹back-processes from conflict and learns clauses

™ Backtrack

‹un-does assignments

Davis Putnam Logemann Loveland (DPLL) Procedure

Basic Case Splitting

(Backtrack Search)

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) 1

2 3 4 5 6 7 8

(a + b + c) a (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

b

c

d d

b

c

d d

c

(¬b + ¬c + ¬d) d (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d) (¬b + ¬c + ¬d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d)

(¬b + ¬c + d)

™ An unresolved clause is unit if it has exactly one unassigned literal

‹A unit clause has exactly one option for being satisfied

‹The value of that clause can be implied immediately

‹Example

—(a + c)(b + c)(¬a + ¬b + ¬c)

—a b⇒ ¬c

—i.e., a=1 and b=1 imply that c must be set to 0.

Implications: Unit Clause Rule

(3)

The Implication Graph (BCP)

(¬a ∨ b) ∧ (¬b ∨ c ∨ d)

a

¬c

Decisions b

Assignment: a ∧ b ∧ ¬c ∧ d d

1 2 3 4 5 6 7 8

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) a (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

b (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

c (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 7 d

7 b c (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 8

8 8 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 5 d

5 a c (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 6

6 6 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 3 c

3 a b (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 5

5 d (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

6 6 6 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

b (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

c (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 4 d

4 a c (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

Basic Case Splitting

with Implications

Resolution

a ∨ b ∨ ¬c ¬a ∨ ¬c ∨ d

b ∨ ¬c ∨ d

When a conflict occurs, the implication graph is used to guide the resolution of clauses, so that the same conflict will not occur again.

Conflict Clauses

(¬a ∨ b) ∧ (¬b ∨ c ∨ d) ∧ (¬b ∨ ¬ d)

a

¬c

Decisions b

Assignment: a ∧ b ∧ ¬c ∧ d d

Conflict!

(¬b ∨ c ) resolve

Conflict!

(¬a ∨ c)

resolve

Conflict!

™ Conflict clauses

‹Are generated by resolution

‹Are implied by existing clauses

‹Are in conflict in the current assignment

‹Are safely added to the clause set

Many heuristics are available for determining when to terminate the resolution process

Conflict-based Learning

1 2 3 4 5 6 7 8

(a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d) (a + b + c) a (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

b (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

c (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 7 d

7 b c (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d)

(¬b + ¬c + d) 8

8 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

bc→ ¬ϕ ϕ → (¬b + ¬c)⇓ 9 (¬b + ¬c) (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

9 (¬b + ¬c)

c 9 b (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

9 (¬b + ¬c)

a

d 5 5 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

9 (¬b + ¬c)

6 6 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

9 (¬b + ¬c)

ab→ ¬ϕ

ϕ → (¬a + ¬b) 10 (¬a + ¬b) (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

10 (¬a + ¬b) 9 (¬b + ¬c)

b a

10 (a + b + c) (a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

10 (¬a + ¬b) 9 (¬b + ¬c)

3 c 3 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

10 (¬a + ¬b) 9 (¬b + ¬c)

d 5 5 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

10 (¬a + ¬b) 9 (¬b + ¬c)

6 6 (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

10 (¬a + ¬b) 9 (¬b + ¬c)

a→ ¬ϕ

ϕ → (¬a) 11 (¬a) 11 (¬a) 10 (¬a + ¬b)

9 (¬b + ¬c) (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

11 a 11 (¬a) 10 (¬a + ¬b)

9 (¬b + ¬c) (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

b 11 (¬a)

10 (¬a + ¬b) 9 (¬b + ¬c) (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

b 9 c

11 (¬a) 10 (¬a + ¬b)

9 (¬b + ¬c) (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

4

4 d

11 (¬a) 10 (¬a + ¬b)

9 (¬b + ¬c) (a + b + c)

(a + b + ¬c) (¬a + b + ¬c) (a + c + d) (¬a + c + d) (¬a + c + ¬d) (¬b + ¬c + ¬d) (¬b + ¬c + d)

(4)

A SAT Example:

Optimization of if-then-else chain

Original C code if (!a && !b) h();

else if (!a) g();

else f();

if (!a) { if (!b) h();

else g();

} else f();

Optimized C code if (a) f();

else { if (!b) h();

else g();}

if (a) f();

else if (b) g();

else h();

How to check if these are equivalent?

™ Represent procedures as independent Boolean variables

Original = if (¬a ∧ ¬ b) h();

else if (¬a) g();

else f();

Optimized = if (a) f();

else { if (¬b) h();

else g();}

™ Compile the if-then-else chains into Boolean formulae if x then y else z = ITE (x,y,z)

=(x ∧ y) (¬x ∧ z)

™ Check equivalence of Boolean formulae Compile (Original) ≡ Compile (Optimized)

Original = if ¬a∧¬b then h else if ¬a then g else f

= (¬a ∧ ¬b) h ∨ ¬(¬a ∧ ¬b) if ¬a then g else h

= (¬a ∧ ¬b) h ∨ ¬(¬a ∧ ¬b) (¬a g a f) Optimized = if a then f else if b then g else h

= (a ∧ f) ∨ ¬a if b then g else h

= a ∧ f ∨ ¬a ∧ (b g ∨ ¬b ∧ h)

(¬a ∧ ¬b) h ∨ ¬(¬a ∧ ¬b) (¬a g a f)

a ∧ f ∨ ¬a ∧ (b g ∨ ¬b ∧ h) is satisfiable?

A Taxonomy of SAT Algorithms

SAT Algorithms

Complete Incomplete

A Taxonomy of SAT Algorithms

SAT Algorithms

Complete Incomplete

Can prove unsatisfiability Cannot prove unsatisfiability

A Taxonomy of SAT Algorithms

Backtrack search (DP) Resolution (original DP) Stalmarck’s method (SM) Recursive learning (RL) BDDs

...

Local search (hill climbing) Continuous formulations Genetic algorithms Simulated annealing

...

Tabu search SAT Algorithms

Complete Incomplete

Can prove unsatisfiability Cannot prove unsatisfiability

(5)

Circuit to CNF

™ Naive conversion of circuit to CNF

‹Multiply out expressions of circuit until two level structure

‹Example

— y = x1⊕ x2⊕ x2⊕ ... ⊕ xn(Parity function)

— Circuit size is linear in the number of variables

— Generated chess-board Karnaugh map

— CNF (or DNF) formula has 2n-1 terms (exponential in the # vars)

™ Better approach

‹Introduce one variable per circuit vertex

‹Formulate the circuit as a conjunction of constraints imposed on the vertex values by the gates

‹Uses more variables but size of formula is linear in the size of the circuit

Gate To CNF

a

b d

ϕ x= [d = ¬(a b)]

= ¬[d ⊕ ¬(a b)]

= ¬[¬(a b) ¬d + a b d]

= ¬[¬a ¬d + ¬b ¬d + a b d]

= (a + d)(b + d)(¬a + ¬b + ¬d)

ϕx = [d = ¬(a b)][¬d = (a b)]

= [d = (¬a + ¬b)][¬d =(a b)]

= (¬a d)(¬bd)(a b ¬d)

= (a + d)(b + d)(¬a + ¬b + ¬d)

™ y = AND (x1, …, xi)

ϕx= [ ∏i (xi ∨ ¬y)] ∧ [ I ¬xi ∨ y]

™ y = NAND (x1, …, xi)

ϕx= [ ∏i (xi ∨ y)] ∧ [ I ¬xi∨ ¬y ]

™ y = OR (x1, …, xi)

ϕx= [ ∏i (¬xi∨ y)] ∧ [ i xi∨ ¬y ]

™ y = NOR (x1, …, xi)

ϕx= [ ∏i (¬xi∨ ¬y)] ∧ [ ixi ∨ y]

™ y = NOT (x)

ϕx= (x ∨ y) ∧ (¬x ∨ ¬y)

Circuit SAT

ab

c p

g

Can the circuit output be 1?

input

variables output

variable (a ∨ ¬g) ∧ (b ∨ ¬g)

∧(¬a ∨ ¬b ∨ g)

(¬g ∨ p) ∧ (¬c ∨ p)

∧(g ∨ c ∨ ¬p) CNF(p)

p is satisfiable when the formula CNF(p) ∧ p is satisfiable

Exercise

?

1

6

2 5

8 7

3 4

9 0

b a

c A single gate

(¬a∨ ¬b∨ c ) ∧(a∨ ¬c) ∧(b∨ ¬c)

Exercise

A circuit

(¬124) (1∨ ¬4) (¬2

¬4)

(¬2∨ ¬35) (2∨ ¬5) (3

¬5) 1

6

2 5

8 7

3 4

9 0

b a

c A single gate

(¬a∨ ¬b∨ c ) ∧(a∨ ¬c) ∧(b∨ ¬c)

(6)

An Example

a b

c

d

e g

f

h?

ϕ = h [d=¬(ab)] [e=¬(b+c)] [f=¬d] [g=d+e] [h=fg]

= h

(a + d)(b + d)(¬a + ¬b + ¬d) (¬b + ¬e)(¬c + ¬e)(b + c + e) (¬d + ¬f)(d + f)

(¬d + g)(¬e + g)(d + e + ¬g) (f + ¬h)(g + ¬h)(¬f + ¬g + h)

= h

(a + d)(b + d)(¬a + ¬b + ¬d) (¬b + ¬e)(¬c + ¬e)(b + c + e) (¬d + ¬f)(d + f)

(¬d + g)(¬e + g)(d + e + ¬g) (f + ¬h)(g + ¬h)(¬f + ¬g + h)

= h

(a + d)(b + d)(¬a + ¬b + ¬d) (¬b + ¬e)(¬c + ¬e)(b + c + e) (¬d + ¬f)(d + f)

(¬d + g)(¬e + g)(d + e + ¬g) (f + ¬h)(g + ¬h)(¬f + ¬g + h)

a b

c

d

e g

f

h?

= h

(a + d)(b + d)(¬a + ¬b + ¬d) (¬b + ¬e)(¬c + ¬e)(b + c + e) (¬d + ¬f)(d + f)

(¬d + g)(¬e + g)(d + e + ¬g) (f + ¬h)(g + ¬h)(¬f + ¬g + h)

a b

c

d

e g

f

h?

= h

(a + d)(b + d)(¬a + ¬b + ¬d) (¬b + ¬e)(¬c + ¬e)(b + c + e) (¬d + ¬f)(d + f)

(¬d + g)(¬e + g)(d + e + ¬g) (f + ¬h)(g + ¬h)(¬f + ¬g + h)

a b

c

d

e g

f

h?

a b

c

d

e g

f

h

™CNF

(a ∨ d) ∧ (¬b ∨ d) ∧ (¬a ∨ b ∨ ¬c)

™Variable coding

a → 1, b → 2, c → 3, d → 4

™DIMACS format for CNF formulae p cnf 4 3

1 4 0 -2 4 0 -1 2 -3 0

From CNF to DIMACS File

Riferimenti

Documenti correlati

A widely used one is by means of a Boolean formula F in Conjunctive (CNF) or Disjunctive (DNF) normal form.. A Boolean CNF formula is the logic conjunction ( ^) of m clauses, which

It is possible to build electronic logic gates that Interpret high voltage as true and low voltage as false Implement logic operations like nand and nor. Figure: A logic circuit

Today is raining and John carries an umbrella is true and true ≡ true not today is raining and John wears sunglasses ≡ not true and true..

Lipari (Scuola Superiore Sant’Anna) Fundamentals of Programming February 27, 2012 4 / 1G. Examples of

Leaving out of consideration the membership relator ∈ for the time being, in this note we provide a complete taxonomy of the polynomial and the NP-complete fragments involving,

Whereas the problems of allowing a network of agents to reach a consensus on logical functions of input events, and that of agreeing on set–valued information, have been

When an eigenvalue of matrix L goes to zero (or to infinity), the system degenerates towards a lower dynamic dimension system. The “reduced system ” can be obtained by using

formulas (complexity is slightly higher and depends on quantifier alternation). • There is a trick to succinctly describe a