Vous êtes sur la page 1sur 27

2e dition 2003

Groupe Eyrolles, 1994, 2003, ISBN : 2-212-11385-4

CHAPITRE 3
Rsolution des problmes difficiles

3.1 Introduction
Le but de ce chapitre est de prsenter deux grandes classes de mthodes gnrales pour rsoudre des problmes doptimisation combinatoire NP-difficiles : les heuristiques et les mthodes arborescentes. Ces mthodes vont tre ncessaires pour traiter les problmes de graphes difficiles des chapitres 9 et 10. Cependant, la prsentation faite dans ce chapitre dborde du contexte des graphes : elle vous permettra sans doute dy trouver des ides pour aborder des problmes doptimisation quelconques. Il existe deux autres grands outils pour rsoudre des problmes NP-difficiles : la programmation dynamique et la programmation linaire en nombres entiers (cette dernire faisant souvent appel aux mthodes arborescentes). Elles ne seront pas abordes dans ce livre car elles sont un peu moins utiles pour nos problmes de graphes.

3.2 Heuristiques
3.2.1 Prsentation gnrale
Une mthode approche ou heuristique (heuristic, approximation method) pour un POC est un algorithme qui a pour but de trouver une solution ralisable, tenant compte de la fonction conomique, mais sans garantie doptimalit. On oppose les mthodes approches aux mthodes exactes qui trouvent toujours loptimum si on leur en laisse le temps (numration complte, mthodes arborescentes, programmation dynamique). On a vu dans le chapitre prcdent quon ne connat pas dalgorithmes polynomiaux pour les problmes NP-difficiles, et la conjecture P NP fait quil est peu probable quil en

44 _______________________________________________________ Algorithmes de graphes

existe. Les mthodes exactes ont une complexit exponentielle sur ces problmes, et seules les heuristiques peuvent rsoudre des cas de grande taille. En entreprise, on trouve beaucoup de problmes mal formuls, ou ayant de nombreuses contraintes, ou encore de complexit inconnue. Mme si le problme est facile, lajout de nouvelles contraintes peut le rendre NP-difficile. Dans ces conditions, il vaut mieux adopter ds le dpart une approche heuristique, beaucoup plus facile modifier. Il existe un trs grand nombre dheuristiques selon les problmes traiter, et il est ais den inventer. On distingue cependant les grands types suivants qui vont tre dtaills aprs la discussion de la section 3.2.2 sur lvaluation. Ces types sont non exhaustifs car certaines heuristiques sont inclassables ou peuvent combiner plusieurs types. a) Mthodes constructives, construisant une seule solution par une suite de choix partiels et dfinitifs, cest--dire sans retours en arrire. On les appelle mthodes gloutonnes (greedy) quand elles cherchent chaque itration faire le choix le plus avantageux. b) Recherches locales (local or neighborhood search). On part dune solution initiale et, par transformations successives, on construit une suite de solutions de cots dcroissants. Le processus stoppe quand on ne peut plus amliorer la solution courante. c) Mta-heuristiques. Une recherche locale peut tre pige dans un minimum local. Les mta-heuristiques peuvent chapper ces minima en construisant aussi une suite de solutions, mais dans laquelle la fonction conomique peut temporairement augmenter.

3.2.2 Evaluation des heuristiques


Dfinitions Le problme de lvaluation des heuristiques est crucial. En effet, les heuristiques noffrent aucune garantie doptimalit : elles peuvent trouver loptimum pour certaines donnes, ou en tre trs loignes. Supposons quon tudie un problme combinatoire pour lequel on dispose dj dune mthode exacte (optimale) de rfrence. Pour une heuristique H et une donne d, on note H(d) le cot de la solution heuristique et OPT(d) le cot optimal. On appelle performance relative de H sur d le quotient :
R H (d ) = H (d ) . OPT (d )

Pour un problme de minimisation, R H (d ) 1 . Certains auteurs prfrent la distance loptimum en % : 100 ( R H (d ) 1) . La performance relative peut tre borne a priori, ou tre imprvisible et constate a posteriori, cest--dire aprs excution de lalgorithme. Evaluation a priori a) Performance relative au pire On appelle performance relative au pire (worst case performance ratio) PH dune heuristique H sa plus mauvaise performance relative sur lensemble des donnes possibles :
PH = max{RH (d )}
{d }

Chapitre 3 Rsolution des problmes difficiles _________________________________ 45

Il sagit dune garantie de performance, quon obtient mathmatiquement par analyse thorique de H, et non par des statistiques ou par numration des donnes possibles. Les dmonstrations se font souvent en deux temps : on borne R H (d ) pour toute donne d, puis on construit une donne montrant que ce pire cas peut tre effectivement atteint. Ce genre de rsultat est en gnral difficile obtenir, et on nen connat que pour quelques heuristiques. Par exemple, on connat une heuristique H avec PH = 1.5 pour le Problme de voyageur de commerce (PVC), condition que les cots vrifient lingalit triangulaire (cest--dire que, pour tout triplet de sommets (i, j , k ) , on ait Cik Cij + C jk comme pour une distance). Cela signifie quon a prouv mathmatiquement que cette heuristique nest jamais plus de 50% de loptimum. Un cart de 50% peut sembler dcevant mais certains problmes difficiles nont mme pas dheuristique avec une performance relative au pire gale une constante. Par exemple, on ne connat pas dheuristique H avec PH meilleur que O(N / log N) pour le problme de coloration de graphe. Dans ce cas, il ny a donc pas de limite RH (d ) ! Heureusement, les pires carts loptimum sont souvent obtenus sur des problmes thoriques construits exprs : une heuristique peut tre trs bonne en moyenne sur des donnes relles. Ltude des heuristiques est trs disparate, car on na pas pu trouver, pour les performances relatives au pire, lquivalent de la transformation polynomiale des problmes NPcomplets. Par consquent, une bonne heuristique pour un problme NP-difficile ne permet pas den dduire une aussi bonne pour un autre problme. Lexemple suivant est clairant. Soit, par exemple, une bonne heuristique S avec PS = 0.9 pour le problme du stable maximal (voir chapitre prcdent). Notez que PS est infrieur 1 car il sagit dun problme de maximisation. Soit un graphe G 100 sommets avec un stable maximal de 90 sommets. Le transversal minimal a donc 10 sommets (cest le complmentaire). Dduisons polynomialement de S une heuristique T pour le transversal minimal, en prenant le complmentaire du stable calcul par S. Au pire, S trouve 81 sommets, et T va donc trouver 19 sommets au lieu de 10, ce qui correspond une mauvaise performance relative de 19/10. b) Exemple de dtermination Voyons un des rares exemples dheuristiques dont on peut tablir facilement la performance relative au pire. Considrons le Problme du Transversal Minimal dans un graphe simple G = (X,E) : rappelons quil sagit de trouver un ensemble de sommets T de cardinal maximal, tel que toute arte ait au moins une extrmit dans T. Lheuristique suivante H est trs simple : elle choisit des sommets deux par deux et efface aussitt les artes couvertes.
T := Tant que E Choisir Ajouter Enlever FT. nimporte quelle arte [i,j] de E i et j T i et j de G avec les artes incidentes

Le rsultat T est videmment un transversal de G, qui couvre en particulier les artes [ i, j ] choisies par H chaque itration. Ces artes nont pas de sommet commun, chacune delles

46 _______________________________________________________ Algorithmes de graphes

