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}