Lecture 11 Last Time: Local Search, Constraint Satisfaction Problems Today: More on CSPs
What is a CSP? A special kind of search problem in which states are defined by the values of a set of variables and the goal test specifies a set of constraints that the values must obey. e.g. 8 queens – assign positions to queens timetabling – assign rooms to classes scheduling – assign times to classes circuit layout – assign position to components sudoko – assign numbers to boxes
Example – Map colouring assign each region a colour, neighbouring regions must be different colours
How are the constraints described? 2 ways: As rules, e.g. WA != NT, WA != SA, NT != SA, NT !=Q, SA !=Q, SA != NSW, Q != NSW, NSW != V, SA !=V As possible values, e.g. {(WA,NT)}={(red,green),(red,blue),(green,red),(green,blue),(blue,re d),(blue,red)}
What types of constraints are there? Constraints can be unary, binary, or higher-order: Unary: concern the value of a single variable Binary: relate pairs of variables (in 8-Queens all constraints are binary) Higher-order: triples, 4-tuples,...
Backtracking Search Variable assignments are commutative, i.e., [WA=red then NT =green] same as [NT =green then WA=red] Only need to consider assignments to a single variable at each node b=d and there are d n leaves Depth-first search for CSPs with single-variable assignments is called backtracking search Backtracking search is the basic uninformed algorithm for CSPs Can solve n-queens for n=25
Backtracking Example
Can backtracking be improved? Three methods 1. Which variable should be assigned next? 2. In what order should its values be tried? 3. Can we detect inevitable failure early?
Which variable to try next? Minimum remaining values (MRV) Choose the variable with the fewest legal values (most constrained variable)
What if variables have the same MRV? Use the Degree Heuristic choose the variable with the most constraints on remaining variables
Which value to try next? Least constraining value Given a variable, choose the least constraining value: The one that rules out the fewest values in the remaining variables Combining these heuristics makes 1000 queens feasible
What is forward checking? Keep track of remaining legal values for unassigned variables Terminate search when any variable has no legal values
Example: 4 Queens X1 {1,2,3,4} X3 {1,2,3,4} X4 {1,2,3,4} X2 {1,2,3,4}
Queens X1 {1,2,3,4} X3 {,2,,4} X4 {,2,3, } X2 {,,3,4}
Queens X1 {1,2,3,4} X3 {,,, } X4 {,2,3, } X2 {,,3,4}
Queens X1 {1,2,3,4} X3 {,2,, } X4 {,,3, } X2 {,,,4}
Queens X1 {1,2,3,4} X3 {,2,, } X4 {,,, } X2 {,,,4}
Queens X1 {,2,3,4} X3 {1,,3, } X4 {1,,3,4} X2 {,,,4}
Queens X1 {,2,3,4} X3 {1,,, } X4 {1,,3, } X2 {,,,4}
Queens X1 {,2,3,4} X3 {1,,, } X4 {,,3, } X2 {,,,4}
Queens X1 {,2,3,4} X3 {1,,, } X4 {,,3, } X2 {,,,4}
What is Constraint Propagation? Forward checking propagates information from assigned to unassigned variables, but doesn't provide early detection for all failures: NT and SA cannot both be blue! Constraint propagation repeatedly enforces constraints locally