va tre couverte par un sommet distinct de T. Tout transversal de G, y compris un transversal minimal, doit contenir un sommet de chaque arte choisie par H. Aucun ne peut avoir moins de la moiti des sommets de T. Lheuristique simpliste H ne trouve donc jamais plus de deux fois le nombre optimal de sommets : PH = 2. Evaluation a posteriori a) Bornes infrieures de loptimum Le plus souvent, on ne sait pas tablir mathmatiquement le comportement au pire. On ne peut alors valuer les rsultats quaprs excution de lheuristique H. Pour valuer le rsultat pour une donne d, on peut calculer la performance relative R H (d ) condition de connatre loptimum. Mais il nexiste pas de mthode exacte de complexit polynomiale pour les problmes NP-difficiles, moins que P = NP. La valeur exacte de loptimum nest donc pas calculable en une dure acceptable pour les problmes de grande taille. On peut cependant obtenir une valuation moins serre si on dispose dune valuation par dfaut (minorant) B(d) pour loptimum OPT(d). Dans ce cas :
RH (d ) = H (d ) H (d ) OPT (d ) B (d )

En particulier, si H(d) = B(d), alors on sait a posteriori quon a atteint loptimum. On peut toujours trouver des bornes infrieures, mme grossires, de loptimum OPT(d). b) Exemples pour le PVC Le Problme du voyageur de commerce (PVC) consiste trouver un circuit hamiltonien de cot minimal dans un graphe complet valu de N sommets. On rappelle quun tel circuit passe une fois et une seule par chaque sommet. Le graphe est suppos complet pour ne pas avoir de problme dexistence : en effet, le problme dexistence dun cycle hamiltonien dans un graphe quelconque est dj NP-complet ! On suppose aussi que les cots sont non ngatifs et donns par une matrice C, N N. Les bornes suivantes montrent quon peut pousser trs loin la recherche de bornes infrieures de plus en plus serres. B1 : borne infrieure nave On fait la somme des N plus petits lments de C. Critique : ils peuvent tre sur la mme ligne, et les arcs correspondants, partant dun mme sommet, ne peuvent pas tre sur un circuit hamiltonien. B2 : borne moins nave Le circuit hamiltonien devant quitter chaque sommet, on fait la somme des minima de chaque ligne. Critique : ils peuvent tous tre sur la mme colonne. B3 : borne de Little par rduction des cots On soustrait de chaque ligne i son minimum ai, puis on soustrait de chaque colonne j de la matrice obtenue son minimum bj. Cette transformation fait apparatre au moins un zro par ligne et par colonne. La borne infrieure B3 nest autre que la somme des ai et bj soustraits.

Chapitre 3 Rsolution des problmes difficiles _________________________________ 47

En effet, considrons un circuit hamiltonien quelconque , de cot z pour la matrice C. Notons C la matrice rduite et z le cot du circuit dans C. Dfinissons N 2 variables en 01 xi valant 1 si et seulement si (i, j) est emprunt par le circuit. Le cot z du circuit est le suivant, car un seul xij vaut 1 pour i ou j fix :
' z = Cij .xij = xij . C ij + ai + b j

' = C ij .xij + ai xij + b j xij

= z ' + ai + b j B3
i j

B4 : arbre recouvrant de poids minimal Voici une autre borne infrieure si G nest pas orient (la matrice C est alors symtrique). On rappelle (chapitre 1) quun arbre recouvrant de G est un arbre qui relie tous les sommets. Contrairement au PVC, le calcul dun arbre recouvrant de poids minimal (ARPM) est un problme facile. Voici, par exemple, un algorithme trs simple d Prim [Pri57], qui sera dtaill au chapitre 8. Il est implmentable en O(N 2).
Partir dun arbre initial A rduit au sommet 1 Pour Iter := 1 n-1 Chercher la plus petite arte [i,j] avec i dans A et j non dans A Ajouter [i,j] larbre A FP

Le cot dun ARPM de G est une borne infrieure du cot dun cycle hamiltonien. En effet, enlevons une arte un cycle hamiltonien optimal. On obtient un arbre recouvrant particulier (non ramifi), de cot infrieur ou gal car les cots sont non ngatifs par hypothse. Le cot de lARPM tant par dfinition le plus petit parmi les arbres recouvrants, cest une borne infrieure pour le PVC. Comparaison des bornes Comparons ces bornes sur un PVC non orient dfini par la matrice C symtrique 5 5 figurant dans le tableau 31. La somme des 5 plus petits lments vaut B1 = 6. La somme des plus petits lments de chaque ligne vaut B2 = 7.
Tableau 31. Matrice des cots dun PVC 5 nuds 1 2 3 4 5 1 2 3 4 5
3 4 5 4 3 2 2 1 4 2 1 2 5 2 1 3 4 1 2 3

48 _______________________________________________________ Algorithmes de graphes

Pour la borne de Little, on fait apparatre un zro dans chaque ligne en leur enlevant respectivement 3, 1, 1, 1 et 1. Toutes les colonnes ont alors un zro, sauf la 1, laquelle on peut soustraire 2. La somme des valeurs enleves donne la borne B3 = 9. Pour la borne de larbre, lalgorithme de Prim relie le sommet 1 2, puis 2 5, 2 3 et 3 4. Le cot de larbre rsultant est B4 = 7. Considrons maintenant lheuristique Plus Proche Voisin (PPV) : partant du nud 1, elle construit un cycle en reliant le dernier nud visit au plus proche nud libre. Elle trouve le cycle [1, 2, 5, 3, 4, 1] de cot 12. En prenant la meilleure borne (B3), on en dduit que la performance relative de PPV sur C est au pire 12/9 = 1.33, cest--dire quon est au maximum 33% de loptimum. En fait, lnumration complte des ( N 1)! / 2 = 12 cycles hamiltoniens montre que le cot optimal est rellement 12. Lheuristique PPV est donc par chance optimale sur cet exemple ! c) Evaluation statistique On est souvent contraint cette extrmit pour les grands problmes rels. Lvaluation la plus rudimentaire consiste comparer vos solutions heuristiques avec celles des mthodes actuelles de lentreprise (manuelles ou informatises). Toute amlioration relative est conomiquement intressante. Mme si on connat la performance relative au pire, cette dernire peut tre trs mauvaise, ou atteinte seulement sur des cas pathologiques. Cependant, lheuristique peut tre bonne en moyenne, dautant plus que les donnes dune entreprise ont souvent une structure particulire pouvant tre exploite. Une valuation statistique est alors recommande. Voyons sur le PVC la dmarche gnrale effectuer pour valuer k heuristiques H1, H2,,Hk, avec la borne infrieure B3. Pour comparer ce qui est comparable, on gnre alatoirement une srie de problmes sous forme de leur matrice des cots C, pour un nombre de sommets fix N. Une bonne srie comprend typiquement 100 problmes. Les lments Cij sont, par exemple, tirs au sort selon une loi uniforme dans un intervalle donn [0,Cmax]. Pour simplifier, les Cij peuvent tre entiers. En Delphi, la fonction Random convient. Pour des rsultats reproductibles, le gnrateur alatoire ne doit pas tre initialis avec Randomize, mais par affectation dun grand entier RandSeed, variable prdclare de type LongInt. Pour chaque matrice C, on excute les k heuristiques H1, H2,,Hk valuer. On stocke dans des tableaux ou dans un fichier-texte le numro du problme, la borne infrieure calcule B3(C), et loptimum OPT(C) si on dispose dune mthode exacte (numration complte par exemple). Bien entendu, OPT(C) nest calculable que si N est petit : au-del, seule la borne B3(C) sera disponible comme rfrence. Pour chaque problme et chaque heuristique, on note le cot trouv et le temps dexcution. Lexploitation des rsultats pour une srie de problmes peut se faire par le programme qui a excut les heuristiques, par un programme spar, ou par un logiciel de statistiques. Calculer le cot moyen des circuits est maladroit, car la gnration alatoire peut produire des problmes de cot trs variable. Il vaut mieux calculer un critre relatif de performance, comme la moyenne des H(C) / OPT(C) ou des H(C) / B3(C) de chaque heuristique. On peut calculer aussi le temps dexcution moyen.

Chapitre 3 Rsolution des problmes difficiles _________________________________ 49

