610 likes | 766 Views
Constraint Satisfaction Problems (Chapter 6). What is search for?. Assumptions: single agent, deterministic, fully observable, discrete environment Search for planning The path to the goal is the important thing Paths have various costs, depths Search for assignment
E N D
What is search for? • Assumptions: single agent, deterministic, fully observable, discrete environment • Search for planning • The path to the goal is the important thing • Paths have various costs, depths • Search for assignment • Assign values to variables while respecting certain constraints • The goal (complete, consistent assignment) is the important thing
Constraint satisfaction problems (CSPs) • Definition: • State is defined by variablesXi with values from domainDi • Goal testis a set of constraints specifying allowable combinations of values for subsets of variables • Solution is a complete, consistent assignment • How does this compare to the “generic” tree search formulation? • A more structured representation for states, expressed in a formal representation language • Allows useful general-purpose algorithms with more power than standard search algorithms
Example: Map Coloring • Variables:WA, NT, Q, NSW, V, SA, T • Domains: {red, green, blue} • Constraints: adjacent regions must have different colorse.g., WA ≠ NT, or (WA, NT) in {(red, green), (red, blue), (green, red), (green, blue), (blue, red), (blue, green)}
Example: Map Coloring • Solutions are complete and consistent assignments, e.g., WA = red, NT = green, Q = red, NSW = green, V = red, SA = blue, T = green
Example: n-queens problem • Put n queens on an n × n board with no two queens on the same row, column, or diagonal
Example: N-Queens • Variables:Xij • Domains: {0, 1} • Constraints: i,j Xij = N (Xij,Xik) {(0, 0), (0, 1), (1, 0)} (Xij,Xkj) {(0, 0), (0, 1), (1, 0)} (Xij,Xi+k, j+k) {(0, 0), (0, 1), (1, 0)} (Xij,Xi+k, j–k) {(0, 0), (0, 1), (1, 0)} Xij
N-Queens: Alternative formulation • Variables:Qi • Domains: {1, … , N} • Constraints: i, j non-threatening (Qi,Qj) Q1 Q2 Q3 Q4
Example: Cryptarithmetic • Variables: T, W, O, F, U, R X1, X2 • Domains: {0, 1, 2, …, 9} • Constraints: O + O = R + 10 * X1 W + W + X1 = U + 10 * X2 T + T + X2 = O + 10 * F Alldiff(T, W, O, F, U, R) T ≠ 0, F ≠ 0 X2 X1
Example: Sudoku • Variables:Xij • Domains: {1, 2, …, 9} • Constraints: Alldiff(Xij in the same unit) Xij
Real-world CSPs • Assignment problems • e.g., who teaches what class • Timetable problems • e.g., which class is offered when and where? • Transportation scheduling • Factory scheduling • More examples of CSPs: http://www.csplib.org/
Standard search formulation (incremental) • States: • Variables and values assigned so far • Initial state: • The empty assignment • Action: • Choose any unassigned variable and assign to it a value that does not violate any constraints • Fail if no legal assignments • Goal test: • The current assignment is complete and satisfies all constraints
Standard search formulation (incremental) • What is the depth of any solution (assuming n variables)? n (this is good) • Given that there are m possible values for any variable, how many paths are there in the search tree? n! · mn(this is bad) • How can we reduce the branching factor?
Backtracking search • In CSP’s, variable assignments are commutative • For example, [WA = red then NT = green] is the same as [NT = green then WA = red] • We only need to consider assignments to a single variable at each level (i.e., we fix the order of assignments) • Then there are only mnleaves • Depth-first search for CSPs with single-variable assignments is called backtracking search
Backtracking search algorithm • Making backtracking search efficient: • Which variable should be assigned next? • In what order should its values be tried? • Can we detect inevitable failure early?
Which variable should be assigned next? • Most constrained variable: • Choose the variable with the fewest legal values • A.k.a. minimum remaining values (MRV) heuristic
Which variable should be assigned next? • Most constrained variable: • Choose the variable with the fewest legal values • A.k.a. minimum remaining values (MRV) heuristic
Which variable should be assigned next? • Most constraining variable: • Choose the variable that imposes the most constraints on the remaining variables • Tie-breaker among most constrained variables
Which variable should be assigned next? • Most constraining variable: • Choose the variable that imposes the most constraints on the remaining variables • Tie-breaker among most constrained variables
Given a variable, in which order should its values be tried? • Choose the least constraining value: • The value that rules out the fewest values in the remaining variables
Given a variable, in which order should its values be tried? • Choose the least constraining value: • The value that rules out the fewest values in the remaining variables Which assignment for Q should we choose?
Early detection of failure Applyinference to reduce the space of possible assignments and detect failure early
Early detection of failure:Forward checking • Keep track of remaining legal values for unassigned variables • Terminate search when any variable has no legal values
Early detection of failure:Forward checking • Keep track of remaining legal values for unassigned variables • Terminate search when any variable has no legal values
Early detection of failure:Forward checking • Keep track of remaining legal values for unassigned variables • Terminate search when any variable has no legal values
Early detection of failure:Forward checking • Keep track of remaining legal values for unassigned variables • Terminate search when any variable has no legal values
Early detection of failure:Forward checking • Keep track of remaining legal values for unassigned variables • Terminate search when any variable has no legal values
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
Arc consistency • Simplest form of propagation makes each pair of variables consistent: • X Y is consistent ifffor every value of X there is some allowed value of Y Consistent!
Arc consistency • Simplest form of propagation makes each pair of variables consistent: • X Y is consistent ifffor every value of X there is some allowed value of Y
Arc consistency • Simplest form of propagation makes each pair of variables consistent: • X Y is consistent ifffor every value of X there is some allowed value of Y • When checking X Y, throw out any values of X for which there isn’t an allowed value of Y • If Xloses a value, all pairs Z Xneed to be rechecked
Arc consistency • Simplest form of propagation makes each pair of variables consistent: • X Y is consistent iff for every value of X there is some allowed value of Y • When checking X Y, throw out any values of X for which there isn’t an allowed value of Y • If Xloses a value, all pairs Z X need to be rechecked
Arc consistency • Simplest form of propagation makes each pair of variables consistent: • X Y is consistent iff for every value of X there is some allowed value of Y • When checking X Y, throw out any values of X for which there isn’t an allowed value of Y • If Xloses a value, all pairs Z X need to be rechecked
Arc consistency • Simplest form of propagation makes each pair of variables consistent: • X Y is consistent iff for every value of X there is some allowed value of Y • When checking X Y, throw out any values of X for which there isn’t an allowed value of Y
Arc consistency • Simplest form of propagation makes each pair of variables consistent: • X Y is consistent iff for every value of X there is some allowed value of Y • When checking X Y, throw out any values of X for which there isn’t an allowed value of Y • Arc consistency detects failure earlier than forward checking • Can be run before or after each assignment
Does arc consistency always detect the lack of a solution? B • There exist stronger notions of consistency (path consistency, k-consistency), but we won’t worry about them A D B A D C C
Tree-structured CSPs • Certain kinds of CSPs can be solved without resorting to backtracking search! • Tree-structured CSP: constraint graph does not have any loops Source: P. Abbeel, D. Klein, L. Zettlemoyer
Algorithm for tree-structured CSPs • Choose one variable as root, order variables from root to leaves such that every node's parent precedes it in the ordering http://cs188ai.wikia.com/wiki/Tree_Structure_CSPs
Algorithm for tree-structured CSPs • Choose one variable as root, order variables from root to leaves such that every node's parent precedes it in the ordering • Backward removal phase: check arc consistency starting from the rightmost node and going backwards http://cs188ai.wikia.com/wiki/Tree_Structure_CSPs
Algorithm for tree-structured CSPs • Choose one variable as root, order variables from root to leaves such that every node's parent precedes it in the ordering • Backward removal phase: check arc consistency starting from the rightmost node and going backwards • Forward assignment phase: select an element from the domain of each variable going left to right. We are guaranteed that there will be a valid assignment because each arc is arc consistent http://cs188ai.wikia.com/wiki/Tree_Structure_CSPs
Algorithm for tree-structured CSPs • Running time is O(nm2) (n is the number of variables, m is the domain size) • We have to check arc consistency once for every node in the graph (every node has one parent), which involves looking at pairs of domain values
Nearly tree-structured CSPs • Cutset conditioning: find a subset of variables whose removal makes the graph a tree, instantiate that set in all possible ways, prune the domains of the remaining variables and try to solve the resulting tree-structured CSP • Cutset size c gives runtime O(mc (n – c)m2) Source: P. Abbeel, D. Klein, L. Zettlemoyer
Algorithm for tree-structured CSPs • Running time is O(nm2) (n is the number of variables, m is the domain size) • We have to check arc consistency once for every node in the graph (every node has one parent), which involves looking at pairs of domain values • What about backtracking search for general CSPs? • Worst case O(mn) • Can we do better?
Computational complexity of CSPs • The satisfiability (SAT) problem: • Given a Boolean formula, is there an assignment of the variables that makes it evaluate to true? • SAT is NP-complete(Cook, 1971) • NP: class of decision problems for which the “yes” answer can be verified in polynomial time • An NP-complete problem is in NP and every other problem in NP can be efficiently reduced to it • Other NP-complete problems: graph coloring, n-puzzle, generalized sudoku • Open question: is P = NP?
Local search for CSPs • Start with “complete” states, i.e., all variables assigned • Allow states with unsatisfied constraints • Attempt to improve states by reassigning variable values • Hill-climbing search: • In each iteration, randomly select any conflicted variableand choose value that violates the fewest constraints • I.e., attempt to greedily minimize total number of violated constraints h= number of conflicts