This book is about constraint programming, an alternative approach to programming which relies on a combination of techniques that deal with reasoning and computing. It has been successfully applied in a number of fields including molecular biology, electrical engineering, operations research and numerical analysis. The central notion is that of a constraint. Informally, a constraint on a sequence of variables is a relation on their domains. It can be viewed as a requirement that states which combinations of values from the variable domains are admitted. In turn, a constraint satisfaction problem consists of a finite set of constraints, each on a subsequence of a given sequence of variables.
Scheduling, vehicle routing and timetabling are all examples of constraint problems, and methods to solve them rely on the idea of constraint propagation and search. This book meets the need for a modern, multidisciplinary introduction to the field that covers foundations and applications. Written by Krzysztof Apt, an authority on the subject, it will be welcomed by graduate students and professionals. With the insertion of constraint techniques into programming environments, new developments have accelerated the solution process. Constraint programming combines ideas from artificial intelligence, programming languages, databases, and operational research.