FLAC Project — Using SAT to Solve Sudoku
Although SAT is an NPcomplete problem in general, certain kinds of large SAT instances
can be solved in a reasonable amount of time. In this project, you will use a SAT solver to
solve Sudoku puzzles.
Most existing SAT solvers require the input
formula to be in Conjunctive Normal Form
(CNF). The most commonly used input for
mat is the DIMACS format, whose structure
is as shown at the right:
p cnf
NumVars NumClauses
Clause
1
Clause
2
.
.
.
Clause
n
The variables are assumed to be numbered
from 1 to
NumVars
. The
i
th
variable is repre
sented by the positive integer
i
; the negation
of this variable is represented by the negative
integer

i
. A clause is represented by listing
the literals in the clause, separated by spaces,
followed by a zero (“
0
”). For example, the be
low CNF formula is represented in DIMACS
as shown at the right.
p cnf 4 5
1 0
2 3 0
4 1 0
1 2 3 4 0
2 4 0
x
1
∧
(
x
2
∨ ¬
x
3
)
∧
(
¬
x
4
∨ ¬
x
1
)
∧
(
¬
x
1
∨ ¬
x
2
∨
x
3
∨
x
4
)
∧
(
¬
x
2
∨
x
4
)
For more information about DIMACS, see:
http://www.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/satformat.ps
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
This is the end of the preview.
Sign up
to
access the rest of the document.
 Spring '09
 EdmundM.Clarke
 Boolean satisfiability problem, SAT solver, DIMACS, MiniSat, fastest SAT solver, large SAT instances

Click to edit the document details