Skip to main content

Module constraint_solver

Module constraint_solver 

Source
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.
ConstraintSolver
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.
CspVarId
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.
SolverConfig
Configuration knobs for ConstraintSolver.
SolverResult
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.