Pour ces deux critres (distance loptimum ou une borne, et temps dexcution), il est recommand de calculer aussi lcart type, le minimum et le maximum. Si on ne dispose mme pas dune bonne borne infrieure, on peut prendre comme rfrence de chaque problme le rsultat de la meilleure heuristique. On peut aussi compter sur la srie le nombre de fois o chaque heuristique est en premire, deuxime, ..., k-nime position.
Nombre de cas H2 H1

RH
Figure 31. Comparaison de deux heuristiques

Le mme travail est refaire pour quelques sries, en faisant varier la taille N du problme ou la distribution des Cij. Pour une srie, lanalyse des rsultats permet le plus souvent de dgager une heuristique meilleure en moyenne. Mais elle peut avoir une dure dexcution inacceptable, ou tre peu stable. Par exemple, sur la figure 31, H2 est moins bonne en moyenne que H1, mais elle est plus stable. La comparaison de diverses sries avec N croissant, laide dun logiciel de statistiques, permet dvaluer peu prs la complexit moyenne ou de dtecter la meilleure heuristique en fonction de la taille du problme.

3.2.3 Heuristiques constructives


Pour les problmes classiques doptimisation combinatoire, il existe normment dheuristiques construisant une seule solution, et il est facile den inventer dautres. Nous donnons dans cette section trois exemples reprsentatifs, de type glouton. Sac dos Dans le problme de sac dos en 0-1, on a n objets disponibles, chacun en un exemplaire, lobjet i ayant un poids ai et une valeur ci. Le but est demporter un sous-ensemble dobjets de valeur maximale, dans un sac de poids total limit b. On suppose que la somme des poids excde b, sinon le problme est trivial (on prend tout !). On renumrote les objets dans lordre dcroissant des valeurs relatives ci / ai, et on considre lalgorithme H suivant. La complexit est en O(n2) si on ne trie pas les objets (il faut balayer la liste pour le prochain objet prendre), et en O(n log n) avec un tri efficace pralable comme Heap Sort. Lheuristique se gnralise aisment au sac dos en entiers : on prend alors autant dunits du produit i que le sac peut en contenir.

50 _______________________________________________________ Algorithmes de graphes


Poids := 0 Cout := 0 Pour i := 1 Si Poids Poids Cout FS FP

n + ai B alors := Poids + ai := Cout + ci

Dans le cas du sac dos en nombres entiers, on sait que lheuristique nest pas trop mauvaise : PH = 1/2 (rappel : on est en maximisation). Pour atteindre cette borne, essayez par exemple n = 2, c1 = a1 = k+1, c2 = a2 = k, b = 2k pour k = 1, 2... Lheuristique trouve alors k + 1 alors que loptimum est 2k. PH peut donc tre aussi proche de 1/2 que lon veut ! En fait, si M est le rapport b / max{ai}, on peut montrer que PH = M / (M + 1). Lheuristique est donc meilleure si les objets sont petits par rapport b, ce qui est conforme lintuition. De faon surprenante, cette heuristique est trs mauvaise dans le cas 0-1. Essayez avec n = 2, c1 = a1 = 1, c2 = a2 = b = k, k tant un entier aussi grand quon veut : lheuristique trouve 1, alors que loptimum est k ! Heureusement, le comportement moyen est bon en pratique. De manire gnrale, remarquez quil y a plusieurs mthodes gloutonnes pour un POC. Ici, prendre les objets les plus chers dabord, ou les plus lourds, ne sont pas des choix pertinents car ils ignorent une partie des donnes (respectivement a et c). Le critre glouton de la valeur par unit de poids est meilleur, il tient compte la fois de a et de c. Bin packing Rappelons que ce problme consiste ranger n objets de tailles connues ai, i = 1...n dans un nombre minimal de botes de capacit b. On suppose bien sr que les tailles sont toutes infrieures ou gales b, pour avoir au moins une solution (n botes suffisent toujours raison dun objet par bote). On prpare donc une suite de n botes vides. Les heuristiques les plus simples placent les objets un par un dans lordre o ils sont fournis par les donnes. Ainsi, lheuristique First-Fit ou FF place litration i lobjet n i dans la premire bote qui convient. Best-Fit (BF) place par contre lobjet i dans la bote quil remplit le plus. Ces deux heuristiques ont une performance relative au pire gale 2. Intuitivement, il faut se dbarrasser dabord des objets les plus gros, do un tri pralable de la liste des objets par tailles dcroissantes. FF devient dans ce cas First-Fit Decreasing (FFD), et BF devient Best-Fit Decreasing (BFD). On a pu prouver que ces heuristiques ont effectivement une performance relative au pire amliore, gale 3/2. BFD est cependant meilleure que FFD en moyenne. En fait, les pires cas de ces heuristiques sont atteints sur de petits problmes, o 3 ou 4 botes sont consommes au lieu de 2. Pour les problmes avec un grand nombre optimal de botes, Johnson [Joh74a] a prouv des rsultats plus fins :
FF (d ) 17 OPT (d ) + 2 (la performance relative au pire tend vers 70%) 10 11 OPT (d ) + 4 (la performance relative au pire tend vers 22,2%) 9

FFD (d )

Chapitre 3 Rsolution des problmes difficiles _________________________________ 51

Intuitivement, le bin packing est sensible la taille des objets. Il devient, par exemple, polynomial si B / 3 < ai < B pour tout i. Il y a alors 1 ou 2 objets par bote et FFD donne toujours loptimum. Comme pour le sac dos, les heuristiques marchent mieux quand la taille des objets diminue. Si par exemple ai B / 2 pour tout i, Yao a montr en 1980 que :
FFD (d ) 71 OPT (d ) + 5 (la performance relative au pire tend vers 18,3%) 60

Mthode pnalits pour le PVC Les mthodes pnalits sont en fait des mthodes gloutonnes sur les cots dopportunit. Soit G = (X,U,C) un graphe orient, donn par une matrice des cots C, N N. Larc (x,y) de plus faible cot est a priori intressant dans une mthode gloutonne pour le PVC. En fait, supposons quon ne prenne pas (x,y) dans la figure 32 : le circuit hamiltonien devra quand mme quitter x (cot minimal 9) et arriver en y (cot minimal 7). Do un regret ou pnalit Rxy de 9 + 7 = 16 pour larc (x,y). Il vaut mieux prendre en priorit larc de regret maximal, qui nest pas ncessairement larc de plus faible cot.

7
x

12
y

2 14 9

Figure 32. Exemple de calcul de regret pour le PVC

Pour tout arc ( x, y ) , le regret est dfini plus formellement par lexpression suivante :
Rij = min (Cik ) + min (C kj )
k k

Les mthodes pnalits sont souvent de complexit suprieure aux autres mthodes gloutonnes, car elles calculent chaque itration les pnalits pour chaque dcision possible. Elles sont en revanche meilleures en moyenne, car moins locales. Ici, par exemple, le regret prend la fois en compte les voisins de x et ceux de y, et linformation contenue dans les donnes est mieux exploite.

3.2.4 Recherches locales


Soit un problme doptimisation combinatoire (S, f ), o S est lensemble des solutions ralisables et f la fonction-objectif de S dans IR. Un algorithme de recherche locale a la structure gnrale suivante, dans laquelle V(s) est un voisinage de la solution s, cest--dire une application, dfinir, de S dans lensemble P(S) des parties de S :

52 _______________________________________________________ Algorithmes de graphes


s := une solution initiale de S (calcule par une heuristique) z := f(s) Tant quil existe s dans V(s) avec f(s) < z s := s z := f(s) FT Sortir s et z.

