240 likes | 418 Views
Handbook of Constraint Programming 10.5.1, 10.5.2. Presented by: Shant Karakashian Symmetries in CP, Sprint 2010. Outline. Symmetry Breaking During Search (SBDS) Example: 8-Queens Adding Constraints Correctness Implementations Problems Symmetry Breaking via Dominance Detection (SBDD)
E N D
Handbook of Constraint Programming 10.5.1, 10.5.2 Presented by: Shant Karakashian Symmetries in CP, Sprint 2010
Outline • Symmetry Breaking During Search (SBDS) • Example: 8-Queens • Adding Constraints • Correctness • Implementations • Problems • Symmetry Breaking via Dominance Detection (SBDD) • Main Idea • Example: Add Different • Technique: No-goods & Dominance • Implementation of Dominance Checks • Propagation • Scheduling Checks • Comparing SBDS & SBDD
Symmetry Breaking During Search • Symmetry-excluding search trees introduced by [Backofen and Will '99] • Gent and Smith '00 described in more detail the implementation of the technique using the name “Symmetry Breaking During Search” (SBDS) • Basic idea: add constraints to a problem so that after backtracking from a search decision no symmetric equivalent of that decision is ever allowed • Dynamic technique: cannot add the constraints until search decision is made
SBDS Example: 8-Queens • 8 Queens positioned on 8x8 board • No two queens on the same row, column, or diagonal • Each queen (Q[i], i=1,..8) belongs to a row • Each queen can be on a column j=1,..,8 (Q[i]=j) • Symmetries of the problem: • r90, r180, r270, x, y, d1, d2
Adding Constraints at the 1st Level • Q[1]=2: no constraints added • After backtracking from Q[1]=2: • Assert Q[1]≠2 • Never try any state containing a symmetric equivalent to Q[1]=2 • Add constraints (Q[1]≠2)g Q[1]=2 Q[1]≠2 (var≠ val)g (Q[1] ≠2)r90 ≡ Q[2] ≠8 (Q[1] ≠2)r180 ≡ Q[8] ≠7 (Q[1] ≠2)r270 ≡ Q[7] ≠1 (Q[1] ≠2)x ≡ Q[1] ≠7 (Q[1] ≠2)y ≡ Q[8] ≠2 (Q[1] ≠2)d1 ≡ Q[2] ≠1 (Q[1] ≠2)d2 ≡ Q[7] ≠8
Adding Constraints at the 2nd Level • Q[2]=4: no constraints added • Q[2] ≠4: add constraint if the corresponding symmetry is not broken • For symmetry r90, add (Q[2]=4)r90 • only if r90 is not already broken • i.e. if (Q[2]=8) ≡ (Q[1]=2)r90 • Add constraints of the form: • (A → var≠val) → (A → var≠val)g • e.g. (Q[1]=2 → Q[2]≠4) → (Q[1]=2 → Q[2]≠4)r90 • (Q[1]=2 → Q[2]≠4)r90 ≡ (Q[2]=8 → Q[4]≠7) Q[1]=2 Q[1]≠2 Q[2]=4 Q[2]≠4
Constraints skipped at the 2nd Level • Some symmetries are already broken: • e.g. (Q[1]=2 → Q[2]≠4)x → (Q[1]=2 → Q[2]≠4)x • (Q[1]=2 → Q[2]≠4)x ≡ (Q[1]=7 → Q[2]≠5) • No solution containing Q[1]=2 can have the symmetries: x, y, d1 or d2 • Problem constraints break these symmetries Q[1]=2 Q[1]≠2 Q[2]=4 Q[2]≠4
Constraints Added to the Example (var≠val)g (Q[1]≠2)r90 ≡ Q[2]≠8 (Q[1]≠2)r180 ≡ Q[8]≠7 (Q[1]≠2)r270 ≡ Q[7]≠1 (Q[1]≠2)x ≡ Q[1]≠7 (Q[1]≠2)y ≡ Q[8]≠2 (Q[1]≠2)d1 ≡ Q[2]≠1 (Q[1]≠2)d2 ≡ Q[7]≠8 Q[1]=2 Q[1]≠2 Q[2]=4 Q[2]≠4 (A → var≠val)→ (A→ var≠val)g (Q[1]=2 → Q[2]≠4) → (Q[1]=2 → Q[2]≠4)r90 ≡ (Q[2]=8 → Q[4]≠7) (Q[1]=2 → Q[2]≠4) → (Q[1]=2 → Q[2]≠4)r180 ≡ (Q[8]=7 → Q[7]≠5) (Q[1]=2 → Q[2]≠4) → (Q[1]=2 → Q[2]≠4)r270 ≡ (Q[7]=1 → Q[5]≠2)
Example Contradicting the Notation in Figure 10.10 (page 352) Q[1]=1 Q[1]≠1 Q[2]=5 Q[2]≠5 Consider 5-queens problem. <q1,q2,q3,q4,q5> = <1,3,5,2,4> is a solution. Applying the notation usein in Figure 10.10 for the assignment Q[1]=1 we get: (Q[1]=1 → (Q[2]≠5)r90 ≡ (Q[5]≠4) Notice that this constraint eliminates the solution <1,3,5,2,4>, before any solution symmetric to it is encountered. This constraint must be specified as follows according to the expression (10.2): (Q[1]=1 → Q[2]≠5) → (Q[1]=1 → Q[2]≠5)r90 ≡ (Q[1]=5 → Q[5]≠4)
Constraints Added by SBDS • When constraints are added at the point of backtracking from a choice (var ≠ val): (A → var≠val) → (A → var≠val)g • A is true and (var ≠ val) is true • Can simplify the constraint to: Ag → (var≠val)g • Ag ensures that only unbroken symmetries are considered • Practical implementations do not add all the constraints
Correctness of SBDS • Backofen and Will '99 proved that this method: • Explores full non-symmetric search space • No solutions can be completely missed • No returned two solutions can be equivalent
Implementations of SBDS • Number of implementations of SBDS have been provided • ECLiPSe is publicly available implementation [Petrie ’05] • Demands the implementation of a function for each symmetry • User has to identify and implement each symmetry • Used successfully despite the difficulties
Problems with SBDS If the number of symmetries in a problem is large: • Large number of symmetry functions has to be specified • In the worst case, too many functions to be successfully compiled • Feasible to use the method in its entirety only with problems with small symmetry groups • Choose only a subset of the symmetry groups for problems with large symmetry groups
Symmetry Breaking via Dominance Detection • SBDD break symmetries during search • Checks every node being explored if it is symmetrically equivalent to one already explored • If equivalent, prunes the branch • Developed independently by Focacci & Milano ‘01 and Schamberger & Sellmann ‘01
SBDD Main Idea • Need to store the whole explored tree? • Explored tree is exponentially sized • Only need to store the roots of fully explored subtrees • Search backtracked from an equivalent node: • Either visited the equivalent node • Deduced no need to visit
SBDD Example: All Different • Variables: v1, v2, v3 • All different constraints • Domains: {1,2,3,4} • 24 solutions • Any variable permutation is a symmetric solution • Nodes 7 & 3 are symmetric solutions 0:root 1:v1=1 2:v2=2 5:v2≠2 3:v3=3 4:v3≠3 6:v2=3 7:v3=2 8:v3≠2
No-Good Nodes • Based on the notion of no-goods: prune if equivalent to a no-good • No-goods are the roots of completely traversed maximal subtrees by depth first search • Node v is a no-good w.r.t. n if there exists an ancestor na of ns.t. v is the left child of na and v is not an ancestor of n • All solutions search: • Fully explored trees may contain solutions • Avoid searching symmetric equivalent subtrees r n a v
Dominance • P(v): the path from the root of the search tree to a no-good node v • S(n): When search at node n, set of variables whose domains are reduced to a singleton • Node n is dominated if there exists a no-good vw.r.t. n and a symmetry gs.t. (P(v))g (\subseteq) S(n) • v dominates n
SBDD Technique • Never generate the children of dominated nodes • Example: • P(2)={v1=1, v2=2} • (P(2))g={v1=1, v3=2} • S(7)={v1=1, v3=2, v2=3} • Node 7 dominated by no-good 2 0:root 1:v1=1 2:v2=2 5:v2≠2 3:v3=3 4:v3≠3 6:v2=3 7:v3=2 8:v3≠2
Implementation of Dominance Checks • SBDD requires a problem specific function: f(v,n) → {true, false} • For each pair v& n, the search for g amounts to solving a sub graph isomorphism problem • NP-complete problems at each node but good results obtained using the technique
Implementation of Dominance Checks 2 Three broad techniques for implementation: • Implement a dominance checker specific for a particular problem • Construct a constraint encoding of the dominance problem (problem specific) • Use computational group theory
SBDD and Propagation • Failed dominance checks can result in propagation: • Dominance check reports the missing variable-value pair (v,x) to make the node dominated • Can remove x from the domain of v and propagate the result
Scheduling Dominance Checks Dominance check: • Does not need to be done at every node of the search tree • Sufficient if only the leaf nodes are checked • Tradeoff between cost of checks and savings in search time
Comparing SBDS & SBDD • Both do not require symmetries to be variable symmetries as in lex-leader method • The representative solution in each equivalent class of solutions is always the leftmost one in the traversed search tree for both • Both Respect variable and value ordering heuristics • SBDS places constraints to stop search before reaching symmetrically equivalent nodes • SBDD prunes search nodes that are symmetrically equivalent to visited nodes • Set of acceptable solutions is the same for both • SBDD can outperform SBDS in many problems since it does not have to post large number of constraints