Title: Constraint Propagation (Where a better exploitation of the constraints further reduces the need to make decisions) R
1Constraint Propagation(Where a better
exploitation of the constraints further reduces
the need to make decisions) RN Chap. 5
Chap. 24, p. 881-884
2Constraint Propagation
is the process of determining how the
constraints and the possible values of one
variable affect the possible values of other
variables It is an important form of
least-commitment reasoning
3Forward checking is only on simple form of
constraint propagation
When a pair (X?v) is added to assignment A
do For each variable Y not in A do For
every constraint C relating Y to variables in A
do Remove all values from Ys domain that
do not satisfy C
- n number of variables
- d size of initial domains
- s maximum number of constraints involving a
given variable (s ? n-1) - Forward checking takes O(nsd) time
4Forward Checking in Map Coloring
Empty set the current assignment (WA ?
R), (Q ? G), (V ? B) does not lead to a solution
WA NT Q NSW V SA T
RGB RGB RGB RGB RGB RGB RGB
R RGB RGB RGB RGB RGB RGB
R GB G RGB RGB GB RGB
R B G RB B B RGB
5Forward Checking in Map Coloring
Contradiction that forward checking did not
detect
WA NT Q NSW V SA T
RGB RGB RGB RGB RGB RGB RGB
R RGB RGB RGB RGB RGB RGB
R GB G RGB RGB GB RGB
R B G RB B B RGB
6Forward Checking in Map Coloring
Contradiction that forward checking did not
detect
Detecting this contradiction requires a more
powerful constraint propagation technique
WA NT Q NSW V SA T
RGB RGB RGB RGB RGB RGB RGB
R RGB RGB RGB RGB RGB RGB
R GB G RGB RGB GB RGB
R B G RB B B RGB
7Constraint Propagation for Binary Constraints
REMOVE-VALUES(X,Y) removes every value of Y that
is incompatible with the values of X
- REMOVE-VALUES(X,Y)
- removed ? false
- For every value v in the domain of Y do
- If there is no value u in the domain of X such
that the constraint on (X,Y) is satisfied then - Remove v from Ys domain
- removed ? true
- Return removed
8Constraint Propagation for Binary Constraints
- AC3
- Initialize queue Q with all variables (not yet
instantiated) - While Q ? ? do
- X ? Remove(Q)
- For every (not yet instantiated) variable Y
related to X by a (binary) constraint do - If REMOVE-VALUES(X,Y) then
- If Ys domain ? then exit
- Insert(Y,Q)
9Edge Labeling
We consider an image of a scene composed of
polyhedral objects such that each vertex is the
endpoint of exactly three edges
RN Chap. 24, pages 881-884
10Edge Labeling
An edge extractor has accurately extracted all
the visible edges in the image. The problem is to
label each edge as convex (), concave (-), or
occluding (?) such that the complete labeling is
physically possible
11Concave edges
Occluding edges
Convex edges
12-
-
13One Possible Edge Labeling
14Junction Types
L
Fork
T
Y
15Junction Label Sets
(Waltz, 1975 Mackworth, 1977)
16Edge Labeling as a CSP
- A variable is associated with each junction
- The domain of a variable is the label set
associated with the junction type - Constraints The values assigned to two adjacent
junctions must give the same label to the joining
edge
17AC3 Applied to Edge Labeling
Q (X1, X2, X3, ...)
X5
X3
X1
X2
X12
X4
X8
18AC3 Applied to Edge Labeling
Q (X1, ...)
X5
X1
19Q (X1, ...)
X5
X1
20Q (X5, ...)
X5
21Q (X5, ...)
X5
X3
22Q (X5, ...)
X5
X3
23Q (X3, ...)
X3
24Q (X3, ...)
X3
X8
25Q (X3, ...)
X3
X8
26Q (X8, ...)
X8
27Q (X8, ...)
X12
X8
28Complexity Analysis of AC3
- n number of variables
- d size of initial domains
- s maximum number of constraints involving a
given variable (s ? n-1) - Each variable is inserted in Q up to d times
- REMOVE-VALUES takes O(d2) time
- AC3 takes O(n?d?s?d2) O(n?s?d3) time
- Usually more expensive than forward checking
- AC3
- Initialize queue Q with all variables (not yet
instantiated) - While Q ? ? do
- X ? Remove(Q)
- For every (not yet instantiated) variable Y
related to X by a (binary) constraint do - If REMOVE-VALUES(X,Y) then
- If Ys domain ? then exit
- Insert(Y,Q)
29Is AC3 all that we need?
- No !!
- AC3 cant detect all contradictions among binary
constraints
30Is AC3 all that we need?
- No !!
- AC3 cant detect all contradictions among binary
constraints
- REMOVE-VALUES(X,Y)
- removed ? false
- For every value v in the domain of Y do
- If there is no value u in the domain of X such
that the constraint on (X,Y) is satisfied then - Remove v from Ys domain
- removed ? true
- Return removed
31Is AC3 all that we need?
- No !!
- AC3 cant detect all contradictions among binary
constraints
- REMOVE-VALUES(X,Y,Z)
- removed ? false
- For every value w in the domain of Z do
- If there is no pair (u,v) of values in the
domains of X and Y verifying the constraint on
(X,Y) such that the constraints on (X,Z) and
(Y,Z) are satisfied then - Remove w from Zs domain
- removed ? true
- Return removed
- REMOVE-VALUES(X,Y)
- removed ? false
- For every value v in the domain of Y do
- If there is no value u in the domain of X such
that the constraint on (X,Y) is satisfied then - Remove v from Ys domain
- removed ? true
- Return removed
32Is AC3 all that we need?
- No !!
- AC3 cant detect all contradictions among binary
constraints - Not all constraints are binary
33Tradeoff
- Generalizing the constraint propagation algorithm
increases its time complexity - Tradeoff between time spent in backtracking
search and time spent in constraint propagation - A good tradeoff when all or most constraints are
binary is often to combine backtracking with
forward checking and/or AC3 (with REMOVE-VALUES
for two variables)
34Modified Backtracking Algorithm with AC3
- CSP-BACKTRACKING(A, var-domains)
- If assignment A is complete then return A
- Run AC3 and update var-domains accordingly
- If a variable has an empty domain then return
failure - X ? select a variable not in A
- D ? select an ordering on the domain of X
- For each value v in D do
- Add (X?v) to A
- var-domains ? forward checking(var-domains, X, v,
A) - If no variable has an empty domain then(i)
result ? CSP-BACKTRACKING(A, var-domains)(ii) If
result ? failure then return result - Remove (X?v) from A
- Return failure
35A Complete Example4-Queens Problem
1) The modified backtracking algorithm starts by
calling AC3, which removes no value
364-Queens Problem
2) The backtracking algorithm then selects a
variable and a value for this variable. No
heuristic helps in this selection. X1 and the
value 1 are arbitrarily selected
374-Queens Problem
3) The algorithm performs forward checking, which
eliminates 2 values in each other variables
domain
384-Queens Problem
4) The algorithm calls AC3
394-Queens Problem
X2 3 is incompatible with any of the remaining
valuesof X3
4) The algorithm calls AC3, which eliminates 3
from the domain of X2
404-Queens Problem
4) The algorithm calls AC3, which eliminates 3
from the domain of X2, and 2 from the domain of
X3
414-Queens Problem
- The algorithm calls AC3, which eliminates 3 from
the domain of X2, and 2 from the domain of X3,
and 4 from the domain of X3
424-Queens Problem
- The domain of X3 is empty ? backtracking
434-Queens Problem
- The algorithm removes 1 from X1s domain and
assign 2 to X1
444-Queens Problem
- The algorithm performs forward checking
454-Queens Problem
- The algorithm calls AC3
464-Queens Problem
- The algorithm calls AC3, which reduces the
domains of X3 and X4 to a single value
47Exploiting the Structure of CSP
- If the constraint graph contains several
components, then solve one independent CSP per
component
48Exploiting the Structure of CSP
- If the constraint graph is a tree, then
- Order the variables from the root to the leaves
? (X1, X2, , Xn) - For j n, n-1, , 2 callREMOVE-VALUES(Xj, Xi)
where Xi is the parent of Xj - Assign any valid value to X1
- For j 2, , n do Assign any value to Xj
consistent with the value assigned to its
parent Xi
? (X, Y, Z, U, V, W)
49Exploiting the Structure of CSP
- Whenever a variable is assigned a value by the
backtracking algorithm, propagate this value and
remove the variable from the constraint graph
50Exploiting the Structure of CSP
- Whenever a variable is assigned a value by the
backtracking algorithm, propagate this value and
remove the variable from the constraint graph
If the graph becomes a tree, then proceed as
shown in previous slide