Constraint Programming is an approach for modeling and solving combi- torial problems that has proven successful in many applications. It builds on techniques developed in Arti?cial Intelligence, Logic Programming, and - erations Research. Key techniques are constraint propagation and heuristic search. Constraint Programming is based on an abstraction that decomposes a problem solver into a reusable constraint engine and a declarative program modeling the problem. The constraint engine implements the required pr- agation and search algorithms. It can be realized as a library for a general purpose programming language (e.g. C++), as an extension of an existing language (e.g. Prolog), or as a system with its own dedicated language. The present book is concerned with the architecture and implementation of constraint engines. It presents a new, concurrent architecture that is far superior to the sequential architecture underlying Prolog. The new archit- ture is based on concurrent search with copying and recomputation rather than sequential search with trailing and backtracking. One advantage of the concurrent approach is that it accommodates any search strategy. Furth- more, it considerably simpli?es the implementation of constraint propagation algorithms since it eliminates the need to account for trailing and backtra- ing. The book investigates an expressive generalization of the concurrent - chitecture that accommodates propagation-preserving combinators (known as deep guard combinators) for negation, disjunction, implication, and re- cation of constraint propagators. Such combinators are beyond the scope of Prolog’s technology. In the concurrent approach they can be obtained with a re?ective encapsulation primitive.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.