Vous êtes sur la page 1sur 159

Programmation par contraintes

Amal HALLOU
amalhallou@gmail.com

2ème année du Cycle Ingénieur – Génie Informatique –

Année universitaire 2022 - 2023


INTRODUCTION

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


INTRODUCTION

Exemple introductif : Le problème des 4 Reines


Placer 4 reines dans un échiquier 4*4 sans qu’elles ne se menacent
 Une reine - par ligne,
- par colonne
- par diagonale

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


INTRODUCTION

•Un problème :
Vérifier qu’une solution résout le problème
Simulation, Vérification
Trouver une solution du problème
Programmation par Contraintes
Trouver la meilleure solution du problème
Programmation Linéaire

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


INTRODUCTION

Objectif :
Trouver une solution réalisable
•qui respecte des contraintes faciles à vérifier
Formules mathématiques simples, tableaux de
valeurs possibles
•avec des ensembles de valeurs possibles pour les variables de
décision

Problèmes de satisfaction de contraintes

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


INTRODUCTION

Un ensemble de techniques de résolution de problèmes :


Problèmes de Satisfaction de Contraintes ou CSP
Mise en œuvre à travers des outils informatiques
(langages, bibliothèques) de Programmation Par
Contraintes (PPC)
S'appuie sur une théorie élaborée dans le domaine de
l'Intelligence Artificielle

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


INTRODUCTION

“Constraint programming represents one of the closest approaches


computer science has yet made to the Holy Grail of programming:
the user states the problem, the computer solves it.”
[Eugene C. Freuder, Constraints, April 1997]

-fournir un moyen d'exprimer dans un formalisme déclaratif (dans


un langage de modélisation souple, proche des concepts de
l'utilisateur) les contraintes qui définissent un problème
(composant langage)
-fournir les algorithmes capables de le résoudre, lorsque c’est
possible (composant résolveur)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PLAN

1. Introduction aux Problèmes de Satisfaction des


Contraintes (CSP)

2. Modélisation des CSP

3. Résolution des CSP

a) CSP binaires discrets

b) CSP n-aires discrets

c) CSP continus
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)
Problème de satisfaction de contraintes (CSP)
(Introduit par Montanari en 1974)
= Triplet (V, C, D) où :
V est un ensemble fini de variables 𝑉1 , 𝑉2 , …, 𝑉𝑛
 C est un ensemble fini de contraintes 𝐶1 , 𝐶2 , …, 𝐶𝑚 où chaque
contrainte est définie sur un sous-ensemble de V;
 D est un domaine non vide constitué de l’union des valeurs
possibles pour chaque variable : 𝐷𝑉1 , 𝐷𝑉2 , …, 𝐷𝑉𝑛 ;

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

1) Domaine
Soit 𝑉1 , 𝑉2 , …, 𝑉𝑛 les variables de décision d’un CSP
 Chaque variable 𝑉𝑖 doit prendre ses valeurs dans le domaine 𝐷𝑉𝑖
- Discret {1,5,7} ou continu [1,9]
- Fini ou infini

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

2) Contraintes
Une contrainte restreint les valeurs que l’on peut affecter
simultanément à des variables (les variables concernées par cette
contrainte)
* Une contrainte restreint les valeurs que l’on peut affecter à une
variable (x<5); à deux variables simultanément (x<y); ou a
plusieurs variables simultanément (x+y<z+t)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

2) Contraintes
2 types de déclaration:
- En extension : énumération des valeurs admises
(x = 1 et y = 2) ou (x = 2 et y = 4) ou (x = 3 et y = 0)
- En compréhension : formules mathématiques, …
x<y;
(ABC) forme un triangle isocèle ;
x, y, z distincts deux à deux

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

2) Contraintes
-Contraintes logiques
Si x = 4 alors y = 5
x = y ou x = 2y
-Contraintes globales
Toutes les variables sont différentes
-Méta-contraintes
La valeur 5 est utilisée exactement 3 fois

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

2) Contraintes
- Contrainte unaire :
X<5
porte sur une seule variable
- Contrainte binaire :
X<Y
porte sur deux variables
- Contrainte n-aire :
porte sur n variables X+Y<Z+T

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

2) Contraintes
- Contrainte induite :
Contrainte satisfaite par toutes les solutions de P
peut être rajouté au CSP sans modifier l’ensemble des solutions

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Assignation (Affectation)
Une assignation A de V dans D est une fonction qui associe à une
variable 𝑉𝑖 de V une valeur 𝑑𝑖 du sous-domaine 𝐷𝑉𝑖
𝑑𝑖 est assignée à 𝑉𝑖 par A
Exemple : A = {(X1,V1), (X3,V3), (X4,V4)}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Assignation (Affectation)
Une affectation peut-être :
- Partielle : affectation de certaines variables
ou
- Totale : affectation de toutes les variables

- Consistante : ne viole aucune contrainte


ou
- Inconsistante : viole au minimum une contrainte

 Une solution = affectation totale consistante


A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Assignation (Affectation)
Exemple :
V = {a, b, c, d}
D(a) = D(b) = D(c) = D(d) = {0, 1} Domaine discret fini
C = {a ≠ b ; c ≠ d ; a + c < b} 2 contraintes binaires , 1 contrainte 3-aires
A1 = {(a, 1), (b, 0), (c, 0), (d, 0)} totale, inconsistante

A2 = {(a, 0), (b, 0)} partielle, inconsistante


A3 = {(a, 1), (b, 0)} partielle, consistante

A4 = {(a, 0), (b, 1), (c, 0), (d, 1)} totale, consistante
 Solution du CSP
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Types de CSP :
• CSP Discret / Continu :
CSP discret : CSP dont tous les domaines sont finis ou infinis de
valeurs symboliques ou numériques dénombrables
CSP continu : CSP dont tous les domaines sont numériques
indénombrables, en général des intervalles sur R
• CSP Binaire ou non :
CSP binaire : CSP dont toutes les contraintes binaires

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Types de CSP :
• CSP consistant
C’est un CSP qui admet une solution
• CSP globalement consistant
C’est un CSP dont toute instanciation consistante est globalement
consistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Exemples d’application
1. Problème des quatre couleurs

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Exemples d’application
2. Problème des N Reines

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Exemples d’application
3. Le Carré magique
= 15 = 15 = 15

= 15

= 15

= 15
= 15 = 15
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Exemples d’application
D’abord, appliqué à des problèmes de jeu,
maintenant orienté sur des CSP de taille réelle :
- aménagement intérieur d’un avion à l’Aérospatiale
- planification du réseau France Telecom
...

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Domaines d’application
•Agencement
• Diagnostique et Vérification
• Planification
• Ordonnancement et Emplois du temps
• Emballage et Placement
• Logistique

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Domaines d’application
• Informatique : Analyse de programme, Robotique
• Biologie : Repliement de protéine, Séquençage de l’ADN
• Économie : Ordonnancement
• Linguistique : Analyse grammaticale
• Médecine : Aide au diagnostique
• Physique : Modélisation des systèmes
• Géographie : Systèmes de géo-information
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)

Secteurs d’application
•Industrie : transport de matières nucléaires (CEA) …
•Transport : rotation d’équipages (Corsair), gestion de port (port
de Singapour) …
•Télécommunications : composants visuels (Hewlett-Packard) …
•Biologie moléculaire : prédiction de structure protéique (Esprit) …
•Environnement : pollution des eaux (ville de Venise), recyclage
(Michelin) …
•Banques : aide à l’attribution de crédits (Crédit Lyonnais, Société
Générale) …
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
2. MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Un problème est rarement donné sous la forme de CSP


1ère étape : Le modéliser en tant que CSP
 Déterminer :
