Skip to content

Implement remaining reduction rules #2

@GiggleLiu

Description

@GiggleLiu

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:

  1. Create reduction result struct
  2. Implement ReductionResult trait
  3. Implement ReduceTo trait
  4. Write tests
  5. Update src/rules/mod.rs
  6. Register in ReductionGraph

Set/Graph Reductions

  • src/rules/vertexcovering_setcovering.rs - VertexCovering → SetCovering
  • src/rules/matching_setpacking.rs - Matching → SetPacking

SAT-based Reductions

  • src/rules/sat_3sat.rs - SAT → 3-SAT (clause splitting)
  • src/rules/sat_independentset.rs - SAT → IndependentSet
  • src/rules/sat_coloring.rs - SAT → Coloring
  • src/rules/sat_dominatingset.rs - SAT → DominatingSet
  • src/rules/spinglass_sat.rs - SpinGlass → SAT
  • src/rules/circuit_sat.rs - CircuitSAT → SAT (Tseitin transformation)
  • src/rules/factoring_sat.rs - Factoring → SAT

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions