Vous êtes sur la page 1sur 13

Résumé du cours précédent

Introduction à la Programmation par I Définition du Problème de Satisfaction de Contraintes


Contraintes (CSP)
I Domaines, contraintes binaires ou n-aires
Cours 3. Résolution des CSPs. I optimisation par dichotomie
I Exemples : Coloration, Sudoku, N-reines,
Lionel Eyraud-Dubois I Consistance locale
I Arc-consistance
INRIA Bordeaux—Sud-Ouest I Différents algorithmes, analogie des copains
I K -consistance
2015-2016 I consistance aux bornes pour les domaines intervalles

1 / 48 2 / 48

Lignes directrices Notations et définitions

Algorithmes de résolution exacte


n — nombre des variables
« Paramétrage » des algorithmes e — nombre des contraintes
d — borne supérieure pour la taille des domaines
Stratégies heuristiques
Stratégies et redémarrage
La recherche locale Une instanciation I = {hxi , vi i}i∈K est une affectation des
valeurs {vi }i∈K aux variables {xi }i∈K .
Symétrie Une instanciation est complète si K = {1, . . . , n}.

3 / 48 4 / 48
Résolution trivial Backtrack chronologique
Algorithme 1 : Générer et tester
pour chaque instanciation complète I faire
si I vérifie toutes les contraintes alors
retourner I
retourner « pas de solution »

Algorithme 2 : Backtrack(I,k ,v )
I ← I ∪ {hxk , v i};
si I vérifie toutes les contraintes alors
si I est complète (k = n) alors I est une solution ; sortie ;
... sinon
pour chaque a ∈ Dxk +1 faire Backtrack (I,k + 1,a) ;

Complexité : O(ed n ) Complexité : O(ed n ), mais mieux en pratique

5 / 48 6 / 48

Forward Checking Forward Checking : les N reines


Algorithme 3 : ForwardCheck(I,D,k ,v )
I ← I ∪ {hxk , v i};
supprimer de D toutes les valeurs incompatibles avec xk = v ;
si il n’existe pas de domaine vide alors
si I est complète alors I est une solution ; sortie ;
sinon
pour chaque a ∈ Dxk +1 faire
ForwardCheck (I,D,k + 1,a)

7 / 48 8 / 48
Maintaining Local Consistency Comparaison des algorithmes
Algorithme 4 : MLC(I,D,k ,v )
I ← I ∪ {hxk , v i};
supprimer {hxk , ai}a∈Dxk ,a6=v de D et propager;
si il n’existe pas de domaine vide alors
si I est complète alors I est une solution ; sortie ;
sinon
pour chaque a ∈ Dxk +1 faire
MLC (I,D,k + 1,a);
supprimer {hxk +1 , ai} de D et propager;

9 / 48 10 / 48

Problèmes avec des domaines non-finis Lignes directrices


S’il y a des domaines-intervalles, à lieu d’instancier les
variables on divise les domaines (généralement en deux).
Algorithmes de résolution exacte
Soit Dx = [x, x], alors

on choisit v ∈ Dx « Paramétrage » des algorithmes

Stratégies heuristiques
Stratégies et redémarrage
Dx = [x, v ] Dx = (v , x] La recherche locale

Symétrie

11 / 48 12 / 48
Options des algorithmes Heuristiques pour l’ordre des variables

Il y en a deux types :
I Dans les algorithmes présentés, il y a des choses qui ne
I Statiques — l’ordre est fixé avant de commencer
sont pas précisées : l’algorithme.
I dans quel ordre on instancie les variables ; I Dynamiques — l’ordre peut varier pendant l’algorithme.
I dans quel ordre on prend les valeurs ; Objectifs possibles :
I quelle consistance locale on maintient.
I Minimiser la taille de l’espace de recherche parcouru
I Ces décisions (appelées « heuristiques ») sont
extrêmement importantes pour l’efficacité de l’algorithme. I Minimiser la profondeur moyenne d’une branche
I Si on s’engouffre dans une branche sans solutions, on peut I Minimiser le nombre de branchements
passer énormément de temps avant de s’en apercevoir. I ...
I Les premières décisions sont particulièrement importants
(quand on est en haut de l’arbre de recherche). Les heuristiques statiques sont basées sur des propriétés du
graphe de contraintes du problème, notamment sa largeur et
largeur bande.

13 / 48 14 / 48

Largeur d’un graphe Heuristique MWO I


