Zero-one integer programming #
ZeroOneIP is the feasibility problem of zero-one integer programming in equality form: a system
of linear equations ∑ j, a j * x j = t with natural coefficients and right-hand sides, encoded in
binary, has a solution with every x j ∈ {0, 1}. Each equation c : ZeroOneIP.Equation stores the
coefficients c.coeffs of the variables 0, 1, … (with missing coefficients zero) and the
right-hand side c.rhs.
Karp states zero-one integer programming with integer coefficients and inequalities
[Kar72]; the equality form with natural coefficients is the special case used here, and it is
already NP-complete. A subset sum instance is a single equation, so SubsetSum reduces to
ZeroOneIP, and composing with Sipser's digit construction reduces ThreeSAT to ZeroOneIP.
Main definitions #
Cslib.Complexity.ZeroOneIP.Equation,Cslib.Complexity.ZeroOneIP.encEquation: equality constraints and their binary encoding.Cslib.Complexity.ZeroOneIP,Cslib.Complexity.encZeroOneIP.Cslib.Complexity.ZeroOneIP.verifier.Cslib.Complexity.SubsetSum.toZeroOneIP.
Main results #
Cslib.Complexity.ZeroOneIP.mem_NP:ZeroOneIP ∈ NP encZeroOneIP.Cslib.Complexity.polyTimeReducible_SubsetSum_ZeroOneIP,Cslib.Complexity.polyTimeReducible_ThreeSAT_ZeroOneIP,Cslib.Complexity.ZeroOneIP_npHard,Cslib.Complexity.ZeroOneIP_npComplete:ZeroOneIPisNP-complete.
References #
Instances For
ZeroOneIP.verifier verifies ZeroOneIP with certificates as long as the encoded system.
ZeroOneIP belongs to NP.
A subset sum instance as a single equation.
Instances For
Correctness of the reduction to ZeroOneIP.
The reduction to ZeroOneIP is polynomial-time.
SubsetSum reduces to ZeroOneIP in polynomial time.
ThreeSAT reduces to ZeroOneIP in polynomial time, through Sipser's digit construction.
Zero-one integer programming is NP-complete, in equality form with natural coefficients in binary [Kar72].