* Les variables de décision
* Le domaine de valeurs de chaque variable
Décrire les contraintes qui lient entre les variables

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Exemples :
1) Le problème des N Reines
Placer N reines dans un échiquier N*N sans qu’elles ne se
menacent
Une reine - par ligne,
- par colonne
- par diagonale

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Exemples :
1) Le problème des N Reines
N=4

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Exemples :
2) Le retour de la monnaie
On s’intéresse à un distributeur automatique de boissons.
L’utilisateur insère des pièces de monnaie pour un total de T
centimes de dirhams, puis il sélectionne une boisson, dont le prix
est de P centimes de dirhams (T et P étant des multiples de 10).
Il s’agit alors de calculer la monnaie à rendre, sachant que le
distributeur a en réserve A pièces de 2 dirhams, B pièces de
1dirham, C pièces de 50 centimes, D pièces de 20 centimes et E
pièces de 10 centimes

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Exemples :
3) Send More Money
On considère l’addition suivante :
SEND
+ MORE
= MONEY
Chaque lettre représente un chiffre différent (entre 0 et 9).
On souhaite connaitre la valeur de chaque lettre, sachant que la
première lettre de chaque mot représente un chiffre non nul

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Modélisation des CSP à contraintes en extension


Exemple : Firme automobile
Une firme automobile veut sortir un nouveau modèle de voiture
fabriqué dans tout le Maroc :
• Les portières et le capot sont faits à Tanger, où le constructeur
ne dispose que de peinture rose, rouge et noire ;
• La carrosserie est faite à Dakhla, où l’on a de la peinture
blanche, rose, rouge et noire ;
• Les pare-chocs, faits à Casablanca sont toujours blancs ;
• La bâche du toit-ouvrant, qui est faite à Marrakech, ne peut
être que rouge ;
• Les enjoliveurs sont faits à Oujda, où l’on a de la peinture rose
A. HALLOU et rouge PROGRAMMATION PAR CONTRAINTES GI18
MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Modélisation des CSP à contraintes en extension


Exemple : Firme automobile
Le concepteur impose quelques contraintes quant à l’agencement
des couleurs :
• La carrosserie doit être de la même couleur que les portières ;
• Les portières doivent être de la même couleur que le capot ;
• Le capot doit être de la même couleur que la carrosserie ;
• Les enjoliveurs doivent être plus clair que la carrosserie ;
• Les pare-chocs doivent être plus clair que la carrosserie ;
• Le toit-ouvrant doit être plus clair que la carrosserie.

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Modélisation des CSP à contraintes en extension


Une contrainte 𝐂𝐢 est une relation 𝑹𝐢 définie sur un sous-ensemble
de variables 𝑺𝐢 :

* 𝑺𝒊  X (l’ensemble des variables sur lesquelles elle porte)

* 𝑹𝒊 l’ensemble des combinaisons de valeurs satisfaisant 𝐂𝐢 :

𝑹𝒊  𝐃𝐗𝟏 x… x 𝐃𝐗𝑖

 Ci = <Si, Ri>

|Si| = l’arité de Ci
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)
Modélisation des CSP à contraintes en extension
Exemple : Firme automobile
C1=<S1,R1> , S1={Cca,Cp}, R1={(rose,rose),(rouge,rouge),(noire,noire)}
C2=<S2,R2> , S2={Cc,Cp},
R2={(rose,rose),(rouge,rouge),(noire,noire)}=R1
C3=<S3,R3> , S3={Cca,Cc},
R3={(rose,rose),(rouge,rouge),(noire,noire)}=R1
C4=<S4,R4> , S4={Ce,Cca}, R4={(rose,rouge),(rose,noire),(rouge,noire)}
C5=<S5,R5> , S5={Cpc,Cca},
R5={(blanche,rose),(blanche,rouge),(blanche,noire)}
C6=<S6,R6> , S6={Cb,Cca}, R6={(rouge,noire)}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)
Modélisation des CSP à contraintes en extension
sommets = variables
hyper-arrêtes = contraintes
= ensemble de n sommets connectés

X2 X3 Hyper-graphe
C1 C2

X1 X4
C3
Dans le cas d’un CSP binaire, un graphe suffit
arrêtes = ensemble de 2 sommets connectés
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)
Modélisation des CSP à contraintes en extension
Dans le cas d’un CSP binaire, un graphe suffit
arc = ensemble de 2 sommets connectés
Le sens de la flèche dans ce cas est très important (Relation
Ri) : les valeurs dans Ri dépendent des variables sources et
destination : relation unidirectionnelle
C4=<S4,R4> , S4={Ce,Cca}, R4={(rose,rouge),(rose,noire),(rouge,noire)}
Source=Ce (rose, rouge) ; destination =Cca
Si la relation est bidirectionnelle :
C1=<S1,R1> , S1={Cca,Cp}, R1={(rose,rose),(rouge,rouge),(noire,noire)}
Cca et Cp jouent le même rôle dans la relation  arrête

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Modélisation des CSP à contraintes en extension


Exemple :
Soit P= (X, D, C) avec :
X = {X1 , X2 , X3 , X4 , X5 }
D(X1 )=D(X2 ) ={a,b,c} et D(X3 )=D(X4 ) =D(X5 )={a,b}
C={C1 , C2 , C3 , C4 , C5 }

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)

Modélisation des CSP à contraintes en extension


Exemple :
Contraintes Variables Relations
C1= < S1, R1> S1={X3,X1} R1={(a,b),(a,c),(b,c)}
C2= < S2, R2> S2={X3,X2} R2={(a,b),(a,c),(b,c)}
C3= < S3, R3> S3={X3,X4} R3={(a,b)}
C4= < S4, R4> S4={X3,X5} R3={(a,b)}
C5= < S5, R5> S5={X4,X5} R3={(a,b)}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS

Un CSP peut-être :
- Unaire : toutes les contraintes sont unaires
- Binaire : toutes les contraintes sont binaires
- N-aire
binaire
Discret

-CSP N-aire

continu

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS

-Toute contrainte n-aire peut s’exprimer en termes de contraintes


