Chapter 2  Search, Optimization, and Constraint Satisfaction