Revisiting the cardinality Operator and Introducing the - - PowerPoint PPT Presentation

revisiting the cardinality operator and introducing the
SMART_READER_LITE
LIVE PREVIEW

Revisiting the cardinality Operator and Introducing the - - PowerPoint PPT Presentation

Revisiting the cardinality Operator and Introducing the cardinality-path Constraint Family Nicolas Beldiceanu and Mats Carlsson S I C S Lgerhyddsvgen 18 75237 Uppsala {nicolas,matsc}@sics.se ICLP 2001, Paphos, Cyprus Outline of


slide-1
SLIDE 1

ICLP 2001, Paphos, Cyprus

Revisiting the cardinality Operator and Introducing the cardinality-path Constraint Family

Nicolas Beldiceanu and Mats Carlsson

S I C S

Lägerhyddsvägen 18 75237 Uppsala {nicolas,matsc}@sics.se

slide-2
SLIDE 2

Outline of the Presentation

Filtering Algorithms for cardinality-path

  • Required Basic Services
  • Lower Bound of the Minimum Number of Constraints that Hold
  • Pruning According to the Bounds
  • Example of Pruning

Conclusion and Perspectives The cardinality Operator The cardinality-path Family

  • Situation of the cardinality-path Family
  • Instances of the cardinality-path Family
slide-3
SLIDE 3

Filtering Algorithms for cardinality-path

  • Required Basic Services
  • Lower Bound of the Minimum Number of Constraints that Hold
  • Pruning According to the Bounds
  • Example of Pruning

Conclusion and Perspectives The cardinality-path Family

  • Situation of the cardinality-path Family
  • Instances of the cardinality-path Family

The cardinality Operator

slide-4
SLIDE 4

The cardinality Operator

The cardinality operator, Van Hentenryck, P., Deville, Y. (ICLP 1991): : C = ∑ #CTRj(V1,.., Vm )

j=1 n

  • Definition
  • Pruning based on:

j

C ≤ 5 - 1

CTR1 CTR2 CTR3 CTR4 CTR5

counting entailment If C ≥ 1+3 then

CTR1 CTR2 CTR3 CTR4 CTR5 CTR2,CTR4,CTR5 hold

slide-5
SLIDE 5

The Pruning

Perfect if the constraints are independant, but weak if the constraints share some variables: C ≤ 5 - 1 - 1

CTR1 CTR2 CTR3 CTR4 CTR5 X<Y Y<Z Z<X

Generalize existing deduction rules

  • f the cardinality operator
slide-6
SLIDE 6

Estimate the maximum number of constraints which hold

Partition the constraints in sets of the following types: C ≤ 5 - 1

CTR1 CTR2 CTR3 CTR4 CTR5

... ... ... : the conjunction of constraints does not hold : the conjunction of constraints allway holds : the conjunction of constraints may hold

Number of conjunctions of constraints which do not hold

slide-7
SLIDE 7

Enforcing conjunctions of constraints

Enforcing constraints according to min(C):

CTR1 CTR2 CTR3 CTR4 CTR5

If C ≥ 5 - 1 then

CTR4,CTR5 hold

slide-8
SLIDE 8

Pruning Values

Pruning a variable according to min(C):

CTR3 CTR6 CTR7 CTR4 CTR5

If C > 7 - 1 - 1 - 1 then

then val ∉ dom(Var)

CTR4 ∧ CTR5 ⇒

val ∉ dom(Var)

CTR6 ∧ CTR7 ⇒

val ∉ dom(Var)

CTR1 CTR2 CTR1 ∧ CTR2 ⇒

val ∉ dom(Var)

slide-9
SLIDE 9

Filtering Algorithms for cardinality-path

  • Required Basic Services
  • Lower Bound of the Minimum Number of Constraints that Hold
  • Pruning According to the Bounds
  • Example of Pruning

Conclusion and Perspectives The cardinality-path Family

  • Situation of the cardinality-path Family
  • Instances of the cardinality-path Family

The cardinality Operator

slide-10
SLIDE 10

The cardinality-path Family

  • Definition
  • Pruning

: C = ∑ #CTR(Vi,..,Vi+k-1)

n-k+1 i=1

considers interaction between constraints (shared variables) : V1 V2 V3 V4 V5 V6 V7 V8

slide-11
SLIDE 11
  • Constraint parameters
  • Graph generator
  • Elementary constraint
  • Graph properties

+ + + A complete description of the global constraint is explicitly provided !

Situation of the cardinality-path Family Inside the Classification

slide-12
SLIDE 12

