2 Contexte
Un CSP (X,D(X), C) se compose d’un ensemble de
nvariables X={x1,. . . ,xn}, d’un ensemble de do-
maines D(X) = {D(x1), . . . ,D(xn)}o`u D(x) est
l’ensemble des valeurs possibles pour la variable x,
et d’un ensemble de contraintes C={c1,. . . ,ce},
o`u Vars(ci)⊆X(1 ≤i≤e). Nous avons pour
convention que d=max1≤i≤n(#D(xi)) et D(X)xi=a
est l’ensemble des tuples vdans D(X) o`u vi=a.
Etant donn´e Y={x1,. . . ,xk} ⊆ X, l’ensemble des
tuples dans D(x1)× · · · × D(xk) est not´e D(X)[Y]
ou simplement D(Y). Un support dans une contrainte
cpour une paire variable-valeur (x,a) est un tuple
v∈D(Vars(c)) tel que c(v) et v[x] = a. Les en-
sembles suivants (inconsistants et consistants) sont
utiles pour sp´ecifier la domaine consistance et les al-
gorithmes de propagation. Soit cune contrainte d’un
CSP (X,D(X), C) avec y∈Vars(c) et B(X) un do-
maine quelconque.
Inc(c,B(X)) = {(x,a)|x∈Vars(c)∧a∈D(x)∧
∀v∈B(Vars(c))x=a:¬c(v)}
Cons(c,y,b) = {(x,a)|x∈Vars(c)∧a∈D(x)∧
∃v:v[x] = a∧v[y] = b∧c(v)}
Inc(c) = Inc(c,D(X))
Une contrainte cdans un CSP (X,D(X), C) est
domaine consistante ssi Inc(c) = ∅. Un CSP
(X,D(X), C) est domaine consistant ssi toutes ses
contraintes sont domaine consistantes.
Contraintes Table. ´
Etant donn´e un ensemble de
tuples Td’arit´e r, une contrainte table csur T
est respect´ee si (x1,. . . ,xr)∈T. La taille td’une
contrainte table cest le nombre de lignes de sa table,
not´e c.length. Nous supposons un ordre implicite des
tuples : σc,id´esigne le ieme ´el´ement de la table de c
et σc,i[x] est la valeur de σc,ipour la variable x. Nous
introduisons une valeur maximale >(resp. valeur mi-
nimale ⊥) sup´erieure (resp. inf´erieure) `a toute autre
valeur. Nous introduisons ´egalement un tuple univer-
sel σc,>, avec σc,>[x] = ∗pour tout x∈Xet pos-
tulons par abus de notation que ∀a∈D(x), ∗=a.
Cela implique que, pour toute table T,σc,>∈T. Pour
une contrainte table, nous disons qu’un tuple σest
autoris´ee si il appartient `a la table. Un tuple σest
valide si toutes ses valeurs appartiennent au domaine
des variables correspondantes. Pour atteindre la do-
maine consistance, il faut au moins v´erifier la validit´e
de chaque tuple de la table et, dans le pire des cas,
supprimer toutes les valeurs des domaines. Un algo-
rithme de domaine consistance a donc une complexit´e
temporelle en Ω(r·t+r·d) par contrainte table dans
le pire des cas. Un algorithme de type AC5 avec une
complexit´e en O(r·t+r·d) par contrainte table est
donc optimal. Comme toujours pour ces algorithmes,
si un algorithme de domaine consistance a une com-
plexit´e temporelle en O(f), alors la complexit´e tempo-
relle globale des ex´ecutions de cet algorithme le long
de tout chemin dans l’arbre de recherche est ´egalement
en O(f).
Travaux Apparent´es. Beaucoup d’efforts de re-
cherche ont ´et´e consacr´es aux contraintes table. Les
propagateurs existants peuvent ˆetre class´es en 3 cat´e-
gories : bas´es sur les indexes, bas´es sur la compression,
et bas´es sur une table dynamique. Les approches ba-
s´ees sur les indices utilisent une indexation de la table
pour acc´el´erer son parcours. Des exemples de tels pro-
pagateurs sont GAC3-allowed, et autres variantes ba-
s´ees sur les contraintes (GAC3rm-allowed, GAC2001-
allowed) [10, 1, 12, 6]. Pour chaque litt´eral (x,a), la
structure de donn´ees d’index a un tableau des indices
de tuples o`u xprend la valeur a. La complexit´e spatiale
de la structure de donn´ees est O(r·t). La complexit´e
temporelle de GAC3-allowed est en O(r3·d·t+r·d2) par
contrainte table. GAC2001-allowed a une complexit´e
temporelle de O(r3·d·t+r2·t) par contrainte table.
L’indexation peut ´egalement ˆetre utilis´ee dans les pro-
pagateurs bas´es sur les valeurs. Dans [14], les auteurs
proposent un propagateur bas´e sur les valeurs pour
contraintes table impl´ementant GAC6. Il utilise une
structure indexant, pour chaque paire variable-valeur
(x,a), et chaque tuple, le tuple suivant dans la table
avec acomme valeur pour x. La complexit´e spatiale de
cette structure de donn´ees est en O(r·d·t). Cette com-
plexit´e spatiale peut ˆetre r´eduite en utilisant une struc-
ture de donn´ees appel´ee hologramme [13]. Un autre
type d’index, propos´e dans [7], indexe, pour chaque
tuple et variable, le prochain tuple de la table ayant
une valeur diff´erente pour la variable. Les propaga-
teurs bas´es sur la compression comprimment la table
sous une forme qui permet de la traverser rapidement.
L’une de ces formes comprim´ees utilise un trie pour
chaque variable [7]. Un autre exemple de propagateurs
utilisant la compression [3, 2] utilise un Diagrame de
D´ecision Multi-Valu´e (MDD) pour repr´esenter la table
de mani`ere plus efficace. Au cours de la propagation,
les tries ou les MDD sont parcourus en utilisant les
domaines courants pour effectuer le pruning. Ces algo-
rithmes sont bas´es sur les contraintes et ont une com-
plexit´e tmporelle de O(r2·d·t) par contrainte table.
Compression et parcours rapide peuvent aussi ˆetre ob-
tenus en utilisant des tuples compress´es, repr´esentant
chacun un ensemble de tuples [8, 17]. Les propagateurs
bas´es sur des tables dynamiques maintiennent la table
de la contrainte en en supprimant les tuples invalides.