Skip to content

[Meta] Connect isolated problem types to the reduction graph #610

@GiggleLiu

Description

@GiggleLiu

Summary

Running cargo run --example detect_isolated_problems reveals 7 problem types that have no reduction rules connecting them to the main graph. They are registered with variants and complexity but cannot be reached from (or reduce to) any other problem.

Isolated Problems

Problem Variants Category Notes
BMF (Binary Matrix Factorization) 1 algebraic No issues filed
BicliqueCover 1 graph No issues filed
BinPacking 2 (f64, i32) misc #396 exists (PARTITION → BIN PACKING) but PARTITION is not yet in the graph
ClosestVectorProblem 2 (f64, i32) algebraic No issues filed
Knapsack 1 misc #521#523 exist for new Knapsack variants, but none connect the existing Knapsack model
MaximalIS 1 graph No issues filed
PaintShop 1 misc No issues filed

Suggested Reductions

Each isolated problem needs at least one incoming or outgoing reduction to join the main component. Well-known reductions from the literature:

  • Knapsack → ILP — direct formulation as integer linear program (textbook reduction)
  • BinPacking → ILP — standard bin packing ILP formulation
  • MaximalIS ↔ MaximumIndependentSet — every MIS is a maximal IS; enumerate maximal to find maximum
  • ClosestVectorProblem → ILP — CVP can be formulated as an ILP over lattice coefficients
  • PaintShop → QUBO — paint shop problem has known QUBO formulations
  • BMF → ILP — binary matrix factorization can be encoded as a 0-1 integer program
  • BicliqueCover → SAT / BicliqueCover → ILP — set-cover-like formulations

Context

The main connected component contains 17 problem types with 52 reductions. Adding even one reduction per isolated problem would make the entire graph connected.

Detected by: examples/detect_isolated_problems.rs

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions