Transcript constraints
Quick warm-up
Assign Red, Green, or Blue
Neighbors must be different
Sudoku
1
2 1
3
4
1) What is your brain doing to solve these?
2) How would you solve these with search (BFS, DFS, etc.)?
Announcements
Upcoming due dates
Monday 9/21 11:59 pm HW 3 (edX)
Friday 9/25 5:00 pm Project 1
Discussion Sections
Next week 9/22-23, official sign-up for section
Sign up in person at section
If overfull, priority goes to those who sign up and are registered for that section
If you don’t show up in person, you may get bumped to another section
Probability Sessions
Weekly, until we’re done with probability!
W 9-10 am, 299 Cory
W 6-7 pm, 531 Cory
Worksheets are posted on edX syllabus
My office hours: Friday 9am 511 Soda; Monday 11am 310 Soda
AI in the News
With the help of A.I.,
America’s most famous
doll tries to fulfill a timeless
dream – convincing little
girls that she’s a real friend.
What happens if they
believe her?
CS 188: Artificial Intelligence
Constraint Satisfaction Problems
Instructor: Stuart Russell
University of California, Berkeley
Standard Search Problems
Standard search problems:
State is a black box: arbitrary data structure
Goal test is a black box test on states
Actions are black box data structures
Transition model is a black box function
Consequences:
Have to write new code for every new problem
Have to devise heuristics for each new problem
Cannot just choose actions that achieve the goal!
Solution: formal representation for states, actions, goals
Spectrum of representations
Search,
game-playing
CSPs, planning,
propositional logic,
Bayes nets, neural nets
First-order logic,
databases,
probabilistic programs
Constraint Satisfaction Problems
State consists of variables Xi with values from a
domain D (or Di)
Goal test is a set of constraints specifying allowable
combinations of values for subsets of variables
Path to goal (order of assignments) doesn’t matter
Consequences:
Generic CSP algorithms much faster than standard search
Generic heuristics apply to all CSPs
Solve new problems without writing new code
Example: Map Coloring
Variables: WA, NT, Q, NSW, V, SA, T
Domains: {red, green, blue}
Constraints: adjacent regions must have
different colors
Implicit: WA NT
Explicit: (WA, NT) {(red,green), (red,blue), … }
Solutions are assignments satisfying all
constraints, e.g.:
{ WA=red, NT=green, Q=red, NSW=green, V=red, SA=blue, T=green }
Example: N-Queens
Formulation 1:
Variables: Xij
Domains: {0, 1}
Constraints
i, j, k
i, j, k
i, j, k
i, j, k
(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)}
i,j Xij = N
Space of assignments:
2
2N
Example: N-Queens
Formulation 2:
Variables: Qk
Domains: {1,2,3, … N}
Constraints:
Implicit: i, j non-threatening(Qi , Qj)
Explicit: (Q1 , Q2) {(1,3), (1,4), … }
(Q1 , Q3) etc.
Space of assignments:
NN
Which is bigger?
2
N
2
vs NN
2
N
log2 2 vs log2 NN
N2
vs N log2 N
N=10: 1030 vs 1010
Constraint Graphs
Constraint Graphs
Binary CSP: each constraint relates (at most) two
variables
Binary constraint graph: nodes are variables, arcs
show constraints
General-purpose CSP algorithms use the graph
structure to speed up search. E.g., Tasmania is an
independent subproblem!
Every non-binary CSP can be converted to a binary
CSP (possibly with extra variables): AIMA Ex. 6.6
Example: Cryptarithmetic
Variables:
F T U W R O X1 X2 X3
Domains:
{0,1,2,3,4,5,6,7,8,9}
Constraints:
alldiff( F,T,U,W,R,O )
O + O = R + 10 * X1
X1 + W + W = U + 10 * X2
X2 + T + T = O + 10 * X3
X3 = F
(X3) (X2) (X1)
Example: Sudoku
Variables:
Each (open) square
Domains:
{1,2,…,9}
Constraints:
9-way alldiff for each column
9-way alldiff for each row
9-way alldiff for each region
(or can have a bunch of
pairwise inequality
constraints)
Varieties of CSPs and Constraints
Varieties of CSPs
Discrete Variables
Finite domains, n variables with domain size d
O(dn) complete assignments
E.g., Boolean CSPs, d=2, including Boolean satisfiability where
constraints are clauses (SAT is NP-complete, so are most CSPs)
Infinite domains (integers, strings, etc.)
E.g., job scheduling with slots, variables are start slots for each job
Linear constraints solvable, nonlinear undecidable
Continuous variables
E.g., start/end times for Hubble Telescope observations
Linear constraints solvable in polynomial time by LP methods (see
cs170 for a bit of this theory)
Varieties of Constraints
Varieties of Constraints
Unary constraints involve a single variable (equivalent to
reducing domains), e.g.:
SA green
Binary constraints involve pairs of variables, e.g.:
SA WA
Higher-order constraints involve 3 or more variables:
e.g., cryptarithmetic column constraints
Preferences (soft constraints):
E.g., red is better than green
Cost function for assignments; infinite cost for hard violations
Gives constrained optimization problems
Real-World CSPs
Assignment problems: e.g., who teaches what class
Timetabling problems: e.g., which class is offered when and where?
Hardware configuration
Transportation scheduling
Factory scheduling
Circuit layout
Fault diagnosis
… lots more!
Many real-world problems involve real-valued variables…
Break quiz
Given a search problem P expressed in the usual way:
initial state s0, states S, actions A, goal test G, transition model Result(s,a)
and a time horizon T, construct a CSP C such that C has a solution
exactly when P has a solution of length T, and the solution to P can
be read off from the solution to C
Hint: You’ll need some variables for each time step, including At (the
action taken at time t). What are the constraints between time
steps? Other constraints on particular time steps?
Break quiz answer
Variables of the CSP are
Action variables A0 ,…, AT-1 each with domain A
State variables S0 ,…, ST , each with domain S
Constraints of the CSP are
S0=s0
ST satisfies goal test G
For t=0,…,T-1, St+1=Result(St, At)
Solving CSPs
Standard Search Formulation
States defined by the values assigned
so far (partial assignments)
Initial state: the empty assignment, {}
Actions(s): assign a value to an
unassigned variable
Result(s,a): the variable has the value
Goal-Test(s): the current assignment is
complete and satisfies all constraints
We’ll start with the straightforward,
naïve approach, then improve it
Search Methods
What would BFS do?
What would DFS do?
What problems does naïve search have?
Demo: applying DFS naïvely to graph coloring
Backtracking Search
Backtracking Search
Backtracking search is the basic uninformed algorithm for solving CSPs
Idea 1: One variable at a time
Variable assignments are commutative, so fix ordering
I.e., [WA = red then NT = green] same as [NT = green then WA = red]
Only choose assignment for a single variable at each step: reduce b from nd to d
Idea 2: Check constraints as you go
I.e., consider only values which do not conflict with previous assignments
Might have to do some computation to check the constraints
“Incremental goal test”
Depth-first search with these two improvements
is called backtracking search
Can solve n-queens for n 25
Backtracking Example
Backtracking Search
function BACKTRACKING-SEARCH(csp) returns a solution, or failure
return BACKTRACK({ }, csp)
function BACKTRACK(assignment,csp) returns a solution, or failure
if assignment is complete then return assignment
var ← SELECT-UNASSIGNED-VARIABLE(csp,assignment)
for each value in ORDER-DOMAIN-VALUES(var,assignment,csp) do
if value is consistent with assignment then
add {var = value} to assignment
inferences ←INFERENCE(csp,var,assignment)
if inferences ̸= failure then
add inferences to assignment
result ← BACKTRACK(assignment, csp)
if result ̸= failure then return result
remove {var = value} and inferences from assignment
return failure
Demo: applying backtracking to graph coloring
Improving Backtracking
General-purpose ideas give huge gains in speed
Ordering:
Which variable should be assigned next?
In what order should its values be tried?
Filtering: Can we detect inevitable failure early?
Structure: Can we exploit the problem structure?
Ordering
Variable Ordering
var ← SELECT-UNASSIGNED-VARIABLE(csp,assignment)
Variable Ordering: Minimum remaining values (MRV):
Choose the variable with the fewest legal left values in its domain
Why min rather than max?
“Fail-fast” ordering; lower branching
Break ties using degree heuristic
Choose variable with most connections to others
Demo: backtracking+MRV for graph coloring
Value Ordering
for each value in ORDER-DOMAIN-VALUES(var,assignment,csp) do
Choose the Least Constraining Value (LCV)
I.e., the one that rules out the fewest values in the
remaining variables
Why least rather than most?
Combining these ordering ideas makes
1000 queens feasible
Filtering
inferences ←INFERENCE(csp,var,assignment)
if inferences ̸= failure then
add inferences to assignment
…
Filtering: Forward Checking
Filtering: Keep track of domains for unassigned variables and cross off bad options
Simple example: forward checking
Cross off values that violate a constraint when added to the existing assignment
Demo: backtracking+FC for graph coloring
More advanced inference
The MAC (maintaining arc consistency) algorithm detects many
more failures earlier than forward checking
See AIMA Section 6.2 for details
We’ll see a definition and application of arc consistency shortly
(and in HW4)
Structure
Problem Structure
Extreme case: independent subproblems
Example: Tasmania and mainland do not interact
Independent subproblems are identifiable as
connected components of constraint graph:
Divide and Conquer!
Suppose a graph of n variables can be broken into
subproblems of only c variables each:
Worst-case solution cost is …
O((n/c)(dc)), linear in n
E.g., n = 80, d = 2, c =20, search 10 million nodes/sec
Original problem: 280 = 4 billion years
Four subproblems: 4 x 220 = 0.4 seconds
Tree-Structured CSPs
Theorem: if the constraint graph has no loops, the CSP can be solved in O(n d2) time
Compare to general CSPs, where worst-case time is O(dn)
This property also applies to probabilistic reasoning (later): an example of the relation
between syntactic restrictions and the complexity of reasoning
Useful notion: Consistency of an arc
An arc X Y is consistent iff for every x in the tail there is some y in the head which
could be assigned without violating a constraint
This is an example of
constraint propagation
via arc consistency checks.
More powerful than simple
forward checking.
Delete from the tail!
Forward checking: Enforcing consistency of arcs pointing to each new assignment
Tree-Structured CSPs
Algorithm for tree-structured CSPs:
Order: Choose a root variable, order variables so that parents precede children
X
X
X
Remove backward: For i = n : 2, apply RemoveInconsistent(Parent(Xi),Xi)
Assign forward: For i = 1 : n, assign Xi consistently with Parent(Xi)
Runtime: O(n d2)
Improving Structure
Nearly Tree-Structured CSPs
Conditioning: instantiate a variable, prune its neighbors' domains
Cutset conditioning: instantiate (in all ways) a set of variables such that
the remaining constraint graph is a tree
Cutset Conditioning
Choose a cutset
SA
Instantiate the cutset
(all possible ways)
SA
Compute residual CSP
for each assignment
Solve the residual CSPs
(tree structured)
SA
SA
Isn’t that a lot of extra work?
Assume (as usual) n variables with domain size d
Remember a tree with m variables is solvable in time md2
Cutset size c gives runtime …
O( (dc) (n-c) d2 ), very fast for small c
E.g., 80 variables, c=10, 4 billion years -> 0.029 seconds
A quick note on local search for CSPs
Min-conflicts algorithm
Like hill-climbing, but not quite!
Algorithm: While not solved,
Variable selection: randomly select any conflicted variable
Value selection: min-conflicts heuristic:
Choose a value that violates the fewest constraints
Break ties randomly
Demo: min-conflicts for graph coloring
Performance of Min-Conflicts
Given random initial state, can solve n-queens in almost constant time for arbitrary
n with high probability (e.g., n = 10,000,000)!
The same appears to be true for any randomly-generated CSP except in a narrow
range of the ratio
Summary: CSPs
CSPs are a special kind of search problem:
States are (partial) assignments of values to variables
Goal test defined by constraints
Formal language => general algorithms and heuristics
Basic algorithm: backtracking search
Speed-ups:
Ordering
Filtering and constraint propagation
Structure (decomposition, trees and near-trees)
Local search with min-conflicts is often effective in practice