Expand description
Constraint Satisfaction Problem (CSP) solver with backtracking search, arc consistency (AC-3), and heuristics for variable/value ordering.
§Example
use ipfrs_tensorlogic::constraint_solver::{
ConstraintSolver, Constraint, CspVarId, SolverConfig,
};
let config = SolverConfig::default();
let mut solver = ConstraintSolver::new(config);
let x = solver.add_variable("x".to_string(), vec![1, 2, 3]);
let y = solver.add_variable("y".to_string(), vec![1, 2, 3]);
solver.add_constraint(Constraint::NotEqual(x, y));
let result = solver.solve();
assert!(!result.solutions.is_empty());
let sol = &result.solutions[0];
assert_ne!(sol.get(x), sol.get(y));Structs§
- Assignment
- A (partial or complete) mapping from variable ids to assigned values.
- Constraint
Solver - A full-featured CSP solver combining AC-3 domain pruning with backtracking search and configurable variable/value ordering heuristics.
- CspStats
- Summary statistics about the CSP instance.
- CspVar
Id - Opaque index for a CSP variable.
- CspVariable
- A CSP variable: its identity, name, and initial domain.
- Domain
- The current set of allowed integer values for a CSP variable.
- Solver
Config - Configuration knobs for
ConstraintSolver. - Solver
Result - Statistics and solutions returned by
ConstraintSolver::solve.
Enums§
- Constraint
- A constraint relating one or more CSP variables.
- CspError
- Error conditions that can arise during CSP solving.