La solution initiale peut tre obtenue par une mthode gloutonne ou tre gnre alatoirement. La premire option est prfrable si on na le temps deffectuer quune seule excution. La seconde permet damliorer les rsultats en faisant plusieurs essais partir de solutions de dpart diffrentes. Si V(s) = S, on trouverait loptimum en une itration mais lalgorithme serait quivalent une numration complte. Pour avoir des temps de calcul acceptables, |V(s)| doit donc tre petit devant |S|, mais cette perte dexhaustivit peut piger la recherche locale dans un minimum local. Dans la figure 33, la recherche partie de la solution s0 est parvenue une solution s dans le voisinage duquel (trait pais) elle ne peut trouver mieux. Il sagit pourtant dun minimum local, le vrai optimum s* se trouvant ailleurs dans lespace des solutions. En pratique, une recherche locale ne construit jamais lensemble des solutions du voisinage avant de lexplorer. Le voisinage est dfini de manire implicite, comme lensemble des solutions quon peut dduire de la solution courante s en effectuant des transformations (ou mouvements) simples s s (moves en anglais).

f(s)

V(s) s0 s s* optimum S

Figure 33. Evolution dune recherche locale

On peut chercher chaque itration la meilleure solution du voisinage (technique de la plus grande pente) ou aller sur la premire solution amliorante trouve. La recherche locale se termine aprs un nombre variable ditrations, quand elle arrive en une solution s qui est la meilleure de son voisinage. Comme le nombre ditrations peut tre lev, le cot dune itration doit rester raisonnable. Pour un problme dont les solutions sont formes de n lments, il faut se restreindre des voisinages contenant O(n2) O(n3) solutions.

Chapitre 3 Rsolution des problmes difficiles _________________________________ 53

i j

l Cycle de cot Z + C(i,l) + C(j,k) - C(i,j) - C(k,l) aprs transformation 2-OPT

Cycle de cot Z

Figure 34. Exemple de mouvement 2-OPT

Les recherches locales k-OPT ont t proposes par Lin et Kernighan [Lin73] pour le PVC. Leur mouvement de base consiste enlever k artes dun cycle hamiltonien et reconnecter les k chanes obtenues par k autres artes. La version 2-OPT, la plus simple, consiste remplacer deux artes non adjacentes [i, j] et [k, l] par [i, l ] et [j, k], comme illustr dans la figure 34. Notez que le sens de traverse de la chane reliant j l est invers par la transformation. La recherche locale 2-OPT sera dtaille au chapitre 8. On voit bien sur cet exemple quil nest pas ncessaire de construire explicitement la liste des solutions du voisinage : il suffit de tester toutes les paires dartes non adjacentes [i, j] et [k, l] et de calculer en O(1) la variation de cot associe, sans effectuer rellement le mouvement. La construction dune nouvelle solution nest ncessaire que quand on dcide daccepter un mouvement avec une variation de cot ngative. Lnumration de ce voisinage est polynomiale, puisquil existe O(N 2) mouvements possibles pour un cycle de N sommets. Pour k quelconque, un voisinage k-OPT sexplore en O(N k ), ce qui explique que 2-OPT et 3-OPT soient les versions les plus utilises.

3.2.5 Mtaheuristiques
Ces mthodes sont le plus souvent des recherches locales modifies pour viter les minima locaux. Leur conception commence par ltude dune recherche locale classique (dfinition dun voisinage, avec transformations simples), que lon promeut ensuite en une mthode plus puissante si elle savre insuffisante. Il sagit de mthodes trs gnrales, dans lesquelles plusieurs composants doivent tre prciss en fonction du problme traiter. Recuit simul a) Principe Le recuit simul (simulated annealing) a t invent par les physiciens Kirkpatrick, Gelatt et Vecchi en 1983 [Kir83]. Il a permis de rsoudre de manire quasi optimale des PVC 5 000 sommets, avec, il est vrai, des heures de calcul. Le recuit sinspire de mthodes de simulation de Metropolis (annes 50) en mcanique statistique. Lanalogie historique sinspire du recuit des mtaux (annealing) en mtallurgie : un mtal refroidi trop vite

54 _______________________________________________________ Algorithmes de graphes

prsente de nombreux dfauts microscopiques, cest lquivalent dun minimum local pour un POC. Si on le refroidit lentement, les atomes se rarrangent, les dfauts disparaissent, et le mtal a alors une structure trs ordonne, quivalent du minimum global pour un POC. Une autre analogie est de voir lensemble des solutions comme un paysage de montagne, comme dans la figure 33. Une pierre lche dans un tel paysage va glisser dans le premier creux venu : cest lanalogue dune recherche locale simple. Une balle lastique peut, au contraire, rebondir et contourner les obstacles. Lnergie initiale de la balle va diminuer lentement chaque rebond, et la balle finira plus bas que la pierre, du moins en probabilit. Le recuit simul en optimisation combinatoire na plus quun lointain rapport avec la thermodynamique. Lnergie du systme est reprsente par un rel arbitraire T, la temprature. A partir dune recherche locale quelconque pour un problme, on obtient une mthode de recuit comme suit (on part toujours dune solution ralisable initiale s) : On tire au sort une transformation s s, s V(s), au lieu de chercher la meilleure ou la premire solution voisine amliorante comme dans une recherche locale classique. On calcule la variation de cot f = f(s) f(s). Si f 0, le cot diminue et on effectue la transformation amliorante comme dans une recherche locale (s := s). Si f > 0, le cot remonte, cest un rebond, quon va pnaliser dautant plus que la temprature est basse et que f est grand. Une fonction exponentielle a les proprits dsires. On calcule une probabilit dacceptation a = e-f / T, puis on tire au sort p dans [0,1]. Si p a, la transformation est dclare accepte, bien quelle dgrade le cot, et on fait s := s. Sinon, la transformation est rejete : on garde s pour litration suivante. Pour assurer la convergence (analogie de la balle qui rebondit de moins en moins), T est diminue lentement chaque itration, par exemple T := kT, k = 0.999 par exemple. On peut aussi dcrotre T par paliers. Pour tre efficace, un recuit doit diminuer T assez lentement, en plusieurs milliers ou dizaines de milliers ditrations. Il dure en tout cas beaucoup plus longtemps quune recherche locale, puisque les transformations amliorantes de cette dernire sont dilues parmi de nombreux rebonds. On sarrte quand T atteint un seuil fix , proche de 0. Le rglage des paramtres est assez dlicat. Il est prudent de prvoir deux tests darrt supplmentaires : un limitant le nombre ditrations une valeur MaxIter, et un limitant le nombre ditrations sans changement de cot une valeur MaxGel. MaxGel doit tre assez grand : contrairement une recherche locale, un recuit simul peut en effet se sortir dun plateau horizontal par des transformations cot nul. En cas de refroidissement trop rapide, la solution finale nest pas la meilleure trouve et il vaut donc mieux stocker en cours de route toute solution amliorante. Voici des exemples de valeurs typiques des paramtres : MaxIter = 10 000, = 10-2, MaxGel = 200, k = 0.9995. b) Algorithme gnral Voici un squelette gnral de recuit. La solution courante est s, la meilleure solution trouve jusqu prsent est s*. Les instructions concernant MaxGel, MaxIter et la sauvegarde de la meilleure solution sont inutiles si le recuit est bien rgl.

Chapitre 3 Rsolution des problmes difficiles _________________________________ 55

Construire alatoirement une solution initiale s z* := f(s) {meilleur cot obtenu} s* := s {meilleure solution connue} Initialiser T et Initialiser MaxIter et MaxGel NIter := 0 {nombre ditrations} NGel := 0 {itrations sans amliorations} Rpter NIter := NIter + 1 Tirer au sort une solution s dans V(s) Calculer la variation de cot f Si f < 0 Alors Accept := Vrai Sinon Tirer au sort p dans [0,1] Accept := p exp(-f/T) FS Si Accept alors s := s Si f(s) < z* alors z* := f(s) s* := s FS Si f = 0 alors NGel := NGel + 1 sinon NGel := 0 FS FS T := k.T Jusqu (T ) ou (NIter = MaxIter) ou (NGel = MaxGel).

Nous verrons des exemples dadaptation de cet algorithme gnral au cours des chapitres 9 (Problme du voyageur de commerce) et 10 (Problme de coloration de graphes). Mthodes tabou a) Principe Les mthodes tabou (tabu search) on t inventes par Glover [Glo89, Glo90]. Elles sont de conception plus rcente que le recuit, nont aucun caractre stochastique et semblent meilleures temps dexcution gal. Elles ont trois caractristiques fondamentales : A chaque itration, on examine compltement le voisinage V(s) de la solution actuelle s, et on va sur la meilleure solution s, mme si le cot remonte. On sinterdit de revenir sur une solution visite dans un pass proche grce une liste tabou T (tabu list) de longueur limite NT, qui stocke de manire compacte les NT dernires solutions visites. On cherche donc s dans V(s) - T. On conserve en cours de route la meilleure solution trouve s* car, contrairement au recuit, cest rarement la dernire. On stoppe aprs un nombre maximal NMax ditrations, ou aprs un nombre maximal ditrations sans amliorer la meilleure solution, ou quand V(s) T = . Ce dernier cas, trs rare, ne peut se produire que sur de trs petits problmes, pour lesquels le voisinage tout entier peut tre enferm dans T. Au cours de sa progression, une mthode tabou chappe ainsi aux minima locaux : mme si s est un minimum local, lheuristique va schapper de la rgion V(s) en empruntant un col.

56 _______________________________________________________ Algorithmes de graphes

En dbut de calcul, la mthode trouve une suite de solutions amliores, comme une recherche locale. On voit ensuite le cot osciller, puis redescendre vers un meilleur minimum local. Les amliorations deviennent de plus en plus rares au cours des itrations. b) La liste tabou T Glover a montr quune liste tabou de taille NT = 7 20 suffit en pratique pour empcher lalgorithme de boucler en revenant sur une solution dj visite. T fonctionne donc comme une sorte de mmoire court terme. A chaque itration, la NT-nime solution de T (la plus ancienne) est crase par la dernire solution examine. En pratique, T se gre simplement avec une structure de donnes de type file (voir chapitre 4). En thorie, il faudrait stocker compltement les NT dernires solutions visites. Par exemple, pour un PVC avec le voisinage 2-OPT, il faudrait conserver les NT derniers cycles hamiltoniens trouvs et vrifier que tout nouveau cycle examin nest pas dj dans T. Les voisinages considrs tant souvent grands, il est clair que le test rptitif de prsence dans T est trs coteux, sans parler de la mmoire ncessaire pour coder NT solutions compltes. Le stockage explicite des solutions nest donc jamais pratiqu. En pratique, on stocke dans T les mouvements ayant permis de changer de solution ou certains attributs des solutions. Ensuite, on interdit les mouvements inverses ou les solutions ayant les mmes attributs. Par exemple, pour le PVC et le voisinage 2-OPT, on peut stocker les deux artes [i, j] et [k, l] enleves pour changer de solution et sinterdire de les remettre dans le cycle pendant NT itrations. Cette technique est rapide et consomme peu de mmoire, mais elle est plus restrictive que le stockage de solutions compltes : ce nest pas parce que les deux artes reviennent dans le cycle que lalgorithme boucle. On peut facilement lamliorer pour viter de rejeter tort trop de solutions. Dans notre exemple, quand un mouvement s s est excut, le cot de s peut tre stock dans T en plus des deux artes enleves [i, j] et [k, l]. Plus tard, on pourra accepter un mouvement faisant rapparatre ces deux artes sil conduit un cycle de cot diffrent. En effet, grce cette astuce, on saura quon ne boucle pas. Une technique encore plus simple pour grer la liste tabou est dinterdire de repasser par les NT dernires valeurs de la fonction-objectif : il suffit de stocker uniquement le cot entier des NT dernires solutions ! Les rsultats peuvent tre honorables, sauf si la fonctionobjectif prend relativement peu de valeurs diffrentes. c) Algorithme gnral Lalgorithme suivant donne un squelette gnral de mthode tabou. Une adaptation au problme de coloration de graphe sera tudie au chapitre 10.
Construire une solution initiale s Calculer son cot z = f(s) z* := z s* := s Initialiser MaxIter T := NIter := 0 {solution initiale} {meilleur cot obtenu} {meilleure solution connue} {nombre max ditrations} {vide la liste tabou T} {nombre ditrations}

Chapitre 3 Rsolution des problmes difficiles _________________________________ 57


Rpter {boucle principale} NIter := NIter + 1 {compte une itration} z" := + {initialise cot de s"} Pour toute solution s de V(s) {exploration de V(s)} Si s T et f(s) < z" alors {si s nest pas tabou} s" := s {mise jour du meilleur voisin s"} z" := f(s) {et de son cot} FS FP Si z" < + alors {si s" a t trouv} Enlever solution en tte de T {mise jour de la liste tabou} Ajouter s en fin de T s := s" {changement de solution} z := z" Si z < z* alors {mise jour meilleure solution s*} s* := s z* := z FS FS Jusqu (NIter = MaxIter) ou (z" = +).

Algorithmes gntiques a) Principe Cette classe de mthodes a t invente par Holland dans les annes 70 [Hol75], pour imiter les phnomnes dadaptation des tres vivants. Lapplication aux problmes doptimisation a t dveloppe ensuite par Goldberg. On part dune population initiale de NS solutions alatoires, chacune tant code par une chane de caractres appele chromosome. Holland recommande un codage sous forme de chanes de bits, mais ce nest pas obligatoire. Chaque chromosome est muni dune mesure dadaptation (fitness). En optimisation, il sagit tout simplement de la fonction-objectif. Un algorithme gntique choisit des paires de chromosomes-parents, en favorisant les plus adapts (ceux de meilleur fitness), et engendre de nouvelles solutions (enfants) en appliquant des oprateurs de croisement (crossover) et de mutation. On espre ainsi que les bonnes solutions vont changer par croisement leurs caractristiques et engendrer des solutions encore meilleures. De plus, le travail en parallle sur plusieurs solutions fournit un panel de bonnes solutions au dcideur. b) Algorithme gnral Il existe plusieurs squelettes dalgorithmes gntiques ; nous donnons ci-dessous une version dite incrmentale. Elle commence par construire une population initiale Pop de NS solutions alatoires, par exemple NS = 100. Pop est en pratique une table de chromosomes. Lalgorithme effectue ensuite un nombre fix ditrations, MaxIter (typiquement 10 000 20 000). Chaque itration dbute par la slection alatoire de deux parents P1 et P2, biaise en faveur des meilleures solutions : la technique du tournoi binaire tire au sort deux solutions et garde la meilleure pour P1, puis rpte le mme procd pour avoir P2. Les deux parents subissent un croisement pour donner deux solutions-enfants E1 et E2. Pour faire apparatre de temps en temps des caractristiques nouvelles, ces enfants subissent avec une faible probabilit Pm (5% par exemple) une mutation. En pratique, il sagit dune petite perturbation alatoire.

58 _______________________________________________________ Algorithmes de graphes

Ces deux enfants remplacent ensuite deux solutions Pop(i) et Pop( j) tires au sort dans la plus mauvaise moiti de la population. Cette technique maintient un effectif constant tout en prservant la meilleure solution. En pratique, Pop est maintenue trie par cots croissants. La meilleure solution est alors Pop(1) et i, j sont tirs au sort entre NS/2 et NS.
Gnrer une population Pop de NS solutions alatoires NIter := 0 Pour NIter := 1 to MaxIter Tirer au sort deux parents P1 et P2 par tournoi binaire Croiser P1 et P2 pour obtenir deux enfants E1 et E2 Muter chaque enfant avec une faible probabilit fixe Pm Choisir deux solutions Pop(i),Pop(j) de cot > cot mdian de Pop Pop(i) := E1 Pop(j) := E2 FP

Ce squelette est facilement amliorable. Par exemple, quelques bonnes solutions construites par des heuristiques constructives peuvent tre incluses dans Pop au dbut, ce qui acclre la convergence. Pour viter lapparition progressive de solutions identiques (clones), qui nuisent la diversit de la population, on peut construire une population initiale de solutions toutes distinctes et rejeter ensuite les solutions-enfants qui sont dj prsentes dans la population. On peut enfin ajouter un test darrt, quand la meilleure solution de Pop na pas chang depuis un nombre fix MaxGel ditrations (par exemple 5000). c) Un exemple : le PVC Contrairement aux mta-heuristiques prcdentes, aucune application des algorithmes gntiques aux graphes nest dtaille dans les chapitres suivants. Cest pourquoi nous expliquons ici comment adapter le squelette prcdent au voyageur de commerce. On indexe les N nuds du problme de 1 N. Pour toute solution, le chromosome dcrit simplement la liste des nuds du cycle parcouru, partir dun nud-origine quelconque. La gnration de la population initiale consiste construire alatoirement NS listes de ce genre. Un croisement appel OX (order crossover) est trs utilis pour ce genre de permutations cycliques. La figure 35 donne un exemple 9 nuds pour le premier enfant E1. Lenfant E2 est construit de la mme faon, en changeant les rles des deux parents. OX tire dabord au sort deux points de coupure (traits verticaux sur la figure). La portion (2,7,4,5) de P1 situe entre les points de coupure est copie dans E1, aux mmes positions. P2 est ensuite balay cycliquement, en commenant aprs le second point de coupure : 5, 2, 8, 3, , 1, 9. Les nuds qui ne sont pas dj dans lenfant sont copis dans E1, de faon le complter cycliquement, en commenant aprs le second point de coupure. Des exemples de mutations possibles consistent dplacer un nud dans le chromosome E1 ou de permuter deux nuds.
Parent P1 : Parent P2 : Enfant E1 : Enfant E1 : 1 3 9|2 7 4 5|8 6 8 3 4|7 6 1 9|5 2 - - - 2 7 4 5 - 6 1 9 2 7 4 5 8 3

Figure 35. Exemple de croisement OX

Chapitre 3 Rsolution des problmes difficiles _________________________________ 59

3.3 Mthodes arborescentes


3.3.1 Principes gnraux
Les mthodes arborescentes (branch and bounds methods) sont des mthodes exactes doptimisation qui pratiquent une numration intelligente de lespace des solutions. Il sagit en quelque sorte dnumrations compltes amliores. Elles partagent lespace des solutions en sous-ensembles de plus en plus petits, la plupart tant limins par des calculs de bornes avant dtre construits explicitement. Do le nom synonyme de mthodes dnumration implicite. Appliques des problmes NP-difficiles, ces mthodes restent bien sr exponentielles, mais leur complexit en moyenne est bien plus faible que pour une numration complte. Elles peuvent donc pallier le manque dalgorithmes polynomiaux pour des problmes de taille moyenne. Pour des problmes de grande taille, leur dure dexcution devient prohibitive, et il faut se tourner vers des heuristiques. Soit un problme doptimisation combinatoire (POC) dfini par un ensemble S de solutions et une fonction conomique f de S dans IR. Comme pour les heuristiques, on peut inventer pour un tel problme plusieurs mthodes arborescentes. Toutes auront cependant trois composantes communes : une rgle de sparation (de partitionnement) des solutions (branching rule) ; une fonction dvaluation (de bornage) des solutions (evaluation function) ; une stratgie dexploration (search strategy).

3.3.2 Sparation
Une mthode arborescente considre implicitement (i.e. sans le gnrer vraiment) lensemble S0 des solutions dun problme doptimisation combinatoire et le spare (le partitionne) en appliquant des dcisions successives. Considrons lexemple du Problme de voyageur de commerce (PVC), dfini par une matrice des cots C, N N. On peut sparer S0, ensemble des (N - 1)! circuits hamiltoniens de C, entre ceux qui vont emprunter un arc choisi (i,j) et ceux qui ne vont pas lemprunter, voir figure 36. Les deux sousensembles obtenus ne sont pas gnrs explicitement : la donne de (i,j), cest--dire la dcision applique, suffit pour dfinir implicitement les deux sous-ensembles. Les dcisions et les partitionnements qui en rsultent construisent une arborescence (on dit aussi souvent arbre) de racine S0. Le nud-racine S0, (root node) correspond au problme complet, les nuds-fils correspondent des sous-problmes, contraints par les dcisions qui les ont crs. Par convention, les nuds sont numrots dans lordre de cration. Les sousensembles de solutions rsultant dune sparation sont leur tour sparables. A tout moment de la construction, les nuds non encore spars forment les feuilles de larbre. Toute technique de sparation est valable, condition quaucune solution ne soit perdue : toute tape, lunion des sous-ensembles reprsents par les feuilles de larbre doit reformer S0. Notons quune sparation pousse lextrme revient fragmenter S0 en sousensembles rduits une solution, en nombre exponentiel : on se ramne alors une numration complte. Heureusement, la fonction dvaluation va rduire larborescence.

60 _______________________________________________________ Algorithmes de graphes

S0

Tous les circuits hamiltoniens

S1
Empruntant (i,j)

S2
N'empruntant pas (i,j)

Figure 36. Exemple de sparation pour le PVC

3.3.3 Evaluation
Il sagit du facteur cl pour viter lnumration complte. Dans les arbres de jeux et en intelligence artificielle, la fonction dvaluation nest quune mesure heuristique cense crotre avec la proximit dune solution. En optimisation, le sens est plus fort. Lvaluation ev(S) en un nud S est une estimation du cot de la meilleure solution que peut contenir ce nud. Pour les problmes de minimisation que nous considrons gnralement, ev(S) est une valuation par dfaut, cest--dire une borne infrieure (lower bound) des cots des solutions de S (pour un problme de maximisation, cest une valuation par excs) :
s S , ev( S ) f ( s )

Soit s* la meilleure solution dj trouve. Si, en un nud S, ev(S) f(s*), alors il est inutile de continuer sparer lensemble S : il ne pourra fournir de solution meilleure que s*. On dit alors que le nud est tu (killed) ou lagu (pruned). Voici le droulement gnral dune recherche arborescente, en minimisation. Au dbut, la meilleure solution dj trouve, s*, est indfinie. On met son cot z* +. On peut aussi initialiser s* et z* avec une heuristique. Larborescence est rduite au nud-racine S0, dont on calcule lvaluation. Une itration consiste choisir une feuille de larborescence, la sparer, puis construire et valuer les nuds-fils. Un nud-fils S peut tre tu dans trois cas : a) il ne contient aucune solution ralisable, b) il est rduit une solution unique s (on met alors s* et z* jour si s est la meilleure solution dj trouve) et c) on a ev(S) z*, ce qui exclut de trouver dans S une solution meilleure que s*. La recherche se termine quand tous les noeuds ont t tus : s* contient alors une solution optimale. Si le problme est trs contraint, il est possible quil ny ait aucune solution ralisable. On sen aperoit si z* est rest + . Si lvaluation est serre, le nombre de solutions examines peut tre trs petit compar une numration complte. Les deux actions Sparer et Evaluer sont fondamentales et expliquent les noms franais de Procdure de Sparation et Evaluation (PSE) et anglais de Branch and Bound Methods, donns galement aux mthodes arborescentes.

Chapitre 3 Rsolution des problmes difficiles _________________________________ 61

3.3.4 Stratgie dexploration


Etant donne une arborescence en cours de construction, il faut choisir le prochain nud sparer et une des dcisions de sparation qui peuvent lui tre appliques. Limportant dans une mthode arborescente est de bien choisir les rgles de sparation et dvaluation. La stratgie dexploration est plutt considre comme un dtail dimplmentation. Choix du sommet sparer On utilise des stratgies visant ne stocker quune petite partie de larborescence la fois. La plus conome en mmoire est celle en profondeur dabord (depth-first search), appele aussi Procdure de Sparation et Evaluation Squentielle (PSES) : on spare en premier un des fils du dernier nud spar. Lconomie en mmoire vient du fait quon peut gnrer un seul fils la fois lors dune sparation, en diffrant la construction des autres fils plus tard. Une pile (voir chapitre 4) suffit alors pour mmoriser la branche allant de la racine S0 au dernier nud construit. Grce des retours en arrire (backtracks), cette pile va dcrire compltement larborescence, mais une branche la fois (figure 37).