Définitions Theorem
Étant donné un ordre sur les noeuds, la largeur d’un noeud i Soit w la largeur minimum du graphe de contraintes d’un CSP
dans un graphe est le nombre de noeuds adjacents à i et qui binaire. Alors sa k -consistance forte induit sa consistance
apparaissent avant i dans l’ordre. globale si k > w.
Étant donné un ordre sur les noeuds, la largeur d’un graphe est I En pratique, c’est coûteux de maintenir la k -consistance
la plus grande largeur de ces noeuds. forte.
I Mais, si les largeurs des noeuds dans le graphe de
1 7
contraintes varient beaucoup, instancier les variables selon
2 3 3 2
un ordre qui donne la plus petite largeur du graphe est une
4 1
bonne heuristique.
5 6 4 5
I Cette heuristique s’appelle MWO (Minimum Width
7 6
Ordering).
Largeur = 3 (noeuds 4, 5, 6, 7) Largeur = 5 (noeud 7)
I Une contrainte n-aire peut être représentée par des arêtes
entre chaque paire de ces variables.

15 / 48 16 / 48
Heuristique MWO II Heuristique MDO

Pour appliquer l’heuristique MWO, il faut trouver l’ordre qui I Ici, on instancie les variables selon l’ordre décroissant de
donne la largeur minimum du graphe de contraintes. leurs degrés dans le graphe de contraintes.
I Cette heuristique s’appelle MDO (Maximum Degree
Algorithme 5 : Algorithme pour trouver cet ordre Ordering).
Entrées : X — ensemble des variables; I Cette heuristique une approximation de MWO, qui évite le
C — ensemble des contraintes calcul de la largeur minimum du graphe des contraintes.
Sorties : O — ordre sur les variables
pour i ← n a 1 faire
x 0 ← Nœud de plus petit degré dans (X , C); 1 MDO1 = (4, 1, 2, 3, 5, 6, 7)
C ← C \ {C incidentes à x 0 }; 2 3 (largeur = 3) ;
X ← X \ {x 0 }; 4
MDO2 = (4, 1, 5, 6, 2, 3, 7)
Oi ← x 0 ; 5 6
(largeur = 4).
7

17 / 48 18 / 48

Largeur bande d’un graphe Heuristique MBO


Définitions
Étant donné un ordre sur les noeuds, la largeur bande d’un I Pour minimiser le nombre de backtracks inutiles, on
graphe est la distance maximum entre deux noeuds adjacents.
instancie les variables selon un ordre qui donne une petite
La distance ici est la différence entre les numéros des noeuds. largeur bande du graphe de contraintes.
I Cette heuristique s’appelle MBO (Minimum Bandwidth
1 7 Ordering).
2 6 2 3
I Bonne heuristique pour les graphes de contraintes avec
7 5
des noeuds de petit degré.
3 5 4 6
I C’est un peu problématique d’utiliser MBO en pratique.
4 7
I La propagation est généralement plus efficace pour
Largeur bande = 5 (noeuds 1 et 6, 2 Largeur bande = 3 (noeuds 2 et 5, 3 minimiser le nombre des backtracks inutiles.
et 7) ; et 6, 4 et 7) ; I Il n’existe pas d’algorithme efficaces pour trouver la plus
petite largeur bande d’un graphe.

19 / 48 20 / 48
Ordre dynamique de variables Ordre dynamique de variables

dom(x|p) : taille du domaine de x après les affectations p


Choix possibles de variable
Objectifs
I celle qui a le plus petit domaine : min dom(x|p)
I Minimiser l’espérance du nombre de branchements
I celle qui est impliquée dans le plus grand nombre de
I Minimiser l’espérance de la profondeur des branches
contraintes : max degré(x)
dom(x|p)
Principe
I Combinaison des deux critères : min degré(x)

First-fail : on choisit des variables difficiles à satisfaire, on ne I Taille du domaine après propagation :
retarde pas les décisions difficiles X X
min dom(y |p ∪ {x = a})
Si le CSP est peu contraignant, l’heuristique opposée peut être
a∈dom(x) y
utilisée.
I En fonction de l’impact :
I On calcule l’effet de réduction de domaine de chaque
variable au cours de l’algorithme
I On choisit la variable qui a eu le plus grand effet jusque là
21 / 48 22 / 48

Ordre dynamique de valeurs Choix de consistance locale

I La consistance locale doit être rentable (on doit passer


L’ordre de valeurs est moins important que l’ordre de variables moins de temps à détecter qu’une branche ne mène à
(moins d’impact sur les temps de calcul) aucune solution qu’à explorer cette branche).

Principe
I On utilise la consistance locale qui donne le meilleur
rapport
On choisit la valeur qui a plus de chance de « réussir » coût
Choix de valeur puissance

I celle qui a le plus de supports ;


I Donc, pour le problème en question il faut avoir une idée
I celle qui laisse le plus de valeurs pour d’autres variables
I de la puissance des consistances locales différentes
(nombre moyen des valeurs éliminées),
après la propagation. I du coût des consistances locales différentes (complexité
temporelle en pratique).
I Pour avoir des estimations, on fait souvent une expérience.

