CSPs
Tamara BergCS 590-133 Artificial Intelligence
Many slides throughout the course adapted from Svetlana Lazebnik, Dan Klein, Stuart Russell, Andrew Moore, Percy Liang, Luke Zettlemoyer
Review from last class
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:– Xi is a set of variables {X1 ,… Xn}
– Di is a set of domains {D1 ,... Dn} one for each variable– C is a set of constraints that specify allowable combinations of
values– 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 • by eliminating large portions of search space (identifying var/val
combinations that violate constraints).
Example: Map Coloring
• Variables: WA, NT, Q, NSW, V, SA, T • Domains: {red, green, blue}• Constraints: adjacent regions must have different colors
e.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: 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 * FAlldiff(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– hard constraint - no prof can teach 2 classes at the same
time. – preference constraints – Jan prefers teaching in the
morning while Alex prefers teaching in the afternoon (soft constraints/costs). For example an afternoon slot for Jan can cost 2 points whereas a morning slot costs 1.
Real-World CSPs
• Timetable problems– e.g., which class is offered when and where?– Classroom size & enrollment can put hard constraints on
where a class can be held – Avoiding simultaneous scheduling of two related classes
can be a soft constraint
Real-World CSPs
• Transportation Scheduling– E.g. airline scheduling Flights F1,F2 with capacities 165 and
385– Domains D1=[0,165] D2=[0,385]– Suppose we have an additional constraint that the two
flights must carry 420 people: ie F1+F2=420 – Then we can reduce the domains to:
D1=[35,165] D2=[255,385]
Enforcing Bounds consistency
Real-World CSPs• Job-shop scheduling
– e.g. assembling a car – Variables – X = tasks {Axlef, Axleb, Wheelrf, Wheellf, Wheelrb,
Wheellb,Nutsrf, Nutslf, Nutslb, Nutsrb, Caprf, Caplf, Caprb, CAPlb, Inspect}– Values – Di time task starts– Constraints – one ask must occur before other, a task takes a certain
amount of time to complete.• e.g. AxleF + 10 ≤ Wheelrf, Wheelrf+1≤Nutsrf, Nutsrf+2≤Caprf…• 4 workers, but only 1 axle tool:
– Axlef+10≤Axleb or Axleb+10≤Axlef
• For each variable, X, except Inspect:– X+dx ≤ Inspect
• Want total time less than 30 minutes and inspect takes 3 minutes:– Di = {1,2,3,….,27}
Types of Constraints• Unary
– restricts value of a single variable, e.g. SA≠green.• Binary
– relates two variables, e.g. SA≠NSW• Higher order
– relates more than two variables, e.g. Between (X,Y,Z)• Global
– arbitrary number of variables– commonly Alldiff – all variables must have different values. e.g. in sudoku all variables in a
unit must satisfy Alldiff.• Preference constraint
– Red is better than green– Often representable by a cost for each variable assignment
• Resource constraint– Atmost constraint. e.g. scheduling P1,P2,P3,P4 denote personnel assigned to each task.
Constrain is that you only have ≤ 10 people. So Atmost(10,P1,P2,P3,P4)
Variations on CSPs
Simplest CSPs – discrete, finite domainsmap coloring, scheduling with time limits, 8-queens
Discrete with infinite domainno deadline scheduling
Continuous domainsscheduling of experiments on Hubble telescope
Linear programming problemsconstraints must be linear equalities or inequalities (can be solved in time polynomial in # vars)
• Variables: Xij
• Domains: {1, 2, …, 9}• Constraints:
Alldiff(Xij in the same unit)Xij
Why are constraints useful?
They let us eliminate portions of assignment space • By identifying var/val combinations that violate constraints
?
?
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)
Example
Example
Example
Example
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)• Depth-first search for CSPs with single-variable assignments is
called backtracking search
Backtracking search algorithm
Backtracking search algorithm
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
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
Backtracking search algorithm
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 variablesWhich assignment
for Q should we choose?
Early detection of failure
Apply inference 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
• 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
Arc consistency
Consistent!
• 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
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 X loses a value, all pairs Z X need to be rechecked
Arc consistency
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 X loses 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 X loses a value, all pairs Z X need to be rechecked
• 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
Arc consistency
Arc consistency algorithm AC-3
Specialized constraint checking
• Constraints involving an arbitrary number of variables can have special purpose algorithms
• E.g. Alldiff – Remove any variable in the CSP that has a singleton
domain and remove that value from the domains of remaining variables.
– Repeat as long as you have singleton variables. – If at any point an empty domain is produced or you
have more variables than domain values left - inconsistency!
Specialized constraint checking
• Constraints involving an arbitrary number of variables can have special purpose algorithms
• E.g. Atmost – Detect inconsistencies by checking sum of min
values in current domain. – Can also enforce consistencies by deleting max
values of any domain if it’s not consistent with min values in other domains
Atmost(10,P1,P2,P3,P4)If domains are {2,3,4,5,6} can delete {5,6} from all domains b/c inconsistent with min domain values
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
Source: P. Abbeel, D. Klein, L. Zettlemoyer
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 variable and choose value that violates the fewest constraints
– I.e., attempt to greedily minimize total number of violated constraints
h = number of conflicts
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 variable and choose value that violates the fewest constraints
– I.e., attempt to greedily minimize total number of violated constraints– Problem: local minima
h = 1