cyclic_change(NCHANGE, L, VARIABLES )

  • A R G U M E N T
  • R E S T R I C T I O N (S)
  • V E R T E X I N P U T
  • V E R T E X G E N E R A T O R
  • E D G E I N P U T
  • E D G E G E N E R A T O R
  • E D G E A R I T Y
  • E D G E C O N S T R A I N T
  • G R A P H P R O P E R T Y

cyclic_change(2,4,{var-3,var-0, var-2,var-3, var-1})

: NCHANGE : dvar L : int VARIABLES: collection(var-dvar) : NCHANGE ≥ 0 NCHANGE ≤ |VARIABLES| L > 0 required(VARIABLES.var) : VARIABLES : IDENTITY : VARIABLES : PATH : 2 : (VARIABLES.var[1]+1) mod L ≠ VARIABLES.var[2] : NEDGE = NCHANGE

slide-13
SLIDE 13

Graph Generation for cyclic_change(NCHANGE,L,VARIABLES )

  • V E R T E X I N P U T
  • V E R T E X G E N E R A T O R

: VARIABLES : IDENTITY

Collections of items:

VARIABLES

Vertices generator:

IDENTITY

V1 V2 V3 V4 V5

slide-14
SLIDE 14
  • E D G E I N P U T
  • E D G E G E N E R A T O R
  • E D G E A R I T Y

: VARIABLES : PATH : 2

Edge generator:

PATH

V1 V2 V3 V4 V5 V1 V2 V3 V4 V5

Graph Generation for cyclic_change(NCHANGE,L,VARIABLES )

slide-15
SLIDE 15
  • E D G E C O N S T R A I N T: (VARIABLES.var[1]+1) mod L ≠ VARIABLES.var[2]

Elementary Constraint for cyclic_change(NCHANGE,L,VARIABLES )

(V1+1) mod L ≠ V2

V2 V3 V4 V5 V1

(V2+1) mod L ≠ V3 (V3+1) mod L ≠ V4 (V4+1) mod L ≠ V5

slide-16
SLIDE 16
  • G R A P H P R O P E R T Y

: NEDGE = NCHANGE

Graph Property for cyclic_change(NCHANGE,L,VARIABLES)

(3+1) mod 4 ≠

2 3 1 3

(2+1) mod 4 ≠ 3

cyclic_change(2,4,{var-3,var-0, var-2,var-3, var-1})

(0+1) mod 4 ≠ 2 (3+1) mod 4 ≠ 1 (false) (false) (true) (true)

slide-17
SLIDE 17

”Signature” of the cardinality-path family

ctr ctr ctr ctr Constraint pattern

  • V E R T E X
  • E D G E
  • E D G E
  • C O N S T R A I N T
  • G R A P H

: IDENTITY : PATH : k > 1 : - : NEDGE = var G E N E R A T O R G E N E R A T O R A R I T Y P R O P E R T Y P R O P E R T Y

slide-18
SLIDE 18

Filtering Algorithms for cardinality-path

  • Required Basic Services
  • Lower Bound of the Minimum Number of Constraints that Hold
  • Pruning According to the Bounds
  • Example of Pruning

Conclusion and Perspectives The cardinality-path Family

  • Situation of the cardinality-path Family
  • Instances of the cardinality-path Family

The cardinality Operator

slide-19
SLIDE 19

smooth(C, T, {V1,..,Vn }) smooth(1,2,{1,3,4,5, 2}) change(C, {V1,..,Vn }, ≠) change(3,{4,4, 3, 4, 1}, ≠) C : 0..n−1 Vi ≠Vi +1 2 Arity Bounds for C and constraint CTR Member and example of solution cyclic_change(C, L, {V1,..,Vn }) cyclic_change(2,5,{2,3,4,0, 2,3, 1}) C : 0..n−1 (Vi +1)mod L≠Vi +1 2 C : 0..n−1 |Vi −Vi +1 | >T 2 number_of_rest(C, {V1,..,Vn }) number_of_rest(2,{2,0, 0,1,1,0,2,0, 0,1,2 }) C : 0..n−2 Vi =0 ∧Vi +1=0 ∧Vi +2 ≠0 3 relaxed_sliding_sum(a,b,low,up,k,{V1,..,Vn }) relaxed_sliding_sum(3,4,3,7,4,{2,4, 2, 0, 0,3,4}) C : a..b low ≤ ΣVi ≤ up k

j=i i+k − 1

slide-20
SLIDE 20

Filtering Algorithms for cardinality-path

  • Required Basic Services
  • Lower Bound of the Minimum Number of Constraints that Hold
  • Pruning According to the Bounds
  • Example of Pruning