23 / 48 24 / 48
Lignes directrices Les méthodes exactes et heuristiques

Méthodes exactes
Algorithmes de résolution exacte I Complètes — une garantie de trouver une solution
(optimale) si elle existe
« Paramétrage » des algorithmes I Peuvent prendre beaucoup de temps

Méthodes heuristiques
Stratégies heuristiques
Stratégies et redémarrage I Basées sur le « bon sens » sur ce qu’il semble mieux à
La recherche locale faire
I Réponse à un problème de décision : « Oui » ou
« Probablement, non »
Symétrie
I Pour un problème d’optimisation donnent une solution
sans une garantie d’optimalité

25 / 48 26 / 48

Stratégies Choix de portfolio

Observation
Les algorithmes de « backtrack » sont fragiles : bonnes
performances sur certaines instances, mauvaises sur d’autres Types de choix
Portfolios Offline Portfolio adapté à une classe de problèmes
Étant donné un ensemble d’algorithmes {A1 , A2 , ...}, un Online Portfolio adapté à une instance particulière
portfolio est une séquence d’algorithmes et de temps limites :

P = [(Ak1 , t1 ), (Ak2 , t2 ), . . . , (Akm , tm )] Exemples


I Consistance locale de plus en plus forte
Exemples I Différentes heuristiques de recherche

I stratégie de redémarrage P = [(A, t1 ), (A, t2 ), . . . , (A, tm )]


I algorithme unique P = [(A, d)]

27 / 48 28 / 48
Stratégies de redémarrage Recherche locale : introduction
I P = [(A, t1 ), . . . , (A, tm )] pour une séquence (t1 , t2 , . . . , tm )
I Pour un algorithme de backtrack A avec des choix Schéma
aléatoires (variables, valeurs, ...)
On choisit une solution initiale s;
Stratégie fixe répéter
On choisit une autre solution s0 d’un voisinage N(s) de s;
I Si fx (t) est la probabilité que A termine en temps t pour s ← s0 ;
une instance x
jusqu’à s0 satisfait une condition d’arrêt;
I Stratégie optimale : (tx , tx , tx , . . . ) pour une valeur tx
I Spécifique à une instance particulière Remarques

Stratégies universelles
I Normalement, une fonction f est utilisée pour comparer les
solutions. On choisit toujours s0 qui est mieux que s selon
I Conçues pour être utilisées sur n’importe quelle instances f.
I Stratégie exponentielle : (1, r , r 2 , r 3 , r 4 , . . . ) I Une solution s peut être partielle ou complète. Souvent,
I Stratégie de Luby : S0 = (1), Si+1 = (Si , Si , 2 ∗ last(Si )) elle complète.
(1, 1, 2, 1, 1, 2, 4, 1, 1, 2, 1, 1, 2, 4, 8, ...)
29 / 48 30 / 48

Recherche locale : points positifs Recherche locale : points négatifs

I Les mauvaises décisions peuvent être réparées sans le


backtrack
I L’espace de la recherche à chaque itération est petit I Incomplète
I Il est souvent possible d’évaluer une solution rapidement I On ne peut pas utiliser la consistance et la propagation
(fonction f )
I Specifique au problème
I Le passage d’une solution à une autre dans le voisinage
est souvent très rapide
I La rapidité de la méthode la rend utilisable pour des
problèmes complexes et de grande taille

31 / 48 32 / 48
Fonction de coût Voisinage
Caractéristiques
I Toutes les solutions doivent être atteintes
Caractéristiques I Voisinage ne doit être ni trop petit ni trop grand
I Peu de solutions dans N(s) doivent avoir la même valeur
I La valeur f (s0 ) − f (s) doit pouvoir être calculée rapidement Exemples génériques
I La partie de f concernant l’optimisation doit être k -assign Les valeurs de k variables au plus sont différentes
comparable à la partie concernant la réalisabilité k -modify Les valeurs sont distantes d’au plus k
k -swap Les valeurs de k variables au plus sont échangées
Exemples
I Le nombre (pondéré) de contraintes violées Quelle solution choisir dans le voisinage
I La somme des quantités de violation des contraintes Première descente — première rencontrée qui réduit le coût
Descente aléatoire — aléatoire parmi celles qui réduisent le
coût
Descente la plus profonde — celle qui réduit le plus le coût
33 / 48 34 / 48

Sortir des minimums locaux Lignes directrices


Randomisation
I Redémarrage par une solution aléatoire
I Modification aléatoire d’une partie de la solution Algorithmes de résolution exacte
I Choisir aléatoirement une solution dans le voisinage
« Paramétrage » des algorithmes
Élargissement du voisinage
I Exemple : k -assign → k + 1-assign Stratégies heuristiques
Stratégies et redémarrage
Adaptation du coût La recherche locale
I Exemple : on augmente le coût des contraintes violées et
on diminue le coût des contraintes satisfaites Symétrie

