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.
Relation symbols of 0-1 integer programs.
- 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
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
The column symbol.
Instances For
Dependency graph
The row symbol.
Instances For
Dependency graph
The position symbol.
Instances For
Dependency graph
The entry symbol.
Instances For
Dependency graph
The right-hand side symbol.
Instances For
Dependency graph
The order symbol.
Instances For
Dependency graph
The shorthands of the vocabulary #
Being a column, that is, a 0-1 variable.
Equations
Instances For
Dependency graph
Being a row, that is, an equation.
Equations
Instances For
Dependency graph
Being a bit position.
Equations
Instances For
Dependency graph
The bit of an entry at a position.
Equations
Instances For
Dependency graph
The bits of a right-hand side.
Equations
Instances For
Dependency graph
The order carrying the place values.
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 := ⋯ }