3SAT with clauses of exactly three literals #
ExactThreeSAT is the set of satisfiable formulas in conjunctive normal form all of whose clauses
are lists of exactly three literals. The literals of a clause need not be distinct, so a clause
x ∨ x ∨ y is allowed. This is weaker than 3-satisfiability as defined by Garey and Johnson
Garey and Johnson, Problem LO2, whose clauses are sets of three distinct
literals. The stronger distinct-variable version is proved NP-complete as EUThreeSAT in
CslibFrontier.Computability.Complexity.Problems.EUThreeSAT.
ExactThreeSAT is NP-complete: ThreeSAT (clauses of at most three literals) reduces to it by
repeating a literal of every clause with one or two literals
(Cslib.Complexity.ExactThreeSAT.padClause, Cslib.Complexity.toExactThreeSAT). Repetition does
not change the value of a clause, and the empty clause stays empty, so a formula with an empty
clause stays unsatisfiable.
Main definitions #
Cslib.Complexity.ExactThreeSAT.Cslib.Complexity.ExactThreeSAT.padClause: repeat literals to reach three.Cslib.Complexity.toExactThreeSAT: the reduction fromThreeSAT, padding every clause.
Main results #
Cslib.Complexity.ExactThreeSAT.mem_NP:ExactThreeSAT ∈ NP.Cslib.Complexity.polyTimeReducible_ThreeSAT_ExactThreeSAT:ThreeSATreduces toExactThreeSAT.Cslib.Complexity.ExactThreeSAT_npComplete:ExactThreeSATisNP-complete.
References #
The satisfiable formulas all of whose clauses have exactly three literals, not necessarily distinct. The 3-satisfiability of Garey and Johnson, Problem LO2 requires them to be distinct.
Instances For
Pad a clause of one or two literals to three literals by repeating literals; other clauses are unchanged.
Instances For
Padding a nonempty clause of at most three literals gives exactly three.
Repeating literals does not change the value of a clause.
Padding a clause is polynomial-time.
The verifier for ExactThreeSAT: check that every clause has exactly three literals and
evaluate the formula under the certificate assignment.
Instances For
ExactThreeSAT.verifier verifies ExactThreeSAT with certificates as long as the encoded
formula: it is SAT.verifier guarded by the clause-width test.
Checking the clause widths and evaluating the formula is polynomial-time.
ExactThreeSAT belongs to NP.
The reduction from ThreeSAT to ExactThreeSAT: pad every clause.
Instances For
Padding every clause is polynomial-time.
A formula is in ThreeSAT exactly when padding its clauses puts it in ExactThreeSAT.
ThreeSAT reduces to ExactThreeSAT in polynomial time via toExactThreeSAT.
ExactThreeSAT is NP-hard.
3SAT with clauses of exactly three, not necessarily distinct, literals is NP-complete.