You are previewing Handbook of Constraint Programming.
O'Reilly logo
Handbook of Constraint Programming

Book Description

Constraint programming is a powerful paradigm for solving combinatorial search problems that draws on a wide range of techniques from artificial intelligence, computer science, databases, programming languages, and operations research. Constraint programming is currently applied with success to many domains, such as scheduling, planning, vehicle routing, configuration, networks, and bioinformatics.

The aim of this handbook is to capture the full breadth and depth of the constraint programming field and to be encyclopedic in its scope and coverage. While there are several excellent books on constraint programming, such books necessarily focus on the main notions and techniques and cannot cover also extensions, applications, and languages. The handbook gives a reasonably complete coverage of all these lines of work, based on constraint programming, so that a reader can have a rather precise idea of the whole field and its potential. Of course each line of work is dealt with in a survey-like style, where some details may be neglected in favor of coverage. However, the extensive bibliography of each chapter will help the interested readers to find suitable sources for the missing details. Each chapter of the handbook is intended to be a self-contained survey of a topic, and is written by one or more authors who are leading researchers in the area.

The intended audience of the handbook is researchers, graduate students, higher-year undergraduates and practitioners who wish to learn about the state-of-the-art in constraint programming. No prior knowledge about the field is necessary to be able to read the chapters and gather useful knowledge. Researchers from other fields should find in this handbook an effective way to learn about constraint programming and to possibly use some of the constraint programming concepts and techniques in their work, thus providing a means for a fruitful cross-fertilization among different research areas.

The handbook is organized in two parts. The first part covers the basic foundations of constraint programming, including the history, the notion of constraint propagation, basic search methods, global constraints, tractability and computational complexity, and important issues in modeling a problem as a constraint problem. The second part covers constraint languages and solver, several useful extensions to the basic framework (such as interval constraints, structured domains, and distributed CSPs), and successful application areas for constraint programming.

- Covers the whole field of constraint programming
- Survey-style chapters
- Five chapters on applications

