Soccsp
Soccsp
Contraintes
(CSP)
Définitions & exemples
Un CSP P = (X, D, C) est défini par :
des variables : X = { X1, X2 … Xn }
des domaines : D = { D1, D2 … Dn } , Xi prend ses valeurs dans
l ’ensemble fini discret Di
des contraintes : C = { C1, C2 … Cm },
Une solution est une instanciation des variables satisfaisant toutes les
contraintes.
Définitions & exemples
Soit P= (X, D,C) avec X = { X1, X2, X3, X4} et C = { C1, C2, C3}
(X,C) : graphe (ou hypergraphe) de contraintes
CSP binaire : contraintes d ’arité 2 (graphes)
CSP n-aires : contraintes d ’arité quelconque (hypergraphes)
X2 X3
C1 C2
X1 X4
C3
Définitions & exemples
Soit P= (X, D,C)
X = { X1, X2, X3, X4} et
D = { D1, D2, D3, D4}, D1= D2= D3= D4= {a,b}
C = { C1, C2, C3},
C1= < S1 , R1> C2= < S2 , R2> C3= < S3 , R3>
R1 R2 R3
X1 X2 X3 X2 X3 X4 X1 X4
b a a a b a a a
a a b b a a b a
a b a b a b b b
Définitions & exemples
Représentations des contraintes
contraintes binaires
X Y
Ck
En intension : Y = X 2 , X Y
En extension (par table) : Rk Rk
DX DY y1 y2 y3
x1 y1
x1 1 0 0
x2 y1
x3 y2 x2 1 0 0
x3 0 1 0
Dx Dy
Par graphes : x1 y1
x2 y2
x3 y3
D(X1) =
Exemple X1
{FRITES,
COUSCOUS,
RIZ, SALADE}
• Problème des mots croisés
X1 L12 = L21 L15 = L35
F
X2 R C L
I
T X2 X3
X3 M O U L E S
D(X2) = D(X3) =
S
{MOULES,
{RCL, OM, PSG, LOSC, CRIL} SARDINES,
CREVETTES,
VIANDE,
MAYONNAISE,
VINAIGRE}
• Contraintes: Il y a ( 4 ) = 6 contraintes: i j , Xi Xj j i
2
R12 {(1,3)(1,4)(2,4)(3,1)(4,1)(4,2)} • Graphe de contraintes :
R13 {(1,2)(1,4)(2,1)(2,3)(3,2)(3,4)(4,1)(4,3)} X1 X3
R14 {(1,2)(1,3)(2,1)(2,3)(2,4)(3,1)(3,2)(3,4)(4,2)(4,3)}
R23 {(1,3)(1,4)(2,4)(3,1)(4,1)(4,2)} X2 X4
R24 {(1,2)(1,4)(2,1)(2,3)(3,2)(3,4)(4,1)(4,3)}
R34 {(1,3)(1,4)(2,4)(3,1)(4,1)(4,2)}
Exemple 2: Coloriage de
graphes
Colorier une carte géographique tq. Deux régions (pays)
adjacents soient de différentes couleurs
(R,V,B)
X1
X2 X3
(R,V,B) (R,V,B)
Exemple 3 :Conception
Les contraintes sur les parties du véhicule
par-chocs blanc (white)
toit ouvrant rouge (red)
enjoliveurs rose (pink) ou rouge
capot et portières rose, rouge ou noir (black)
carrosserie blanc , rose, rouge ou noir
Les contraintes du concepteurs…
pare-chocs, toit ouvrant et enjoliveurs plus clairs que la
carrosserie
portières, carrosseries et capot de la même couleur
Trouver une configuration possible du véhicule
satisfaisant les contraintes.
Exemple 3 :Conception
portières
pare-chocs
(w,p) (p,p)
w (w,r) p, r, b
(r,r)
(w,b) (b,b)
toit ouvrant (p,p)
(r,b) (r,r)
r w, p, r, b (b,b)
enjoliveurs carrosserie (p,p)
(p,r)
(r,r)
p, r (p,b)
(b,b)
p, r, b
(r,b)
capot
plus clair que
de la même couleur
Exemple 3 : Vision [Walz:75]
Problème :
reconnaître des objets 3D
en interprétant les lignes sur un dessin 2D
D
Exemple 3 : Vision [Walz:75]
Sur le schéma ci-dessous, il existe quatre types de
jonctions (points de rencontre entre les arêtes) :
Exemple 3 : Vision [Walz:75]
+
Une arête extérieure, l ’objet est sur les deux cotés :
arêtes intérieures convexes
-
Une arête intérieure : arêtes intérieures concaves
Exemple 3 : Vision [Walz:75]
On distingue les cas suivants : (seules certaines combinaisons sont
possibles pour des arêtes adjacentes à une jonction)
+ - -
L +
Y + - -
+ - -
+ - -
T
+ -
- - + +
Flèche + -
+
Exemple 3 : Vision [Walz:75]
Formalisation :
• variables : les arêtes
• domaines : les labels
• jonctions : les contraintes
+ +
+ -
-
+ + +
+ + +
- +
+ - + +
- -
+
X X<Y Y
{1,2} {3,4}
Transformations CSP-naires vers
CSP binaires
1) Sans les variables originales :
Introduire une nouvelle contrainte :
ième arguments de(U) = jème argument de (V)
X+Y=Z, X<Y
Dx = {1,2};
U= {(X,Y,Z) & X+Y=Z} U {1,4,5), (2,3,5), (2,4,6)}
Dy={3,4},
Dz={5,6} Arg1(U)= arg1(V) Arg2(U)= arg2(V)
V= {(X,Y) & X<Y} V {1,3), (1,4), (2,3), (2,4)}
Méthode standard de
résolution : le backtrack
A chaque étape, l ’instanciation partielle courante est étendue en
instanciant un nouvelle variable par une valeur compatible avec
l ’instanciation courante :
X1 X2 … Xk-1 Xk
d1 d2 … dk-1 dk Dk
Si aucune valeur dk Dk n ’est compatible, alors il y a un retour en
arrière (chronologique) sur la variable précédente Xk-1 pour essayer
une autre valeur d’k-1 Dk-1
X1 X2 … Xk-1
d1 d2 … d’k-1 Dk-1
Approche fortement combinatoire : O(dn)
Filtrages et prétraitements
Consistance (ou cohérence)
propriété liée à la compatibilité entre valeurs de domaines et
contraintes
Filtrage
élimination d ’éléments dont on est assuré qu ’ils ne peuvent figurer
dans une solution (valeurs ou n-uplets de relations)
P = (X,D,C) P ’= (X, D’, C’)
Propriété d ’un filtrage
simplification du problème par réduction de l ’espace de recherche
dans certains cas détection de l ’inconsistance
Plusieurs niveaux de consistances
consistance locales ou partielles jusqu ’à consistance globale
coût du filtrage plus ou moins élevé
(obtention consistance globale résolution du problème)
La consistance d ’arc (AC)
Définition
Di D est AC ssi, a Di , x j X t.q. Cij C ,
b D j t.q. Rij (a, b)
Un CSP est AC ssi Di D, Di et Di est AC
x1
1 2 C13
1 2
x2 1 C23 x3
2
Arc Consistant
Inconsistant
La consistance d ’arc (AC) : AC1
Filtrage par consistance d ’arc : suppression des valeurs
qui ne vérifient pas la propriété (AC)
L’algorithme AC1 (Macworth
1977)
Algorithme AC-1
répéter
pour chaque contrainte Ck faire
Réviser(Ck)
jusqu’à plus de changement
Réviser(Ck) { Ck = (Xi,Xj)}
pour tout di Di faire
si dj Dj telle que (di,dj) Rk
alors supprimer di de Di
pour tout dj Dj faire
si di Di telle que (di,dj) Rk
alors supprimer dj de Dj
L’algorithme AC1 (Macworth
1977)
procédure Réviser((i,j))
changement faux
pour di Di faire
si dj Dj telle que (di,dj) Rk
alors supprimer di de Di
changement vrai
fin si
fin pour
retourner changement
fin
procédure AC-1(G)
répéter
changement faux
pour chaque arc (i,j) G faire
changement réviser((i,j)) ou changement
fin pour
jusqu ’à non (changement)
fin AC-1
L’algorithme AC1
Quels sont les défaut de AC-1?
Si un domaine est réduit alors tout les arcs sont testés
(révisés) même si le domaine touché n ’a aucune influence sur
la plus part des arcs
Quels sont les arcs à reconsidérer ?
Les arcs affectés par le filtrage du domaine
i.e., les arcs reliés à la variable touchée (arcs entrants).
Ignorer les arcs incident de la variable touché (arcs sortants)
Variable touché
procedure AC-3(G)
Q {(i,j) | (i,j) arcs(G), i < j} % file pour les arcs à réviser
tant que Q non vide faire
sélectionner et supprimer (k,m) de Q
si réviser((k,m)) alors
Q Q {(i,k) | (i,k) arcs(G), i k, i m}
fin si
fin tant que
fin
2 a1 b1 <i,a1>,<i,a2>
2 a2 b2 <i,a1>
1 a3 b3 <i,a2>, <i,a3>
Compteur(i,j) i j Sj...
2 a1 b1 <i,a1>,<i,a2>
1 a2 b2 <i,a1>
0 a3 b3
Algorithme AC4 [Mohr &Henderson
1986]
procedure AC-4(G)
Q Initialiser(G)
tant que Q est non vide faire
sélectionner et supprimer une pair <j,b> de Q
pour chaque <i,a> de Sj,b faire
compteur[(i,j),a] compteur[(i,j),a] - 1
si compteur[(i,j),a] = 0 & a Di alors
supprimer a de Di
Q Q {<i,a>}
fin si
fin pour
fin tant que
fin AC-4
Inconvéniant : complexité en espace élevée
Autres algorithmes d ’AC
procedure DAC(G)
pour j = |noeuds(G)| à 1 faire
pour chaque arc (i,j) dans G tq. i<j faire
Réviser((i,j))
fin pour
fin pour
fin
Quand et comment utiliser DAC
AC est plus général que DAC (si un CSP est AC alors il est aussi
DAC
DAC est-il utile ?
DAC est plus rapide que tout algorithme AC-x
Il existe des problèmes pour lesquels DAC est suffisant
Exemple: Si le graphe de contraintes du CSP forme un arbre alors
DAC est suffisant pour résoudre le CSP sans retours arrières
Quel ordre utiliser pour DAC?
Appliquer DAC de la racine aux feuilles de l ’arbre.
DAC assure pour chaque valeur du fils
l ’existence d ’une valeur compatible
avec son père
Relation entre AC et DAC
Exemple:
V ={X,Y,Z}
Dx = Dz= {1,2}, Dy = {1}
C = {X Z,Y<Z}
1 2 C13
Chemin
CheminInconsistant
Consistant
1 2
x2 1 C23 x3
2
Chemin consistance directionnelle
(DPC)
1 2 3 1 2 3
Chemin consistance restreinte
(RPC)
Peut-on obtenir un algorithme de filtrage (entre AC et PC)?
plus fort que AC
sans les inconvénients de PC (espace mémoire, modification du
CSP)
Chemin consistance restreinte (Berlandier 1995)
basé sur AC-4 (utilise les ensembles supports)
des qu ’une valeur admet uniquement un support dans une
autre variable, PC est appliqué sur cette pair de valeurs
K-consistance
Y a t ’il un formulation commune à AC et PC?
AC: une valeur est étendue à une autre variable
PC: une pair de valeurs est étendue à une autre variable
… on peut continuer
Définition : un CSP est k-consistent ssi toute instanciation consistante de
(k-1) différentes variables peut être étendue à une instanciation consistante
avec une variable supplémentaire (k)
CSP 4-consistant
K-consistance forte
<
AC 12 12
12
= =
PC
12 12
12
4-consistance 12 12
12
12
Techniques de consistance:
modifications apportées au CSP
AC
PC
4-(forte)consistance
Contrainte ternaire
k-consistance & résolution de CSP
Largeur du graphe 1
k-consistance & résolution de CSP
Idée de preuve :
Au plus w
D ’autres forme de
consistances : (i,j)-Consistance
k-consistance étends l ’instanciation des (k-1) variables à une nouvelle variable
on supprime des (k-1)- tuples ne pouvant pas être étendu à une autre variable.
Définition:
un CSP est (i,j)-consistent ssi toute instanciation consistante de i variables peut être
étendue à j nouvelles variables.
Critères d ’évaluation :
taille de l ’arbre de recherche & nombre de tests de consistance
Les défauts du «backtrack»
classique
Parcours inutile de certaines zones de l ’espace de recherche
(des valeurs trivialement incompatibles avec l ’instanciation courantes
ne sont pas supprimées)
Le retour arrière chronologique peut entraîner des répétitions d ’échecs
causés par une même raison
statique : préétabli
dynamique : évolue pendant la recherche
Heuristiques classiques :
choix de valeurs
recherche d ’une solution : choix les moins contraints
recherche de toutes les solutions : choix les plus contraints
choix de variables
en fonction de critères structurels : degré, tailles des domaines ,
satisfiabilité des contraintes...
Heuristiques d’ordonnancement
Choix de l’ordre des variables - un exemple [Nadel]
X3
C23: X2 X3 123 C34: X3 = X4+2
s23 = 5/6 s34 = 1/12
C24: X2 x X4 >1
X2 12 s24 = 7/8 1234 X4
C12: X1 X2
s12 le
sij est = 1taux de satisfiabilité
1 X1de la contrainte Cij :
sij = |Rij| / |Di| x |Dj|
Trois heuristiques d ’ordonnancement des variables :
H1 : le plus petit domaines d ’abord
(X1, X2, X3, X4)
H2 : la variable de degré max d ’abord
(X2, X3, X4, X1) ou (X2, X4, X3, X1)
H3 : contrainte la moins satisfiable d ’abord
(X4, X3, X2, X1) ou (X3, X4, X2, X1)
Exemple : suite
H1 H1 29 noeuds
X1 1
X2 1 2
X3 1 2 3 1 2 3
X4 1234 1234 1234 1234 1234
H2 32 noeuds
H2
X2 1 2
X4 1 2 3 4 1 2 3 4
X3 123 123 1 2 3 1 2 31 2 3 123 123
X1
1
Exemple : suite
H3 19 noeuds
H3
X4 1 2 3 4
X3 123 123 123 123
X2 1 2
X1
1
0 xi
1
2 xj
Heuristiques: une approche multi-
niveaux
Formulation général
x j ( xi )
W ( Rij )
W ( xi )
( xi )
W ( xi )
H ( xi )
( xi )
H2
1 2
X2
1 2 3 4 1 2 3 4
X4 X2 x X4 >1
1 2 3 1 2 3 1 2 3 1 2 31 2 3 123 123
X2 X3
X3 X3 = X4+2
X1 1
X1 X2
Forward cheking
Backtraking
Utilisation dynamique de PC ?
Coût prohibitif !
graphe de
largeur 2 arbre
M(AC+): schéma général
M(AC+) : schéma général
#noeuds
#tests
X2 Puis ici
X5
X6
Constraint recording [Dechter 90]
[Bruynooghe 84]
plus généralement :
CSP binaires
CSP généraux
Conditions liées à la structure
Largeur d ’un graphe de contraintes
graphe ordonnée : ordre sur les sommets
largeur d ’un sommet : nombre de prédécesseurs
largeur d ’un ordre : largeur max des sommets
largeur d ’un graphe : largeur min des ordres
X3
X4
X1 X5
X5
X3
X2
X2 X4
X1
Graphe de largeur 2
Un ordre de largeur 2
Conditions liées à la structure
Théorème [Freuder 82]
Si le graphe de contraintes est de largeur k et le CSP est
fortement (k+1)-consistant alors le CSP est consistant et il
existe un ordre d ’instanciation glouton
Corollaire
Si le graphe de contraintes est sans cycle et le CSP vérifie la
consistance d ’arc alors le CSP est consistant et il existe un
ordre d ’instanciation glouton
Méthode
filtrage par consistance d ’arc
instanciation des variables selon un ordre de largeur 1
CSP structurés en k-arbre
Un graphe G est un k-arbre si :
G est le graphe complet à k sommets, ou
G a un sommet x de degré k dont le voisinage est un graphe complet, et
le graphe obtenu en enlevant x et les arêtes qui lui sont incidentes est un
k-arbre
Un 2-arbre
Théorème : un CSP structuré en k-arbre peut être résolu en O(n.d k+1)
Cas polynomiaux : CSP généraux
Hypergraphes acycliques [Beeri & al 82]
la 2-section de l ’hypergraphe est triangulée et l ’hypergraphe
est conforme (cliques max de la 2-section = arêtes de
l ’hypergraphe)
Algorithme de [Graham 79]
on peut supprimer tous les sommets de l ’hypergraphe en
appliquant les 2 opérations :
supprimer les sommets appartenant à une seule arête
supprimer les arêtes incluses dans une autre arête
Existence d ’un arbre de jointure X2 X3
c1
c1 X3
c2 X2, X4
X1 X2 X1
c2
X4 X5 X4 X5
c3 c3 X4, X5
X6 X6
Méthode :
filtrage par inter-consistance
instanciation selon un arbre de jointure
Méthodes de décomposition
Basées sur la structure du (hyper)graphe de contraintes
Idée : se ramener à un (hyper)graphe acyclique
3 méthodes :
la méthode de l ’ensemble coupe-cycle
la méthode du regroupement en arbre
la méthode du regroupement cyclique
Methode de l ’ensemble coupe-
cycle [Dechter& Pearl 87]
Ensemble coupe-cycle : ensemble de sommets d ’un graphe dont la
suppression rend le sous-graphe induit acyclique
Principe : l ’instanciation d ’une variable correspond à sa suppression dans le
sous-problème résultant
si les variables du coupe-cycle sont instanciées, le sous-problème
résultant est acyclique
Méthode :
déterminer un ensemble coupe-cycle E X
trouver une instanciation consistante des variables de E
si le CSP obtenu est non vide, appliquer la méthode de résolution relative aux
arbres
complexité : exponentielle en E
Problèmes :
calcul d ’un E de taille minimale est NP-difficile
taille du coupe-cycle peut être grande
Regroupement en arbre [Dechter
& Pearl89]
Principe : recouvrement d ’un graphe de contraintes par les arêtes d ’un
hypergraphe acyclique
création d ’un CSP n-aire acyclique équivalent
Méthode :
triangulation du graphe de contraintes
recherche des cliques maximales sur le graphe triangulé
génération de l ’hypergraphe associé aux cliques
obtention d ’un CSP n-aire en définissant des contraintes à partir des
arêtes de l ’hypergraphe par la résolution des cliques (sous problèmes)
résolution du CSP n-aire acyclique (polynomial)
Complexité: O(n |A| d|A| ) si |A| est la plus grande arête
Problèmes :
minimiser la taille de A est NP-difficile,
la taille de A peut être grande
Regroupement en arbre
Regroupement cyclique
Constations :
ensemble coupe-cycle inefficace face aux cliques
regroupement en arbre modifie la structure du problème
méthode mixte:
ensemble coupe-cycle et regroupement en arbre
s ’adapter à la structure du problème sans la modifier
méthode : pour un graphe de contrainte G = (X,C)
recherche d ’un sous graphe G= (X ’, C ’) triangulé maximal
recherche et résolution des cliques max de G ’
obtention d ’un CSP n-aire en prenant comme contraintes les cliques
max de G ’ et les contraintes C-C ’
résolution du CSP n-aire par la méthode de l ’ensemble coupe-cycle
avec X-X ’
Regroupement cyclique
Extensions
CSP « standard » :
ne suppose aucune propriété sur les domaines et les
contraintes
ensemble complet et rigide de contraintes données a-priori
Algorithme utilisée :
incomplets: recherche local
complets : branch & bound
Autres techniques de
simplifications
Substituabilité de Voisinage :[Freuder 91]
Définition : soient P= (X,C,D) une CSP, et a, b Dxi , a est dite
voisinage substituable à b ssi pour tout Xj tq. (Xi,Xj) C, l ’ensemble
des valeurs de Dxj compatible avec b sont aussi compatible avec a.
a b
domaines est 2