• Aucun résultat trouvé

Constraint Programming – Filtering : Part 2 –

N/A
N/A
Protected

Academic year: 2022

Partager "Constraint Programming – Filtering : Part 2 –"

Copied!
127
0
0

Texte intégral

(1)

Constraint Programming – Filtering : Part 2 –

Christophe Lecoutre [email protected]

CRIL-CNRS UMR 8188 Universite d’Artois

Lens, France

January 2021

(2)

Outline

1 Tables and MDDs

2 Specific Algorithms for Table Constraints

3 Compact Table

4 Local Consistencies

(3)

Outline

1 Tables and MDDs

2 Specific Algorithms for Table Constraints

3 Compact Table

4 Local Consistencies

(4)

Recall

CP is about:

1 modeling constrained combinatorial problems under the form of constraint networks (CSPs / COPs)

2 solving such problems by employing inference methods and search strategies

Classically, we use:

backtrack search

while maintaining AC (Arc Consistency) at each node

For enforcing AC, all constraints are sollicited in turn for filtering domains (principle called constraint propagation).

It is possible to:

use a generic propagation scheme, like AC3

or implement specialized filtering algorithms, one forallDifferent,

(5)

Table Constraints

Classically, for constraints defined in extension, we useordinarytables that contain ordinary tuples, as e.g., (a,b,a).

But, many recent developments concern:

starred (or short) tables, containing the symbol *, as e.g., (a,,b)

smarttables, a form of hybridization between intensional and extensional constraints

MDDs (Multi-Valued Decision Diagrams)

Remark.

These different forms are useful when modeling.

Remark.

We need filtering algorithms for both positive and negative forms (tables).

(6)

Table Constraints

Classically, for constraints defined in extension, we useordinarytables that contain ordinary tuples, as e.g., (a,b,a).

But, many recent developments concern:

starred (or short) tables, containing the symbol *, as e.g., (a,,b)

smarttables, a form of hybridization between intensional and extensional constraints

MDDs (Multi-Valued Decision Diagrams)

Remark.

These different forms are useful when modeling.

Remark.

We need filtering algorithms for both positive and negative forms (tables).

(7)

Table Constraints

Classically, for constraints defined in extension, we useordinarytables that contain ordinary tuples, as e.g., (a,b,a).

But, many recent developments concern:

starred (or short) tables, containing the symbol *, as e.g., (a,,b)

smarttables, a form of hybridization between intensional and extensional constraints

MDDs (Multi-Valued Decision Diagrams)

Remark.

These different forms are useful when modeling.

Remark.

We need filtering algorithms for both positive and negative forms (tables).

(8)

Starred Tables

Introduction of wildcard symbols (*) in tables (Nightingaleet al., 2013) The constraintx=yy =z can be defined by:

x y z

a a

b b

c c

a a

b b

c c

The global constraintelement(I,hx1,x2, . . . ,xmi,R) can be defined by:

I x1 x2 . . . xr R

1 a . . . a

1 b . . . b

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

2 a . . . a

(9)

Starred Tables

Introduction of wildcard symbols (*) in tables (Nightingaleet al., 2013) The constraintx=yy =z can be defined by:

x y z

a a

b b

c c

a a

b b

c c

The global constraintelement(I,hx1,x2, . . . ,xmi,R) can be defined by:

I x1 x2 . . . xr R

1 a . . . a

1 b . . . b

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

2 a . . . a

(10)

Starred Tables

Introduction of wildcard symbols (*) in tables (Nightingaleet al., 2013) The constraintx=yy =z can be defined by:

x y z

a a

b b

c c

a a

b b

c c

The global constraintelement(I,hx1,x2, . . . ,xmi,R) can be defined by:

I x1 x2 . . . xr R

1 a . . . a

1 b . . . b

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

2 a . . . a

(11)

Smart Tables

Introduction of elementary constraints in tables (Mairyet al., 2015) The constraintx=yy =z can be defined by:

x y z

=y

=z

The global constraintelement(I,hx1,x2, . . . ,xmi,R) can be defined by:

I x1 x2 . . . xm R

1 . . . =x1

2 . . . =x2

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

m . . . =xm

(12)

Smart Tables

Introduction of elementary constraints in tables (Mairyet al., 2015) The constraintx=yy =z can be defined by:

x y z

=y

=z

The global constraintelement(I,hx1,x2, . . . ,xmi,R) can be defined by:

I x1 x2 . . . xm R

1 . . . =x1

2 . . . =x2

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

m . . . =xm

(13)

Smart Tables

Introduction of elementary constraints in tables (Mairyet al., 2015) The constraintx=yy =z can be defined by:

x y z

=y

=z

The global constraintelement(I,hx1,x2, . . . ,xmi,R) can be defined by:

I x1 x2 . . . xm R

1 . . . =x1

2 . . . =x2

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

m . . . =xm

(14)

Tables vs MDDs

Multi-valued Decision Diagrams allow us to share prefixes and suffixes.

hx,y,zi ∈T T a a a a a b a b b b a a b a b b b c b c a c a a

t

1 2 3 4 level