Table of Contents

  1. Cover image
  2. Title page
  3. Table of Contents
  4. Foundations of Artificial Intelligence
  5. Front Matter
  6. Copyright page
  7. Foreword
  8. Editors
  9. Contributors
  10. Chapter 1: Introduction
    1. 1.1 Purpose of the Handbook
    2. 1.2 Structure and Content
    3. 1.3 Future Research
    4. Acknowledgements
  11. Chapter 2: Constraint Satisfaction: An Emerging Paradigm
    1. 2.1 The Early Days
    2. 2.2 The Constraint Satisfaction Problem: Representation and Reasoning
    3. 2.3 Conclusions
    4. Acknowledgements
  12. Chapter 3: Constraint Propagation
    1. 3.1 Background
    2. 3.2 Formal Viewpoint
    3. 3.3 Arc Consistency
    4. 3.4 Higher Order Consistencies
    5. 3.5 Domain-Based Consistencies Stronger than AC
    6. 3.6 Domain-Based Consistencies Weaker than AC
    7. 3.7 Constraint Propagation as Iteration of Reduction Rules
    8. 3.8 Specific Constraints
    9. Acknowledgements
  13. Chapter 4: Backtracking Search Algorithms
    1. 4.1 Preliminaries
    2. 4.2 Branching Strategies
    3. 4.3 Constraint Propagation
    4. 4.4 Nogood Recording
    5. 4.5 Non-Chronological Backtracking
    6. 4.6 Heuristics for Backtracking Algorithms
    7. 4.9 Optimization
    8. 4.10 Comparing Backtracking Algorithms
    9. Acknowledgements
  14. Chapter 5: Local Search Methods
    1. 5.1 Introduction
    2. 5.2 Randomised Iterative Improvement Algorithms
    3. 5.3 Tabu Search and Related Algorithms
    4. 5.4 Penalty-Based Local Search Algorithms
    5. 5.5 Other Approaches
    6. 5.6 Local Search for Constraint Optimisation Problems
    7. 5.7 Frameworks and Toolkits for Local Search
    8. 5.8 Conclusions and Outlook
  15. Chapter 6: Global Constraints
    1. 6.1 Notation and Preliminaries
    2. 6.2 Examples of Global Constraints
    3. 6.3 Complete Filtering Algorithms
    4. 6.4 Optimization Constraints
    5. 6.6 Global Variables
    6. 6.7 Conclusion
  16. Chapter 7: Tractable Structures for Constraint Satisfaction Problems
    1. 7.1 Background
    2. 7.2 Structure-Based Tractability in Inference
    3. 7.3 Trading Time and Space by Hybrids of Search and Inference
    4. 7.4 Structure-Based Tractability in Search
    5. 7.5 Summary and Bibliographical Notes
    6. Acknowledgements
  17. Chapter 8: The Complexity of Constraint Languages
    1. 8.1 Basic Definitions
    2. 8.2 Examples of Constraint Languages
    3. 8.3 Developing an Algebraic Theory
    4. 8.4 Applications of the Algebraic Theory
    5. 8.5 Constraint Languages Over an Infinite Set
    6. 8.6 Multi-Sorted Constraint Languages
    7. 8.7 Alternative Approaches
    8. 8.8 Future Directions
  18. Chapter 9: Soft Constraints
    1. 9.1 Background: Classical Constraints
    2. 9.2 Specific Frameworks
    3. 9.3 Generic Frameworks
    4. 9.4 Relations among Soft Constraint Frameworks
    5. 9.5 Search
    6. 9.6 Inference
    7. 9.7 Combining Search and Inference
    8. 9.8 Using Soft Constraints
    9. 9.9 Promising Directions for Further Research
  19. Chapter 10: Symmetry in Constraint Programming
    1. 10.1 Symmetries and Group Theory
    2. 10.2 Definitions
    3. 10.3 Reformulation
    4. 10.4 Adding Constraints Before Search
    5. 10.5 Dynamic Symmetry Breaking Methods
    6. 10.6 Combinations of Symmetry Breaking Methods
    7. 10.7 Successful Applications
    8. 10.8 Symmetry Expression and Detection
    9. 10.9 Further Research Themes
    10. 10.10 Conclusions
    11. Acknowledgments
  20. Chapter 11: Modelling
    1. 11.1 Preliminaries
    2. 11.2 Representing a Problem
    3. 11.3 Propagation and Search
    4. 11.4 Viewpoints
    5. 11.5 Expressing the Constraints
    6. 11.6 Auxiliary Variables
    7. 11.7 Implied Constraints
    8. 11.8 Reformulations of CSPs
    9. 11.9 Combining Viewpoints
    10. 11.10 Symmetry and Modelling
    11. 11.11 Optimization Problems
    12. 11.12 Supporting Modelling and Reformulation
    13. Acknowledgements
  21. Chapter 12: Constraint Logic Programming
    1. 12.1 History of CLP
    2. 12.2 Semantics of Constraint Logic Programs
    3. 12.3 CLP for Conceptual Modeling
    4. 12.4 CLP for Design Modeling
    5. 12.5 Search in CLP
    6. 12.6 Impact of CLP
    7. 12.7 Future of CLP and Interesting Research Questions
  22. Chapter 13: Constraints in Procedural and Concurrent Languages
    1. 13.1 Procedural and Object-Oriented Languages
    2. 13.2 Concurrent Constraint Programming
    3. 13.3 Rule-Based Languages
    4. 13.4 Challenges and Opportunities
    5. 13.5 Conclusion
    6. Acknowledgments
  23. Chapter 14: Finite Domain Constraint Programming Systems
    1. 14.1 Architecture for Constraint Programming Systems
    2. 14.2 Implementing Constraint Propagation
    3. 14.3 Implementing Search
    4. 14.4 Systems Overview
    5. 14.5 Outlook
    6. Acknowledgments
  24. Chapter 15: Operations Research Methods in Constraint Programming
    1. 15.1 Schemes for Incorporating OR into CP
    2. 15.2 Plan of the Chapter
    3. 15.3 Linear Programming
    4. 15.4 Mixed Integer/Linear Modeling
    5. 15.5 Cutting Planes
    6. 15.6 Relaxation of Global Constraints
    7. 15.7 Relaxation of Piecewise Linear and Disjunctive Constraints
    8. 15.8 Lagrangean Relaxation
    9. 15.9 Dynamic Programming
    10. 15.10 Branch-and-Price Methods
    11. 15.11 Benders Decomposition
    12. 15.12 Toward Integration of CP and OR
  25. Chapter 16: Continuous and Interval Constraints
    1. 16.1 From Discrete to Continuous Constraints
    2. 16.2 The Branch-and-Reduce Framework
    3. 16.3 Consistency Techniques
    4. 16.4 Numerical Operators
    5. 16.5 Hybrid Techniques
    6. 16.6 First Order Constraints
    7. 16.7 Applications and Software packages
    8. 16.8 Conclusion
    9. Acknowledgements
  26. Chapter 17: Constraints over Structured Domains
    1. 17.1 History and Applications
    2. 17.2 Constraints over Regular and Constructed Sets
    3. 17.3 Constraints over Finite Set Intervals
    4. 17.4 Influential Extensions to Subset Bound Solvers
    5. 17.5 Constraints over Maps, Relations and Graphs
    6. 17.6 Constraints over Lattices and Hierarchical Trees
    7. 17.7 Implementation Aspects
    8. 17.8 Applications
    9. 17.9 Further Topics
    10. Acknowledgements
  27. Chapter 18: Randomness and Structure
    1. 18.1 Random Constraint Satisfaction
    2. 18.2 Random Satisfiability
    3. 18.3 Random Problems with Structure
    4. 18.4 Runtime Variability
    5. 18.5 History
    6. 18.6 Conclusions
  28. Chapter 19: Temporal CSPs
    1. 19.1 Preliminaries
    2. 19.2 Constraint-Based Formalisms for Reasoning About Time
    3. 19.3 Efficient Algorithms for Temporal CSPs
    4. 19.4 More Expressive Queries for Temporal CSPs
    5. 19.5 First-Order Temporal Constraint Languages
    6. 19.6 The Scheme of Indefinite Constraint Databases
    7. 19.7 Conclusions
    8. Acknowledgements
  29. Chapter 20: Distributed Constraint Programming
    1. 20.1 Definitions
    2. 20.6 Further Issues
    3. 20.7 Conclusion
  30. Chapter 21: Uncertainty and Change
    1. 21.1 Background and Definitions
    2. 21.2 Example: Course Scheduling
    3. 21.3 Uncertain Problems
    4. 21.4 Problems that Change
    5. 21.5 Pseudo-dynamic Formalisms
    6. 21.6 Challenges and Future Trends
    7. 21.7 Summary
    8. Acknowledgments
  31. Chapter 22: Constraint-Based Scheduling and Planning
    1. 22.1 Constraint Programming Models for Scheduling
    2. 22.2 Constraint Programming Models for Planning
    3. 22.3 Constraint Propagation for Resource Constraints
    4. 22.4 Constraint Propagation on Optimization Criteria
    5. 22.5 Heuristic Search
    6. 22.6 Conclusions
  32. Chapter 23: Vehicle Routing
    1. 23.1 The Vehicle Routing Problem
    2. 23.2 Operations Research Approaches
    3. 23.3 Constraint Programming Approaches
    4. 23.4 Constraint Programming in Search
    5. 23.5 Using Constraint Programming as a Subproblem Solver
    6. 23.6 CP-VRP in the Real World
    7. 23.7 Conclusions
    8. Acknowledgements
  33. Chapter 24: Configuration
    1. 24.1 What Is Configuration?
    2. 24.2 Configuration Knowledge
    3. 24.3 Constraint Models for Configuration
    4. 24.4 Problem Solving for Configuration
    5. 24.5 Conclusion
  34. Chapter 25: Constraint Applications in Networks
    1. 25.1 Electricity Networks
    2. 25.2 Water (Oil) Networks
    3. 25.3 Data Networks
    4. 25.4 Conclusion
  35. Chapter 26: Bioinformatics and Constraints
    1. 26.1 What Biologists Want from Bioinformatics
    2. 26.2 The Central Dogma
    3. 26.3 A Classification of Problem Areas
    4. 26.4 Sequence Related Problems
    5. 26.5 Structure Related Problems
    6. 26.6 Function Related Problems
    7. 26.7 Microarrays
  36. Index