problemreductions/solvers/
mod.rs

1//! Solvers for computational problems.
2
3mod brute_force;
4
5#[cfg(feature = "ilp")]
6pub mod ilp;
7
8pub use brute_force::{BruteForce, BruteForceFloat};
9
10#[cfg(feature = "ilp")]
11pub use ilp::ILPSolver;
12
13use crate::traits::Problem;
14use crate::types::SolutionSize;
15
16/// Trait for problem solvers.
17pub trait Solver {
18    /// Find the best solution(s) for a problem.
19    ///
20    /// Returns all configurations that achieve the optimal objective value.
21    fn find_best<P: Problem>(&self, problem: &P) -> Vec<Vec<usize>>;
22
23    /// Find the best solution(s) along with their solution sizes.
24    fn find_best_with_size<P: Problem>(
25        &self,
26        problem: &P,
27    ) -> Vec<(Vec<usize>, SolutionSize<P::Size>)>;
28}