Summary
The reduction framework is complete with core reductions implemented (IS↔VC, IS↔SP, SG↔QUBO, SG↔MaxCut). Additional reductions are needed for full feature parity with ProblemReductions.jl.
Remaining Reductions to Implement
Each reduction follows the established pattern:
- Create reduction result struct
- Implement
ReductionResult trait
- Implement
ReduceTo trait
- Write tests
- Update
src/rules/mod.rs
- Register in
ReductionGraph
Set/Graph Reductions
SAT-based Reductions
Implementation Notes
- Use the existing
ReduceTo and ReductionResult traits from src/rules/traits.rs
- Follow the pattern established in existing reductions (e.g.,
vertexcovering_independentset.rs)
- Register each new reduction in
ReductionGraph::register_reductions()
- Maintain >95% code coverage
References
Summary
The reduction framework is complete with core reductions implemented (IS↔VC, IS↔SP, SG↔QUBO, SG↔MaxCut). Additional reductions are needed for full feature parity with ProblemReductions.jl.
Remaining Reductions to Implement
Each reduction follows the established pattern:
ReductionResulttraitReduceTotraitsrc/rules/mod.rsReductionGraphSet/Graph Reductions
src/rules/vertexcovering_setcovering.rs- VertexCovering → SetCoveringsrc/rules/matching_setpacking.rs- Matching → SetPackingSAT-based Reductions
src/rules/sat_3sat.rs- SAT → 3-SAT (clause splitting)src/rules/sat_independentset.rs- SAT → IndependentSetsrc/rules/sat_coloring.rs- SAT → Coloringsrc/rules/sat_dominatingset.rs- SAT → DominatingSetsrc/rules/spinglass_sat.rs- SpinGlass → SATsrc/rules/circuit_sat.rs- CircuitSAT → SAT (Tseitin transformation)src/rules/factoring_sat.rs- Factoring → SATImplementation Notes
ReduceToandReductionResulttraits fromsrc/rules/traits.rsvertexcovering_independentset.rs)ReductionGraph::register_reductions()References