a a

c b

b c

bc

b a c a

b a

b a

y z x

(15)

Bin Packing

We are given:

a pool of similar bins (with a specified capacity)

a set of items, each of them with a specified weight The problem is:

to put all items in the available bins

while minimizing the number of necessary bins

(16)

Data for BinPacking

Data are stored in a JSON file:

{

" n B i n s ":40 ,

" b i n C a p a c i t y ":100 ,

" i t e m W e i g h t s ":[30 ,31 ,31 ,32 ,34 ,35 ,35 ,40 ,40 ,40 ,41 ,41 ,...]

}

ThePyCSP3 model given in the next slide requires two auxiliary functions (not shown here):

max items per bin()

occ of weights()

Remark.

The operator + defined on dictionaries is aPyCSP3extension.

(17)

Model for BinPacking

f r o m p y c s p 3 i m p o r t *

nBins , c a p a c i t y , w e i g h t s = d a t a n I t e m s = len ( w e i g h t s )

m a x P e r B i n = m a x _ i t e m s _ p e r _ b i n ()

# x [ i ][ j ] is the w e i g h t of the jth o b j e c t put in the ith bin . x = V a r A r r a y (s i z e=[ nBins , m a x P e r B i n ] , dom={0 , * w e i g h t s }) s a t i s f y(

# not e x c e e d i n g the c a p a c i t y of e a c h bin [ Sum ( x [ i ]) <= c a p a c i t y for i in r a n g e ( n B i n s )] ,

# i t e m s are s t o r e d d e c r e a s i n g l y a c c o r d i n g to t h e i r w e i g h t s [ D e c r e a s i n g ( x [ i ]) for i in r a n g e ( n B i n s )] ,

# e n s u r i n g t h a t e a c h i t e m is s t o r e d in a bin

C a r d i n a l i t y ( x , o c c u r r e n c e s= { 0 : n B i n s * m a x P e r B i n - n I t e m s } + { wgt : occ for ( wgt , occ ) in o c c _ o f _ w e i g h t s ( ) } ) )

