Vous êtes sur la page 1sur 40

Cours Fondement de l’intelligence artificielle (IA)

Chapitre 5: Satisfaction de contraintes


2 LBC

Année universitaire : 2020/2021


1
Plan

• Problèmes de satisfaction de contraintes

• Backtracking search

• Amélioration de Backtracking search

2
Problème de satisfaction de contraintes

• Problèmes de recherche classiques :


▪ Un état est une boite noire
▪ N'importe quelle structure de données qui contient un test pour le but, une fonction coût
chemin, des opérateurs
• Problèmes de satisfaction de contraintes :
▪ Un état est défini par un ensemble de variables Xi , dont les valeurs appartiennent au
domaine Di
▪ Le test pour le but est un ensemble de contraintes qui spécifient les combinaisons
autorisées pour les valeurs sur des sous-ensembles de variables

3
Problème de satisfaction de contraintes

• Formellement, un problème de satisfaction de contraintes (ou CSP pour Constraint


Satisfaction Problem) est défini par:
▪ Un ensemble fini de variables X1, …, Xn. Chaque variable Xi a un domaine Di de valeurs
permises.
▪ Un ensemble fini de contraintes C1, …, Cm sur les variables. Une contrainte restreint les
valeurs pour un sous-ensemble de variables.
• Un état d’un problème CSP est défini par une assignation de valeurs à certaines variables ou à
toutes les variables. {Xi=vi, Xj=vj,…}.
• Une assignation qui ne viole aucune contrainte est dite consistante ou légale.
• Une assignation est complète si elle concerne toutes les variables.
• Une solution à un problème CSP est une assignation complète et consistante. 4

• Parfois, la solution doit en plus maximiser une fonction objective donnée.


Exemple 1

• Soit le problème définit comme suit:


▪ Ensemble de variables V = {X1, X2, X3}
▪ Un domaine pour chaque variable D1=D2=D3={1,2,3}
▪ Une contrainte spécifiée par l’équation linéaire X1+ X2= X3
• Il y a trois solutions possibles:
▪ (1, 1, 2)
▪ (1, 2, 3)
▪ (2, 1, 3)

5
Exemple 2: Colorier une carte
• On vous donne une carte de l’Australie :

• On vous demande d’utiliser seulement trois couleurs (rouge, vert et bleu) de sorte que deux
états frontaliers n’aient jamais les mêmes couleurs.
• On peut facilement trouver une solution à ce problème en le formulant comme un problème 6

CSP et en utilisant des algorithmes appropriés pour la résolution des CSPs.



Exemple 2: Colorier une carte
• Formulation du problème CSP:

• Les variables sont les états :V={ WA, NT, Q, NSW, V, SA, T}
• Le domaine de chaque variable est l’ensemble des trois couleurs : {R, G, B}

• Contraintes :Les régions frontalières doivent avoir des couleurs différentes 7


WA≠NT, WA≠SA, NT≠Q, NT≠SA, SA≠Q, SA≠NSW, SA≠V, Q≠NSW, NSW≠V
Exemple 2: Colorier une carte

• Solution:

8
Graphe de contraintes
• Pour des problèmes avec des contraintes binaires (c.-à-d., entre deux variables), on peut
visualiser le problème CSP par un graphe de contraintes.
• Un graphe de contraintes est un graphe dont les nœuds sont des variables (un nœud par
variable) et les arcs sont des contraintes entre les deux variables.

9
Exemple: Problème des N reines

• Positionner N reines sur un échiquier n ×n de sorte qu’aucune d’entres elles n’est en position
d’attaquer une autre

• Exemple : Problème avec 4 reines


• Une reine peut attaquer une autre si elles sont toutes les deux sur la même ligne, la même
colonne ou la même diagonale.
10
Exemple: Problème des N reines

• Modélisation comme problème CSP:

• Variables : Q1… Qn correspondant aux colonnes 1, …, N.


• Domaines : chaque variable a le domaine de valeurs {1, …., N}
La colonne i a la valeur k si la reine (Queen) dans la colonne i est dans la rangée k.
• Contraintes : Pas deux reines sur même ligne ou diagonale : Qi ≠ Qj et |i-j| ≠ |Qi-Qj|
11
Exemple: Problème des 4 reines

