| AcyclicPartition |
Color assignment + topological ordering per color class |
n^n |
| BalancedCompleteBipartiteSubgraph |
Bipartite completeness → quadratic → McCormick linearization |
2^n |
| BicliqueCover |
Biclique validity constraints need product linearization |
2^n |
| BiconnectivityAugmentation |
2-connectivity requires flow-based formulation |
2^e |
| BMF |
Bilinear W=A·B; product linearization over Boolean semiring |
2^(r·c) |
| BottleneckTravelingSalesman |
TSP structure + minimax linearization |
n²·2^n |
| BoundedComponentSpanningForest |
Spanning forest + component size bounding (flow/labeling) |
3^n |
| ConsecutiveBlockMinimization |
Column permutation + block counting auxiliaries |
n!·n |
| ConsecutiveOnesMatrixAugmentation |
Column permutation + augmentation variables |
n!·n |
| ConsecutiveOnesSubmatrix |
Row/column selection + "consecutive" linearization |
2^c |
| DisjointConnectingPaths |
Multi-commodity flow + vertex-disjointness linking |
2^e |
| FlowShopScheduling |
Permutation variables + machine sequencing |
n! |
| HamiltonianPath |
Position-based assignment (like TSP, ~130 lines) |
n²·2^n |
| IntegralFlowHomologousArcs |
Flow variables + homologous arc coupling |
cap^a |
| IntegralFlowWithMultipliers |
Modified conservation with multipliers |
cap^a |
| IsomorphicSpanningTree |
Tree selection + isomorphism (hard to linearize) |
n! |
| LengthBoundedDisjointPaths |
Multi-commodity flow + length + disjointness |
2^(k·n) |
| LongestCircuit |
Position-based (like TSP) + circuit length max |
n²·2^n |
| MinimumCutIntoBoundedSets |
Partition variables + cut weight + size bounds |
2^n |
| MinimumTardinessSequencing |
Position scheduling + max(0,...) linearization |
n^n |
| MixedChinesePostman |
Edge traversal + Euler tour on mixed graph |
n²·2^e |
| OptimalLinearArrangement |
Permutation + |π(u)−π(v)| absolute value linearization |
n^n |
| PaintShop |
Color assignment + color-change counting |
2^n |
| PartialFeedbackEdgeSet |
Remove exactly k edges; topological ordering with big-M |
2^e |
| PathConstrainedNetworkFlow |
Integer flow per allowed path; capacity aggregation |
cap^p |
| QuadraticAssignment |
Permutation + product linearization x_{ij}·x_{kl} |
n! |
| ResourceConstrainedScheduling |
Time-indexed x_{jt} + resource capacity + precedence |
d^n |
| RootedTreeArrangement |
Position variables + parent-child ordering |
n^n |
| RootedTreeStorageAssignment |
Assignment + capacity/tree structure |
u^u |
| RuralPostman |
Edge traversal + connectivity on required edges |
n²·2^n |
| SequencingToMinimizeMaximumCumulativeCost |
Permutation + cumulative cost + minimax |
n! |
| SequencingToMinimizeWeightedTardiness |
Permutation + max(0,...) tardiness linearization |
n! |
| SequencingWithReleaseTimesAndDeadlines |
Release + deadline + non-overlap constraints |
n^n |
| ShortestCommonSupersequence |
Position-based alignment for multiple strings |
α^L |
| SparseMatrixCompression |
Row grouping + compatibility constraints |
k^r |
| StackerCrane |
Directed rural postman + pickup/delivery pairing |
n²·2^a |
| SteinerTreeInGraphs |
Flow-based connectivity for Steiner terminals (~150 lines) |
2^e |
| StringToStringCorrection |
Edit operation selection + alignment constraints |
(2s+1)^b |
| StrongConnectivityAugmentation |
Arc selection + strong connectivity (flow/cut-based) |
2^a |
| SubgraphIsomorphism |
Binary mapping + edge preservation |
n_h^n_p |
| TimetableDesign |
3-index assignment + conflict/availability |
2^(c·p·t) |
Summary
Classify every problem type by its best available solving strategy, to guide the design of a
DefaultSolverdispatch mechanism.Methodology
For each of the 115 registered problem types, we classify:
pred path <Problem> ILP)Brute-force scalability depends on configuration space size:
vec![2; n]): 2^n configs → practical up to n ≈ 25vec![k; n]): k^n configs → practical up to n ≈ 15 for k=3, n ≈ 10 for k=5vec![n; n]): n^n configs → practical up to n ≈ 8Tier 1: Has existing ILP reduction path (32 problems)
These problems already have a witness-capable reduction chain to ILP in the codebase. The
DefaultSolvershould dispatch toILPSolver::solve_via_reduction().2^num_items2^num_variables2^num_basis_vectors2^bits2^num_verticesn^2binarycap^num_arcsk^num_vertices2^num_items2^num_variablesalpha^bound2^num_edges2^num_vertices2^num_vertices2^num_vertices2^num_edges2^num_sets2^num_vertices2^num_vertices2^num_vertices2^num_sets2^num_vertices2^num_elements2^num_vars2^num_variablesn^n2^num_spins2^num_vertices2^num_elements2^num_edgesTier 2: Easy ILP formulation — no existing path (<100 lines) (24 problems)
These should be prioritized for new
ReduceTo<ILP>implementations. Each has a textbook ILP formulation.Tier 3: Complex ILP formulation (>100 lines) (34 problems)
These have known ILP formulations but require significant auxiliary variables, linearization, or constraint generation.
DefaultSolverwould fall back to brute-force unless a dedicated ILP reduction is implemented.Tier 4: Polynomial-time variants (3 variants)
These have polynomial-time algorithms and should use a specialized solver rather than brute-force or ILP.
Note: MaximumMatching already has an ILP path, but its polynomial solver is far more efficient.
Tier 5: Specialized exact algorithms (4 problems)
These have structure that specialized algorithms exploit better than generic ILP.
Tier 6: PSPACE-complete or harder (2 problems)
ILP fundamentally cannot express alternating quantifiers. These require game-tree search or QSAT solvers.
Tier 7: Obscure / no natural ILP formulation (11 problems)
Database theory and combinatorial structure problems where ILP is not a natural fit. Brute-force is the only current option.
Proposed DefaultSolver dispatch
Recommended next steps
Implement Tier 2 ILP reductions — 24 problems with textbook formulations. Start with the easiest:
MinimumHittingSet → ILP(dual of existing SetCovering→ILP, ~60 lines)ExactCoverBy3Sets → ILP(set partitioning, ~60 lines)NAESatisfiability → ILP(~70 lines)KClique → ILP(adapt existing MaximumClique→ILP, ~65 lines)MinimumFeedbackArcSet → ILP(adapt existing FVS→ILP, ~80 lines)Add poly-time solvers for MaximumMatching (Edmonds'), 2-Coloring (BFS), 2-SAT (SCC)
Incrementally implement Tier 3 ILP reductions for the most commonly used problems (HamiltonianPath, QuadraticAssignment, FlowShopScheduling, etc.)
Research PSPACE solvers for GeneralizedHex and QBF (game-tree search, QSAT)