Conclusion and Perspectives The cardinality-path Family

  • Situation of the cardinality-path Family
  • Instances of the cardinality-path Family

The cardinality Operator

slide-21
SLIDE 21

ASSUMPTION :

Required Services

For constraint CTR or its negation, failure detection should be independent from the order in which the constraints are posted

  • enforce_CTR(Vi ,..,Vi+k−1 )
  • enforce_NOT_CTR(Vi ,..,Vi+k−1 )
  • create_choice_point
  • backtrack

MAIN PRUNING ALGORITHM

slide-22
SLIDE 22

Organisation of the Algorithms cardinality_path( C, {V1 ,..,Vn }, CTR )

FILTERING ALGORITHMS find BOUNDS for C

PROPAGATE

from C to {V1 ,..,Vn }

slide-23
SLIDE 23

Filtering Algorithms for cardinality-path

  • Required Basic Services
  • Lower Bound of the Minimum Number of Constraints that Hold
  • Pruning According to the Bounds
  • Example of Pruning

Conclusion and Perspectives The cardinality-path Family

  • Situation of the cardinality-path Family
  • Instances of the cardinality-path Family

The cardinality Operator

slide-24
SLIDE 24

Lower Bound of the Number of Constraints that Hold

cyclic_change(C, 5, {V1,V2,V3,V4,V5,V6,V7,V8,V9})

V1: 0,3 V2: 2,3,4 V3: 0,4 V4: 0,1,2,3,4 V5: 0,1,2,3 V6: 0,2,4 V7: 0,1,2 V8: 0,1,2 V9: 0,4 V1: 0,3 V1: 3 V1: 3 V1: 3 V1: 3 contradiction V2: 4 V2: 4 V2: 4 V2: 4 V3: 0 V3: 0 V3: 0 V4: 1 V4: 1 V5: 2 (V1+1)mod 5=V2 (V2+1)mod 5=V3 (V3+1)mod 5=V4 (V4+1)mod 5=V5 (V5+1)mod 5=V6 V6: 0,2,4 V6: 0,4 V6: 0,4 contradiction V7: 0,1 V7: 0,1 V8: 1,2 (V6+1)mod 5=V7 (V7+1)mod 5=V8 (V8+1)mod 5=V9 V9: 0,4 CTR: (Vi+1) mod 5 ≠ Vi+1

min(C) ≥ 2

slide-25
SLIDE 25

Filtering Algorithms for cardinality-path

  • Required Basic Services
  • Lower Bound of the Minimum Number of Constraints that Hold
  • Pruning According to the Bounds
  • Example of Pruning

Conclusion and Perspectives The cardinality-path Family

  • Situation of the cardinality-path Family
  • Instances of the cardinality-path Family

The cardinality Operator

slide-26
SLIDE 26

Propagation from C to {V1 ,..,Vn }

Set min_break to 0. Set choice to 1. Create_choice_point. for i =1 to n -k +1 do Set before[i ] to min_break. if choice=0 then Set choice to 1. Create_choice_point. if enforce ¬CTR(Vi,..,Vi+k-1) fails then

  • Backtrack. Set choice to 0.

Set min_break to min_break +1. Set vbefore[i+k-1] to dom(Vi+k-1).

before[i ] (1≤i ≤n-k+1):

min.number of constraints that hold in

