0% found this document useful (0 votes)
6 views

Lecture 04 Backtracking Search

Uploaded by

gateh29487
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Lecture 04 Backtracking Search

Uploaded by

gateh29487
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

CSC384: Intro to Artificial Intelligence

Backtracking Search
(CSPs)
■ Chapter 5
5.3 is about local search which is a very
useful idea but we won’t cover it in class.

Hojjat Ghaderi, University of Toronto 1


Constraint Satisfaction Problems
● The search algorithms we discussed so far had no
knowledge of the states representation (black box).
■ For each problem we had to design a new state
representation (and embed in it the sub-routines we pass to
the search algorithms).
● Instead we can have a general state representation
that works well for many different problems.
● We can build then specialized search algorithms that
operate efficiently on this general state representation.
● We call the class of problems that can be represented
with this specialized representation CSPs---Constraint
Satisfaction Problems.
● Techniques for solving CSPs find more practical
applications in industry than most other areas of AI.

Hojjat Ghaderi, University of Toronto 2


Constraint Satisfaction Problems
● The idea: represent states as a vector of
feature values. We have
■ k-features (or variables)
■ Each feature takes a value. Domain of possible
values for the variables:
height = {short, average, tall},
weight = {light, average, heavy}.
● In CSPs, the problem is to search for a set of
values for the features (variables) so that the
values satisfy some conditions (constraints).
■ i.e., a goal state specified as conditions on the vector
of feature values.
Hojjat Ghaderi, University of Toronto 3
Constraint Satisfaction Problems
● Sudoku:
■ 81 variables, each representing the value of a cell.

■ Values: a fixed value for those cells that are already


filled in, the values {1-9} for those cells that are empty.

■ Solution: a value for each cell satisfying the


constraints:
no cell in the same column can have the same value.
no cell in the same row can have the same value.
no cell in the same sub-square can have the same value.

Hojjat Ghaderi, University of Toronto 4


Constraint Satisfaction Problems
● Scheduling
■ Want to schedule a time and a space for each final
exam so that
No student is scheduled to take more than one final
at the same time.
The space allocated has to be available at the time
set.
The space has to be large enough to
accommodate all of the students taking the exam.

Hojjat Ghaderi, University of Toronto 5


Constraint Satisfaction Problems
● [Scheduling….] Variables:
■ T1, …, Tm: Ti is a variable representing the scheduled
time for the i-th final.
Assume domains are fixed to {MonAm, MonPm, …,
FriAm, FriPm}.
■ S1, …, Sm: Si is the space variable for the i-th final.
Domain of Si are all rooms big enough to hold the i-
th final.

Hojjat Ghaderi, University of Toronto 6


Constraint Satisfaction Problems
● [Scheduling….]Want to find an assignment of
values to each variable (times, rooms for each
final), subject to the constraints:
■ For all pairs of finals i, j (i ≠ j) such that there is a
student taking both:
Ti ≠ Tj
■ For all pairs of finals i, j (i ≠ j) :
Ti ≠ Tj or Si ≠ Sj
 either i and j are not scheduled at the same time,
or if they are they are not in the same space.

Hojjat Ghaderi, University of Toronto 7


Constraint Satisfaction Problems (CSP)

● More formally, a CSP consists of


■ a set of variables V1, …, Vn
■ for each variable a domain of possible values
Dom[Vi].
■ A set of constraints C1,…, Cm.

Hojjat Ghaderi, University of Toronto 8


Constraint Satisfaction Problems
● Each variable be assigned any value from its
domain.
Vi = d where d ∈ Dom[Vi]
● Each constraint C has
■ A set of variables it is over, called its scope: e.g.,
C(V1,V2,V4).
■ Is a boolean function that maps assignments to these
variables to true/false.
e.g. C(V1=a,V2=b,V4=c) = True
● this set of assignments satisfies the constraint.
e.g. C(V1=b,V2=c,V4=c) = False
● this set of assignments falsifies the constraint.

Hojjat Ghaderi, University of Toronto 9


Arity of constraints
● Unary Constraints (over one variable)
■ e.g. C(X):X=2 C(Y): Y>5
● Binary Constraints (over two variables)
■ e.g. C(X,Y): X+Y<6
■ Can be represented by Constraint Graph
Nodes are variables, arcs show constraints.
E.g. 4-Queens:
Q1 Q2

