1 / 48 2 / 48
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) ;
5 / 48 6 / 48
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
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
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
19 / 48 20 / 48
Ordre dynamique de variables Ordre dynamique de variables
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
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
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
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 :
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
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
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
39 / 48 40 / 48
Symétrie de variables : exemple de 4-reines Symétrie : définition formelle
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
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
1 Q 1 Q Principe
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