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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions