0-1 integer programming: definition #
0-1 INTEGER PROGRAMMING (Karp 1972): given a matrix
C and a vector d, is there a 0-1 vector x with C x = d? It is the
multi-row form of Knapsack, and like it is written in binary
(DescriptiveComplexity.Numbers.BinRel), since under the unary encoding the
problem is solvable in polynomial time by dynamic programming and is therefore
not NP-hard at all.
The vocabulary #
FirstOrder.Language.zeroOneIP carries
col j,row randposn p, the columns (the0-1variables), the rows (the equations) and the bit positions;coef r j p, “the entry of rowrin columnjhas bit 1 at positionp”, the only ternary symbol of the catalog;rhs r p, the bits of the right-hand side of rowr;le, a linear order fixing the place values, folded into the yes-instances (DescriptiveComplexity.IsLinOrd) as everywhere in the binary encoding.
Entries are natural numbers: Karp states the problem over the integers, and the restriction formalized here is the one his reduction produces – a special case, so its NP-hardness gives his problem's a fortiori, while membership in NP for signed entries would need the two sides of each equation weighed separately and is not claimed.
Dependency graph
The relation symbols of the language.
- col : zeroOneIPRel 1
col j:jis a column, that is, a0-1variable. - row : zeroOneIPRel 1
row r:ris a row, that is, an equation. - posn : zeroOneIPRel 1
posn p:pis a bit position. - coef : zeroOneIPRel 3
coef r j p: the entry of rowrin columnjhas bit 1 atp. - rhs : zeroOneIPRel 2
rhs r p: the right-hand side of rowrhas bit 1 atp. - le : zeroOneIPRel 2
le a b: the linear order carrying the place values.
Instances For
Dependency graph
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The relational language of 0-1 integer programs: columns, rows and bit positions, the bits of each entry and of each right-hand side, and a linear order.
Equations
- FirstOrder.Language.zeroOneIP = { Functions := fun (x : ℕ) => Empty, Relations := FirstOrder.Language.zeroOneIPRel }
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The shorthands of the vocabulary #
coef r j p: the entry of row r in column j has bit 1 at p.
Equations
Instances For
Dependency graph
rhs r p: the right-hand side of row r has bit 1 at p.
Equations
Instances For
Dependency graph
row r: r is a row, that is, an equation.
Equations
Instances For
Dependency graph
le a b: the linear order carrying the place values.
Equations
Instances For
Dependency graph
posn p: p is a bit position.
Equations
Instances For
Dependency graph
col j: j is a column, that is, a 0-1 variable.
Equations
Instances For
Dependency graph
The entry of a row in a column, decoded.
Equations
Instances For
Dependency graph
The right-hand side of a row, decoded.
Equations
Instances For
Dependency graph
The problem #
A 0-1 integer program is a yes-instance when its order is a linear order
and some set of columns – the variables set to 1 – makes every equation
hold.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Being a yes-instance of 0-1 integer programming is isomorphism-invariant.
Dependency graph
0-1 INTEGER PROGRAMMING, as a problem on 0-1 integer programs: is there a set of columns whose entries sum, row by row, exactly to the right-hand sides? The entries are written in binary, which is what makes the problem NP-hard rather than polynomial-time.
Equations
- DescriptiveComplexity.ZeroOneIP = { Holds := fun (A : Type) (inst : FirstOrder.Language.zeroOneIP.Structure A) => DescriptiveComplexity.HasZeroOneSolution A, iso_invariant := ⋯ }