Search design patterns
In the context of constraint programming search algorithms are normally implemented as monolithic units, which often are complex and error prone, hard to understand and to extend. That holds even for object-oriented state-of-the-art constraint solvers, although the paradigm of object-oriented programming offers various techniques which encourage abstraction, flexibility and code reuse. We apply these techniques on CP search and propose a conception of platform independent, objectoriented search design patterns which state composable search modules. The composition of these modules forms complete search algorithms. Formulating search algorithm with modules has many advantages: They are flexible, reusable and easy to understand. As search modules encapsulate orthogonal abstractions, they categorize search and allow fast and easy search modelling.
Full Text: PDF