Principles of constraint programming


Constraint programming is an alternative approach to programming in which the programming process is limited to a generation of requirements (constraints) and a solution of these requirements by means of general or domain speciic methods. The general methods are usually concerned with techniques of reducing the search space and with speciic search methods. In contrast, the domain speciic methods are usually provided in the form of special purpose algorithms or specialised packages, usually called constraint solvers. Typical examples of constraint solvers are: a program that solves systems of linear equations, a package for linear programming, an implementation of the uniication algorithm, a cornerstone of automated theorem proving. Problems that can be solved in a natural way by means of constraint programming are usually those for which eecient algorithms are lacking (for example computationally intractable problems) or for which formalization in terms of laws (for example electrical engineering) leads to a more exible style of programming in which the dependencies between the relevant variables can be expressed in the most general form. In fact, many problems that need to be solved by means of computing are not precisely deened or their precise speciication may depend on the quality of a solution (such as the speed with which it is computed) to an initial version of the problem. When solving such problems one needs to proceed by several iterations. Modelling these problems by means of constraints can be often beneecial. Indeed, the appropriate modiication of the program can then be often taken care of by modiication of some constraints or by altering an appropriate xed program component (for example the one that deenes the adopted search method). An additional aspect brought in by constraint programming is that modelling by means of constraints leads to a representation by means of relations. In a number of circumstances this representation allows us to use the same program for diierent purposes. 1 This can be useful in several cases, for instance when trying to gure out which input led to a given output. In conventional programming languages relations have to be converted rst to functions and this possibility is then lost. The use of relations as a basis for problem formulation bears some resemblance to database systems, for instance relational databases. The diierence is that in database systems such relations (for instance tables) are usually explicitly given and the task consists of eeciently querying them, while …

Extracted Key Phrases

2 Figures and Tables

Citations per Year

731 Citations

Semantic Scholar estimates that this publication has 731 citations based on the available data.

See our FAQ for additional information.

Cite this paper

@inproceedings{Apt2003PrinciplesOC, title={Principles of constraint programming}, author={Krzysztof R. Apt}, year={2003} }