Q3 Q4

● Higher-order constraints: over 3 or more variables


■ We can convert any constraint into a set of binary
constraints (may need some auxiliary variables). Look at
the exercise in the book.

Hojjat Ghaderi, University of Toronto 10


Constraint Satisfaction Problems
● A solution to a CSP is
■ an assignment of a value to all of the variables such
that
every constraint is satisfied.

Hojjat Ghaderi, University of Toronto 11


Constraint Satisfaction Problems
● Sudoku:
■ V11, V12, …, V21, V22, …, V91, …, V99
Dom[Vij] = {1-9} for empty cells
Dom[Vij] = {k} a fixed value k for filled cells.
■ 9 Row constraints:
CR1(V11, V12, V13, …, V19)
CR2(V21, V22, V23, …, V29)
....,
CR9(V91, V92, …, V99)
■ 9 Column Constraints:
CC1(V11, V21, V31, …, V91)
CC2(V21, V22, V13, …, V92)
....,
CC9(V19, V29, …, V99)
■ 9 Sub-Square Constraints:
CSS1(V11, V12, V13, V21, V22, V23, V31, V32, V33)
CSS2(V41, V42, V43, V51, V52, V53, V61, V62, V63)
…,
CSS9(V77, V78, V79, V87, V88, V89, V97, V98, V99)
Hojjat Ghaderi, University of Toronto 12
Constraint Satisfaction Problems
● Sudoku:
■ Each of these constraints is over 9 variables, and they
are all the same constraint:
Any assignment to these 9 variables such that each
variable has a unique value satisfies the constraint.
Any assignment where two or more variables have
the same value falsifies the constraint.
■ Such constraints are often called ALL-DIFF constraints.

Hojjat Ghaderi, University of Toronto 13


Constraint Satisfaction Problems
● Sudoku:
■ Thus Sudoku has 3x9 ALL-Diff constraints, one over
each set of variables in the same row, one over each
set of variables in the same column, and one over
each set of variables in the same sub-square.

■ Note also that an ALL-Diff constraint over k variables


can be equivalently represented by k choose 2 not-
equal constraints over each pair of these variables.
e.g. CSS1(V11, V12, V13, V21, V22, V23, V31, V32, V33) ≡
NEQ(V11,V12), NEQ(V11,V13), NEQ(V11,V21) …, NEQ(V32,V33)
 NEQ is a not-equal constraint.

Hojjat Ghaderi, University of Toronto 14


Constraint Satisfaction Problems
● Exam Scheduling constraints:
■ For all pairs of finals i, j such that there is a student
taking both, we add the following constraint:
NEQ(Ti,Tj)
■ For all pairs of finals i, j (i ≠ j) add the following
constraint:
C(Ti,Tj,Si,Sj) where
 This constraint is satisfied
● by any set of assignments in which Ti ≠ Tj.
● any set of assignments in which Si ≠ Sj.
 Falsified by any set of assignments in which Ti=Tj
AND Si=Sj at the same time.

Hojjat Ghaderi, University of Toronto 15


Solving CSPs
● CSPs can be solved by a specialized version of
depth first search.
● Key intuitions:
■ We can build up to a solution by searching through
the space of partial assignments.
■ Order in which we assign the variables does not
matter---eventually they all have to be assigned.
■ If during the process of building up a solution we
falsify a constraint, we can immediately reject all
possible ways of extending the current partial
assignment.

Hojjat Ghaderi, University of Toronto 16


Backtracking Search
● These ideas lead to the backtracking search algorithm
Backtracking (BT) Algorithm:

BT(Level)
If all variables assigned
PRINT Value of each Variable
RETURN or EXIT (RETURN for more solutions)
(EXIT for only one solution)
V := PickUnassignedVariable()
PickUnassignedVariable()
Variable[Level] := V
Assigned[V] := TRUE
for d := each member of Domain(V)
Value[V] := d
OK := TRUE
for each constraint C such that
V is a variable of C
and all other variables of C are assigned.
if C is not satisfied by the current set of assignments
OK := FALSE
if(OK)
BT(Level+1)
return