Utilisation de l’histoire de la recherche


I Exemple : Tabu-search — on se souvient des n derniers
pas effectués, et on interdit d’y retourner
35 / 48 36 / 48
Symétrie dans les CSP Symétrie des variables : un exemple

Variantes de la symétrie
x3 x5
I Variables sont « échangeables »
I Valeurs sont « échangeables »
I Symétrie des paires « variable-valeur »
x7 x1 x8 x2
symétrie
Conséquences de la symétrie horizontale
I L’arbre de la recherche contient plusieurs sous-arbres
équivalents x4 x6
I Si un sous-arbre ne contient pas de solution, les
sous-arbres équivalents n’en ont pas aussi
I Ne pas reconnaître les sous-arbres équivalents mène à la

symétrie
verticale
recherche inutile

37 / 48 38 / 48

Symétrie de valeurs : exemple de 3-coloration Symétrie de variables : exemple de 4-reines

x1 x2 Une solution Mapping


x1 x2 x3 x4
x1 =1 →
x2 =2 → 1 Q
x3 =2 →
x3 x4 x4 =1
Autre solution
2 Q
x5 =3
x1 =1
x2 =2 3 Q
x3 =2
x5 4 Q
x4 =1
x5 =3

39 / 48 40 / 48
Symétrie de variables : exemple de 4-reines Symétrie : définition formelle

Affectation partielle Pour un CSP hX, D, Ci, avec


x1 x2 x3 x4 x1 = 1
I X l’ensemble des variables {x1 , . . . , xn }
I D l’ensemble de domaines {Dx1 , . . . , Dxn }
1 Q Affectation symétrique I
S
Soit D l’union des domaines D = x∈X Dx (ensemble des
x1 = 4 valeurs)
2
Une symétrie de P
3 x1 = 1 x1 6= 1
Est une permutation de l’ensemble X × D qui préserve
l’ensemble de solutions de P
4 Q
x1 = 4 x1 6= 4 Cas particuliers

symétrie horizontale
I Symétrie de variables σ(x, v ) = (σ 0 (x), v )
I Symétrie de valeurs σ(x, v ) = (x, σ 0 (v ))

40 / 48 41 / 48

Symétrie variables-valeurs : exemple de 4-reines Élimination (diminution) de la symétrie


x1 x2 x3 x4
1 1 2 3 4
2 5 6 7 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
I Reformuler le modèle
3 9 10 11 12 I Exemple : variables dont les valeurs sont des ensembles
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
(packing)
4 13 14 15 16 I Ajouter des contraintes au modèle
Identité I Il faut laisser au moins une affectation parmi les
x1 x2 x3 x4 symétriques
I Éliminer la symétrie pendant la recherche
1 13 9 5 1
I Reconnaître et ignorer les sous-arbres symétriques
2 14 10 6 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 dynamiquement pendant la recherche

3 15 11 7 3 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4
4 16 12 8 4
Rotation 90◦
42 / 48 43 / 48
Élimination de la symétrie : exemple I Élimination de la symétrie : exemple I

x1 x2 x3 x4
x1 x2
1 On élimine la symétrie
horizontale en ajoutant la
2 contrainte x1 ≤ 2
x3 x4 On fixe les couleurs des
sommets qui appartiennent à
3 On élimine la symétrie verticale
une clique
en ajoutant la contrainte
4 x2 ≤ x3
x5

44 / 48 45 / 48

Élimination de plusieurs symétries : un danger Éliminer les symétries pendant la recherche


x1 x2 x3 x4 x1 x2 x3 x4

1 Q 1 Q Principe

2 Q 2 Q I Soit g une permutation symétrie de P


I Soit p u nœud de l’arbre de recherche
3 Q 3 Q I p = un ensemble d’affectations et de contraintes de
branchements
4 Q 4 Q I On veut étendre p par le branchement x = v
I Alors on rajoute la contrainte
En ajoutant x2 ≤ x3 , on élimine En ajoutant x1 ≤ 2, on élimine (p ∧ g(p) ∧ x 6= v ) ⇒ g(x 6= v )
cette solution cette solution
Mais il n’y a que 2 solutions !

46 / 48 47 / 48
Éliminer les symétries pendant la recherche

Exemple : 4-reines.
I Forme générale :
(p ∧ g(p) ∧ x 6= v ) ⇒ g(x 6= v )
x1 = 1 x1 6= 1
I Ici (p est vide) :
(x 6= v ) ⇒ g(x 6= v )
I Donc on rajoute : x1 = 4 x1 6= 4

(x1 6= 1) ⇒(x1 6= 4)
∧(x4 6= 1)
∧(x4 6= 4)

48 / 48

Vous aimerez peut-être aussi