Handbook of Constraint Programming 10.5.1, 10.5.2

24
Handbook of Constraint Programming 10.5.1, 10.5.2 Presented by: Shant Karakashian Symmetries in CP, Sprint 2010 1

description

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) - PowerPoint PPT Presentation

Transcript of Handbook of Constraint Programming 10.5.1, 10.5.2

Page 1: Handbook of Constraint Programming 10.5.1, 10.5.2

1

Handbook of Constraint Programming 10.5.1, 10.5.2

Presented by: Shant KarakashianSymmetries in CP, Sprint 2010

Page 2: Handbook of Constraint Programming 10.5.1, 10.5.2

2

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

Page 3: Handbook of Constraint Programming 10.5.1, 10.5.2

3

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

Page 4: Handbook of Constraint Programming 10.5.1, 10.5.2

4

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

Page 5: Handbook of Constraint Programming 10.5.1, 10.5.2

5

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

Page 6: Handbook of Constraint Programming 10.5.1, 10.5.2

6

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]=2Q[1]≠2

Q[2]=4 Q[2]≠4

Page 7: Handbook of Constraint Programming 10.5.1, 10.5.2

7

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]=2Q[1]≠2

Q[2]=4 Q[2]≠4

Page 8: Handbook of Constraint Programming 10.5.1, 10.5.2

8

Constraints Added to the Example

Q[1]=2 Q[1]≠2

Q[2]=4 Q[2]≠4

(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

(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)

Page 9: Handbook of Constraint Programming 10.5.1, 10.5.2

9

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)

Page 10: Handbook of Constraint Programming 10.5.1, 10.5.2

10

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

Page 11: Handbook of Constraint Programming 10.5.1, 10.5.2

11

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

Page 12: Handbook of Constraint Programming 10.5.1, 10.5.2

12

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

Page 13: Handbook of Constraint Programming 10.5.1, 10.5.2

13

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

Page 14: Handbook of Constraint Programming 10.5.1, 10.5.2

14

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

Page 15: Handbook of Constraint Programming 10.5.1, 10.5.2

15

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

Page 16: Handbook of Constraint Programming 10.5.1, 10.5.2

16

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

3:v3=3 4:v3≠3

8:v3≠2

6:v2=3

7:v3=2

5:v2≠2

Page 17: Handbook of Constraint Programming 10.5.1, 10.5.2

17

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 n s.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

n

r

a

v

Page 18: Handbook of Constraint Programming 10.5.1, 10.5.2

18

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 v w.r.t. n and a symmetry g s.t. (P(v))g (\subseteq) S(n)

• v dominates n

Page 19: Handbook of Constraint Programming 10.5.1, 10.5.2

19

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

3:v3=3 4:v3≠3

8:v3≠2

6:v2=3

7:v3=2

5:v2≠2

Page 20: Handbook of Constraint Programming 10.5.1, 10.5.2

20

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

Page 21: Handbook of Constraint Programming 10.5.1, 10.5.2

21

Implementation of Dominance Checks 2

Three broad techniques for implementation:1. Implement a dominance checker specific for

a particular problem2. Construct a constraint encoding of the

dominance problem (problem specific)3. Use computational group theory

Page 22: Handbook of Constraint Programming 10.5.1, 10.5.2

22

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

Page 23: Handbook of Constraint Programming 10.5.1, 10.5.2

23

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

Page 24: Handbook of Constraint Programming 10.5.1, 10.5.2

24

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