S0 S1 S2 S4 S5 S3

S5 S2 S1 S0 Contenu de la pile l'examen de S5

Stratgie PSES

Figure 37. Stratgie dexploration PSES

La taille de la pile est facilement bornable a priori, daprs le problme. Ainsi, pour le PVC, on a une solution aprs le choix de N arcs au maximum, N tant le nombre de sommets du graphe. La pile doit donc, dans ce cas, tre prvue pour N dcisions au pire. La PSES est facile programmer (voir 3.3.6). En senfonant rapidement dans larborescence, elle dtecte trs tt une premire solution s*. Ceci est apprciable dans les problmes contraints, pour lesquels une heuristique utilise la racine risque dchouer. Lautre stratgie consomme plus de mmoire, mais amliore souvent plus vite la solution provisoire s*. Elle construit moins de nuds au total et est donc recommande dans les calculs la main, ou si on dispose dune bonne solution s* ds la racine. Il sagit de la Procdure de Sparation et dEvaluation Progressive (PSEP) : on spare en premier le nud de plus faible valuation, comme dans la figure 38.

62 _______________________________________________________ Algorithmes de graphes

Frontire

S0 S1 S2
ev(S2) = 7

Frontire

S0 S1 S2 S3
ev(S3) = 8

ev(S1) = 9

ev(S1) = 9

Stratgie PSEP Noeuds stocks: S1 , S2

S4
ev(S4) = 10

Aprs sparation de S2 Noeuds stocks: S1 , S3 , S4

Figure 38. Stratgie dexploration PSEP

Par rapport la PSES, la PSEP na pas besoin de retours en arrire, car un nud pre devient inutile aprs sparation. On stocke seulement lensemble des feuilles, cest--dire les seuls nuds susceptibles dtre encore spars. Les Anglo-Saxons appellent frontire cet ensemble de nuds, do le nom de frontier search quils donnent parfois la PSEP. En cours dexcution, la frontire peut contenir beaucoup de nuds. En fait, la PSEP est souvent performante, car elle amliore vite une solution initiale, permettant ensuite des lagages prcoces, faible profondeur : la frontire reste alors de taille rduite. En fait, les trois quarts des mthodes arborescentes dans la littrature sont du type PSEP. Choix de la dcision de sparation en un sommet Les stratgies PSES et PSEP permettent de choisir le prochain nud sparer, mais plusieurs dcisions de sparation peuvent ensuite tre appliques. Un critre heuristique, valid par des tests numriques, est souvent utilis pour choisir la dcision. Le but est en gnral de prcipiter la dcouverte dune nouvelle solution, ou, au contraire, de dtecter plus vite des contradictions prouvant quun nud est vide. Voici quelques exemples : a) Choix glouton. Par exemple, plus petit arc libre pour le PVC. b) Choix le plus informant. Par exemple, dans un programme linaire en 0-1, sparation sur la variable xi prsente dans le plus grand nombre de contraintes. c) Utilisation dune borne suprieure. On applique la dcision qui donne la plus petite borne, dans lespoir dobtenir une prochaine solution aussi bonne que possible. d) Pnalits (ou regrets). On associe chaque dcision possible di une pnalit pi, valeur exacte ou approche de la variation dvaluation pour le plus mauvais fils. Par exemple, si un nud S est spar en k fils F1, F2, , Fk par une dcision di, on pose :
pi = max (ev( F j ) ev( S ))
j =1, k

La dcision applique est celle de pnalit maximale. Cette technique est surtout intressante quand on peut calculer les pi sans construire rellement les fils.

Chapitre 3 Rsolution des problmes difficiles _________________________________ 63

3.3.5 Arrt et performances


Une PSEP sarrte quand lensemble des feuilles est vide, une PSES, quand la pile est vide. Lespace des solutions a alors t compltement (mais implicitement) visit. Si le problme admet des solutions optimales, les mthodes en ont trouv une et lont stocke dans s*. Si le problme na pas de solution, alors z* = +. Il est difficile dvaluer la complexit dune mthode arborescente. Dans le pire des cas, ce genre de mthodes peut mal laguer et sapprocher dune numration complte. Les expriences numriques montrent que la complexit moyenne est en gnral une exponentielle amliore, par exemple abaissant le cot dune numration complte de O(2n) O(1.5n). On peut donc traiter dans un mme temps des problmes plus gros. Si la recherche est trop longue, on peut la stopper aprs un nombre maximal de nuds Nmax. Dans une PSEP, on peut galement stopper si la mmoire alloue aux feuilles est sature. Dans les deux cas, s* contient souvent une trs bonne solution. Une recherche arborescente tronque est donc une forme dheuristique trs labore. Les nuds actifs au moment de larrt dune PSEP permettent en plus de borner la distance la solution optimale s* :
z' f ( s*) z'
S ACTIFS

Min

{ev(S )}

ACTIFS est lensemble des nuds actifs (feuilles de larbre). Ce genre de borne est en gnral de trs bonne qualit.

3.3.6 Implmentation des mthodes arborescentes


On peut appliquer une mthode arborescente un POC ds quon dispose dun critre de sparation et dune fonction dvaluation. La stratgie dexploration (PSES ou PSEP) est plutt un choix dimplmentation. Les deux stratgies peuvent tre aussi valables lune que lautre. Contrairement une opinion rpandue, les mthodes arborescentes sont faciles implmenter, condition de procder de manire modulaire, avec des procdures ou fonctions pour lvaluation, le test solution unique, et le test nud vide. Squelette de mthode PSEP On note s* la meilleure solution provisoire, et z* = f(s*) son cot. ACTIFS est lensemble des nuds actifs (sommets-feuilles, pouvant encore tre spars). En pratique, un nud est un record (en Delphi) dcrivant le problme rsiduel au nud considr. Si ce record est trop gros, on peut y stocker seulement la liste des modifications permettant de le reconstituer partir du problme de dpart. Lvaluation est galement conserve dans le record pour viter des recalculs ultrieurs.
ACTIFS := {S0} Si le problme est peu contraint alors Calculer s* par une heuristique z* := f(s*) Sinon z* := + FS

64 _______________________________________________________ Algorithmes de graphes


Tant que ACTIFS Enlever de ACTIFS le noeud S de plus faible valuation Choisir la dcision de sparation appliquer Construire un par un les fils de S (conserver les valuations) Pour chaque fils F de S Si F contient une seule solution, s, alors Si f(s) < z* alors s* := s ; z* := f(s*) FS Dtruire F Sinon Si (F = ) ou (ev(F) z*) alors Dtruire F Sinon {Le noeud sera spar} Insrer noeud F dans ACTIFS (en tte par exemple) FS Dtruire S, devenu inutile FP FT.

Deux remarques En Delphi, ACTIFS est en pratique un tableau ou une liste chane de records. Si un nud permet de trouver une meilleure solution, z* augmente et peut devenir suprieur lvaluation de certains nuds en attente dans ACTIFS. Ces nuds seront cependant tus par le Sinon Si quand ils seront extraits de ACTIFS. Pour viter que ACTIFS ne devienne trop grosse, on peut aussi balayer cette liste priodiquement pour tuer un maximum de nuds, ds quon a une nouvelle solution. Squelette de mthode PSES On utilise cette fois une pile P de nuds, cest--dire une pile de records. Si cette pile est susceptible dtre trop grosse, on peut utiliser une implmentation avec une liste chane au lieu dun tableau. Nous donnons lexemple dune PSES sparations binaires, o un nud peut donner un fils gauche et un fils droit. Par rapport la PSEP, on ajoute dans les nuds un champ Statut avec les valeurs Nouveau, Gauche, ou Droit. Le schma est gnralisable des sparations non binaires, en remplaant Statut par le numro du dernier fils construit. Avec un langage non rcursif comme Fortran, ou si vous avez trop peu de mmoire pour la pile en Delphi, il vaut mieux utiliser le squelette suivant, non rcursif.
ViderPile (P) Empiler dans P le problme initial S0, avec le statut Nouveau Rpter Soit S le noeud en sommet de pile Si S.Statut = Nouveau alors Si S est une solution unique s alors Si f(s) < z* alors s* := s ; z* := f(s*) FS Dpiler (P,S) Sinon Si (S = ) ou (ev(S) z*) alors Dpiler (P,S) Sinon {S doit tre spar} Choisir la dcision appliquer Construire le fils gauche dans un record R, statut Nouveau S.Statut := Gauche Empiler (P,R) FS