binaires
- Un CSP binaire peut être représenté comme un graphe de
contraintes
Transformation de CSP n-aires en CSP binaires
 Binarisation des contraintes

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS
Binarisation des contraintes
La transformation est obtenue en utilisant des variables auxiliaires
Exemple:
Soit le CSP suivant :
-V={X,Y,Z}
-D(X)= {1,2}; D(Y)={3,4} ; D(Z)={5,6}
-C={X+Y=Z}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS
Binarisation des contraintes
La transformation est obtenue en utilisant des variables auxiliaires
1) Transformer le CSP en CSP binaire en gardant les variables
initiales :
Remplacer les contraintes n-aires par des variables
Le CSP P’ équivalent est comme suit :
V’={X,Y,Z,U}
D(U)={(a,b,c)/a:{1,2},b:{3,4},C:{5,6} et a+b=c}
C={arg1(U)=X, arg2(U)=Y, arg3(U)=Z}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS
Binarisation des contraintes
La transformation est obtenue en utilisant des variables auxiliaires
2) Transformer le CSP en CSP binaire sans garder les variables
initiales :
Remplacer toutes les contraintes par des variables
Le CSP P’’ équivalent est comme suit :
V’’={U}
D(U)={(a,b,c)/a:{1,2},b:{3,4},C:{5,6} et a+b=c}
C=ensemble vide

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS
Binarisation des contraintes
La transformation est obtenue en utilisant des variables auxiliaires
Exemple :
V={X,Y,Z}
D(X) = {1,2};
D(Y) = {3,4},
D(Z) = {5,6}
C={X+Y=Z ; X<Y}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS
Binarisation des contraintes
La transformation est obtenue en utilisant des variables auxiliaires
1) Transformer le CSP en CSP binaire en gardant les variables
initiales :
Remplacer les contraintes n-aires par des variables
Le CSP P’ équivalent est comme suit :
V’={X,Y,Z,U}
D(U)={(a,b,c)/a:{1,2},b:{3,4},c:{5,6} et a+b=c}
C={X<Y , arg1(U)=X, arg2(U)=Y, arg3(U)=Z}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS
Binarisation des contraintes
La transformation est obtenue en utilisant des variables auxiliaires
2) Transformer le CSP en CSP binaire sans garder les variables
initiales :
Remplacer toutes les contraintes par des variables
Le CSP P’ équivalent est comme suit :
V’={U,V}
D(U)={(a,b,c)/a:{1,2},b:{3,4},C:{5,6} et a+b=c}
D(V)={(e,d)/e:{1,2}, d:{3,4} et e<d}
C={arg1(U)=arg1(V), arg2(U)=arg2(V)}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS
Binarisation des contraintes
Exercice :
Soit le CSP suivant :
V ={A, B, C, D};
D(A)= D(B) = D(C) = D(D) = {0, 1, 2};
C={ A + B + C = 2 ; B + C + D = 5}
Version binaire équivalente ?

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) DISCRETS
Binarisation des contraintes
Exercice :
Soit le CSP P suivant :
V ={A, B, C, D};
D(A)= D(B) = D(C) = D(D) = {0, 1, 2};
C={ A + B + C = 2 ; B + C + D = 5}
Le CSP P’ équivalent :
V’={E,F}
D(E)={(x,y,z)/x,y,z:{0,1,2} et x+y+z=2}
D(F)={(t,k,u}/t,k,u:{0,1,2} et t+k+u=5}
C={arg1(F)=arg2(E),arg2(F)=arg3(E)}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
1. Résolution naïve (algorithme générer-tester)
Enumération:
- On génère une affectation totale possible
- On vérifie si elle est consistante
- Si oui : c’est une solution du problème
- Si non, on génère une autre affectation totale
-…

Avantage : très facile à mettre en œuvre


