Search and Optimisation Support

## 7.4 Search and Optimisation Support

- Tree Search Methods: ic_search
- Optimisation: branch_and_bound

### 7.4.1 Tree Search Methods: ic_search

ECLiPSe has built-in backtracking and is therefore well suited for performing depth-first tree search. With combinatorial problems, naive depth-first search is usually not good enough, even in the presence of constraint propagation. It is usually necessary to apply heuristics, and if the problems are large, one may even need to resort to incomplete search. The ic_search contains a collection of predefined, easy-to-use search heuristics as well as incomplete tree search strategies, applicable to problems involving ic variables. For more details see chapter 12.

### 7.4.2 Optimisation: branch_and_bound

Solvers that are based on constraint propagation are typically only concerned with satisfiability, i.e. with finding some or all solutions to a problems. The branch-and-bound method is a general technique to build optimisation on top of a satisfiability solver. The ECLiPSe branch_and_bound library is a solver-independent implementation of the branch-and-bound method, and provides a number of options and variants of the basic technique.