Chapitre 3 Rsolution des problmes difficiles _________________________________ 65


Sinon Si S.Statut = Gauche alors S.Statut := Droit; Construire le fils droit dans un record R, statut Nouveau S.Statut := Droit Empiler (P,R) Sinon {Les 2 fils de S ont dj t traits, et S.Statut = Droit} Dpiler (P,S) FS Jusqu PileVide (P).

Voici maintenant une formulation rcursive, utile en maquettage ou pour les petits cas. Les deux variables z* et s* sont supposes globales. Il sagit dun parcours de larborescence appel RGD (Racine-Gauche-Droit) ou en profondeur.
Procdure PSES (S:Noeud) Variable F: Noeud Si S est une solution complte s alors Si f(s) < z* alors s* := s ; z* := f(s*) FS Sinon Si (S ) et (ev(S) < z*) alors Choisir la dcision de sparation appliquer Pour chaque fils F de S rsultant de la sparation PSES (F) FP FS FProc.

3.3.7 Un exemple : le sac dos en 0-1


Rappels et exemple numrique Rappelons que ce problme consiste calculer un sous-ensemble de valeur maximale parmi n objets, sous une contrainte de poids total limit b. Les valeurs forment un n-vecteur c, et les poids un n-vecteur a. Si on dfinit des variables binaires xi (valant 1 si lobjet i est pris), on peut formuler le problme comme un programme linaire en 0-1 une seule contrainte :
n max z = ci xi i =1 n ai xi b i =1 x {0,1}n

La difficult vient de linterdiction de fractionner les objets. Nous allons le rsoudre par une mthode arborescente. Considrons la donne suivante : n=5 a = (18, 12, 15, 16, 13) c = (27, 9, 30, 16, 6.5) b = 45

66 _______________________________________________________ Algorithmes de graphes

Dfinition des nuds et rgle de sparation En un nud S, certains objets vont tre pris, dautres interdits, et dautres auront un statut non encore dtermin, on dira quils sont libres. On spare un nud S en choisissant une variable xi libre et en posant xi = 1 (lobjet i est pris) ou bien 0 (i est non pris). Evaluation en un nud S Comme on a affaire un problme de maximisation, lvaluation dun nud S va tre une estimation par excs (majorant) du cot maximal des solutions contenues dans ce nud. Lestimation se base sur le programme linaire relax, cest--dire que les xi peuvent prendre toute valeur entre 0 et 1. Cette situation correspond au cas idal o les objets peuvent tre fractionns, elle se rsout trs facilement. On trie pour cela les objets par utilit (valeur relative) dcroissante ci /ai, comme dans le tableau 32.
Tableau 32. Tri des objets par utilit dcroissante Rang dans le tri
1 2 3 4 5

Indice objet
3 1 4 2 5

ci
30 27 16 9 6.5

ai
15 18 16 12 13

Utilit ci/ai
2 1.5 1 0.75 0.5

On prend les objets par utilits dcroissantes, en fractionnant ventuellement le dernier objet pris, de manire remplir le sac. Ici, on prend les objets 3 puis 1, pour un cot de 57 et un poids de 33. On ne peut prendre ensuite que 12/16 = 3/4 de lobjet 4 et on atteint ainsi le poids-limite de 45, pour une valeur totale de 69. Ce calcul nous donne lvaluation la racine. La solution maximale du problme si les fractionnements sont interdits cotera donc au plus 69. En un nud interne, on rsout le problme rsiduel avec les objets encore libres et la capacit encore disponible, et on ajoute la valeur trouve celle des objets dj pris. Choix du nud sparer et de la dcision de sparation sur ce sommet On prend par exemple une PSEP. Ici, en maximisation, on spare donc chaque itration la feuille dvaluation maximale. La dcision de sparation se fait sur lobjet libre dutilit maximale. Larborescence obtenue est donne par la figure 39. Les nuds numrots par ordre de cration contiennent lvaluation. Remarquons quun nud comme S6, qui viole la contrainte de capacit, peut tre tu immdiatement. S9 donne la premire solution, de cot 66 : les objets 1, 2 et 3 sont pris, et le sac est plein. Cest la fin de la recherche, car toutes les feuilles en attente (S1, S3 et S7) sont dvaluation infrieure et peuvent donc tre tues.

3.4 Rfrences
Le lecteur qui veut en savoir plus sur la programmation dynamique et la programmation en nombres entiers peut consulter les livres de Laurire [Lau82] et de Smith [Smi90] (pour la programmation dynamique), et ceux de Salkin [Sal75], de Nemhauser et Wolsey [Nem88] et de Wolsey [Wol98] (pour la programmation linaire en nombres entiers).

Chapitre 3 Rsolution des problmes difficiles _________________________________ 67

S0: 69 x3 = 0 S1: 51.25 x1 = 0 S3: 56 x4 = 0 S5: 66 x2 = 0 S7: 63 x5 = 0 S9: 66 x2 = 1 S8: 66 x5 = 1 S10: tu (infaisable) x3 = 1 S2: 69 x1 = 1 S4: 69 x4 = 1 S6: tu (infaisable)

Figure 39. Arborescente construite pour lexemple du Sac Dos

Lheuristique H avec PH = 1.5 pour le PVC euclidien est expose par exemple dans le livre de Papadimitriou [Pap98], qui contient un chapitre gnral sur les mthodes approches. Fisher value dans [Fis80] quelques heuristiques pour le problme du sac dos. Les rsultats sur les heuristiques FF et FFD du bin packing sont dus Johnson [Joh74a]. Concernant les mta-heuristiques, le recuit simul a t popularis par un article de Kirkpatrick publi dans Science en 1983 [Kir83]. Johnson a publi deux articles trs fouills dans [Joh89] et [Joh91] sur ses applications en optimisation combinatoire. Les mthodes tabou ont t prsentes par Glover dans deux articles [Glo89] et [Glo90]. Lide dalgorithme gntique est parue dans un livre de Holland [Hol75] puis a t dveloppe dans un ouvrage classique de Goldberg [Gol89]. Les applications russies des algorithmes gntiques ont donn lieu une profusion douvrages rcents : Gen et Cheng [Gen00], Haupt et Haupt [Hau98], Man et Tang [Man99], Michalewicz [Mic96] et Mitchell [Mit98]. Quatre livres rcents font le point sur les mtaheuristiques en gnral : ceux de RaywardSmith, Osman, Reeves et Smith [Ray96], de Aarts et Lenstra [Aar97], de Corne, Dorigo et Glover [Cor99], et de Kochenberger et Glover [Koc03]. Les deux derniers prsentent des mtaheuristiques rcentes comme les recherches disperses (scatter search) et les mthodes colonies de fourmis.

68 _______________________________________________________ Algorithmes de graphes

Les mthodes arborescentes sont trs utilises en programmation linaire en nombres entiers, voir par exemple Salkin [Sal75] et Wolsey [Wol98]. Le livre de Martello et Toth [Mar90] donne des algorithmes sophistiqus pour le sac dos ainsi que pour le bin packing.

Vous aimerez peut-être aussi