• Détermine l’ensemble des variables, leurs domaines et les contraintes

12
Exemple: Problème des 4 reines

• Le problème peut se résumer à déterminer sur quelle ligne se trouve la reine placée sur la
colonne i.
• La modélisation consiste à associer une variable Xi à chaque colonne i de telle sorte que Xi
désigne le numéro de ligne sur laquelle placer la reine de la colonne i.

13
Exemple: Problème des 4 reines

14
Problèmes CSP du monde réel

• Problèmes d'affectation (exp. qui enseigne quel cours?)


• Problèmes d'emploi du temps
• Configuration de matériels
• Planification pour les transports
• Planification dans les usines
• Allocation de salles
• ……

15
Formulation de la recherche standard

• Les états sont définis par les valeurs des variables déjà affectées
• Etat initial : un ensemble d'affectations vides {}
• Opérateurs : attribuer une valeur à une variable non encore affectée, de façon cohérente (vis
a vis des contraintes) à l'affectation actuelle
• Test-but: toutes les variables sont affectées

16
Formulation de la recherche standard

• Cet algorithme de recherche marche pour tous les CSPs

• Chaque solution apparait à une profondeur de n s'il y a n variables


Utiliser la recherche en profondeur d'abord

• n : nombre de variables; d : taille du domaine des variables;

• À une profondeur p, on a (n-p) d successeurs pour chaque nœud

▪ n!dn feuilles

▪ alors qu'il n'y a que dn affectations possibles!


17

Backtracking search
Backtracking search

• L’affectation des variables est commutative


L'ordre dans lequel on affecte les variables n'a pas d'importance
• Il n‘y a donc besoin de ne considérer qu'une seule variable par nœud de l'arbre de recherche
b = d, et donc dn feuilles
• Recherche en profondeur d'abord avec l'affectation d'une variable à la fois est appelée
recherche par retour arrière (backtracking search)
• backtracking search : algorithme de base pour la résolution des problèmes CSP

18
Backtracking search

• Principe :
Considérer une seule variable à assigner à chaque niveau et reculer (backtrack) lorsqu'aucune
assignation compatible n’est possible.

19
Backtracking search

20
Backtracking search

21
Backtracking search

22
Backtracking search

23
Backtracking search

24
Amélioration de Backtracking search
• Sans heuristiques, l ’algorithme backtracking search est limité
▪ Permet de résoudre un problème de 25 reines

• Des heuristiques générales peuvent améliorer l’algorithme significativement


▪ Comment choisir la variable à affecter ensuite?
Choisir judicieusement la prochaine variable
SELECT-UNASSIGNED-VARIABLE
▪ Comment ordonner les valeurs des variables?
Choisir judicieusement la prochaine variable à assigner
ORDER-DOMAIN-VALUES
▪ Est-il possible de détecter un échec inévitable plus tôt?
Comment tirer avantage de la structure du problème?
Détecter les assignations conflictuelles et réduire les domaines
INFERENCES
25
Comment choisir la variable à affecter
• Heuristique des valeurs minimum restantes (Minimum Remaining Value (MRV) ou
Most Constrained Variable (MCV))

→ choisir une des variables ayant le moins de valeur « légale » possible

26
Comment choisir la variable à affecter

• Si plusieurs variables ne peuvent pas être départagées par l'heuristique MRV


• Heuristique du degré
→ choisir la variable qui a le plus de contraintes a respecter parmi les variables restantes

27
Comment ordonner les valeurs
• Pour une variable donnée, choisir une valeur qui invalide le moins de valeurs possibles pour
les variables non encore assignées.
• Etant donné une variable, choisir celle qui a la valeur la moins contraignante: la variable qui
empêche le moins d’affectation possibles sur les variables restantes.

28

• Ces heuristiques permettent de résoudre un problème de 1000 reines


Est-il possible de détecter un échec inévitable?
Algorithme Forward-Checking

• L’idée de forward-checking (vérification anticipative) est :


▪ vérifier les valeurs compatibles des variables non encore assignées
▪ terminer la récursivité (conflit) lorsqu’une variable (non encore assignée) a son ensemble
de valeurs compatibles qui devient vide