{CTR(V1,..,Vk),..,CTR(Vi-1,..,Vi+k-2} vbefore[i ] (k≤i ≤n):

state of dom(Vi) after stating constraint

CTR(Vi-k+1,..,Vi)

slide-27
SLIDE 27

Propagation from C to {V1 ,..,Vn }

Set min_break to 0. Set choice to 1. Create_choice_point. for i = n -k +1 to 1 (step -1) do Set after[i ] to min_break. if choice=0 then Set choice to 1. Create_choice_point. if enforce ¬CTR(Vi,..,Vi+k-1) fails then

  • Backtrack. Set choice to 0.

Set min_break to min_break +1. Set vafter[i ] to dom(Vi).

after[i ] (n-k+1≥i ≥1):

min.number of constraints that hold in

{CTR(Vi+1,..,Vi+k),..,CTR(Vn-k+1,..,Vn} vafter[i ] (n-k+1≥i ≥1):

state of dom(Vi) after stating constraint

CTR(Vi,..,Vi+k-1)

slide-28
SLIDE 28

First Rule

for i =1 to n -k +1 do if before[i ]+after[i ]+1>max(C) then enforce ¬CTR(Vi,..,Vi+k-1).

¬CTR(V1,..,Vk) ¬CTR(Vi-1,..,Vi+k-2)

¬CTR(Vi,..,Vi+k-1)

¬CTR(Vi+1,..,Vi+k) ¬CTR(Vn-k+1,..,Vn)

... ...

before[i ] after[i ]

slide-29
SLIDE 29

Second Rule

k ≤ i ≤ n -k +1: if before[i –k+2]+after[i -1]+2 > max(C) then Vi ⊆ vbefore[i ]∪vafter[i ].

If Vi ∉ vbefore[i ]∪vafter[i ] then at least before[i –k+2]+after[i -1]+2 constraints CTR hold We prove that :

slide-30
SLIDE 30

Second Rule

k ≤ i ≤ n -k +1: if before[i –k+2]+after[i -1]+2>max(C) then Vi ⊆vbefore[i ]∪vafter[i ].

¬CTR(V1,..,Vk) ¬CTR(Vi-k+1,..,Vi) ¬CTR(Vi,..,Vi+k-1) ¬CTR(Vn-k+1,..,Vn)

... ... ... ...

...

The k constraints which mention variable Vi

slide-31
SLIDE 31

¬CTR(V1,..,Vk) ¬CTR(Vi-k+1,..,Vi) ¬CTR(Vi,..,Vi+k-1) ¬CTR(Vn-k+1,..,Vn)

... ...

¬CTR(Vf-1,..,Vf+k-2)

¬CTR(Vf,..,Vf+k-1) ... ...

...

f: smallest value ≤ i-k+1 such that:

  • no failure on ¬CTR(Vf,..,Vf+k-1),.., ¬CTR(Vi-k+1,..,Vi)

during first iteration

  • f = 1 or

a failure occurs after stating ¬CTR(Vf-1,..,Vf+k-2)

Second Rule

slide-32
SLIDE 32

Second Rule

¬CTR(V1,..,Vk) ¬CTR(Vi-k+1,..,Vi) ¬CTR(Vi,..,Vi+k-1) ¬CTR(Vn-k+1,..,Vn)

... ...

¬CTR(Vf-1,..,Vf+k-2) ¬CTR(Vf,..,Vf+k-1)

... ... ¬CTR(Vl,..,Vl+k-1)

¬CTR(Vl+1,..,Vl+k)

...

l: largest value ≥ i such that:

  • no failure on ¬CTR(Vl,..,Vl+k-1),.., ¬CTR(Vi,..,Vi+k-1)

during first iteration

  • l = n-k+1 or

a failure occurs after stating ¬CTR(Vl+1,..,Vl+k)

slide-33
SLIDE 33

Second Rule

¬CTR(V1,..,Vk)

¬CTR(Vi-k+1,..,Vi) ¬CTR(Vi,..,Vi+k-1)

¬CTR(Vn-k+1,..,Vn)

... ...

¬CTR(Vf-1,..,Vf+k-2) ¬CTR(Vf,..,Vf+k-1)

... ...

¬CTR(Vl,..,Vl+k-1) ¬CTR(Vl+1,..,Vl+k)

...

If fail after posting ¬CTR(Vi-k+1,..,Vi) then: vbefore[i ]=dom(Vi) (since we backtrack and restore domain of Vi) So dom(Vi) − vbefore[i ]∪vafter[i ] is empty, and we prune nothing. If fail after posting ¬CTR(Vi,..,Vi+k-1) then: vafter[i ]=dom(Vi) (since we backtrack and restore domain of Vi) So dom(Vi) − vbefore[i ]∪vafter[i ] is empty, and we prune nothing.

slide-34
SLIDE 34

Second Rule

¬CTR(V1,..,Vk) ¬CTR(Vi-k+1,..,Vi) ¬CTR(Vi,..,Vi+k-1) ¬CTR(Vn-k+1,..,Vn)

... ...

¬CTR(Vf-1,..,Vf+k-2) ¬CTR(Vf,..,Vf+k-1)

... ...

¬CTR(Vl,..,Vl+k-1) ¬CTR(Vl+1,..,Vl+k)

...

Now let’s assume that:

  • no fail after posting ¬CTR(Vi-k+1,..,Vi) ,
  • Vi ∉ vbefore[i] ,
  • no fail after posting ¬CTR(Vi,..,Vi+k-1) ,
  • Vi ∉ vafter[i] .

And evaluate the minimum number

  • f constraints CTR that hold:

≥ before[f] = before[i-k+2] (from definition of f) ≥ 1 (since Vi ∉ vbefore[i] ) ≥ after[l] = after[i-1] (from definition of l) ≥ 1 (since Vi ∉ vafter[i] ) CONCLUSION: the minimum is

before[i-k+2]+after[i-1]+2

slide-35
SLIDE 35

Filtering Algorithms for cardinality-path

  • Required Basic Services
  • Lower Bound of the Minimum Number of Constraints that Hold
  • Pruning According to the Bounds
  • Example of Pruning

Conclusion and Perspectives The cardinality-path Family

  • Situation of the cardinality-path Family
  • Instances of the cardinality-path Family

The cardinality Operator

slide-36
SLIDE 36

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

(V1+1)mod 5 = V2

4 3 2

slide-37
SLIDE 37

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

(V2+1)mod 5 = V3

4 3 2 4

slide-38
SLIDE 38

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

(V3+1)mod 5 = V4

4 3 2 4 4 3 2 1

slide-39
SLIDE 39

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

(V4+1)mod 5 = V5

4 3 2 4 4 3 2 1 3 2 1

slide-40
SLIDE 40

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

(V5+1)mod 5 = V6

4 3 2 4 4 3 2 1 3 2 1

fails

4 2

slide-41
SLIDE 41

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

(V6+1)mod 5 = V7

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1

slide-42
SLIDE 42

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

(V7+1)mod 5 = V8

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1

slide-43
SLIDE 43

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

(V8+1)mod 5 = V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1

fails

1 4

slide-44
SLIDE 44

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1 1 4 2 1

(V8+1)mod 5 = V9

fails

slide-45
SLIDE 45

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1 1 4 2 1

(V7+1)mod 5 = V8

1 2 1

slide-46
SLIDE 46

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1 1 4 2 1

(V6+1)mod 5 = V7

1 2 1 4 2 1

slide-47
SLIDE 47

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1 1 4 2 1

(V5+1)mod 5 = V6

1 2 1 4 2 1 3 2 1 1

slide-48
SLIDE 48

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1 1 4

(V4+1)mod 5 = V5

1 1 3 2 1 4 2 2 1 2 1 1 1 4 3 2 1

slide-49
SLIDE 49

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1 1 4

(V3+1)mod 5 = V4

1 1 3 2 1 4 2 2 1 2 1 1 1 4 3 2 1

fails

1 4

slide-50
SLIDE 50

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1 1 4

(V2+1)mod 5 = V3

1 1 3 2 1 4 2 2 1 2 1 1 1 4 3 2 1 1 4 2 4 3 2

slide-51
SLIDE 51

Pruning According to the Maximum Number of Constraints that Hold

V1

3 4 3 2 4 4 3 2 1 3 2 1 4 2 2 1 2 1 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8] V2 V3 V4 V5 V6 V7 V8 V9

4 3 2 4 4 3 2 1 3 2 1 4 2 1 2 1 1 2 1 1 4

(V1+1)mod 5 = V2

1 1 3 2 1 4 2 2 1 2 1 1 1 4 3 2 1 1 4 2 4 3 2 2 3

slide-52
SLIDE 52

Pruning According to the Maximum Number of Constraints that Hold

Rule 1 IF before[i]+after[i]+1>max(C) THEN enforces not ctr(Vi,..Vi+k-1)

V1

3 4 3 2

vbefore before after vafter [2..9] [1..8] [1..8] [1..8]

V2

4 3 2 2 4 3 2

2

3

Let’s assume max(C)=2 Since before[1]+after[1]+1>max(C) enforces (V1+1)mod 5=V2:

  • V1=3
  • V2=4
slide-53
SLIDE 53

Pruning According to the Maximum Number of Constraints that Hold

Rule 2 IF before[i-k+2]+after[i-1]+2>max(C) THEN Vi in vbefore[i] ∪ vafter[i]

Let’s assume max(C)=3 Since before[2]+after[1]+2>max(C):

  • removes 2 from V2

V1

3 4 3 2 4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8]

V2 V3 4

3 2 4 1 4 2

4 3

2

2

3

slide-54
SLIDE 54

Pruning According to the Maximum Number of Constraints that Hold

Let’s assume max(C)=3 Since before[2]+after[1]+2>max(C):

  • removes 2 from V2

V1

3

2

4

vbefore before after vafter [2..9] [1..8] [1..8] [1..8]

V2 V3 4

3 2 4 1 4 2

4 3

2

2

3

Two more constraints will fail if V2=2

slide-55
SLIDE 55

Conclusion and Perspectives

What was done : What remains to do :

  • A generic propagation algorithm for another family of constraints
  • A method which is also useful for other global constraints patterns
  • Take into account the fact that we have the same constraint
  • Consider properties of that constraint