Constraint programming provides a declarative approach to solving combinatorial (optimization) problems. The user just states the problem as a constraint satisfaction problem (CSP) and a generic solver finds a solution without additional programming. However, in practice, the situation is more complicated because there usually exist several ways how to model the problem as a CSP, that is using variables, their domains, and constraints. In fact, different constraint models may lead to significantly different running times of the solver so constraint modeling is a crucial part of problem solving. This paper describes some known approaches to efficient modeling with constraints in a tutorial-like form. The primary audience is practitioners, especially in logic programming, that would like to use constraints in their projects but do not have yet deep knowledge of constraint satisfaction techniques.
[1]
Vipin Kumar,et al.
Algorithms for Constraint-Satisfaction Problems: A Survey
,
1992,
AI Mag..
[2]
Barbara M. Smith,et al.
Reducing Symmetry in a Combinatorial Design Problem
,
2001
.
[3]
Edward P. K. Tsang,et al.
Foundations of constraint satisfaction
,
1993,
Computation in cognitive science.
[4]
P. Baptiste,et al.
Edge-Finding Constraint Propagation Algorithms for Disjunctive and Cumulative Scheduling
,
1996
.
[5]
Mats Carlsson,et al.
An Open-Ended Finite Domain Constraint Solver
,
1997,
PLILP.
[6]
Peter J. Stuckey,et al.
Programming with Constraints: An Introduction
,
1998
.
[7]
Jean-Charles Régin,et al.
A Filtering Algorithm for Constraints of Difference in CSPs
,
1994,
AAAI.