Hojjat Ghaderi, University of Toronto 17


Solving CSPs
● The algorithm searches a tree of partial
assignments.
Children of a node are The root has the empty
all possible values of set of assignments
some (any) unassigned
variable Root {}

Vi=a Vi=b Vi=c

Search stops
Vj=1 Vj=2 descending if the
assignments on
path to the node
Subtree
violate a constraint
Hojjat Ghaderi, University of Toronto 18
Backtracking Search
● Heuristics are used to determine which variable
to assign next “PickUnassignedVariable”.
● The choice can vary from branch to branch,
e.g.,
■ under the assignment V1=a we might choose to
assign V4 next, while under V1=b we might choose to
assign V5 next.
● This “dynamically” chosen variable ordering
has a tremendous impact on performance.

Hojjat Ghaderi, University of Toronto 19


Example.
● N-Queens. Place N Queens on an N X N chess board so
that no Queen can attack any other Queen.
■ N Variables, one per row.
Value of Qi is the column the Queen in row i is placed.

■ Constrains:
Vi ≠ Vj for all i ≠ j (cannot put two Queens in same column)
|Vi-Vj| ≠ |i-j| (Diagonal constraint)
 (i.e., the difference in the values assigned to Vi and Vj can’t
be equal to the difference between i and j.

Hojjat Ghaderi, University of Toronto 20


Example.
● 4X4 Queens

Hojjat Ghaderi, University of Toronto 21


Example.
● 4X4 Queens

Hojjat Ghaderi, University of Toronto 22


Example.
● 4X4 Queens

Solution!

Hojjat Ghaderi, University of Toronto 23


Problems with plain backtracking.

1 2 3

4 5 6

7
8
9

Hojjat Ghaderi, University of Toronto 24


Constraint Satisfaction Problems
● Sudoku:
■ The 3,3 cell has no possible value. But in the backtracking search we
don’t detect this until all variables of a row/column or sub-square
constraint are assigned. So we have the following situation

Variable has no
possible value,
but we don’t
detect this. Until
we try to assign it
a value

Hojjat Ghaderi, University of Toronto 25


Constraint Propagation
● Constraint propagation refers to the technique
of “looking ahead” in the search at the as yet
unassigned variables.
● Try to detect if any obvious failures have
occurred.
● “Obvious” means things we can test/detect
efficiently.
● Even if we don’t detect an obvious failure we
might be able to eliminate some possible part
of the future search.

Hojjat Ghaderi, University of Toronto 26


Constraint Propagation
■ Propagation has to be applied during search.
Potentially at every node of the search tree.

■ If propagation is slow, this can slow the search down


to the point where we are better off not to do any
propagation!

■ There is always a tradeoff between searching fewer


nodes in the search, and having a higher
nodes/second processing rate.

Hojjat Ghaderi, University of Toronto 27


Forward Checking
● Forward checking is an extension of
backtracking search that employs a “modest”
amount of propagation (lookahead).

● When a variable is instantiated we check all


constraints that have only one uninstantiated
variable remaining.

● For that uninstantiated variable, we check all of


its values, pruning those values that violate the
constraint.
Hojjat Ghaderi, University of Toronto 28
Forward Checking Algorithm
/* this method just checks the constraint C */
FCCheck(C,x)
// C is a constraint with all its variables already
// assigned, except for variable x.
for d := each member of CurDom[x]
if making x = d together with
previous assignments to
variables in scope C falsifies C
then
remove d from CurDom[x]
if CurDom[x] = {} then return DWO (Domain Wipe Out)
return ok

Hojjat Ghaderi, University of Toronto 29


Forward Checking Algorithm
FC(Level) /*Forward Checking Algorithm */
If all variables are assigned
PRINT Value of each Variable
RETURN or EXIT (more solutions, or just one)
V := PickAnUnassignedVariable()
Variable[Level] := V
Assigned[V] := TRUE
for d := each member of CurDom(V)
Value[V] := d
DWOoccured := False
for each constraint C over V that has exactly one
unassigned variable in its scope (say X).
if(FCCheck(C,X) == DWO)/*X domain becomes empty*/
DWOoccurred := True;/*no point to continue*/
break
if(not DWOoccured) /*all constraints were ok*/
FC(Level+1)
RestoreAllValuesPrunedByFCCheck()
return;
Hojjat Ghaderi, University of Toronto 30
FC Example.
● 4X4 Queens
■ Q1,Q2,Q3,Q4 with domain {1..4}
■ All binary constraints: C(Qi,Qj)

● FC illustration: color values are


removed from domain of each Q1=1
row (blue, then yellow, then Dom(Q1)={1}
green) Dom(Q2)={1,2,3,4}={3,4}
Dom(Q3)={1,2,3,4}={2,4}
Dom(Q4)={1,2,3, 4}={2,3}

Q2=3 Q2=4

DWO happens for Q3


So backtrack, try another
vlaue for Q2
Q3=2

Hojjat Ghaderi, University of Toronto 31


Example.
● 4X4 Queens
continue…

Solution!

Hojjat Ghaderi, University of Toronto 32


Restoring Values
● After we backtrack from the current
assignment (in the for loop) we must restore the
values that were pruned as a result of that
assignment.
● Some bookkeeping needs to be done, as we
must remember which values were pruned by
which assignment (FCCheck is called at every
recursive invocation of FC).

Hojjat Ghaderi, University of Toronto 33


Minimum Remaining Values Heuristic
● FC also gives us for free a very powerful
heuristic
■ Always branch on a variable with the smallest
remaining values (smallest CurDom).
■ If a variable has only one value left, that value is
forced, so we should propagate its consequences
immediately.
■ This heuristic tends to produce skinny trees at the top.
This means that more variables can be instantiated
with fewer nodes searched, and thus more constraint
propagation/DWO failures occur with less work.

Hojjat Ghaderi, University of Toronto 34


Empirically
● FC often is about 100 times faster than BT
● FC with MRV (minimal remaining values) often
10000 times faster.
● But on some problems the speed up can be
much greater
■ Converts problems that are not solvable to problems
that are solvable.

● Other more powerful forms of propagations are


commonly used in practice.

Hojjat Ghaderi, University of Toronto 35


Arc Consistency (2-consistency)

● Another form of propagation is to make each arc consistent.

● C(X,Y) is consistent iff for every value of X there is some value of of Y


that satisfies C.

● Can remove values from the domain of variables:


■ E.G. C(X,Y): X>Y Dom(X)={1,5,11} Dom(Y)={3,8,15}
■ For X=1 there is no value of Y s.t. 1>Y => remove 1 from domain X
■ For Y=15 there is no value of X s.t. X>15, so remove 15 from domain Y
■ We obtain Dom(X)={5,11} and Dom(Y)={3,8}.

● Removing a value from a domain may trigger further


inconsistency, so we have to repeat the procedure until
everything is consistent.
■ For efficient implementation, we keep track of inconsistent arcs by
putting them in a Queue (See AC3 algorithm in the book).
● This is stronger than forward checking. why?

Hojjat Ghaderi, University of Toronto 36


Back-Jumping
● Standard backtracking backtracks to the most recent variable (1 level up).

● Trying different values for this variable may have no effect:


■ E.g. C(X,Y,Z): X ≠Y & Z>3 and C(W): W mod 2 =0 X=1
■ Dom(X)=Dom(Y)={1..5}, Dom(Z)={3,4,5} Dom(W)={10...99}
Y=1
After assigning X=1,Y=1, and W=10,
every value of Z fails. So we backtrack to W. W=10 W=99
But trying different values of W is useless,
X and Y are sources of failure!
Z=5
Z=3 Z=4
We should backtrack to Y!

● More intelligent: Simple Backiumping backtracks to the last variable among the set
of variables that caused the failure, called the conflict set. Conflict set of variable
V is the set of previously assigned variables that share a constraint with V. Can be
shown that FC is stronger than simple backjumping.

● Even a more efficient approach: Confilct-Directed-Backjumping: a more complex


notion of conflict set is used: When we backjump to Y from Z, we update the
conflict set of Y: conf(Y)=conf(Y) U Conf(Z)-{Z}

Hojjat Ghaderi, University of Toronto 37

You might also like