m a x i m i z e(

# m a x i m i z i n g the n u m b e r of u n u s e d b i n s Sum ( x [ i ] [ 0 ] == 0 for i in r a n g e ( n B i n s ))

(18)

Using Tables or MDDs

Can a pair of constraints defined on similar scopes (from a giveni):

Sum ( x [ i ]) <= c a p a c i t y D e c r e a s i n g ( x [ i ])

be translated into :

a table constraint

or an MDD constraint

?

Answer: Yes

Example.

InstanceBinPacking-sw100-00

18 tables with 2,747,755 tuples

18 MDDs with 1,554 nodes

(19)

Using Tables or MDDs

Can a pair of constraints defined on similar scopes (from a giveni):

Sum ( x [ i ]) <= c a p a c i t y D e c r e a s i n g ( x [ i ])

be translated into :

a table constraint

or an MDD constraint

?

Answer: Yes

Example.

InstanceBinPacking-sw100-00

18 tables with 2,747,755 tuples

18 MDDs with 1,554 nodes

(20)

Using Tables or MDDs

Can a pair of constraints defined on similar scopes (from a giveni):

Sum ( x [ i ]) <= c a p a c i t y D e c r e a s i n g ( x [ i ])

be translated into :

a table constraint

or an MDD constraint

?

Answer: Yes

Example.

InstanceBinPacking-sw100-00

18 tables with 2,747,755 tuples

18 MDDs with 1,554 nodes

(21)

Outline

1 Tables and MDDs

2 Specific Algorithms for Table Constraints

3 Compact Table

4 Local Consistencies

(22)

Recall: Table Constraints

Often, a constraintextensionis called a table constraint, especially when it is non-binary.

A table constraint is then simply a constraint defined in extension. And is is said to be:

positive if allowed tuples are given

negativeif forbidden tuples are given

Remark.

We turn to specific algorithms for efficiency reasons.

(23)

Recall: Table Constraints

Often, a constraintextensionis called a table constraint, especially when it is non-binary.

A table constraint is then simply a constraint defined in extension. And is is said to be:

positive if allowed tuples are given

negativeif forbidden tuples are given

Remark.

We turn to specific algorithms for efficiency reasons.

(24)

Recall: Table Constraints

Often, a constraintextensionis called a table constraint, especially when it is non-binary.

A table constraint is then simply a constraint defined in extension. And is is said to be:

positive if allowed tuples are given

negativeif forbidden tuples are given

Remark.

We turn to specific algorithms for efficiency reasons.

(25)

Algorithms for Table Constraints

Many schemes/algorithms proposed in the literature:

AC-valid (Bessiere & R´egin, 1997)

AC-allowed (Bessiere & R´egin, 1997)

AC-valid+allowed (Lecoutre & Szymanek, 2006)

NextIn Indexing (Lhomme & R´egin, 2005)

NextDiff Indexing (Gentet al., 2007)

Tries (Gentet al., 2007)

Compressed Tables (Katsirelos & Walsh, 2007)

MDDs (Cheng & Yap, 2010)

STR1 (Ullmann, 2007)

STR2 (Lecoutre, 2008)

STR3 (Lecoutreet al., 2012)

AC5-TCOpt (Mairyet al., 2012)

AC4R and MDD4R (Perez & R´egin, 2014)

(26)

Classical Schemes

Basic Schemes:

AC-allowed: iterating over the list of allowed tuples

AC-valid: iterating over the list of valid tuples

AC-valid+allowed: visiting both lists

There existr-ary positive table constraints such that, for some current domains of variables,

applying AC-allowed isO(2r−1).

applying AC-valid is O(2r−1).

applying AC-valid+allowed is O(r2)

(27)

Classical Schemes

Basic Schemes:

AC-allowed: iterating over the list of allowed tuples

AC-valid: iterating over the list of valid tuples

AC-valid+allowed: visiting both lists

There existr-ary positive table constraints such that, for some current domains of variables,

applying AC-allowed isO(2r−1).

applying AC-valid is O(2r−1).

applying AC-valid+allowed is O(r2)

(28)

Simple Tabular Reduction (STR)

The previous schemes proceedgradually: a support is sought for each value in turn: (x,a), (x,b), (x,c),. . .

Other (more recent) schemes proceedglobally: AC is enforced by traversing (once) the structure of the constraint. For example :

STR

MDDc

Constraint filtering/propagation aims at pruning the search space. STR (Simple Tabular Reduction) prunes both:

the tables

and the domains

(29)

Simple Tabular Reduction (STR)

The previous schemes proceedgradually: a support is sought for each value in turn: (x,a), (x,b), (x,c),. . .

Other (more recent) schemes proceedglobally: AC is enforced by traversing (once) the structure of the constraint. For example :

STR

MDDc

Constraint filtering/propagation aims at pruning the search space. STR (Simple Tabular Reduction) prunes both:

the tables

and the domains

(30)

Simple Tabular Reduction

Simple Tabular Reduction (STR)

principle: dynamically maintaining tables (only keeping supports)

efficiency obtained by using a sparse set data structure Versions of STR:

STR(1) (Ullmann, 2007)

STR2 (Lecoutre, 2008)

STR3 (Lecoutreet al., 2012) Complexity:

1

t

x1x2x3 . . . xr

1

x1x2x3 . . . xr

t

(31)

Data Structures

For each constraintc, we just need a few structures:

table[c] the current table containing the current supports ofc. It can be advantageously implemented by a sparse set (shown later).

for each variable x,gacValues[x] is the set containing the values in the domain of x that are (generalized) arc-consistent onc.

(32)

Algorithm 1:STR(c: Constraint) foreachvariable x scp(c)do

gacValues[x]← ∅

foreachtupleτtable[c] do ifisValid(c, τ)then

foreachvariable x scp(c)do if τ[x]/ gacValues[x] then addτ[x] togacValues[x] else

removeTuple(c, τ) // domains are now updated foreachvariable x scp(c)do

dom(x)gacValues[x]

(33)

Illustration of STR

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b) (a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={} gacV alues[y] ={} gacV alues[z] ={}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

(34)

Illustration of STR

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b) (a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={} gacV alues[y] ={} gacV alues[z] ={}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

(35)

Illustration of STR

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b) (a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={}

gacV alues[y] ={}

gacV alues[z] ={}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

(36)

Illustration of STR

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b) (a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={} gacV alues[y] ={} gacV alues[z] ={}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

(37)

Illustration of STR

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b) (a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={} gacV alues[y] ={} gacV alues[z] ={}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

(38)

Illustration of STR

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b) (a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={} gacV alues[y] ={} gacV alues[z] ={}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

(39)

Illustration of STR

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b) (a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b) (a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={} gacV alues[y] ={} gacV alues[z] ={}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a} gacV alues[z] ={c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c} gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

(,,)

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

a

b

a

b

a

b

table[cxyz] x y z

(a,a,)

(b,a,a)

(b,b,)

(,a,b)

gacV alues[x] ={a, c}

(,,)

gacV alues[y] ={a, c} gacV alues[z] ={b, c}

(a,,b)

dom (x)

dom (y)

dom (z)

(a,b,a)

√√

Références

Documents relatifs

He presented formulas for A-stable one-step 4-dots block implicit method and mentioned that collocation approach allow to construct A- stable one-step block methods of higher order

The author does not know whether a total category need admit arbitrary cointersections of epimorphisms, or even of strong

• Design of a mapping framework in support of ordinary people: There is a need to make the ontology mapping process as unintrusive and as natural as possible, as it is

The purpose of this note is to give a generaltzation of this fact in a non-linear potential theory developed by s.. There is another proof for this result, based

The set 7 consists of the boundary of the unit square and of vertical lines, one for each dyadic rational point on the base interval ofour square.. These

Another example is Vinh’s work [32] who used a Szemerédi-Trotter type bound to obtain a different proof of Garaev’s sum-product estimate in finite fields (see Theorem 4 below)..

Moreover Λ is composed of eigenvalues λ associated with finite dimensional vector eigenspaces.. We assume that A is

[r]