Inconvénient : très gourmande en ressource temps

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
1. Résolution naïve
Exemple:
X = {X1 , X2 , X3 , X4 } ;
D = {D1 , D2 , D3 , D4 } avec
D1 = D2 = D3 = D4 = {0, 1};
C = {X1 ≠ X2 , X3 ≠X4 , X1 + X3 <X2 }

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
1. Résolution naïve
Exemple:
1) Binariser le CSP :
X = {X1 , X2 , X3 , X4 ,U}
D(U)={(a,b,c)/a,b,c:{0,1} et a+c<b}
C = {X1 ≠ X2 , X3 ≠X4 , arg1(U)=X1 , arg2(U)=X2 , arg3(U)=X3 }

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
X1 = 0
1. Résolution naïve X2 = 0
Exemple : X3 = 0
X4 = 0 1
X = {X1 , X2 , X3 , U=(0,1,0)
X4 ,U}
D(U)={(a,b,c)/a, Affectation totale
Consistante? Non
b,c:{0,1} et
a+c<b}
C = {X1 ≠ X2 ,
X3 ≠X4 ,
arg1(U)=X1 ,
arg2(U)=X2 ,
arg3(U)=X3 }

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
Reines : T_R[4]
1. Résolution naïve Chaque T_R[i] la ligne de la reine i+1
(T_R[0] la ligne ou placer la reine 1) sachant que chaque
Exemple : reine Ri est placée dans une colonne i
Les valeurs possibles {1,2,3,4}
T_R[0]=une valeur entre 1 et 4
(for(i=1;i<=4;i++)
T_R[0]=i

Boucles for imbriquées
la dernière boucle for :
Les 4 variables T_R[i] sont affectées : Assignation totale
Vérifier si consistante
Si oui : sortir (break et afficher la solution)
Sinon: je vais rester dans la boucle for jusqu’à ce qu’à avoir
une affectation totale consistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
int t_r[4];
for(int i1=1;i1<=4;i1++){
1. Résolution naïve t_r[0]=i1;
T_R[4] : tableau de 4 reines
for(int i2=1;i2<=4;i2++){
Exemple : t_r[1]=i2;
T_R[0]=1 for(int i3=1;i3<=4;i3++){
t_r[2]=i3;
T_R[1]=1 for(int i4=1;i4<=4;i4++){
t_r[3]=i4;
/*affectation totale ;tester si consistante
T_R[2]=2 en vérifiant les contraintes */
T_R[2]=1

…..

T_R[3]=1 T_R[3]=4

….. ….. …..

A.Affectation
HALLOU totale inconsistante PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
1. Résolution naïve
Les remèdes :
-S’arrêter quand une affectation partielle est inconsistante
backtrack
-Restreindre les domaines des variables durant l’exécution
propagation de contraintes
-Utiliser des heuristiques
-Utiliser nos connaissances sur le problème étudié
...

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
2. Backtracking
Principe :
-génération d’un affectation partielle consistante
-extension de l’affectation partielle avec l’affection d’une nouvelle
variable
-si cette extension est inconsistante on retourne en arrière et on
modifie l’affectation de la nouvelle variable

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
2. Backtracking
Exemple: Jeu des 4 reines

Affectation
partielle
inconsistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
2. Backtracking
Exemple: Jeu des 4 reines

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
X1 = 0
2. Backtracking X2 = 0 1
Exemple : Affectation partielle
consistante? X1 ≠ X2
X = {X1 , X2 , X3 ,
X3 = 0
X4 ,U}
X4 = 0 1
D(U)={(a,b,c)/a,
Affectation partielle
b,c:{0,1} et consistante? X3 ≠ X4
a+c<b} Une Solution du CSP
C = {X1 ≠ X2 , équivalent :
𝑈 = {0,1,0} S’= (X1 =0, X2 = 1,
X3 ≠X4 , Affectation partielle X3 =0,
arg1(U)=X1 , consistante? X4 =1,U=(0,1,0))
arg2(U)=X2 , arg1(U)=X1 , Une Solution du CSP
arg2(U)=X2 , initial :
arg3(U)=X3 } arg3(U)=X3 S=(X1 =0, X 2 = 1,
X3 =0, X4 =1)
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
2. Backtracking
Reines : T_R[4]
Exemple : Chaque T_R[i] la ligne de la reine i+1
(T_R[0] la ligne ou placer la reine 1) sachant que chaque
reine Ri est placée dans une colonne i
Les valeurs possibles {1,2,3,4}
T_R[0]=une valeur entre 1 et 4
(for(i1=1;i1<=4;i1++){
T_R[0]=i1;
for(i2=1;i2<=4;i2++){
T_R[1]=i2;
/*vérifier les contraintes entre T_R[0] et T_R[1]
Si vérfié passer aux autres for (après chaque boucle
vérifier les contraintes entre les variables)
je vais rester dans la boucle for jusqu’à ce qu’à avoir une
affectation totale consistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
Principe :
- On restreint le domaine d’une variable
- avec les contraintes, on restreint les domaines des autres
variables
= Combinaison du filtrage et du retour-arrière:
Quand une variable est instanciée, propager le changement aux
variables non encore instanciées

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
Principe :
- On restreint le domaine d’une variable
- avec les contraintes, on restreint les domaines des autres
variables
= Combinaison du filtrage et du retour-arrière:
Quand une variable est instanciée, propager le changement aux
variables non encore instanciées

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
a. Forward checking (anticipation par nœud) :
A chaque étape k de 1…k…n
1) instancier la variable X𝑘 par une valeur v𝑘
2) ∀ X𝑖 , i>k et ∀ C𝑗 reliant X𝑖 et X 𝑘 : enlever toutes les valeurs de
X𝑖 incompatibles avec la valeur v𝑘 choisie pour X𝑘
3) si dom(X𝑖 ) = ∅ alors on essaie la valeur suivante pour X𝑘 s'il y
en a une, sinon retour-arrière
4) Sinon, on passe à l’étape suivante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
a. Forward checking (anticipation par nœud) :
Exemple : Jeu des 4 reines
D(Li)={1,2,3,4}
L1=2
L1=1
D(L2)={3,4} D(L2)={4}
D(L3)={2,4} D(L3)={1,3}
D(L4)={2,3} L2=4 D(L4)={1,3,4}

L2=4
D(L3)={1}
D(L3)={2} D(L4)={1,3}
D(L3)={} D(L4)={3}
D(L4)={3}
D(L4)={3}
L3=2

D(L4)={} A. HALLOU PROGRAMMATION PAR CONTRAINTES


GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
a. Forward checking (anticipation par nœud) :
Exemple : Jeu des 4 reines

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
a. Forward checking (anticipation par nœud) :
Exercice:
X = {X1 , X2 , X3 , X4 } ;
D = {D1 , D2 , D3 , D4 } avec
D1 = D2 = D3 = D4 = {0, 1};
C = {X1 ≠ X2 , X3 ≠X4 , X1 + X3 <X2 }

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
a. Forward checking (anticipation par nœud) :
Exercice:
X = {X1 , X2 , X3 , X4 , 𝑋5 } ;
D = {D1 , D2 , D3 , D4 , D5 } avec
D1 = D2 = D3 = D4 = {0, 1};
D5 = 𝐷(X5 )={(a,b,c)/a,b,c:{0,1} et a+c<b}
C = {X1 ≠ X2 , X3 ≠X4 , arg1(𝑋5 ) = X1 , arg2(𝑋5 )= X2 ,
arg3(𝑋5 ) = X3 }

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
a. Forward checking (anticipation par nœud) :
Exercice: 𝑿𝟏 = 𝟎
X1 ≠ X2  D(X2)={1}
arg1(𝑋5 ) = X1 D(X5)={(0,1,0)}
𝑿𝟐 = 𝟏
arg2(𝑋5 )= X2

𝑿𝟑 = 𝟎
X3 ≠X4  D(X4)={1} 𝑿𝟒 = 𝟏
arg3(𝑋5 ) = X3 𝑿𝟓 = (𝟎, 𝟏, 𝟎)
Une solution du CSP équivalent S’=(X1=0,X2=1,X3=0,X4=1,X5=(0,1,0))
Une solution du CSP initial : S=(X1=0,X2=1,X3=0,X4=1)
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
b. Look ahead (anticipation par arc) :
A chaque étape k de 1…k…n
1) instancier la variable X𝑘 par une valeur v𝑘
2) ∀ X𝑖 , i>k et ∀ C𝑗 reliant X𝑖 et X 𝑘 : enlever toutes les valeurs de
X𝑖 incompatibles avec la valeur v𝑘 choisie pour X𝑘
3) ∀ X𝑖 , ∀ X𝑗 , ∀ C𝑖 reliant X𝑖 et X𝑗 i > j et j ≥ k, enlever toutes les
valeurs de X𝑗 qui n'ont pas de valeurs compatibles dans X𝑖
4) si dom(X𝑖 ) = ∅ alors on essaie la valeur suivante pour X𝑘 s'il y
en a une, sinon retour-arrière
5) Sinon, on passe à l’étape suivante
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
b. Look ahead (anticipation par arc) :
Exemple : Jeu des 4 reines D(L2)={4}
D(L3)={1,3}
L1=1 D(L4)={1,3,4}
D(L2)={3,4}
L2=4 
D(L3)={2,4}
D(L3)={1}
D(L4)={2,3}
D(L4)={1,3}
L3=1 
L2=3  D(L3)={}
D(L4)={3}
 D(L2)={4}
L2=4  D(L3)={2}
L3=3  D(L4)={}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
b. Look ahead (anticipation par arc) :
Exemple : Jeu des 4 reines

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
3. Propagation des contraintes
b. Look ahead (anticipation par arc) :
Exercice:
X = {X1 , X2 , X3 , X4 } ;
D = {D1 , D2 , D3 , D4 } avec
D1 = D2 = D3 = D4 = {0, 1};
C = {X1 ≠ X2 , X3 ≠X4 , X1 + X3 <X2 }

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
Heuristique
une règle approximative de priorité qu’on utilise pour décider :
- de la prochaine variable à choisir (ordre vertical) :
et/ou
- de la ‘meilleure’ valeur à assigner à cette variable parmi toutes
les candidates de son domaine (ordre horizontal)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
Heuristique
une règle approximative de priorité qu’on utilise pour décider :
- de la prochaine variable à choisir (ordre vertical) :
* Ordre statique : fixé avant de commencer la recherche
Exemple: ordonner les variables (en ordre décroissant) en fonction
du nombre de contraintes portant sur elles
* Ordre dynamique :
« First fail principle » : choisir dans le CSP la variable qui a le plus
de chances à conduire à un échec pour minimiser les coûts de
retour-arrière…
souvent, on prend la variable pour laquelle |dom(x)|/|contr(x)|
est le plus petit (ordre croissant)
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
Heuristique
* Heuristique ‘pessimiste’ :
privilégier la variable qui a le plus de contraintes
* Heuristique ‘optimiste’ :
privilégier la variable qui a le moins de contraintes

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
-La consistance :
Une affectation (partielle ou totale) est consistante si elle ne viole
aucune contrainte du problème (les contraintes entre les variables
affectées)
-La consistance globale :
Une affectation partielle consistante est globalement consistante si
elle peut être étendue en une solution du problème
(on peut la trouver dans une solution du problème  c qu’est que
suite à la résolution du problème que l’on peut déterminer si une
affectation est globalement consistante ou pas)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
Une affectation d’une seule variable Xi (Xi,vi) est arc-consistante ssi
: pour toute variable Xj tel qu’il existe une contrainte liant Xi et Xj,
il existe une valeur vj dans le domaine de Xj qui vérifie cette
contrainte = Xi à un support dans le domaine de Xj (la valeur vj)

Un CSP est arc-consistant si toute les affectations d’une seule


variable sont arc-consistantes
-Pour qu’un CSP soit arc-consistant :
Toutes les contraintes Ci(Xi,Xj) : toute valeur du D(Xi) a un support dans le D(Xj)
et toute valeur du D(Xj) a un support dans le D(Xi) (une valeur qui satisfait la
contrainte Ci)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
Exemple :
X = {X1 ,…, X5 } ;
D = {D1 ,…, D5 } avec
D1 = 2,6 ; D2 = 3,4,8 ; D3 = 1,9 ; D4 =
{6,7,8} D5 = {1,5}
C = {X1 < X2 ; X 5 + 3 = X2 ; X1 < X3 ; X4 ≥ X2 + 3}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
Exemple :
(X1,2) : arc-consistante ?
X1<X2  trouver un support de (X1,2) dans le domaine de X2
D(X2)={3,4,8} (3 ou 4 ou 8)
X1<X3  trouver un support de (X1,2) dans le domaine de X3
D(X3)={1,9} 9 est un support de (X1,2) dans D(X3)
(X1,2) est arc-consistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
Exemple :
(X3,1) : arc-consistante ?
X1<X3  trouver un support de (X3,1) dans le domaine de X1
D(X1)={2,6} il n’y a pas de support de (X3,1) dans D(X1) aucune
valeur de X1 ne vérifie la contrainte
l’affectation (X3,1) n’est pas arc-consistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Vérifier si un CSP est arc-consistant
Exemple : 1ère méthode
X1 : D1={2,6}
c1: X1<X2
c3 : X1<X3
•(X1,2) arc-consistante : a un support dans D2 et un support dans
D3  une valeur v2:D2 et une valeur v3:D3 tel que c1 et c2
soient vérifiées
D2={3,4,8} : (X1,2) a un support (3) dans D2
D3={1,9} : 9 est un support de (X1,2) dans D3
(X1,2) est arc-consistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Vérifier si un CSP est arc-consistant
Exemple : 1ère méthode
X1 : D1={2,6}
c1: X1<X2
c3 : X1<X3
•(X1,6) arc-consistante : a un support dans D2 et un support dans
D3  une valeur v2:D2 et une valeur v3:D3 tel que c1 et c2
soient vérifiées
D2={3,4,8} : 8 est un support de (X1,6) dans D2
D3={1,9} : 9 est un support de (X1,6) dans D3
(X1,6) est arc-consistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Vérifier si un CSP est arc-consistant
Exemple : 1ère méthode
X2 : D2={3,4,8}
c1: X1<X2
c2 : X2=X5+3
c4: X2+3 <=X4
•(X2,3) arc-consistante : un support dans D1, un support dans D5 et
un support dans D4
D1={2,6} : 2 est un support de (X2,3) dans D1
D5={1,5} : (X2,3) n’a pas de support dans D5
 l’affectation (X2,3) n’est pas arc-consistante  CSP n’est pas
arc-consistant
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode
Un CSP est arc-consistant ssi pour toute valeur vi du domaine d’une
variable Xi a un support dans e domaine de toute variable Xj tel
qu’il existe une contrainte Ck=(Xi,Xj)
 Pour rendre un CSP consistant d’arc : il suffit d’éliminer des
domaines des variables les valeurs qui ne vérifient pas cette règle

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture arc-
consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-consistance)
X2 : D2={3,4,8}
c1: X1<X2
c2 : X2=X5+3
c4: X2+3 <=X4
•(X2,3) arc-consistante : un support dans D1, un support dans D5 et un
support dans D4
D1={2,6} : 2 est un support de (X2,3) dans D1
D5={1,5} : (X2,3) n’a pas de support dans D5
l’affectation (X2,3) n’est pas arc-consistante  CSP n’est pas arc-
consistant  Eliminer 3 du domaine de X2  D2={4,8}
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture arc-
consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-consistance)
X2 : D2={3,4,8}
c1: X1<X2
c2 : X2=X5+3
c4: X2+3 <=X4
•(X2,4) arc-consistante : un support dans D1, un support dans D5 et un
support dans D4
D1={2,6} : 2 est un support de (X2,4) dans D1
D5={1,5} : 1 est un support de (X2,4) dans D5
D4={6,7,8} : 7 (ou 8) est un support de (X2,4) dans D4
(X2,4) est arc-consistante
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture arc-
consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-consistance)
X2 : D2={3,4,8}
c1: X1<X2
c2 : X2=X5+3
c4: X2+3 <=X4
•(X2,8) arc-consistante : un support dans D1, un support dans D5 et un
support dans D4
D1={2,6} : 2 (ou 6) est un support de (X2,8) dans D1
D5={1,5} : 5 est un support de (X2,8) dans D5
D4={6,7,8} : (X2,8) n’a pas de support dans D4
(X2,8) n’est pas arc-consistante 
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-
consistance)
X3 : D3={1,9}
c3: X1<X3
•(X3,1) arc-consistante : un support dans D1
D1={2,6} : pas de valeur dans D1 qui vérifie la contrainte c3
sachant que X3=1  (X3,1) n’a pas de support dans D1
Eliminer 1 du domaine de D3
D3={9}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-
consistance)
X3 : D3={1,9}
c3: X1<X3
•(X3,9) arc-consistante : un support dans D1
D1={2,6} : 2 (ou 6) est un support de (X3,9) dans D1
L’affectation (X3,9) est arc-consistante
D3={9}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-
consistance)
X4 : D4={6,7,8}
c4: X2+3<=X4
•(X4,6) arc-consistante : un support dans D2
D2={4} : aucune valeur de X2 ne vérifie la contrainte c4 sachant
que X4=6  (X4,6) n’a pas de support dans D2
(X4,6) n’est pas arc-consistante
D4={7,8}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-
consistance)
X4 : D4={6,7,8}
c4: X2+3<=X4
•(X4,7) arc-consistante : un support dans D2
D2={4} : 4 est un support de (X4,7) dans D2
(X4,7) est arc-consistante
•(X4,8) arc-consistante : un support dans D2
D2={4} : 4 est un support de (X4,7) dans D2
(X4,8) est arc-consistante  D4={7,8}
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-
consistance)
X5 : D5={1,5}
c2: X5+3=X2
•(X5,1) arc-consistante : un support dans D2
D2={4} : 4 est un support de (X5,1) dans D2
(X5,1) est arc-consistante
•(X5,5) arc-consistante : un support dans D2
D2={4} : (X5,5) n’a pas de support dans D2
(X5,5) n’est pas arc-consistante  D5={1}
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-
consistance)
X1 : D1={2,6}
c1: X1<X2 ; c3 : X1<X3
•(X1,2) arc-consistante : un support dans D2 , et un support dans
D3
D2={4} : 4 est un support de (X1,2) dans D2
D3={9} : 9 est un support de (X1,2) dans D3
(X1,2) arc-consistante

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-
consistance)
X1 : D1={1,6}
c1: X1<X2 ; c3 : X1<X3
•(X1,6) arc-consistante : un support dans D2 , et un support dans
D3
D2={4} : aucun support de (X1,1) dans D2
D3={9} : 9 est un support de (X1,1) dans D3
(X1,6) n’est pas arc-consistante  D1={1}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 1ère méthode (toutes les valeurs de D1 vérifie l’arc-
consistance)
Le CSP arc-consistant équivalent est :
V={X1,…,X5}
D1={2} ; D2={4} ; D3={9} ; D4={7,8} ; D5={1}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Vérifier si un CSP est arc-consistant
Exemple : 2ème méthode (en utilisant un graphe)
X1
{2, X4
X1<X2 X4>=X2+3 {6,
6} 7,
8}
X2
{3,
X1 4,
< 8}
X3
X3 X5
{1, (X3,1) n’a pas de {1,
support dans D1 X5+3=X2
9}  Le CSP n’est pas 5}
arc-consistant
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 2ème méthode
X1
{2, X4
X1<X2 X4>=X2+3 {6,
6} 7,
8}
X2
{3,
X1 4,
< 8}
X3
X3 X5
{1, {1,
X5+3=X2
9} 5}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 2ème méthode
X1
{2, X4
X1<X2 X4>=X2+3 {6,
6} 7,
8}
X2
{3,
X1 4,
< 8}
X3
X3 X5
{1, {1,
X5+3=X2
9} 5}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance : Rendre le CSP arc-consistant (Fermeture
arc-consistante)
Exemple : 2ème méthode
Le CSP arc-consistant équivalent :
D1={2} ; D2={4} ; D3={9} ; D4={7,8} ; D5={1}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
• X = {X1 , X2 , X3 }
• D1 = D2 = D3 = {rouge, vert}
• C = {X1 ≠ X2 , X1 ≠ X3 , X2 ≠ X3 }
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
• X = {X1 , X2 , X3 }
• D1 = D2 = D3 = {rouge, vert, jaune}
• C = {X1 ≠ X2 , X1 ≠ X3 , X2 ≠ X3 }

X1 X2
{R, {R,
J, J,
V} V}

X3 (X1=R,X2=J,X3=V) est une


{R, solution du problème
J,  CSP consistant
V}
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
• X = {X1 , X2 , X3 }
• D1 = D2 = D3 = {rouge, vert}
• C = {X1 ≠ X2 , X1 ≠ X3 , X2 ≠ X3 }

X1 X3
{R, {R,

V} V}

X2 CSP arc-consistant
{R,

V}
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
• X = {X1 , X2 , X3 }
• D1 = D2 = D3 = {rouge, vert}
• C = {X1 ≠ X2 , X1 ≠ X3 , X2 ≠ X3 }

X1 X3
{R, {R,

V} V}

X2 CSP n’admet aucune solution


{R,  inconsistant

V}
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
• X = {X1 , X2 , X3 }
• D1 = D2 = D3 = {rouge, vert}
• C = {X1 ≠ X2 , X1 ≠ X3 , X2 ≠ X3 }
L’exemple est consistant d’arc alors qu’il ne possède pas de
solution
La consistance d’arc est une consistance locale qui ne garantit pas
l’existence d’une solution
Un CSP qui n’est peut pas être rendu arc-consistant n’est pas
consistant
Un CSP qui est arc-consistant peut être inconsistant
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
1. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) BINAIRES DISCRETS
L’arc-consistance
x<y
x y
{1, {1, u
2, 2, {1,
3, 3, 2,
4, 4, 3,
5, 5, y<z 4,
6, 6, 5,
7} 7} 6,
7}
t y<t z
x<t {1, {1,
2, 2, z<u
3, 3,
4, 4,
5, 5,
6, 6,
7} t<z 7}
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Toutes les méthodes de résolution qui s’utilisent pour les CSP
binaires peuvent être utilisées également pour les CSP n-aire :
1. Résolution naïve (Generate & test)
2. Backtracking
3. Propagation des contraintes :
- Forward checking
- Look ahead

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
V = {X, Y, Z}
D(X) = {1,..,10}, D(Y) = {2,..,20}, D(Z) = {3,..,10}
C = {X +Y = 5, Z ≠ X + 6, Z > 10X – Y}

 Résoudre ce CSP en utilisant les différentes méthodes de


résolution

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice : La méthode de la résolution naïve
Affectation totale :
(X=1,Y=2,Z=3) consistante? C1 non vérifiée
Inconsistante
Affectation totale : (X=1,Y=2,Z=4)

……
Affectation totale consistante = une solution du CSP

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice : Le backtracking
X=1 : tester les contraintes unaires portant sur X
Y=2 : - tester les contraintes unaires portant sur Y
- tester les contraintes binaires (X,Y) :
C1 : contrainte non vérifiée
Y=3 : C1 non vérifiée
Y=4 : C1 vérifiée
Z=3 : - tester les contraintes unaires portant sur Z
- tester les contraintes binaires (X,Z) et (Y,Z)
C2 : vérifiée
- tester les contraintes 3-aires (X,Y,Z)
C3 : non vérifiée
…………..
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice : Le backtracking
X=1 : tester les contraintes unaires portant sur X
Y=4 : C1 vérifiée
Z=3 :
…………..
Z=7 : C2 non vérifiée
Z=8 : C2 vérifiée
C3 vérifiée
 Une solution du CSP : (X=1,Y=4,Z=8)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice : La propagation des contraintes par nœud (Forward
Checking)
Tester s’il y a des contraintes unaires à utiliser pour restreindre les
domaines des variables
X=1 : - Utiliser les contraintes binaires portant sur X (ne seront
réutilisées que s’il y a un retour en arrière pour modifier la valeur
de X) pour filtrer les domaines des variables en relation avec X
C1 : D(Y)={4}
C2: D(Z)={3,…,6,8,9,10}
- utiliser les autres contraintes n-aires portant sur X (doivent
être réutilisées par la suite) pour filtrer les domaines des variables
en relation avec X
C3: D(Z)={8,9,10}

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice : La propagation des contraintes par nœud (Forward
Checking)
Y=4 : - Utiliser les contraintes binaires portant sur Y (non encore
utilisées) pour filtrer les domaines des variables en relation avec Y
- utiliser les autres contraintes n-aires portant sur Y (doivent
être réutilisées par la suite) pour filtrer les domaines des variables
en relation avec Y
C3: D(Z)={8,9,10}
Z=8 : plus de contraintes à utiliser
Une solution du problème (X=1,Y=4,Z=8)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice : La propagation des contraintes par arc (Look ahead)
Utiliser les contraintes unaires pour restreindre les domaines des
variables
X=1 : - Utiliser les contraintes binaires C(X,Vi) pour restreindre les
domaines des variables Vi
C1: D(Y)={4}
C2: D(Z)={3,…,6,8,9,10}
- Utiliser les autres contraintes n-aires C(X,Vj,..,Vk) pour
restreindre les domaines des variables Vj,…,Vk
C3 : D(Z)={8,9,10}
- Utiliser toutes les contraintes portant sur Vi, Vj,…,Vk pour
restreindre les domaines des variables en relation avec ces V
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice : La propagation des contraintes par arc (Look ahead)
Y=4 : - Utiliser les contraintes binaires C(Y,Vi) pour restreindre les
domaines des variables Vi
- Utiliser les autres contraintes n-aires C(Y,Vj,..,Vk) pour
restreindre les domaines des variables Vj,…,Vk
- Utiliser toutes les contraintes portant sur Vi, Vj,…,Vk pour
restreindre les domaines des variables en relation avec ces V
Z=8 : plus de contraintes à vérifier
Une solution du CSP :
(X=1,Y=4,Z=8)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
La nœud-consistance
-La valeur a de la variable X𝑖 est nœud-consistante ssi elle satisfait
toutes les contraintes unaires portant sur la variable X𝑖
(Xi=a) : les contraintes unaires sont satisfaites
Un CSP est nœud-consistant si pour toute variable X𝑖 de X, et pour
toute valeur a de D(Xi ), l’affectation partielle (X𝑖 ,a) satisfait
toutes les contraintes unaires portant sur X𝑖

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
V = {X, Y, Z}
D(X) = {1,..,10}, D(Y) = {2,..,20}, D(Z) = {3,..,10}
C = {X - Y = 5, Z ≠ X + 6, Z ≤ X + 2Y, Z≠8}

Restaurer la consistance de nœud


Restaurer la consistance d’arc

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance de nœud (nœud consistance)
Pour chaque variable du CSP : Des contraintes unaires à
satisfaire
(X,vx) : toutes les affectations de X sont nœud-consistantes (pas de
contrainte unaire portant sur X)
(Z,vz) : Z≠8 : l’affectation (Z,8) n’est pas nœud-consistante
puisqu’elle ne vérifie pas cette contrainte
Le CSP n’est pas nœud consistant
Pour le rendre consistant de nœud : il suffit de modifier le
domaine de Z : D(Z)={2,..,7,9,10}
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance de nœud (nœud consistance)
Le CSP : V={X,Y,Z}
D(X) = {1,..,10},
D(Y) = {2,..,20},
D(Z)={2,..,7,9,10}
Est nœud-consistant

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance d’arc (l’arc-consistance)
Pour chaque variable (Xi,vi) : est-ce qu’elle possède un support
dans les domaines des variables liées à Xi
(X,vx) : on doit trouver une valeur dans D(Y) qui satisfait la
contrainte C1, et une valeur dans D(Z) qui satisfait la contrainte C2
(Y,vy) : on doit trouver une valeur dans D(X) qui satisfait la
contrainte C1
(Z,vz) : on doit trouver une valeur dans D(X) qui satisfait la
contrainte C2
Les contraintes binaires sont les seules à être pris en compte
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance d’arc (l’arc-consistance)
Les contraintes binaires sont les seules à être pris en compte
C1: X-Y=5  D(X)={7,8,9,10} , D(Y)={2,3,4,5}
X
Pour que le CSP soit arc-consistant {1,
2
Y 3
{2, 4
3 5
4 6
5 7
6 8
7…} 9
A. HALLOU PROGRAMMATION PAR CONTRAINTES 10} GI18
2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance d’arc (l’arc-consistance)
Les contraintes binaires sont les seules à être pris en compte
C2: X+6!=Z  D(X)={7,8,9,10} , D(Z)={3,…,10}
Le CSP tel que : D(X)={7,8,9,10} , D(Y)={2,3,4,5} et D(Z)={3,..,10}
est consistant d’arc

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
La K-consistance
K-consistance = (K-1, 1)-consistance
Un réseau est (X,Y)-consistant ssi toute instanciation localement
consistante de X variables peut être étendue à n’importe quelles autres
Y variables supplémentaires
1-consistance=(0,1)-consistance =nœud-consistance
= aucune variable n’est instanciée: contraintes unaires pour
restreindre le domaine de la variable concernée
2-consistance = (1, 1)-consistance
= toute valeur peut s’étendre en un couple de
valeurs compatibles avec les contraintes binaires ou
apparaissent les deux variables
= arc-consistance

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
La K-consistance
K-consistance = (K-1, 1)-consistance
3-consistance = (2, 1)-consistance
= toute paire consistante peut s’étendre à n’importe
quelle 3ème variable
= consistance de chemin (Path Consistency - PC)

Un réseau vérifie la K-consistance forte ssi il est i-consistant pour


tout 1 ≤ i ≤ K

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
La K-consistance forte
1-consistance = contraintes unaires
= nœud-consistance
2-consistance forte = 1-consistance + contraintes binaires
= arc-consistance forte
3-consistance forte = 2-consistance forte + contraintes 3-aires
=chemin consistance forte
K-consistance forte = (K-1)-consistance+contraintes k-aires

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
La K-consistance
1-consistance = contraintes unaires
= nœud-consistance
2-consistance = contraintes binaires
= arc-consistance
3-consistance = contraintes 3-aires
=chemin consistance
K-consistance = contraintes k-aires

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance de nœud (nœud consistance)
Le CSP : V={X,Y,Z}
D(X) = {1,..,10},
D(Y) = {2,..,20},
D(Z)={2,..,7,9,10}
Est nœud-consistant

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance d’arc forte (l’arc-consistance forte)
Tenir compte des domaines qui vérifie la nœud-consistance
D(Z)={3,..,7,9,10}
Les contraintes binaires sont les seules à être pris en compte
Le CSP tel que : D(X)={7,8,9,10} , D(Y)={2,3,4,5} et
D(Z)={3,..,7,9,10} est fortement arc consistant

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance de chemin (chemin consistance 3-
consistance)
Les contraintes 3-aires sont les seules à être pris en compte
(X=vx,Y=vy) : trouver un support dans D(Z) qui respecte C3
(X=vs,Z=vz) : trouver un support dans D(Y) qui respecte C3
(Y=vy,Z=vz) : trouver un support dans D(X) qui respecte C3
SANS TENIR EN COMPTE LES AUTRES CONTRAINTES BINAIRES (Il
se peut que l’affectation (X=vx,Y=vy) viole une contrainte binaire)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance de chemin (chemin consistance 3-
consistance)
Les contraintes 3-aires sont les seules à être pris en compte
(X=vx,Y=vy) : trouver un support dans D(Z) qui respecte C3
(X=1,Y=2) : Z=3<5
(X=vs,Z=vz) : trouver un support dans D(Y) qui respecte C3
(X=1,Z=10) : Y=5 : Z<=11
(Y=vy,Z=vz) : trouver un support dans D(X) qui respecte C3)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Exercice :
Soit le système suivant: P = (V, D, C)
Restaurer la consistance de chemin forte (chemin consistance 3-
consistance forte)
Tenir compte des domaines obtenu pour avoir un CSP fortement arc-
consistant : D(X)={7,8,9,10} , D(Y)={2,3,4,5},D(Z)={3,..,7,9,10}
Les contraintes 3-aires sont les seules à être pris en compte
(X=vx,Y=vy) : trouver un support dans D(Z) qui respecte C3
(X=vs,Z=vz) : trouver un support dans D(Y) qui respecte C3
(Y=vy,Z=vz) : trouver un support dans D(X) qui respecte C3

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
La K-consistance
K-consistance = (K-1, 1)-consistance
Consistance de chemin (Path Consistency - PC)
un CSP (X,D, C) est chemin consistant si :
pour tout triplet (Xi,Xj,Xk) de variables tel qu’il y a une contrainte
les liant et
pour toute paire de valeurs (vi,vj) de D(Xi)x D(Xj)
il existe une valeur vk de D(Xk) telle que l’instanciation partielle
{(Xi,vi),(Xj,vj),(Xk,vk)} satisfait toutes les contraintes de C portant
exclusivement sur Xi, Xj et Xk

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
La K-consistance
K-consistance = (K-1, 1)-consistance
Si un CSP ne peut-être rendu k-consistant il n’est donc pas
consistant
Un CSP k-consistant n’est pas automatiquement consistant : K-
consistance est une consistance locale

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Contraintes globales
Une Contrainte globale est une union de contraintes simples.
-facilitent la modélisation
moins de contraintes nécessaires
-accélèrent la résolution
« on voit plus » si on tient compte de plusieurs
contraintes simples au même temps
des algorithmes efficaces de propagation

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Contraintes globales
Produit scalaire :
ScalProd(X1; ... ; Xn; C1; ... ; Cn; v)
Équivalente à:
σ𝑛𝑖=1 Ci ∗ Xi = 𝑣

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Contraintes globales
Variables différentes deux à deux
AllDifferent(X1; ... ; Xn)
- Remplace (n*n/2) contraintes binaires
- Très souvent utilisée en pratique

D(X1 )= {1,2}, D(X2 )= {2,3},


D(X3 )= {1,3}, D(X4 )= {3,4},
D(X5 )= {2,4,5,6},
D(X6 )= {5,6,7}
AllDifferent(X1, . . . ,X6)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
Contraintes globales
Contrainte « disjunctive »
disjunctive(X1, ..., Xn ; P1, ... ,Pn)
remplace : Xi + Pi ≤ Xj ou Xj + Pj ≤ Xi
Équivalent à : n tâches avec {Xi, Pi, Di} i≤n
comme les dates du début, les temps d’exécution, les dates de fin
doivent être exécutées sans chevauchement,
domaine de Xi est [Xi, Di - Pi]

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


2. RÉSOLUTION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP) N-AIRES DISCRETS
CSP dynamique (DCSP)
CSP auquel on peut à tout moment appliquer :
* une restriction (ajout d'une contrainte)
CSP(X, D, C) →+ CSP'(X', D', C + c)
* une relaxation (retrait d'une contrainte)
CSP(X, D, C) →- CSP'(X', D', C - c)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

CSP continu
= Les domaines des variables sont des intervalles
Utilité des intervalles
- manipuler des données imprécises
•U = 12 V ± 0.025 ∈ [11.975, 12.025]
- représenter les réels
• 1 + 1/3 ∈ [1.3333333, 1.33333334]
- raisonner sur des ensemble de valeurs
• x ∈ [3,9] ∧ y ∈ [2,12] ⇒ x + y ∈ [5,21]

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

Règles de calcul :
Soit ⊙ un opérateur binaire parmi {+,−, ∗, /} et
[a, b] ⊙ [c, d] = {x ⊙ y tel que a ≤ x ≤ b et c ≤ y ≤ d} alors :
X + Y = [a, b] + [c, d]
= [a + c, b + d]
X - Y = [a, b] - [c, d]
= [a - d, b - c]
X * Y = [a, b] * [c, d]
= [min(a*c, a*d, b*c, b*d), max(a*c, a*d, b*c, b*d)]
X / Y = [a, b] / [c, d]
= [a, b] * [1/d, 1/c] si 0 ∉ [c, d]

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

Règles de calcul :
Exemples:
[-2, 3] + [1,4] =
[-1, 7]
[-2, 3] - [1,4] =
[-6, 2]
[-2, 3] * [1,4] =
[-8, 12]
[-2, 3] / [1,4] =
[-2, 3]

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

Règles de calcul :
Propriétés classiques
0 + X = [0, 0] + [a, b] = X
1 * X = [1, 1] * [a, b]
= [min(a, b), max(a, b)] = [a, b]
=X
X + X = [a, b] + [a, b]
= [a + a, b + b] = [2 * a, 2 * b]
=2*X
Particularités
X - X = [a, b] - [a, b] = [a - b, b -a]
≠ 0 ([0, 0])
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
3. RÉSOLUTION DES CSP CONTINUS

Règles de calcul :
+ et * sont commutatives et associatives
* est sous-distributive par rapport à + :
A * (B + C) ⊆ A* B + A * C
(distributivité lorsque B * C > 0)
Exemple:
A = [-2, -1], B = [1, 2], C = [-1, 3]
-A * (B + C) = [-2, -1]*([1, 2]+[-1, 3])
= [-2, -1]*[0, 5] = [-10, 0]
-A * B + A * C = [-2, -1]*[1, 2]+[-2, -1]*[-1, 3]
= [-4, -1]+[-6, 2] = [-10, 1]
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
3. RÉSOLUTION DES CSP CONTINUS

CSP continu :
Un CSP à intervalles (ou ICSP) est un triplet (X, D, C) où
-X = {X1 , …, Xn} est un ensemble de n variables numériques
-D = {D1 , …, Dn} est l'ensemble des domaines des n variables
avec Di = dom(Xi) est un intervalle ou une union d'intervalles
-C = {C1 , …, Cm} est un ensemble de contraintes

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

La 2-B-consistance:
approximation de la consistance d’arc
⋄ La contrainte Cj est 2B-Consistante pour la variable Xi de domaine
Di= [a, b], s’il existe des valeurs dans les domaines de toutes les
autres variables qui satisfont Cj lorsque Xi est instanciée avec a et
lorsque Xi est instancié avec b

Un CSP est 2B-Consistant ssi toutes ses contraintes sont 2B–
Consistantes

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

La 2-B-consistance:
La 2-B-Consistance est une consistance plus faible que la
consistance d’arc :
⋄ La consistance d’arc impose une condition sur tous les éléments
des domaines
⋄ La 2-B-Consistance impose une condition aux seules bornes de
l’intervalle qui contient les domaines

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

La 2-B-consistance:
Exemple :
P = {{x, y}, {Dx, Dy}, {x = y*y}} avec
Dx = [1, 4], Dy = [−2,+2]
P est 2-B-Consistant, mais pas consistant d’arc car la valeur 0 de
Dy n’a pas de support dans Dx
2-B-consistance :
x=y*y : * x=1: y=1 donc x=1 a un support dans le domaine de y
* x=4 : y=2 ou -2 : x=1 a un support dans le D(y)
* y=-2: x=4 donc y=-2 a un support dans le D(x)
* y=2 : x=4 donc y=2 a un support dans le D(x)
Donc CSP 2-b-consistant
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
3. RÉSOLUTION DES CSP CONTINUS

Décomposition d’un ICSP :


(Hyvönen, 1992)
Pour traiter un ICSP
 Décomposer les expressions de contraintes complexes en
primitives qui représentent des opérateurs de comparaison
(primitives principales) ou des opérateurs arithmétiques (primitives
secondaires)

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

Décomposition d’un ICSP :


A chaque opérateur de comparaison et à chaque opérateur
arithmétique, on associe des règles de consistance.

Exemples : X = [a, b], Y = [c, d], Z = [e, f]

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

Résolution de ICSP :
- Etape 1 : Déterminer les variables de cycle
- Etape 2 : Expression en fonction des variables hors cycle
- Etape 3 : Elimination des règles calculant une variable de cycle
- Etape 4 : Ajout des règles obtenues à l’étape 2

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18


3. RÉSOLUTION DES CSP CONTINUS

Résolution de ICSP :
Exemple
c1 : X + T = Y ; c2 : Y + T = Z
1) déterminer les variables des cycles : Y et T
2) expression en fonction des variables hors cycles :
Y = (X + Z) /2 et T = (Z - X) /2
3) élimination des règles calculant une variable de cycle :
Y = X + T, Y = Z - T, T = Y - X, T = Z - Y
4) ajout des règles obtenues en 2 :
Y = (X + Z) / 2, T = (Z - X) / 2, X = Y - T, Z = Y + T

Avec : dom(X) = [1, 1], dom(Y) = [1, 11], dom(T) = [0, 10],
dom(Z) = [11, 11]
 Solution : x =1, y = 6, t = 5, z = 11
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
3. RÉSOLUTION DES CSP CONTINUS

Résolution de ICSP :
Exemple
dom(X) = [1, 10], dom(Y) = [1, 11], dom(T) = [0, 10],
dom(Z) = [-1, 11]
c1 : X + T = Y ; c2 : Y + T = Z
X=Y-T; T=Y-X; Y=X+T (3)
Y=Z-T; Z=Y+T; T=Z-Y(3)
1) déterminer les variables des cycles : Y et T
2) expression en fonction des variables hors cycles :
T-Y=X et T+Y=Z  2*T=X+Z  T=(X+Z)/2
T-Y-T-Y=X-Z  -2*Y=X-Z  Y=(Z-X)/2
3) élimination des règles calculant une variable de cycle :
4) ajout des règles obtenues en 2 :
X=Y-T; Z=Y+T; T=(X+Z)/2 ; Y=(Z-X)/2
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
3. RÉSOLUTION DES CSP CONTINUS

Résolution de ICSP :
Exemple
dom(X) = [1, 10], dom(Y) = [1, 11], dom(T) = [0, 10],
dom(Z) = [-1, 11]
X=Y-T; Z=Y+T; T=(X+Z)/2 ; Y=(Z-X)/2
X=[1,10]∏([1,11]-[0,10])=[1,10] ∏[-9,11]=[1,10]
Z=[-1,11] ∏([1,11]+[0,10])=[-1,11] ∏[1,21]=[1,11]
T=[0,10] ∏([1,10]+[1,11])/[2,2])=[0,10] ∏([2,21]*[1/2,1/2])
=[0,10] ∏[1,10]=[1,10]
Y=[1,11] ∏([1,11]-[1,10]/[2,2])=[1,11] ∏([-9,10]*[1/2,1/2])
=[1,11] ∏[-4,5]=[1,5]
Les solutions du problèmes se trouvent dans les intervalles suivants
dom(X) = [1, 10], dom(Y) = [1, 5], dom(T) = [1, 10],
dom(Z)=[1,11] : X=1; Y=2; T=1; Z=3
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18
Solveurs PPC
* Gratuites (académiques)
• Choco
• Gecode
• AIspace
• JaCoP

* Payants
• ILOG CP
• CPLEX
A. HALLOU… PROGRAMMATION PAR CONTRAINTES GI18
FIN

A. HALLOU PROGRAMMATION PAR CONTRAINTES GI18

Vous aimerez peut-être aussi