Download - Méthodes Hybrides
Méthodes Hybrides
Méthodes de preuvesOptimisation
Satisfaction de contraintesChapitre 5
2
Rappel des méthodes pour traiter SAT et CSP
Recherche naïve Exploration en profondeur d’abord d’un arbre de recherche
Nœuds internes = affectations partielles des variables Feuilles de l’arbre = solutions ou échecs
Algorithmes de Quine pour SAT et BT pour CSP Production de conséquences
Jointure d’un ensemble de relations et projection sur un ensemble de variables (compilation de connaissances)
Algorithme d’élimination de variables (SAT: algorithme Davis et Putnam)
Résolution unitaire pour SAT et cohérence d’arc pour CSP
3
Comparaison entre recherche et production de conséquences
RechercheÉlimination de
variablesCohérence locale
TâcheTrouver une solution ou
prouver l’absence
Trouver toutes les solutions
Simplification du problème
Complexité
spatiale
asymptotique
O(n)O(n.exp(w*))
w* n
O(poly(n))
*AC2001 en O(e.d)
Complexité
temporelle
asymptotique
O(exp(n))O(n.exp(w*))
w* n
O(poly(n))
*AC2001 en O(e.d2
)
Complexité
temporelle
moyenne
Meilleure qu’au pire cas
Proche du pire cas
Meilleure qu’au pire cas
Idée : Hybridation de méthodes !
4
Résumé
1. Backtrack (instanciation) et inférence locale
1. SAT – DPLL (Propagation unitaire)
2. CSP – MAC (Cohérence d’arc)
2. Backtrack et inférence opportuniste (apprentissage)
1. CSP – Backjumping et Nogood recording
2. SAT – CDCL (Conflict driven clause learning)
3. Backtrack et élimination de variable
4. PPC et modélisation (Golomb ruler)
5. Méthodes de recherches partielles (IB, LDS)
5
Méthode hybride en SATProduction de conséquences durant la recherche
Résolution à chaque nœud de l’arbre de recherche En pratique, résolution unitaire
Détecte des incohérences plus tôt Simplifie l’ensemble des clauses Informe l’heuristique de choix du littéral de branchement qui
exploite l’information des clauses restantes et des conflits
Complet pour les clauses de Horn (au plus un littéral positif) Exemple : { p r, r s, p, s } Langage Prolog (si condition alors résultat)
Solveur DPLL (système de transformation)
Etat M || F où M un ensemble de littéraux (sans incohérence) Chaque littéral peut être marqué comme une « décision » F est une CNF
Règles de transformation
si M viole C, l non défini dans M
(UnitPropagate)
si l ou l est dans F, indéfini dans M
(Decide)
si M viole C et pas de décision dans M
(Fail)
si viole C, aucune décision dans N
(Backtrack)
6
|| , || ,M F C l Ml F C l
|| , || ,dMl N F C M l F C
|| ,M F C FailState
|| ||dM F Ml F
dMl N
Un exemple
7
8
Heuristiques de branchement
Observation Puisqu’il faut instancier toutes les variables pour trouver un
modèles, autant faire le plus dur de suite et éviter de redécouvrir que c’est impossible de façon répétée
=> First Fail Principle
Brancher sur (l,l) qui minimise la taille des sous-arbres gauche (l) et droit (l) Estimation empirique de cette taille Heuristiques MOM (Maximum # of Occurrence in the
Minimum length causes) Jeroslow-Wang: One-sided: maximiser h Two-sided: maximiser h(l)+h(l), choisir ensuite h(l)>h(l)
| |
,
( ) 2 C
l C C F
h l
9
Méthode hybride en CSP Production de conséquences durant la recherche Etablir une propriété de cohérence locale à chaque nœud de
l’arbre de recherche Maintien de cohérence d’arc (algorithme MAC)
Détecte des incohérences plus tôt Supprime des valeurs aux domaines Procédure complète pour
contraintes binaires fonctionnelles, monotones, max-closed graphes acycliques de contraintes binaires
Exploitation de l’information des domaines courants dans l’heuristique de choix de la variable de branchement
Heuristique dynamique exploitant les tailles des domaines Branchement par réfutation (x = a x a) améliore la
propagation et les heuristiques par rapport au branchement par variable
10
Algorithme pour établir la cohérence d’arc
Fonction AC-2001( CSP(X,D,C) : csp ) : booléenMinSupp(j,b,i) 1Q XTant que Q non vide Faire
Choisir et retirer i de QPour tout j tel que il existe une contrainte c C sur (i,j) Faire
Pour tout b Dj FaireTant que MinSupp(j,b,i) ≤ last_value(Di) et MinSupp(j,b,i) Di ou (MinSupp(j,b,i),b)
c(i,j)Faire MinSupp(j,b,i) MinSupp(j,b,i) + 1Si MinSupp(j,b,i) > last_value(Di) Alors
Dj Dj – {b}Si Dj est vide Alors retourner fauxQ Q {j}
retourner vrai (CSP arc-cohérent)
11
Algorithme MAC – Maintaining Arc Consistency
Algorithme MAC( CSP(X,D,C) : csp, t : affectation ) : booléen
Si AC-2001( CSP(X,D,C) ) = faux Alors retourner faux
Si ( |t| = |X| ) Alors retourner vrai
Sinon
Choisir une variable non affectée i de X
Choisir une valeur v Di
Si MAC( CSP { i := v }, t {(i,v)} ) Alors retourner vrai
Sinon retourner MAC( CSP {i v }, t )
Heuristiques de choix de variable/valeur
First fail principle: Plus petit domaine Plus grand degré (nombre de contraintes) Domaine/degré ou « domaine puis degré » Plus grand degré « dynamique » (nombre de contraintes
qui impliquent d’autres variables non instanciées) Domaine/degré dyn. (ou pour briser les égalités)
Très grand impact en terme d’efficacité
Choix de valeur: guidé par l’application ou par un (ou plusieurs) critères de qualité attendue de la solution.
12
13
Méthodes de retour arrière intelligent
Lors d’un échec sur l’affectation d’une variable (absence de solution pour les différentes affectations de la variable), le retour arrière chronologique remonte à la précédente affectation dans l’arbre de recherche
Le retour arrière intelligent analyse la raison de l’échec (quelles sont les variables affectées en conflit avec la variable courante) et remonte à la dernière variable affectée en conflit
0 1
0 1
1 2
0 1
X1
X2
X3
X4
0 1X0
14
Saut arrière dirigé par le graphe des contraintes
0 1
0 1
1 2
0 1
X1
X2
X3
X4
0 1X0
L(X4) = {X1,X2}
L(X2) L(X2)U L(X4) – {X2}
L(X3) = {X2}
L(X2) = {X0}
L(X1) = {}
L(X0) = {}
Echec
Saut à max(L(X4))
L(X) : ensemble de variables affectées reliées par des contraintes à X (statique)
L(X1) L(X1)U L(X2) – {X1}
15
Saut arrière dirigé par les conflits (1993)
0 1
0 1
1 2
0 1
X1
X2
X3
X4
0 1X0
CS (X4) = {X1,X2}
CS(X2) CS(X2)U CS(X4) – {X2}
CS (X3) = {X2}
CS (X2) = {X0}
CS (X1) = {}
CS (X0) = {}
Echec
Saut à max(CS(X4))
CS(X1) CS(X1)U CS(X2) – {X1}
CS(X) : ensembles de variables affectées en conflit avec X (dynamique)
16
Saut arrière dirigé par les conflits
0 1
0 1
1 2
0 1
X1
X2
X3
X4
0 1X0
CS (X4) = {X0,X2}
CS(X2) = CS(X2)U CS(X4) – {X2}
CS (X3) = {X2}
CS (X2) = {X0}
CS (X1) = {}
CS (X0) = {}
Echec
Saut à max(CS(X4))
… Hybridation avec MAC implique m.-à-j. de CS à chaque valeur effacée
17
Apprentissage de nogood (inférence opportuniste, 1993)
0 1
0 1
1 2
0 1
0 1
Echec
X1
X2
X3
X4
X0
Lors d’un échec (X4) l’instanciation I des variables précédentes est un « nogood » (affectation implicitement interdite) : inférence
Inutile (car jamais revue) Mais sa projection sur CS(X4) est
aussi un nogood
L’apprendre comme une nouvelle contrainte
Espace mémoire, gestion, oubli.
Solveur CDCL (Conflict Driven Clause Learning, 1999)
Ajoute au solveur DPLL un mécanisme de Retour-arrière intelligent Apprentissage de clauses (conséquences logiques)
Causes: 1d donc 2 et 5d donc 6. 3 et 4 sans rapport. Clauses et conséquences produites.
181 5 2 5
Backjumping
si viole C Il existe impliquée par F,C et C’ violée par M l’ non défini dans M l’ défini dans
C est la clause de conflit est la clause de « backjump » : dans M, C’ est
violée et donc on sait que l’ est vrai. On backjump à l’état M avec ml’ à vrai.
19
|| , ' || ,dMl N F C Ml F CdMl N
' 'C l
dMl N
' 'C l
Graphe de conflit
Sommets: littéraux de M Arc de l vers l’ si la fixation de l a fixé l’ (via UnitProp)
20
6 7 9 854123d
Une coupe du graphe séparant les sommets
sources des puits définit une affectation, formée par les littéraux avec
arêtes sortantes coupéesElle est nécessairement violée, sa négation est
impliquée par F
Unique implication point
Il faut que cette clause contienne un littéral l’ du dernier niveau de décision
Soit D l’ensemble des littéraux de la clause de conflit falsifiés au dernier niveau de décision
Un UIP est un littéral du graphe de conflit qui appartient à tous les chemins reliant le littéral de décision courant à la négation d’un littéral de D : cause suffisante.
La décision courante est toujours un UIP Utilisé: premier UIP obtenu à partir de la clause de conflit et
des clauses propagées pour arriver au conflit.
21
Apprendre et oublier
Deux règles C impliquée par F, sans nouvelle variable C impliquée par F
Apprentissage des clauses de backjump (Lemme) Oubli des clauses inactives (conflit, UnitProp)
22
|| || ,M F M F C|| , ||M F C M F
23
Heuristique d’activité SAT, puis CSP
L’heuristique VSIDS (et variantes) associe un compteur à chaque atome qui est augmenté à chaque ajout de clause contenant l’atome lors d’une analyse de conflit. L’atome ayant le compteur le plus fort est sélectionné.
Utilisée aussi pour l’oubli des clauses apprises (les clauses peu actives sont oubliées en premier).
CSP: weighted degree. Chaque contrainte reçoit un poids initial de 1. Incrémenté à chaque fois qu’un domaine est vidée par la contrainte.
Wdeg = somme des poids des contraintes non totalement instanciées
Domain/wdeg…
Impact en pratique (CSP)
24
25
SAT: Implémentations et benchmarks
Implémentations zChaff (Zhang) (utilisé aussi en planification, en model
checking et en preuve automatique de théorème), MiniSAT(Een&Sorensson) (code extensible), …
Benchmarks SATLIB
http://www.intellektik.informatik.tu-darmstadt.de/SATLIB/benchm.html Exemples en vérification de circuits (DIMACS) : instances jqà
10410 variables et 34238 clauses résolues en moins d’une seconde !
Compétition SAT http://www.satcompetition.org/ Liens
SATLive! http://www.satlive.org Articles et liens classés par mot-clés
26
Recherche avec élimination de variable
A chaque nœud de la recherche Choisir une variable non affectée Xi
Si degréi ≤ k Alors Elimine Xi
Sinon énumération des valeurs de Xi
Propriétés DFBB-VE(-1) équivaut à DFBB DFBB-VE(w*) équivaut à Elimination de variable complète DFBB-VE(1) équivaut à l’algorithme du Coupe-Cycle
w* : largeur d’arbre
27
Exemple DFBB-VE(2)
28
Exemple DFBB-VE(2)
29
Recherche avec élimination de variable
Exemple: Still-Life (problème académique)
Instance: n=14 Modélisation avec 196 variables Booléennes
CP / Integer Programming (Ilog Solver) 5 days Variable Elimination 1 day DFBB-VE(2) 2 seconds
Différences CP/SAT
Les solveurs SAT ont évolué en solveurs CDCL « purs », code de petite taille, bonne utilisation du cache. Très rapides, boite noire. Redémarrages. Très utilisés en « validation » (EDA).
Les solveurs CSP ont évolué en spécialisant les codes des algorithmes de propagation locale pour traiter certaines contraintes fréquentes et utiles plus rapidement (contraintes globales) et en les proposant dans des langages de programmation dédiés (programmation par contraintes). Ordonnancement, affectation complexes…
30
31
Programmation par contraintes (CP)
Contraintes définies en intention à partir d’un langage Opérateurs arithmétiques, ensemblistes, logiques, etc.
Abstraction des (grands) domaines par leurs bornes Gain en espace : O(n.d) O(2n) Maintien de cohérence d’arc aux bornes
Exploitation spécifique de la sémantique des contraintes Propagation plus rapide
Exemple : x < y + c Propagation plus forte (contraintes globales)
AllDifferent, GCC, Regular, etc. Langages pour exprimer l’arbre de recherche
Branchement sur les disjonctions, branchement conditionnel, ajout de contraintes en cours de recherche…
32
Résultats Implémentations
CSP: MAC (Bessière), MAC (Dongen), AbsCon (Lecoutre), … CP: IBM Ilog Solver (gratuit acad), Sictus Prolog, Eclipse (gratuit), Choco (gratuit)
http://choco.sourceforge.net/ Benchmarks
CSPlib http://4c.ucc.ie/~tw/csplib/ Compétitions CSP (2005 http://cpai.ucc.ie/05/CallForSolvers.html) (OR-Library)
Applications CP Ordonnancement d’atelier, grilles d’emploi du temps, tournées de véhicules,
dimensionnement d'un réseau de télécommunication,… Liens
Constraints Archive http://www.4c.ucc.ie/web/archive/index.jsp CP-Online http://slash.math.unipd.it/cp/ (cours en ligne) AFPC http://www.afpc-asso.org/ Association française pour CP
Cours en ligne C. Solnon, programmation par contraintes et optimisation (2003 & 2007)
http://www710.univ-lyon1.fr/~csolnon P. Meseguer,T. Schiex, CSP, http://www.math.unipd.it/~frossi/vincoli-dotto-2004.html R. Bartak, CSP (CP Summer School 2005) http://kti.mff.cuni.cz/~bartak/
33
Exemple : la règle de Golomb
« Une règle munie de marques à des positions entières, telle que deux paires de marques ne soient jamais à la même distance ; en d'autres termes, chaque couple de marques mesure une longueur différente des autres »
Pour un nombre de marques donné, trouver une règle qui minimise la plus grande distance entre deux de ses marques
Application en conception d'antenne radio pour les réseaux cellulaires
Question trouver une règle optimale à 5 marques
Règle optimale d’ordre 24 en 1.572 jours de calcul
34
Règle de Golomb d’ordre N
Heuristique de construction d’une première solution X1 = 0 Xi = Xi-1 + 2^(i-2) Xi [0, 2^(N-1) - 1]
2^0 2^1 2^2 2^3…
X1=0 ___ X2=1 ___ X3=3 ___ X4=7 ___ X5=15 …
35
Modélisation de la règle de Golomb d’ordre N
Variables N variables de décision représentant les marques
x1, x2, x3, … , xN [0,2N] Contraintes
Précédences : i [1,N-1], xi < xi+1 Différences : i,j,k,l [1,N], i < j, k < l, i k j l, xj - xi xl - xk Symétrie par translation : x1=0
Critère d’optimisation : min( xN )
36
Modélisation de la règle de Golomb d’ordre Navec utilisation de contraintes ternaires
Variables N variables de décision représentant les marques
x1, x2, x3, … , xN [0,2N] N.(N-1)/2 variables entières intermédiaires codant les différences
i,j [1,N], i < j, dij [1,2N] Contraintes
Lien entre xi, xj et dij : i,j [1,N], i < j, dij = xj – xi Différences : i,j,k,l [1,N], i < j, k < l, i k j l, dij dkl Symétrie par translation : x1=0
Critère d’optimisation : min( xN )
37
DFBB+GAC pour trouver une règle optimale d’ordre 4
(0,1,3,7)
(0,1,4,6)
échec
Solution
38
Règle de Golomb d’ordre 4
UB = 6 , x2 = 2
x3 [3,5] , x4 [4,5]
d1,2 = 2 , d2,3 = {123} ,d3,4 = {12} , d1,3 = {345} ,d2,4 = {23}
d1,2 = 2 , d2,3 = {123} ,d3,4 = {12} , d1,3 = {345} ,d2,4 = {23}
d1,2 = 2 , d2,3 = {13} ,d3,4 = {1} , d1,3 = {345} ,d2,4 = {3}
(0,1,3,7)
(0,1,4,6)
x1 = 0
d1,2 > 0 , d2,3 > 0 , d3,4 > 0
d1,2 = x2 – x1 , d2,3 = x3 – x2 ,d3,4 = x4 – x3 , d1,3 = x3 – x1 ,d2,4 = x4 – x2
d1,2 d2,3 , d1,2 d3,4 , d2,3 d3,4 , d1,3 d2,4
Echec!
Modèle :
Ordre des déductions
39
Modélisation de la règle de Golomb d’ordre Navec contraintes ternaires, globales et redondantes
Variables N variables de décision représentant les marques
x1, x2, x3, … , xN [0,2N] N.(N-1)/2 variables entières intermédiaires codant les différences
i,j [1,N], i < j, dij [1,2N] Contraintes
Lien entre xi, xj et dij : i,j [1,N], i < j, dij = xj – xi Différences : AllDifferent( { dij | i,j [1,N], i < j } ) Minorant : i [1,N], xi i . (i - 1) / 2 Majorant : i [1,N], xi ≤ xN - (N - i) . (N - i + 1) / 2 Symétrie par translation : x1=0 Symétrie par réflexion : d(1,2) < d(N-1,N)
Critère d’optimisation : min( xN )
40
DFBB pour trouver une règle optimale d’ordre 5
DFBB+GAC+ternaires DFBB+GAC+ternaires+AllDiff+redondantes
(0,1,3,7,12)
(0,1,4,9,11)
(0,1,4,9,11)
(0,1,3,7,12)
Problem pb = new Problem(); int n = 6;
// create the main variables IntVar[] X = new IntVar[n]; for (int i = 0; i<n; i++) X[i] = pb.makeEnumIntVar("X" + i, 0, 2^n);
// create new (intermediate) distance variables IntVar[] D = new IntVar[n*(n-1)/2]; int pos = 0; for (int i=0; i<n; i++) for (int j=i+1; j<n; j++) {
D[pos] = pb.makeEnumIntVar("D" + i + "_" + j, 1, 2^n); pb.post(pb.eq(D[pos], pb.minus(X[j], X[i]))); pos++; }
// main constraint: all distances must be different pb.post(pb.allDifferent(D));
// add a redundant constraint: lower bound on X for (int i=0; i<n; i++) pb.post(pb.geq(X[i], i * (i+1) / 2)); // add a redundant constraint: upper bound on X for (int i=0; i<n-1; i++) pb.post(pb.leq(X[i], pb.minus(X[n-1], (n - i - 1) * (n - i) / 2)));
// remove symetrical solutions by translation pb.post(pb.eq(X[0],0)); // remove symetrical mirror solution by reflexion pb.post(pb.lt(D[0],D[pos-1]));
// solve Solver s = pb.getSolver(); pb.minimize(X[n-1]);
Golomb écrit en CHOCO
42@ Roman Bartak, CP Summer School 2005
43@ Roman Bartak, CP Summer School 2005
44
Méthode hybride pour l’OptimisationProduction de conséquences durant la recherche
Calculer à chaque nœud un minorant du coût de toutes les affectations complètes étendant l’affection partielle courante Minorant obtenu par projection avec soustraction (cf. transp.
suivant) Minorant obtenu par élimination approchée des variables futures
Résultats (algorithme Depth First Branch and Bound) Détecte plus tôt l’absence d’une meilleure solution si
minorant majorant (meilleure solution rencontrée) Suppression des valeurs si minorant + c(Xi,a) majorant Heuristiques de choix de valeurs et de variables renseignées par
les coûts unaires c(Xi,a)
45
Cohérence d’arc dans Max-CSP
1
0
0
0
X1 X2
c = 0 , Majorant = 2
Soft Arc Consistency (Schiex, 2000)
Projection d’un coût 1 de la contrainte c(X1,X2) vers c(X1,b)puis projection d’un coût 1 de la contrainte c(X1) vers le minorant c
a
b
0
0
0
0
X1 X2
c = 1 , Majorant = 2
a
b
1
1
1
1
Opération detransformationqui préservel’équivalencedu problème
46
Algorithme Depth First Branch and Bound
Fonction DFBB( t : affectation, Best : coût ) : coût
v CalculeMinorant( t )
Si v < Best Alors
Si ( |t| = n ) Alors retourner v
soit i une variable non affectée
Pour tout a Di Faire
Best min(Best, DFBB(t {(i,a)}, Best))
retourner Best
retourner +
Variations possibles Retour à la racine à chaque solution (aide propagation et heurisiques
grâce à la connaissance dès la racine d’un meilleur majorant) Condition de coupe renforcée (epsilon-DFBB) DFBB répété avec coupes croissantes (iterative deepening) Parcours meilleur en premier (best-first search),…
47
PPC et WCSP: ressources.
Implémentations Réseaux Bayésiens
http://www.cs.ubc.ca/~murphyk/Software/bnsoft.html MPE : AOLIB (Dechter&Marinescu), samiam (Darwiche),…
Weighted CSP: PFC-MRDAC(Larrosa), LVCSP(ONERA), ToolBarhttp://carlit.toulouse.inra.fr/cgi-bin/awki.cgi/SoftCSP
( Mixed Integer Programming : CPLEX (Ilog), Soplex, GLPK,… ) Benchmarks
Bayesian Network Repository http://www.cs.huji.ac.il/labs/compbio/Repository/
Instance Munin1 à 189 variables (w*=11) résolue en 2 secondes WCSP: allocation de fréquences http://fap.zib.de/, gestion d’un
satellite d’observation (ONERA), bioinformatique,… ( MIP-Library ftp://plato.asu.edu/pub/milpf.html )
Cours en ligne T. Schiex, Soft Constraint Processing (CP Summer School 2005)
http://www.inra.fr/mia/T/schiex
48
Evaluation des algorithmes
Complexité au pire cas ne rend pas bien compte de la réalité dans la plupart des cas
Complexité en moyenne très difficile à calculer Essayer sur des cas réels convaincant (indispensable en
pratique), mais ça ne prouve rien
Simuler la complexité en moyenne en travaillant sur des grands échantillons de cas générés aléatoirement
Travailler sur des problèmes réputés difficiles (benchmarks issus de problèmes académiques ou réels)
49
Evaluation des algorithmes
Paramètres de génération aléatoire 3-CNF
Nombre de variables propositionnelles Nombre de clauses
Réseaux de contraintes Nombre de variables Taille des domaines Dureté des contraintes Connectivité du graphe
Pour une classe de problèmes, mesurer le temps CPU, le nombre de nœuds dans l’arbre et le nombre de retours arrières des algorithmes à comparer
50
Evaluation des algorithmes
Transition de phase en satisfaction Existence d’un seuil dans la zone des 50% de problèmes
satisfiables En dessous, grand nombre de solutions Au dessus, fortement incohérent (détecté par application d’une
cohérence locale) Dans la zone seuil, explosion combinatoire pour de nombreux
problèmes Tester les algorithmes dans la zone dure, l’objectif est de
réduire la hauteur et surtout la largeur du pic
Les problèmes d’optimisation se trouvent dans la zone dure
51
Evaluation des algorithmes
Des conclusions
Les problèmes aléatoires peuvent être très difficiles Les méthodes exactes (CDCL…) ne sont pas le
meilleures ici Les méthodes « stochastiques » sont les plus efficaces
(métaheuristiques).
Les problèmes réels (industriels) sont structurés et les méthodes exactes peuvent souvent être plus efficaces que les méthodes stochastiques
52
53
Méthodes d’exploration partielle
Recherches aléatoires gloutonnes répétées Limite sur le nombre de retours arrières Ajout d’aléatoire dans l’heuristique
de choix de variable Ajout d’aléatoire dans l’heuristique
de choix de valeur
Recherche par focalisation progressive Série d’explorations de complexité croissante Limite sur le facteur de branchement (Iterative Broadening) Limite sur le nombre d’écarts à l’heuristique de choix de
valeur le long d’une branche (Limited Discrepancy Search)
54
Iterative Broadening
31 noeuds5 noeuds 121 noeuds
p = 1 p = 2 p = 3
55
Limited Discrepancy Search
Le retour arrière classique peut s’écarter très tôt de l’heuristique. Principe de LDS : refuser de s’en écarter de plus de k différences
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Depth-First Search 1 5 4 3 2
Limited Discrepancy Search
Adapté si l’on possède une bonne heuristique, i.e. une heuristique du domaine.
Nombreuses variations possibles (arbres non binaires, réduction des répétitions,…)
56
Résultats expérimentaux sur un problème de gestion des prises de vue d’un satellite d’observation (ONERA)