Home |
Author | Lectures | Resources
Constraint
programming is a technology for declarative description and solving
of hard combinatorial problems. It represents one of the closest
approaches to the Holy Grail of automated problem solving: the user
states the constraints over the problem variables and the system
finds a valuation of the variables satisfying the constraints. The
course gives a broad and deep survey of the major constraint satisfaction
techniques.
First, the
notion of a constraint is explained and some examples of practical
applications of constraint technology are given. Then we survey
the basic search algorithms for solving constraints; both local
search and depth-first search methods are presented. The algorithms
are explained in an incremental nature showing how the more advanced
algorithms are built up on improvements of the simpler algorithms.
In the next part we concentrate on the core of constraint satisfaction
technology - consistency techniques. We explain the main consistency
levels like arc and path consistency and we present several algorithms
how to achieve them. We also describe how the consistency techniques
reduce the search space in the depth-first search and we show how
to solve the problems where all the constraints cannot be satisfied
together - so called over-constrained problems.
Dr. Roman Barták
|