29
Algorithme Forward-Checking
• Supposons que l’on choisisse au départ la variable WA (première étape de la récursivité de
backtracking-search). Considérons l’assignation WA=Rouge. On voit ici le résultat de
forward-checking.

30
Algorithme Forward-Checking

• Supposons maintenant que l’on choisisse la variable Q à la prochaine étape de la récursivité


de backtracking-search. Considérons l’assignation Q=Vert. On voit ici le résultat de forward-
checking.

31
Algorithme Forward-Checking

• Supposons maintenant que l’on choisisse la variable V à la prochaine étape de la récursivité


de backtracking-search. Considérons l’assignation V=Bleu. On voit ici le résultat de forward-
checking.

32
Propagation de contraintes
• Forward checking propage l’information d’une variables assignée vers les variables en
contraintes avec elle, mais ne propage pas l’effet des modifications de ces dernières.

• Revenons à l’étape de backtracking-search, après que nous ayons choisi la variable Q et


assigné la valeur ‘Green’.
▪ On voit ici le résultat de forward-checking
▪ Forward-checking ne propage pas la modification du domaine SA vers NT pour constater
que NT et SA ne peuvent pas être en bleu ensemble!
• La propagation des contraintes permet de vérifier ce type de conflits dans les assignations de 33
variables.
Arc consistency (AC-3)
• Arc consistency est la forme de propagation de contraintes la plus simple
▪ Vérifie la consistance entre les arcs.
▪ C-à-d., la consistance des contraintes entre deux variables.

• L’arc X → Y est consistante si et seulement si pour chaque valeur x de X il existe au moins


une valeur permise y de Y.

• 34
Arc consistency (AC-3)
• Arc consistency est la forme de propagation de contraintes la plus simple
▪ Vérifie la consistance entre les arcs.
▪ C-à-d., la consistance des contraintes entre deux variables.

• L’arc X → Y est consistante si et seulement si pour chaque valeur x de X il existe au moins


une valeur permise y de Y.

• 35
Arc consistency (AC-3)
• Arc consistency est la forme de propagation de contraintes la plus simple
▪ Vérifie la consistance entre les arcs.
▪ C-à-d., la consistance des contraintes entre deux variables.

• L’arc X → Y est consistante si et seulement si pour chaque valeur x de X il existe au moins


une valeur permise y de Y.

• Si X perd une valeur, les voisins de X doivent être revérifiés 36


Arc consistency (AC-3)
• Arc consistency est la forme de propagation de contraintes la plus simple
▪ Vérifie la consistance entre les arcs.
▪ C-à-d., la consistance des contraintes entre deux variables.

• L’arc X → Y est consistante si et seulement si pour chaque valeur x de X il existe au moins


une valeur permise y de Y.


• •
Si X perd une valeur, les voisins de X doivent être revérifiés
Repère un échec avant la vérification en avant
37

• Peut être lancé comme un préprocesseur ou après chaque affectation


Algorithme Arc consistency (AC-3)

38
Types de problèmes CSP

• CSP avec des domaines finis et discrets.


• CSP Booléens: les variables sont vraies ou fausses.
• CSP avec des domaines continus et infinis (exp: problèmes d’ordonnancement avec des
contraintes sur les durées).
• CSP avec des contraintes linéaires (exp: X1< X2+ 10).
• CSP avec des contraintes non linéaires(exp :log X1< X2).
• ….
• Les problèmes CSP sont étudiées de manière approfondies en recherche opérationnelle.

39
Conclusion
• Les problèmes CSP sont des problèmes de recherche dans un espace d’assignations de
valeurs à des variables.
• Backtracking-search revient à une recherche en profondeur d’abord avec une variable
assignée par nœud et qui recule lorsqu’aucune assignation compatible.
• L’ordonnancement des variables et des assignations de valeurs aux variables joue un rôle
significatif dans la performance.
• Forward checking empêche les assignations qui conduisent à un conflit.
• La propagation des contraintes détecte les incompatibilités locales.
• Les méthodes les plus efficaces exploitent la structure du domaine.
• Application surtout à des problèmes impliquant l’ordonnancement de tâches.
40

Vous aimerez peut-être aussi