Vous êtes sur la page 1sur 177

Frdric Meunier

INTRODUCTION LA RECHERCHE
OPRATIONNELLE

Frdric Meunier
Universit Paris Est, CERMICS, Ecole des Ponts Paristech, 6-8 avenue Blaise Pascal, 77455
Marne-la-Valle Cedex.

E-mail : frederic.meunier@cermics.enpc.fr

INTRODUCTION LA RECHERCHE OPRATIONNELLE

Frdric Meunier

TABLE DES MATIRES

1. Gnralits

..........................................................................

Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Histoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Modlisation et optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Objectif de ce cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

partie I. Fondements
2. Bases

................................................................

................................................................................

2.1. Graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2. Retour sur les ponts et sur le voyageur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

2.3. Programmation mathmatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.4. Problme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.5. Algorithme et complexit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.6. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

3. Plus courts chemins et programmation dynamique

............................

27

3.1. Cas du graphe orient et programmation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

3.2. Cas du graphe non-orient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

3.3. Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

3.4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

4. Programmation linaire

............................................................

43

4.1. Dnition et exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

4.2. Quelques lments thoriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.3. Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

4.4. Dualit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

4.5. Une application de la dualit : jeux matriciels somme nulle . . . . . . . . . . . . . . . . . . . . . .

54

4.6. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

5. Flots et Coupes

....................................................................

59

5.1. Flots et coupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

5.2. Multiots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

5.3. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

6. Graphes bipartis : problme d'aectation, problme de transport, mariages


stables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

6.1. L'objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

6.2. Problme du couplage optimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

6.3. Couplages gnraliss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

6.4. Problme de l'aectation optimale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

6.5. Mariages stables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

6.6. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

7. Que faire face un problme dicile ?

..........................................

77

7.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

7.2. Sparation et valuation ou branch-and-bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

7.3. Mtaheuristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

7.4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85

partie II. Problmatiques

..........................................................

8. Remplissage de conteneurs

........................................................

87
89

8.1. Sac--dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

8.2. Bin-packing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

8.3. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

9. Positionnement d'entrepts

........................................................

97

9.1. Formalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

9.2. Branch-and-bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

98

9.3. Recherche locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100


9.4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

10. Ordonnancement industriel

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

10.1. Prliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105


10.2. Management de projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.3. Ordonnancement d'atelier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
10.4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

11. Tournes

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

11.1. Problme du voyageur de commerce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121


11.2. Problme du postier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
11.3. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

12. Conception de rseaux

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

12.1. Quelques rappels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135


12.2. Arbre couvrant de poids minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
12.3. Arbre de Steiner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
12.4. Quelques remarques pour nir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
12.5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

13. Ouverture

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

13.1. Quelques outils absents de ce livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147


13.2. Trois domaines la frontire de la recherche oprationnelle . . . . . . . . . . . . . . . . . . . . . . 148

Elments de correction
Bibliographie
Annexe

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Quelques outils de R.O.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Quelques socits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167


Ressources en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

vi

Quelques SSII spcialises dans la RO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168


Quelques socits ditrices de logiciels de RO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Entreprises franaises ayant des dpartements avec comptences en RO . . . . . . . . . . . . . . . . 169
Quelques solveurs de programmation linaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Quelques langages de modlisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

vii

CHAPITRE 1

GNRALITS

Prsentation
La recherche oprationnelle (RO) est la discipline des mathmatiques appliques qui traite
des questions d'utilisation optimale des ressources dans l'industrie et dans le secteur public.
Depuis une dizaine d'annes, le champ d'application de la RO s'est largi des domaines comme
l'conomie, la nance, le marketing et la planication d'entreprise. Plus rcemment, la RO a t
utilise pour la gestion des systmes de sant et d'ducation, pour la rsolution de problmes
environnementaux et dans d'autres domaines d'intrt public.

Exemples d'application. 

Planier la tourne d'un vhicule de livraison qui doit passer

par des points xs l'avance puis revenir son point de dpart en cherchant minimiser la
distance parcourue est un problme typique de recherche oprationnelle. On appelle ce problme
le

problme du voyageur de commerce

(tudi plus en dtail au Chapitre 11).

Remplir un conteneur avec des objets de tailles et de valeurs variables. Si le conteneur a une
capacit nie, on va chercher maximiser la valeur place dans le conteneur. On appelle ce
problme le

problme du sac--dos

(tudi plus en dtail au Chapitre 8).

Ordonnancer les tches sur un chantier. Pour chaque tche


on connat les autres tches dont
dbut de chacune d'elles

dit que ce problme est un

T,

on connat sa dure. De plus,

dpend directement et combien de temps avant ou aprs le

doit dmarrer. On dsire minimiser la dure totale du chantier. On

problme d'ordonnancement

(tudi plus en dtail au Chapitre 10).

Chacun de ces problmes peut bien sr tre compliqu l'envie. Dans ce cours, on restera
relativement simple  quelques contraintes de plus susent en eet faire de ces problmes de
vritables sujets de thse (par exemple pour le remplissage de conteneur un sujet de thse peut
consister en : plusieurs types de conteneurs, plusieurs produits stocker, des incompatibilits).

Histoire
La recherche oprationnelle est ne pendant la Seconde Guerre mondiale des eorts conjugus
d'minents mathmaticiens (dont von Neumann, Dantzig, Blackett) qui il avait t demand
de fournir des techniques d'optimisation des ressources militaires. Le premier succs de cette
approche a t obtenue en 1940 par le Prix Nobel de physique Patrick Blackett qui rsolut un
problme d'implantation optimale de radars de surveillance. Le qualicatif  oprationnelle 
vient du fait que les premires applications de cette discipline avait trait aux oprations militaires. La dnomination est reste par la suite, mme si le domaine militaire n'est plus le
principal champ d'application de cette discipline, le mot  oprationnelle  prenant alors plutt

le sens d' eectif . Ce sont donc ces mathmaticiens qui ont cr une nouvelle mthodologie
caractrise par les mots-cls

modlisation

et

optimisation.

A partir des annes 50, la recherche oprationnelle fait son entre dans les entreprises. En
France, des entreprises comme EDF, Air France, la SNCF crent cette poque des services de
recherche oprationnelle (qui existent toujours). La discipline commence tre enseigne dans
les universits et les grandes coles. Puis, au milieu des annes 70, sans doute cause d'un
excs d'enthousiasme au dpart et l'inadquation des moyens informatiques l'application
des mthodes de la RO, la discipline s'essoue. A partir du milieu des annes 90, on assiste
un retour en force la RO, les outils informatiques tant maintenant la hauteur des mthodes
proposes par la recherche oprationnelle. On assiste depuis une explosion du nombre de
logiciels commerciaux et l'apparition de nombreuses botes de conseil. Pour la France, notons
Ilog (65 millions d'euros de CA), Eurodcision (2,8 millions d'euros de CA), Artelys (1,6 millions
d'euros de CA) l'tranger Dash-Optimization (rachet dbut 2008 pour 32 millions de dollars
par Fair Isaac), IBM Optimization et beaucoup d'autres (le site de INFORMS Institute of
Operations Research and Management Science en liste prs de 240).

Les racines. 

Si l'on cherche trouver des prcurseurs la Recherche Oprationnelle, on

peut penser Alcuin ou Euler qui se sont tous deux intresss des problmes du type RO,
bien qu'aucune application n'ait motiv leur travail.
Alcuin est le moine irlandais charg par Charlemagne de construire l'cole palatine et qui
inventa le problme du loup, de la chvre et du chou devant traverser une rivire dans une
barque o au plus un lment peut prendre place.
Un homme devait transporter de l'autre ct d'un euve un loup, une chvre et un
panier de choux. Or le seul bateau qu'il put trouver ne permettait de transporter que
deux d'entre eux. Il lui a donc fallu trouver le moyen de tout transporter de l'autre
ct sans aucun dommage. Dise qui peut comment il a russi traverser en conservant
intacts le loup, la chvre et les choux

(1) .

Euler est le mathmaticien allemand qui les notables de Knigsberg demandrent s'il tait
possible de parcourir les ponts de la ville en passant sur chacun des 7 ponts exactement une fois
(voir Figure 1). Ce genre de problme se rencontre maintenant trs souvent dans les problmes
de tournes du type facteur ou ramassage de dchets mnagers, dans lesquels il faut parcourir
les rues d'une ville de faon optimale. Euler trouva la solution en 1736  un tel parcours est
impossible  en procdant une modlisation subtile par des mots. La solution actuelle, beaucoup
plus simple, utilise une modlisation par un

graphe

(voir Chapitre 2). On voit sur cet exemple

qu'une bonne modlisation peut simplier de manire drastique la rsolution d'un problme.
Le premier problme de recherche oprationnelle vise pratique a t tudi par Monge en
1781 sous le nom du problme des dblais et remblais. Considrons
combler

trous. Notons

pour combler le

j me

ai

la masse du

ime

tas de sable et

bj

tas de sable, devant servir

la masse de sable ncessaire

trou. Quel plan de transport minimise la distance totale parcourue par le

sable ?
La solution que proposa Monge est intressante et procde par une modlisation dans un espace continu dans lequel on cherche une godsique  malheureusement, elle n'est pas correcte.

1. Homo quidam debebat ultra uvium transferre lupum, capram, et fasciculum cauli. Et non potuit aliam
navem invenire nisi quae duos tantum ex ipsis ferre valebat. Praeceptum itaque ei fuerat ut omnia haec ultra
illaesa omnino transferret. Dicat, qui potest, quomodo eis illaesis transire potuit.

Figure 1.

Knigsberg et ses 7 ponts

La solution correcte pour trouver l'optimum est connue depuis les annes 40 et utilise la programmation linaire (que nous verrons au Chapitre 4), ou mieux, la thorie des ots (que nous
verrons au Chapitre 5).

Modlisation et optimisation
[Wikipedia] Un modle mathmatique est une traduction de la ralit pour pouvoir lui
appliquer les outils, les techniques et les thories mathmatiques, puis gnralement,
en sens inverse, la traduction des rsultats mathmatiques obtenus en prdictions ou
oprations dans le monde rel.
Les problmes d'organisation rencontrs dans une entreprise ne sont pas mathmatiques dans
leur nature. Mais les mathmatiques peuvent permettre de rsoudre ces problmes. Pour cela,
il faut traduire le problme dans un cadre mathmatique, cadre dans lequel les techniques de la
recherche oprationnelle pourront s'appliquer. Cette traduction est le modle du problme.
Cette phase essentielle s'appelle la

modlisation.

La rsolution d'un problme dpend cru-

cialement du modle choisi. En eet, pour un mme problme, direntes modlisations sont
possibles et il n'est pas rare que le problme semble insoluble dans une modlisation et trivial
dans une autre.
D'autre part, tous les lments d'un problme ne doivent pas tre modliss. Par exemple,
lorsqu'on souhaite planier une tourne, la couleur du vhicule n'a pas d'intrt. Le statut du
conducteur, la nature du vhicule ou du produit transport peuvent, eux, en avoir, et seule
une comprhension de l'objectif de l'optimisation de la tourne peut permettre de trancher.
Souvent, la phase de modlisation est accompagne ou prcde de nombreuses discussions avec
le commanditaire (lequel n'a d'ailleurs pas toujours une ide claire de ce qu'il cherche obtenir
 ces discussions lui permettent alors galement de prciser ses objectifs).
Une des vrais dicults de dpart est de savoir quels lments doivent tre modliss et quels
sont ceux qui n'ont pas besoin de l'tre. Il faut parvenir trouver le juste quilibre entre un

modle simple, donc plus facilement soluble, et un modle compliqu, plus raliste, mais plus
dicile rsoudre. Cela dit, pour commencer, un modle simple est toujours prfrable et permet
souvent de capturer l'essence du problme

(2) , de se construire une intuition et de proposer des

solutions faciles implmenter.


Ce qui est demand au chercheur oprationnel, c'est de proposer une meilleure utilisation des
ressources, voire une utilisation optimale. Les bonnes questions se poser, face un problme
du type recherche oprationnelle, sont les suivantes :
 Quelles sont les

variables de dcision ?

C'est--dire quels sont les lments de mon modle

que j'ai le droit de faire varier pour proposer d'autres solutions ?


 Quelles sont les

contraintes ?

Une fois identies les variables de dcision, quelles sont les

valeurs autorises pour ces variables ?


 Quel est l'objectif ou le

critre ? Quelle est la quantit que l'on veut maximiser ou minimiser ?

Rappelons immdiatement que, en toute rigueur, on n'optimise qu'une seule quantit la fois.
On ne peut pas demander d'optimiser la fois la longueur d'un trajet et son temps de parcours :
le trajet le plus court peut trs bien passer par un chemin vicinal et le trajet le plus rapide tre
trs long mais sur autoroute. L'optimum par rapport un critre n'a pas de raison de concider
avec l'optimum par rapport l'autre critre. Il existe bien ce qu'on appelle l'optimisation

objectif

ou

multi-critre,

multi-

mais ce n'est jamais directement une optimisation. C'est une mthode

qui consiste hirarchiser les objectifs, ou leur donner une certaine pondration, ce qui revient
in ne un vrai problme d'optimisation ; ou alors de proposer toute une famille de solutions
dite Pareto-optimale.
Une fois le modle crit, le chercheur oprationnel va proposer un algorithme de rsolution qui
tiendra compte de l'objectif qui lui a t x. Comme nous le verrons de nombreuses reprises
dans ce cours, pour un mme modle, un grand nombre d'algorithmes peut tre propos. Ces
algorithmes se direncient par la qualit de la solution qu'ils fournissent, le temps d'excution,
la simplicit d'implmentation. Dans certains cas, il peut tre cruciale de pouvoir fournir une
solution en

1 ms,

avec une certaine tolrance sur la qualit de la solution. Dans d'autres cas,

semaine de calcul peut tre acceptable mais en revanche on souhaite trouver l'optimum. En

gnral, on se situe entre ces deux extrmes.


La recherche oprationnelle dispose d'outils thoriques qui permettent a priori d'apprcier ces
points (rapidit de l'algorithme, qualit de la solution,...) sans avoir exprimenter. On parle
de

validation thorique.

Ensuite, il faut raliser un prototype de l'algorithme (on peut parle de

 code acadmique  si ce prototype est dvelopp en laboratoire) qui permet de dmontrer


sa ralisabilit pratique  on parle de
passe au

dploiement de la solution,

validation pratique.

Enn, si ces tapes sont valides, on

qui consiste produire un code robuste, programmer une

interface, discuter les formats des chiers d'input, de discuter la question de la maintenance du
code, etc. mais l on s'loigne du cur du mtier du chercheur oprationnel.
En rsum, la mthodologie de la recherche oprationnelle suit en gnral le schma suivant.
1. Objectifs, contraintes, variables de dcision.
2. Modlisation.
3. Proposition d'un algorithme, validit thorique de l'algorithme (temps d'excution pour
trouver la solution, qualit de la solution fournie).
4. Implmentation, validation pratique de la solution.

2. En physique ou en conomie, beaucoup de modles simples, comme le modle d'Ising ou le modle de


concurrence parfaite, sont trs fructueux pour expliquer le rel.

5. Dploiement de la solution.

Objectif de ce cours
La recherche oprationnelle occupe une place grandissante dans l'industrie, la logistique et les
transports. Pour un ingnieur souhaitant faire un travail technique dans ces disciplines, elle est
quasi-incontournable. L'objectif de ce cours est de donner les bases de recherche oprationnelle :
la mthodologie, les problmes et les modles typiques, les principales techniques de rsolution.
Un tudiant matrisant les exercices de ce cours est capable de proposer une modlisation d'une
grande part des problmes de recherche oprationnelle rencontrs dans l'industrie, de proposer des approches de rsolution et d'en discuter les qualits respectives. Le cours se focalisera
principalement sur les tapes 2. et 3. ci-dessus.

Premire PARTIE I

FONDEMENTS

CHAPITRE 2

BASES

2.1. Graphes
Une brique de base dans la modlisation est le

graphe. Les graphes apparaissent naturellement

lorsqu'on est confront un rseau (rseau de transport, rseau informatique, rseau d'eau ou de
gaz, etc.). Comment parcourir le rseau de manire optimale ? C'est la question du voyageur de
commerce par exemple. Comment concevoir un rseau informatique robuste, tout en minimisant
le nombre de connexions ? C'est le thme de la conception de rseau (Network Design), abord
au Chapitre 12.
Mais les graphes apparaissent galement de manire plus subtile dans certaines modlisations
de problmes o la structure du graphe n'est pas physique. Un exemple classique est le problme
de l'aectation optimale d'employs des tches qui sera tudi aux Chapitres 5 et 6. Les
sommets reprsentent des tches et des employs, et les artes les appariements possibles entre
tches et employs. Ils apparaissent galement dans des problmes d'ordonnancement, o les
sommets reprsentent des tches et les arcs les relations de prcdence.

2.1.1. Graphe non-orient. 

graphe G = (V, E) est la donne d'un ensemble ni V de


sommets et d'une famille nie E d'artes, chacune associe une paire de sommets, les extrmits
de l'arte. On crit indiremment e = uv ou e = vu, o e est une arte et o u et v sont les
sommets auxquels l'arte est associe. Si e = uv , on dit que u et v sont voisins e, et que e est
incidente u et v . Un sommet auquel aucune arte n'est incidente est dit isol.
Un

On parle de famille d'artes pour souligner le fait que les rptitions sont autorises. En cas
de rptition, on parle d'artes

parallles.

La paire associe une arte peut galement tre la

rptition d'un sommet, auquel cas on parle de

boucle.

Un graphe est souvent reprsent dans

le plan par des points  ce sont les sommets  relis par des lignes  ce sont les artes. Voir la
Figure 1.
L'ensemble des artes dont une extrmit exactement est un sommet
boucle dont les extrmits sont

deg(u) est
v
/ X.

la quantit

Un graphe est dit

|(u)|.

complet

Figure 2. Un graphe est dit

n'est donc pas dans

On note

(X)

(u).

Le

degr

(u). Une
u et not
uv avec u X et

est not

d'un sommet

l'ensemble des artes de la forme

si toute paire de sommets est relie par une arte. Voir exemple

biparti

si l'ensemble des sommets peut tre partitionn en deux

parties n'induisant chacune aucune arte. Voir exemple Figure 3.

v3

v3 v 3
v5

v1 v 2

v2

v2 v 5

v1

v5 v 6

v1 v 2
v3 v 4

v6

v4

Exemple de graphe. Ce graphe est non connexe, possde 6 sommets, 6 artes,


dont deux artes parallles et une boucle.

Figure 1.

Figure 2.

Exemple de graphe complet.

Un sous-graphe (induit) H d'un graphe G a pour ensemble de sommets un sous-ensemble


V 0 V . Les artes de H sont alors toutes celles de G ayant leurs deux extrmits dans V 0 (1) .

2.1.1.1. Chane, cycle, connexit.

 Une

chane

est une suite de la forme

v0 , e1 , v1 , e2 , . . . , vk1 , ek , vk
0, vi V pour i = 0, . . . , k et ej E pour j = 1, . . . , k avec ej = vj1 vj .
L'entier k est la longueur de la chane. En d'autres termes, une chane est un trajet possible dans
o

est un entier

la reprsentation d'un graphe lorsqu'on suit les artes sans rebrousser chemin sur une arte. Si
les

ei

sont distincts deux deux, la chane est dite

simple.

Si de plus la chane ne passe jamais

1. Dans la terminologie anglaise, un tel sous-graphe est appel induced subgraph. Ces artes sont notes E[V 0 ].
On parle aussi en franais de graphe partiel de G, qui a le mme ensemble de sommets que G, mais n'a qu'une
partie de ses artes, et de sous-graphe partiel, qui a comme ensemble de sommets une partie des sommets de G
et comme ensemble d'artes une partie de celles de E  en anglais, on parle alors de subgraph.

10

Figure 3.

Exemple de graphe biparti.

Figure 4. Graphe possdant une chane hamiltonienne. La chane hamiltonienne est


mise en gras.

plus d'une fois sur un sommet, elle est dite

lmentaire.

Une chane simple passant par toutes

eulrienne. Une chane lmentaire passant par tous les sommets


hamiltonienne (voir un exemple Figure 4).
une chane de longueur 1, simple et ferme. C'est donc une suite de la forme

les artes d'un graphe est dite


du graphe est dite
Un

cycle

est

v0 , e1 , v1 , . . . , ek , v0
j < k , et ek = v0 vk1 . Un cycle est lmentaire si les vi pour i = 0, . . . , k1
sont distincts deux deux. Un cycle passant par toutes les artes d'un graphe est dit eulrien.
Un cycle lmentaire passant par tous les sommets du graphe est dit hamiltonien.
Un graphe est dit connexe si entre toute paire de sommets il existe une chane.

avec

ej = vj1 vj

pour

2.1.1.2. Couplage.  Un couplage dans un graphe G = (V, E) est un sous-ensemble d'artes


M E telles que deux artes quelconques de M soient disjointes. Une couverture par les
sommets est un sous-ensemble de sommets C V tel que toute arte de E touche au moins
11

un sommet de

C.

La cardinalit maximale d'un couplage se note

d'une couverture par les sommets se note

(G).

La cardinalit minimale

(G).

On a la proprit trs utile suivante, car elle permet par exemple d'valuer la qualit d'un
couplage.

Proposition 2.1.1. 

G. Alors

Soit M un couplage et C une couverture par les sommets d'un graphe


|M | |C|.

La preuve est laisse en exercice. Cette proposition peut galement s'crire

2.1.1.3. Coloration.

(G) (G).
 Une notion fructueuse en thorie des graphes et trs utile en Recherche

coloration. Une coloration d'un graphe est une application c :


couleurs. Une coloration propre est telle que pour toute
c(u) 6= c(v) : deux sommets voisins ont des couleurs direntes. Une

Oprationnelle est la notion de

V N.

Les entiers

paire de voisins

u, v

sont alors appels

on ait

question que l'on peut se poser, tant donn un graphe, est le nombre minimum de couleurs
possible pour une coloration propre. Ce nombre, not

(G),

s'appelle le

nombre chromatique

de

G.
On a l'ingalit
cardinalit du plus grand sous-graphe complet

(G),

dont on peut aisment se convaincre.

2.1.2. Graphe orient. 

Un graphe orient D = (V, A) est la donne d'un ensemble ni


V de sommets et d'une famille nie A d'arcs, chacun associ un couple (2) de sommets, les
extrmits de l'arc. On crit a = (u, v), o a est un arc et o (u, v) est le couple de sommets
auquel l'arc est associ. Si a = (u, v), on dit que u et v sont voisins a, et que a est incidente
u et v . Pour un arc (u, v), le sommet u est appel antcdent de v et v est le successeur de u.
Si v 6= u, on dit de plus que l'arc quitte u et entre en v .

Comme pour les graphes non orients, les rptitions d'arcs sont autorises et, en cas de rp-

tition, on parle d'arcs

parallles.

Le couple dnissant un arc peut galement tre la rptition

d'un sommet, auquel cas on parle de

boucle.

Lorsqu'on reprsente un graphe orient, les lignes

deviennent des ches (voir Figure 5).

u est not + (u) et l'ensemble des arcs entrant en


u est not (u). Le degr sortant (resp. degr entrant) d'un sommet u et not deg+ (u) (resp.
deg (u)) est la quantit | + (u)| (resp. | (u)|). On note + (X) (resp. (X)) l'ensemble des
arcs de la forme (u, v) avec u X et v
/ X (resp. u
/ X et v X ).
Un chemin est une suite de la forme
L'ensemble des arcs quittant un sommet

v0 , a1 , v1 , a2 , . . . , vk1 , ak , vk
k est une entier 0, vi V pour i = 0, . . . , k et aj A pour j = 1, . . . , k avec aj = (vj1 , vj ).
k est la longueur du chemin. En d'autres termes, un chemin est un trajet possible dans la
reprsentation d'un graphe lorsqu'on suit les arcs dans le sens des ches. Si les ai sont distincts
deux deux, le chemin est dite simple. Si de plus le chemin ne passe jamais plus d'une fois sur
un sommet, elle est dite lmentaire. Un chemin simple passant par tous les arcs d'un graphe

L'entier

2. Rappelons que les deux lments d'un couple sont ordonns, ceux d'une paire ne le sont pas.

12

u1
u3
(u3 , u4 )
u4
(u4 , u3 )

(u5 , u3 )

u5
(u7 , u5 )
(u2 , u1 )

u7

u2

(u6 , u3 )
u6
Figure 5.

orient est dit

hamiltonien.
Un circuit

Exemple de graphe orient. Ce graphe possde 7 sommets et 5 arcs.

eulrien.

Un chemin lmentaire passant par tous les sommets du graphe est dit

est un chemin de longueur

1,

simple et ferme. C'est donc une suite de la forme

v0 , a1 , v1 , . . . , ak , v0
aj = (vj1 , vj ) pour j < k , et ak = (vk1 , v0 ). Un circuit est lmentaire si les vi pour
i = 0, . . . , k 1 sont distincts deux deux. Un circuit passant par tous les arcs d'un graphe
orient est dit eulrien. Un circuit lmentaire passant par tous les sommets du graphe est dit
hamiltonien. Un exemple de circuit eulrien est donn Figure 6.

avec

faiblement connexe si le graphe non orient obtenu en oubliant


fortement connexe si pour tout couple (u, v) de
sommets, il existe un chemin allant de u v .
Une dernire remarque : Si rien n'est prcis par ailleurs, n reprsentera |V | le nombre de
sommets et m reprsentera |E| (ou |A|) le nombre d'artes (ou le nombre d'arcs).
Un graphe orient est dit

les orientations des arcs est connexe. Il est dit

2.2. Retour sur les ponts et sur le voyageur


Le problme des ponts de Knigsberg auquel il a t fait allusion ci-dessus se modlise de la
manire suivante : chacune des les et chacune des berges sont reprsentes par des sommets. Il
y a donc 4 sommets. Chaque pont est reprsent par une arte  voir Figure 7. On cherche donc
savoir s'il y a une chane eulrienne dans ce graphe.
La condition ncessaire et susante d'existence d'une chane eulrienne dans un graphe est
simple. La preuve est laisse en exercice.

Un graphe connexe admet une chane eulrienne si et seulement si il


possde au plus deux sommets de degr impair.

Thorme 2.2.1. 

Un graphe connexe admet un cycle eulrien si et seulement si il n'a pas de sommet de degr
impair.
13

6
2

3
7

8
Figure 6. Graphe orient possdant un circuit eulrien. L'ordre des arcs dans un tel
circuit est indiqu.

Modlisation du problme des ponts de Knigsberg. Ce graphe possde-t-il


une chane eulrienne ?

Figure 7.

Avec ce thorme, on voit donc qu'il n'existe pas de parcours passant exactement une fois et
une seule sur chaque ponts de la ville de Knigsberg.
On appelle

graphe eulrien

un graphe possdant un cycle eulrien.

On peut galement tenter une

modlisation du problme du voyageur de commerce,

qui a dj t voqu. Un camion doit quitter son entreprt, livrer dirents points d'un rseau
puis revenir son point de dpart, et ce, en parcourant la distance minimale. Le point livrer est
reprsent par un sommet du graphe, la route la plus courte entre deux points est reprsente
par une arte. On note ce graphe
 simple  est un

Kn = (V, E),

est le nombre de sommets. Ce graphe

graphe complet puisque toute paire de sommets correspond une arte. On


d : E R+ qui indique la longueur des routes reprsentes par les

ajoute encore une fonction

14

artes. Il est noter que la fonction

satisfait par construction l'ingalit triangulaire

d(uv) + d(vw) d(uw)

On cherche le

pour tous sommets

u, v, w.

cycle hamiltonien de Kn le plus court pour la fonction de poids d. Le

Chapitre 11 donne plus de dtail sur cette transformation et traitera des mthodes pour rsoudre
le problme.
Dans le cas orient, la condition ncessaire et susante d'existence de chemin ou circuit
eulrien est semblable celle du Thorme 2.2.1.

Un graphe faiblement connexe admet un chemin eulrien si et seulement


si il existe deux sommets v et w tels que deg+ (v) = deg (v) + 1, deg+ (w) + 1 = deg (w) et
deg+ (u) = deg (u) pour tout sommet u 6= v, w.
Thorme 2.2.2. 

Un graphe faiblement connexe admet un cycle eulrien si et seulement si deg+ (u) = deg (u)
pour tout sommet u.
Notons qu'un graphe admettant un cycle eulrien est automatiquement fortement connexe.

2.3. Programmation mathmatique


2.3.1. Dnition.  Le terme programmation mathmatique est un terme plutt vague pour
dsigner le problme mathmatique qui consiste chercher un lment dans un ensemble
minimise ou maximise un

critre,

ou

cot,

ou

fonction de cot.

qui

Puisqu'en gnral la recherche

oprationnelle a pour objectif l'optimisation, la phase de modlisation se termine souvent par


l'criture formelle d'un programme mathmatique.
Un programme mathmatique s'crit sous la forme suivante (on supposera que l'on cherche
minimiser une certaine quantit).

Min
s.c.

f (x)
x X.

f est le critre.  s.c.  signie  sous contraintes . X est l'ensemble des solutions possibles
ralisables, et  x X  est la ou les contraintes du programme. On cherche parmi ces

solutions ralisables une solution optimale x , i.e. ici une solution ralisable qui minimise le
critre. inf{f (x) : x X} est appel valeur du programme. Si X = , cette valeur est dnie
comme tant gale +.
ou

En plus de fournir un cadre compact pour formuler un problme, cette notation l'avantage
de rappeler les questions essentielles se poser lorsqu'on rsout un problme. Veut-on minimiser
ou maximiser ? Que veut-on optimiser ? Quelles sont les contraintes de notre systme ? Quelles
sont les variables sur lesquelles on peut jouer ?
Une remarque fondamentale et trs utile est que tout problme de minimisation peut se
rcrire comme un problme de maximisation : il sut de prendre comme critre
rciproquement.

programmation dynamique (Chapitre 3),


programmation linaire en nombres entiers (dont

Dans ce cours, nous verrons entre autres la

grammation linaire

(Chapitre 4) et la

f (x).
la

Et

pro-

l'tude

sera initie Chapitre 7). Ces trois types de programmation sont trs frquents en recherche
oprationnelle.

15

Graphe colore avec 5 couleurs

Figure 8.

Peut-on colorer proprement ce graphe avec moins de 5 couleurs ?

2.3.2. Borne et solution approche. 

de f ,

c'est--dire une fonction

l'cart de la solution

Si l'on est capable de trouver une

x X , on ait g(x) f (x),

optimale x : on est moins de

telle que pour tout

propose la solution

borne infrieure
on peut majorer

f (x) g(x )
%
g(x )
de l'optimum. Il est toujours utile de vrier si l'on n'a pas une borne infrieure de qualit,
facile calculer. On peut alors viter de chercher amliorer une solution en faisant tourner
longuement un programme informatique, alors qu'une borne infrieure nous fournit la preuve
que l'on est moins de 0,1% de l'optimum par exemple.
En particulier, un bon minorant peut permettre de montrer l'optimalit d'une solution. Voir
Figures 8 et 9.

2.3.3. Optimisation continue vs optimisation discrte. 


pace vectoriel et si

Si

est une partie d'un es-

satisfait certaines conditions de rgularit, la rsolution de ce programme

relve de l'optimisation

continue. Un outil frquent est alors la drivation. Notre seule rencontre

avec l'optimisation continue dans ce cours se fera par l'intermdiaire de la programmation linaire, qui, elle, ne peut pas se rsoudre par une simple drivation.
Dans les problmes industriels, l'ensemble
tre mis en bijection avec une partie de

N.

est souvent de nature

Par exemple, le problme du

discrte, i.e.
voyageur de

qu'il peut
commerce

qui consiste trouver le cycle le plus court passant par des villes xes l'avance est de nature
discrte.

est ici l'ensemble des cycles hamiltoniens. Tout cycle de ce type est une solution

ralisable. Le critre est la distance parcourue. Il y a un nombre ni de cycles. On est bien dans
le cadre de l'optimisation discrte (et l'on voit bien qu'ici la plupart des notions de l'optimisation
continue sont sans intrt : que driver ici ?).

16

Figure 9.

Peut-on trouver un couplage de plus de 3 artes ?

2.3.4. Programmation linaire, programmation convexe. 


Min
s.c.

f (x)
g(x) = 0,
h(x) 0
x X,

Considrons le programme

(P)

X =
6 , f : X R, g : X Rp et h : X Rq . On dit que (P ) est un programme
linaire si f est une fonction linaire, et si g et h sont toutes deux anes (cf. Chapitre 4). On
dit que (P ) est un programme convexe si f , et h sont toutes deux convexes, et si g est ane.
avec

La programmation linaire est bien entendu un cas particulier de la programmation convexe.


Les techniques pour aborder cette dernires ne seront que trs sommairement voques dans ce
cours.

2.3.5. Lagrangien et dualit faible. 


Rp

et

Rq+ .

On dnit le

lagrangien

associ au problme (P)

L(x, , ) := f (x) + T g(x) + T h(x),


On vrie facilement que


sup

Rp ,Rq+

L(x, , ) =

On peut donc rcrire l'quation

(P )

f (x)
+

si

g(x) = 0

sinon.

et

h(x) 0,

de la manire suivante

min

sup

xX Rp ,Rq
+

L(x, , ).

On a toujours
(1)

min

sup

xX Rp ,Rq
+

L(x, , )

17

sup

min L(x, , ).

Rp ,Rq+ xX

En dnissant

d(, ) := min L(x, , ),


xX

on peut regarder le programme mathmatique appel

d(, )
Rp
Rq+ .

Max
s.c.

primal.
vP (resp. vD ) la valeur de (P )
ingalit de dualit faible

dual

de

(P )

(D)

(P) est alors appel programme


Notant
appele

(resp.

(D)),

l'ingalit (1) fournit l'ingalit suivante,

vP vD .
Cette ingalit est extrmement utile et constitue un moyen automatique de gnrer des bornes
infrieures un problme. Ces notions seront en particulier approfondies dans le Chapitre 4 sur
le programmation linaire et dans le Chapitre 7. En programmation linaire, nous verrons qu'on
dispose d'une relation plus forte, appele

Remarque.

dualit forte.

est une fonction concave car inmum de fonctions anes.

2.4. Problme
Une autre notion commode dans la modlisation est la notion de
dcompose en deux parties : une partie

problme.

Un problme se

Donne et une partie Tche ou Question. Une telle

formalisation permet d'crire clairement quelles sont les lments dont on dispose au dpart et
quelle est prcisment la tche que l'on veut rsoudre. L'objectif atteindre devient donc clair
et dans un tel contexte, il est plus facile de discuter des performances de telle ou telle mthode.
Par exemple, le problme de l'existence d'une chane eulrienne peut s'crire :

Problme de la chane eulrienne


Donne : Un graphe G = (V, E).
Question : G a-t-il une chane eulrienne ?
Celui du voyageur de commerce :

Problme du voyageur de commerce


Donne : Un graphe complet Kn = (V, E) et une fonction de distance d : E R+ (qui satisfait
l'ingalit triangulaire)

Tche : Trouver le cycle hamiltonien C = v0 , e1 , . . . , en , v0 minimisant

Pn

j=1 d(ej ).

Le premier problme est un type particulier de problme, qui joue un rle important en
informatique thorique, et s'appelle un

problme de dcision,

puisque la tche raliser est de

rpondre une question ferme, i.e. dont la rponse est soit  oui , soit  non . Le second
problme est un

problme d'optimisation.
18

2.5. Algorithme et complexit


2.5.1. Algoritme, algorithme exact, algorithme approch. 

Une fois que l'on a mo-

dlis notre problme concret en un problme formalis ou en un programme mathmatique, on


doit se demander comment le rsoudre. Dans ce cours, nous verrons dirents problmes, dirents programmes mathmatiques, et quelles sont les mthodes pour les rsoudre. De nouveaux
problmes sont proposs tout le temps par les chercheurs travaillant en recherche oprationnelle ;
dans ce cours, nous nous limiterons bien entendu aux plus classiques.
On se xe un ensemble d'oprations que l'on considre  facile faire . Par exemple, comparaison d'entiers, lire une adresse mmoire, etc. Une suite d'oprations lmentaires permettant
de rsoudre un problme s'appelle un

algorithme. La rsolution d'un problme de recherche op-

rationnelle passe toujours par l'application d'un algorithme, qui est ensuite implment. Si le
problme que l'on tente de rsoudre est un programme d'optimisation, on parlera d'algorithme

exact si l'algorithme
proch sinon.

est sr de se terminer avec l'optimum du programme, et d'algorithme

ap-

La question qui se pose galement est celle de l'ecacit de l'algorithme, i.e. du temps qu'il
va mettre pour rsoudre le problme (une fois admis que l'algorithme est correct et rsout bien
le problme).

2.5.2. Question de l'ecacit. 

Une mthode peut tre de tester l'algorithme sur de

grandes quantits de donnes. Mais ces tests-l peuvent tre trs, trs longs, et de toute faon,
chaque fois que l'on va penser un algorithme possible, on ne va pas systmatiquement procder
son implmentation et des tests. La

thorie de la complexit,

un des fondement thorique de

la recherche oprationnelle, a pour but de mesurer a priori l'ecacit d'un algorithme. La petite
histoire qui va suivre va montrer l'intrt de cette thorie, et est librement adapt du livre de

10].

Garey et Johnson [

2.5.3. De l'intrt de la thorie pour sauver son boulot. 

Supposez qu'un jour votre

patron vous appelle dans son bureau et vous annonce que l'entreprise est sur le point d'entrer
sur le march comptitif du schmilblick. Il faut donc trouver une bonne mthode qui permette
de dire si une collection de spcications peuvent tre satisfaites ou non, et si oui, qui donne
la faon de construire ce schmilblick. On peut imaginer qu'un schmilblick est dcrit par des

Ci qui indiquent si le composant i est prsent ou non.


C1 et C5 sont vraies et C3 est faux, alors C7 doit tre faux.

variables boolennes

De plus, on a des

rgles du type si

Etc.

Comme vous travaillez au dpartement de Recherche Oprationnelle, c'est vous de trouver


un algorithme ecace qui fasse cela.
Aprs avoir discut avec le dpartement de production des schmilblicks an de dterminer
quel est exactement le problme rsoudre, vous retournez dans votre bureau et commencez
avec enthousiasme travailler d'arrache-pied. Malheureusement, quelques semaines plus tard,
vous tes oblig de l'admettre : vous n'avez pas russi trouver un algorithme qui fasse substantiellement mieux que d'essayer toutes les possibilits  ce qui ne rjouira certainement pas
votre patron puisque cela demandera des annes et des annes pour tester juste un ensemble de
spcications. Vous ne souhaitez certainement pas retourner dans le bureau de votre patron et
lui dire :  Je ne parviens pas trouver d'algorithme ecace. Je pense que je suis trop bte. 
Ce qui serait bien, c'est que vous soyez capable de dmontrer que le problme du schmilblick
est intrinsquement intractable

(3) . Dans ce cas, vous pourriez sereinement aller voir votre patron

3. anglicisme signiant dans ce contexte qu'il n'existe pas d'algorithme ecace rsolvant le problme considr.

19

et lui dire :  Je ne parviens pas trouver d'algorithme ecace car un tel algorithme ne peut
exister. 
Malheureusement, personne ce jour n'a t capable de montrer qu'il existe un problme
intrinsquement intractable. En revanche, les thoriciens de l'informatique ont dvelopp un
concept qui est presqu'aussi bon, celui de problme

NP-complet. La thorie de la NP-compltude

fournit des techniques varies pour prouver qu'un problme est aussi dicile qu'une grande
quantit d'autres problmes, pour lesquels aucune mthode ecace n'a t trouve ce jour,
malgr les eorts rpts des plus grands experts de la plante. Avec ces techniques, vous pourrez
peut-tre prouver que votre problme est

NP-complet et donc quivalent tous ces problmes

diciles. Vous pourriez alors entrer dans le bureau de votre patron et annoncer :  Je ne parviens
pas trouver d'algorithme ecace, mais aucune star de la RO, aucune star de l'informatique
thorique, aucune star de l'optimisation discrte ne peut le faire.  Au pire, cela l'informera qu'il
ne sert rien de vous virer pour embaucher un autre expert votre place.
Prouver qu'un problme est

NP-complet

ne signie pas la n de l'histoire ; au contraire,

c'est le dbut du vrai travail. Le fait de savoir qu'un problme est

NP-complet

fournit une

information sur l'approche la plus productive. Cela montre qu'il ne faut pas se focaliser sur la
recherche d'un algorithme exact et ecace et qu'il faut avoir des approches moins ambitieuses.
Par exemple, on peut chercher des algorithmes ecaces rsolvant divers cas particuliers. On peut
chercher des algorithmes sans garantie sur le temps d'excution, mais qui en gnral semblent
tre rapides. Ou alors, on peut  relaxer  le problme et chercher un algorithme rapide qui
trouve des schmilblicks satisfaisant presque toutes les spcications. Dans les chapitres suivants,
nous verrons des exemples concrets illustrant de telles approches.

2.5.4. Notions de base en thorie de la complexit ou comment gagner 1 million


de $.  Pour valuer thoriquement l'ecacit d'un algorithme rsolvant un problme P , on

compte le nombre d'oprations lmentaires que cet algorithme eectue pour le rsoudre. Comme
la taille des donnes de

peut varier, on va avoir une

des donnes, va associer le nombre

f (n)

fonction de complexit f

qui

n,

la taille

d'oprations lmentaires que l'algorithme va eectuer

pour trouver une solution. La taille des donnes, c'est le nombre de bits qu'il faut pour coder
les donnes.

f est O(g(n)) (lire  grand `o' de


B telle que f (n) Bg(n) pour tout n. Si la
fonction de complexit d'un algorithme est un O(p(n)), o p est un polynme, alors l'algorithme
est dit polynomial. Sinon, il est dit exponentiel. Un algorithme polynomial est en gnral peru
Rappelons qu'en mathmatiques, dire qu'une fonction

g(n)

), c'est dire qu'il existe une constante

comme ecace, un algorithme exponentiel est en gnral mauvais. Le Tableau 1 montre le temps
qu'il faut des algorithmes de fonction de complexit variable pour rsoudre un problme pour
direntes tailles de donnes.
On entend souvent dire :  Ces problmes ne se poseront plus lorsque la puissance des ordinateurs aura augment . C'est faux, comme le montre le Tableau 2. Supposons par exemple que
l'on ait un algorithme rsolvant le problme du schmilblick
est une constante et o

B2n

oprations lmentaires, o

est le nombre de spcications (avec donc un ordinateur eectuant

bien plus d'1 milliard d'oprations par seconde). Et supposons que l'on soit capable de rsoudre

n = 438. L'utilisation d'une machine 1000 fois


plus rapide ne permettra que d'aller jusqu' n = 448 en 1 heure !
Un problme P est dite polynomial ou dans P s'il existe un algorithme polynomial qui le

des problmes de schmilblick en 1 heure jusqu'

rsout.

20

Taille
Fonction de complexit

10

20

30

40

50

60

n
n2
n3
n5
2n

0, 01 s 0, 02 s 0, 03 s
0, 04 s
0, 05 s
0, 06 s
0, 1 s 0, 4 s
0, 9 s
1, 6 s
2, 5 s
3, 6 s
1 s
8 s
27 s
64 s
125 s
216 s
0, 1 ms 3, 2 ms 24, 3 ms
102, 4 ms
312, 5 ms
777, 6 ms
1 s 1 ms
1s
18 min20 s 13 jours 36 annes et 6 mois
Table 1. Comparaison de diverses fonctions de complexit pour un ordinateur eectuant 1 milliard d'oprations par seconde.

Taille de l'instance la plus large que l'on peut rsoudre en 1 heure


Fonction de complexit

Avec un ordinateur actuel

n
n2
n3
n5
2n
3n
Table 2.

Un problme de dcision

ticat

Avec un ordinateur

Avec un ordinateur

100 fois plus rapide

1000 fois plus rapide

N1
100N1
N2
10N2
N3
4.64N3
N4
2.5N4
N5
N5 + 6.64
N6
N6 + 4.19
Comparaison de diverses fonctions de complexit.

est

dans

NP

1000N1
31.6N2
10N3
3.98N4
N5 + 9.97
N6 + 6.29

si, lorsque la rponse est  oui , il existe un

cer-

(c'est--dire une information supplmentaire) et un algorithme polynomial qui permet

de vrier que la rponse est  oui , sans pour autant tre capable de trouver cette rponse
(voir des exemples ci-dessous). Le sigle

NP ne signie pas  non polynomial  mais  non d-

terministiquement polynomial . Le non-dterminisme ici fait rfrence aux machines de Turing


non-dterministes, et dpasse largement le cadre de ce cours.

NP-complet si l'existence d'un algorithme polynomial le rNP. A ce jour, on


ne connat pas d'algorithme polynomial rsolvant un problme NP-complet. En revanche, on
connat beaucoup de problmes NP-complets. Le premier a t trouv en 1970, par un informaUn problme de dcision est dit

solvant implique l'existence d'un algorithme polynomial pour tout problme

ticien appel Cook.

Considrons le problme suivant.

Problme du cycle eulrien


Donne : Un graphe G = (V, E).
Question : G a-t-il un cycle eulrien ?
Ce problme de dcision est dans

P. En eet, le Thorme 2.2.1 ci-dessus permet facilement

de rpondre la question en temps polynomial : si

le graphe est connexe prend

O(n + m),

au total

certicat est le graphe lui-mme.


De mme, le problme suivant est dans

P.
21

G et n
O(m) et

est le nombre d'artes de

nombre de sommets, tester le fait que tous les sommets sont de degr pair prend

O(n + m).

Il est donc galement dans

son
que

NP : le

Problme de la chane eulrienne


Donne : Un graphe G = (V, E) et deux sommets s, t V .
Question : G a-t-il une st chane eulrienne ?
Considrons maintenant le problme suivant.

Problme du cycle hamiltonien


Donne : Un graphe G = (V, E).
Question : G a-t-il un cycle hamiltonien ?
A ce jour, nul n'a pu dmontrer que ce problme est dans
vanche, il est facile de voir que ce problme est dans

NP

P,

ni qu'il n'y tait pas. En re-

car si la rponse est positive, alors

l'algorithme qui consiste suivre le cycle hamiltonien permet de prouver que la rponse est
bien positive. Ici, le cycle hamiltonien joue le rle de certicat. Il a t galement dmontr que
ce problme est

NP-complet.

Cela signie que si vous rencontrez quelqu'un vous disant qu'il

connat un algorithme ecace pour rpondre cette question, il est trs probable qu'il se trompe
car tous les problmes

NP-complets pourraient alors tre rsolus par un algorithme polynomial.

Or personne ce jour n'a pu en trouver, et quantit de gens trs brillants ont cherch un tel algorithme. S'il ne se trompe pas, c'est une dcouverte fondamentale, qui aurait un impact norme
tant dans le monde de l'informatique thorique, que dans la recherche oprationnelle applique.
De plus, cette personne percevrait le prix d'1 millions de dollars oert par la Fondation Clay
pour la rsolution de la question ouverte

De mme le problme suivant est

P =? NP.

NP-complet.

Problme de la chane hamiltonienne


Donne : Un graphe G = (V, E), deux sommets s, t V .
Question : G a-t-il une st chane hamiltonienne ?
On peut dnir galement les mmes problmes pour les graphes orients, les rsultats seront
semblables. En rsum, on a

Rsultats de complexit pour des parcours.


Problmes

Complexit

Graphe non-orient : Cycle eulrien


Graphe non-orient : Chane eulrienne

P
P

NP-complet
NP-complet
Graphe orient : Circuit eulrien
P
Graphe orient : Chemin eulrien
P
Graphe orient : Circuit hamiltonien
NP-complet
Graphe orient : Chemin hamiltonien
NP-complet
La Figure 10 illustre les relations entre problmes P, NP, NP-complets, si P 6= NP (ce qui
Graphe non-orient : Cycle hamiltonien

Graphe non-orient : Chane hamiltonienne

est le plus probable).

La notion de problme

NP et a fortiori de problme NP-complet est dnie pour les problmes

de dcision, dont la rponse est  oui  ou  non . Mais les problmes que l'on rencontre en RO

22

NP-difficiles

NP-complets

NP

Figure 10.

Figure 11.

Les problmes

NP

Peut-on tracer cette gure sans lever le crayon ?

sont rarement de ce type. Il existe une notion qui permet de caractriser des problmes diciles
qui ne sont pas des problmes de dcision : c'est celle de problme

NP-dicile.

NP-dicile si savoir le rsoudre en temps polynomial impliquerait que l'on


NP-complet en temps polynomial. Les problmes NPdiciles sont donc dans un sens plus dur que les problmes NP-complets. Par exemple :
Un problme est

sait rsoudre un problme (de dcision)

Thorme 2.5.1. 

Le problme du voyageur de commerce est

La preuve de ce rsultat dcoule de la

NP-dicile.

NP-compltude du problme de cycle hamiltonien.

2.6. Exercices
2.6.1. Dessiner sans lever le crayon. 

Indiquez pour les Figures 11 et 12 quand il est

possible de dessiner la gure sans lever le crayon (et sans repasser sur un trait dj dessin) et
quand il ne l'est pas.

23

Figure 12.

Et celle-l ?

G1

G2

G3

Lequel de ces graphes contient une chane hamiltonienne ? Lequel contient


un cycle hamiltonien ?

Figure 13.

2.6.2. Parcours hamiltonien. 

Pour chacune des trois graphes de la Figure 2.6.2, indiquez

pour chacun d'eux s'il possde une chane hamiltonienne. Mme question avec pour le cycle
hamiltonien.
Justiez votre rponse.

2.6.3. Le jeu Icosian. 

La Figure 14 reprsente le jeu Icosian invent en 1859 par le ma-

20

que toute paire de nombres conscutifs soit adjacente,

et

thmaticien Hamilton. Peut-on mettre les chires de

dans les cercles de manire ce

20

tant aussi considrs comme

adjacents ?

2.6.4. Aectation de frquences. 

Considrons des relais de tlphonie mobile. Chaque

relais reoit et met des signaux une certaine frquence. Pour viter les interfrences, on
veut que deux relais moins de

200 m

fonctionnent avec des frquences direntes. Le cot

de gestion du parc de relais est une fonction croissante du nombre de frquences utilises. On
souhaite minimiser ce cot.

24

Figure 14.

Le jeu Icosian.

Modliser ce problme avec les outils du cours.

2.6.5. Organisation de formations. 

Considrons maintenant un DRH qui doit assurer un

certain nombre de formation ses employs. Les formations sont

E1 , . . . , Em .

Le DRH sait pour chaque employ

Ei

F1 , . . . , Fn . Et les employs sont

quelles sont les formations qu'il doit suivre.

Il veut organiser une session de formations  chacune des formation ne peut tre dispense
qu'une fois au total dans l'entreprise et un employ peut suivre au plus une formation par
jour. En revanche, plusieurs formations peuvent tre dispenses le mme jour. Le DRH souhaite
organiser la session la plus courte possible.
Modliser ce problme avec les outils du cours.

2.6.6. Borne infrieure du nombre chromatique. 

Montrer l'optimalit de la coloration

de la Figure 8, et proposer une borne infrieure gnrale pour les nombre chromatique.

2.6.7. Borne suprieure pour les couplages maximum. 

Montrer l'optimalit du cou-

plage de la Figure 9, et proposer une borne suprieure gnrale pour les couplages maximum.

2.6.8. NP-compltude de la chane hamiltonienne.  Montrer que le problme de l'existence de la chane hamiltonnienne est NP-complet, sachant que celui du cycle hamiltonien l'est.
Rciproquement, montrer que le problme de l'existence du cycle hamiltonnien est NP-complet,
sachant que celui de la chane hamiltonienne l'est.

2.6.9. Problme de transport. 

Le premier problme de recherche oprationnelle vise

pratique a t tudi par Monge en 1781 sous le nom du problme des dblais et remblais.
Considrons
sable et

bj

tas de sable, devant servir combler

trous. Notons

la masse de sable ncessaire pour combler le

connat la distance

j,

dij

j me

ai

la masse du ime tas de

trou. Pour chaque couple

(i, j)

on

du ime tas au

le cot du dplacement est gal

j me trou. Si une masse xij est dplace du tas i au trou


dij xij . On souhaite savoir quel est le plan de transport qui

permet de boucher les trous au cot minimum.


Modliser ce problme sous la forme d'un programme mathmatiques. Quelle est sa nature ?

25

CHAPITRE 3

PLUS COURTS CHEMINS ET PROGRAMMATION


DYNAMIQUE

Les problmes de plus courts chemins apparaissent naturellement dans des contextes varis.
Ils peuvent apparatre comme modlisation de problmes oprationnels (trajet le plus rapide,
ou le moins cher, gestion optimal d'un stock, plan d'investissement optimal, etc.), ils sont aussi
frquemment des sous-problmes d'autres problmes d'optimisation (ot de cot minimum 
Chapitre 5  ou en thorie de l'ordonnancement  Chapitre 10). Sous cette appellation anodine
de plus court chemin, nous verrons qu'il se cache une ralit extrmement varie, tant du point
de vue de la complexit que des types d'algorithmes mis en uvre. Le graphe peut tre orient ou
non, les artes ou les arcs avoir des poids positifs ou quelconque,... Un cas particulier important
est la

programmation dynamique

qui traite des situations o des dcisions doivent tre prises de

manire squentielle, chaque dcision faisant passer le systme d'un tat un autre. Ce passage
d'un tat un autre s'appelle une

transition.

On suppose qu'un cot est associ chaque

transition. L'objectif de la programmation dynamique est de minimiser le cot de la suite des


transitions, suite qu'on appelle

trajectoire.

3.1. Cas du graphe orient et programmation dynamique


3.1.1. Les poids sont positifs : algorithme de Dijkstra. 

Le cas le plus naturel est

le cas du graphe orient avec des poids strictement positifs sur les arcs. En eet, le problme
du trajet le plus court dans un rseau (routier, de transport, informatique, etc.) rentre dans
ce cadre. Le temps de parcours d'un arc, ou sa longueur, sont dans ces contextes strictement
positifs.
En 1959, Dijkstra proposa le premier algorithme ecace. On suppose que l'on a un graphe

D = (V, A), avec une fonction de poids w : A R+ . On se xe un sommet s de dpart


t d'arrive. On veut le chemin de plus petit poids (le poids d'un chemin tant
somme des poids de ses arcs), ou autrement dit le plus court chemin allant de s t. Noter

orient

et un sommet
la

que dans un graphe dont tous les poids sont positifs, il existe toujours un plus court chemin qui
soit un chemin lmentaire (avec rptition de sommets interdite) car si le plus court chemin
passe par un circuit, on peut supprimer ce circuit sans dtriorer le poids du chemin. Si tous
les poids sont strictement positifs, les notions de plus court chemin, plus court chemin simple
(avec rptition d'arcs interdite) et plus court chemin lmentaire (avec rptition de sommets
interdite) concident puisqu'alors suivre un circuit dtriore strictement le poids du chemin.
L'algorithme de Dijkstra va calculer les plus courts chemins dmarrant en
sommets d'arrive possibles, donc en particulier pour

t.

pour tous les

a
2
b

3
1
s

c
1

2
t

Figure 1.

Exemple de graphe orient avec poids positifs sur les arcs.

Au cours de l'algorithme, on maintient un ensemble


dit que

(v)

est le

U V

et une fonction

: V R+ .

On

label courant de v . Ce label est la meilleure valuation courante du poids du


s v . On commence avec U := V et (s) := 0 et (v) := + pour v 6= s.

plus court chemin de

Ensuite, on rpte la chose suivante de manire itrative :

u minimisant (u) pour u U . Pour chaque (u, v) + (u) tel


que (v) > (u) + w(u, v), rednir (v) := (u) + w(u, v). Rednir
U := U \ {u}.
Choisir

On s'arrte lorsque

(u) = +

pour tout

u U.

tout sommet que l'on peut atteindre en partant de

donne alors les distances de s


s. Les sommets dans U la n de l'algorithme

La fonction

s.
v 6= s, on garde en mmoire le dernier arc a = (u, v) pour lequel on
(v) := (u) + w(a), on peut reconstruire l'ensemble des plus courts chemins partant

sont ceux qui ne peuvent tre atteints depuis


De plus, si pour chaque
a redni
de

s.
Il est clair que le nombre d'itrations est au plus

O(n).

|V |,

et chaque itration prend un temps

L'algorithme a donc une fonction de complexit qui est en

O(n2 ).

D'o le thorme :

Etant donns un graphe orient D = (V, A), un sommet s V et une


fonction de poids w : A R+ , un ensemble de plus courts chemins de s tout sommet v V
peut tre calcul en O(n2 ).
Thorme 3.1.1. 

Elments de preuve.  Pour dmontrer le thorme, il faut simplement voir que lorsque u est
retir de U dans l'itration au-dessus, (u) est la vraie distance de s u (la preuve de cette
assertion est laisse en exercice).

Remarque.
plexit de

 En utilisant de bonnes structures de donnes, il est possible d'obtenir une com-

O(m + n log n).

28

Exemple. 

En appliquant l'algorithme de Dijkstra sur la Figure 1, on obtient le tableau

suivant indiquant les valeurs successives de

s
(0)
0
0
0
0
0
0
0
0

a
()
(3)
3
3
3
3
3
3
3

pour chaque sommet.

b
c
d
e
f
t
() () () () () ()
() () (3) () (5) ()
(5) () (3) () (5) ()
(4) ()
3
() (5) ()
4
(5)
3
() (5) ()
4
5
3
(8) (5) ()
4
5
3
(7)
5
(12)
4
5
3
7
5
(9)
4
5
3
7
5
9

3.1.2. Les poids sont quelconques mais le graphe est sans circuit. 

On considre

maintenant le cas o les poids peuvent prendre des valeurs ngatives, mais o le graphe est sans
circuit, ou

acircuitique. Lorsqu'on voit le problme du plus court chemin comme la modlisation

d'un plus court chemin dans un rseau physique, cela peut paratre surprenant puisque les
temps de parcours ou les distances de portion de rseau sont toujours positifs. Mais dans de
nombreux cas le graphe dont on cherche un plus court chemin est issu d'une modlisation et
les poids ne correspondent pas des distances ou des temps qui s'coulent. Noter que dans ce
cas, les notions de plus court chemin, plus court chemin simple et plus court chemin lmentaire
concident, puisqu'il n'y a pas de circuit. Donc de mme que dans le cas o tous les

w(a)

sont

positifs, il existe toujours un plus court chemin qui soit lmentaire.


Considrons donc maintenant le cas du graphe orient

D = (V, A)

acircuitique, avec une

w : A R.

fonction de poids

L'algorithme de Dijkstra ne fonctionne plus lorsque les poids peuvent tre ngatifs. En eet,
l'invariant de boucle qui fait fonctionner l'algorithme de Dijkstra est le fait que le minimum de

(u) pour u dans le U courant est la vraie distance de s u. Ce qui justie que l'on retire u
U . Or si les poids peuvent tre ngatifs, il facile de voir que cette proprit n'est plus vraie.

de

A la n des annes 50, des mathmaticiens comme Ford, Bellman, Moore, et d'autres, remarqurent que dans ce contexte, un algorithme trs simple permet de trouver le plus court
chemin.
Pour dcrire cet algorithme, dnissons pour

(v) :=
posant

(v) :=

vV

poids minimum d'un

sv

chemin,

si un tel chemin n'existe pas.

L'algorithme est une traduction de l'quation

de Bellman

qui dit

(v) = min ((u) + w(u, v))

(2)

(u,v)A

pour tout

v V.

Cette quation peut tre lue de la manire suivante :

Le plus court chemin de


de

v,

sv

est le plus court chemin de

auquel on a ajout le dernier arc

s u, o u est un antcdent

(u, v).

En fait, de faon un peu plus compacte, on a le principe suivant qui implique ce qui prcde
[Principe d'optimalit de Bellman] La sous-trajectoire d'une trajectoire optimale est
encore optimale.

29

L'quation (2) se traduit facilement en un algorithme. On commence par poser

(s) := 0

et

(u) := pour tout u tel qu'il n'existe pas de su chemin. Ensuite, on repte la boucle suivante
v dont on connat pour tous les prdcesseurs (on

Chercher un sommet

peut dmontrer que, puisque le graphe est acircuitique, un tel sommet


existe toujours). L'quation (2) permet de calculer
On s'arrte lorsque

(v).

aura t calcul pour tous les sommets.

Remarquons qu'il n'est pas dicile de reconstruire le plus court chemin : en mme temps que

(v),
(v).

on peut stocker

p(v)

qui est le sommet

antcdent de

qui a permis d'obtenir le poids

Comme pour l'algorithme de Dijkstra, on rcupre ainsi un plus court chemin de

pour tout

v,

v V.

Etant donns un graphe acircuitique D = (V, A) et une fonction de poids


w : A R, un ensemble de plus courts chemins de s tout sommet v V peut tre calcul en
O(m).
Thorme 3.1.2. 

ordre
D = (V, A) est une indexation v1 , v2 , . . . , vn des
que (vi , vj ) A on ait i < j . Un graphe orient

L'outil central de l'algorithme qui sous-tend ce thorme est l'ordre topologique. Un

topologique

des sommets d'un graphe orient

sommets de

telle que pour tout

i, j

tels

admet un ordre topologique si et seulement si il est acircuitique. On peut alors trouver un ordre
topologique en

Scanner

O(m)

avec l'algorithme suivant.

un sommet consiste  ouvrir  le sommet, scanner ses successeurs puis  fermer 

le sommet (dnition rcursive, consistante puisque le graphe est sans circuit). On choisit un
sommet

sans prdcesseur. On scanne

s.

L'ordre oppos celui dans lequel on  ferme  les

sera  ferm  avant

sommets est un ordre topologique.


En eet, s'il y a un arc de
que celui de

v,

alors

et son indice sera plus grand

u.

Preuve du Thorme 3.1.2.  Pour prouver ce thorme, il faut montrer que l'on peut trouver
en O(m) un ordre v1 , v2 , . . . , vn sur les sommets de D tel que tous les antcdents de vi ont un
indice < i, ce qui assure que l'on peut toujours calculer (vi ) une fois calculs les (vj ) pour
j < i. Or, c'est ordre n'est rien d'autre qu'un ordre topologique.
Remarque.
origine s

 Dans le cas acircuitique, on sait en particulier trouver un plus long chemin d'une
une destination

: en eet, en dnissant des poids

w0 (a) := w(a),

mme algorithme fonctionne (en gardant les mmes poids, il sut de changer les

3.1.3. Programmation dynamique. 


grammation dynamique

en

max).

Un cas particulier important est celui de la

1. un systme dynamique temps discret caractris par un ensemble

min

pro-

qui traite de situations o les dcisions peuvent ou doivent tre prises

de manire squentielle. Ce qui caractrise la programmation dynamique

l'instant

on voit que le

et

2. une fonction de cot additive dans le temps.

1. On se limite au cas dterministe discret.

30

(1) est la prsence

Xk

d'tats possibles

xk

..
.
s := x0

t
...

..
.
..
.

k=1

Figure 2.

k=3
k=2
k =N 1
k=N
trajectoire optimale = plus court st chemin dans un graphe acircuitique

k
co
uts := 0

La programmation comme problme de plus court chemin.

Le systme dynamique dcrit l'volution de l'tat du processus au l de

priodes et a la

forme

xk+1 = fk (xk , uk ),

k = 1, 2, . . . , N

k numrote les priodes et o xk Xk est l'tat du systme au dbut de la priode k . Passer


de xk xk+1 s'appelle une transition. On a de plus un cot c(xk , xk+1 ) pour toute transition de
l'tat xk l'tat xk+1 . Ces cots s'additionnent au l des priodes et pour la trajectoire complte
x1 , . . . , xN , on a un cot total de
N
X
c(xk , xk+1 ).

k=1
Le problme de la programmation dynamique consiste trouver la trajectoire optimale, i.e.
minimisant le cot total.
Ce problme de la programmation dynamique se modlise trs bien comme celui du plus
court chemin dans un graphe orient, pondr et sans circuit. En eet, pour chaque priode

k,

on reprsente les tats possibles par des sommets. Les transitions possibles sont des arcs. Le cot
de la transition
(ou

xk xk+1

acircuitique)

est le poids de l'arc

(xk , xk+1 ).

Noter que ce graphe est sans circuit

: en eet, un arc va toujours d'un tat de priode

En ajoutant des tats de dpart

et d'arrive

t,

un tat de priode

on va chercher le chemin de

k + 1.

qui a le plus

petit poids. Voir Figure 2.


Si on dnit

(k, x) :=
posant

l'tat

s'il n'est pas possible d'amener le systme dans l'tat

cot minimum de la trajectoire allant de l'tat de dpart

(k, x) := +

l'quation de Bellman (2) se rcrit


(3)

(k, x) = min ((k 1, y) + c(y, x)).


yXk1

31

en
en

tapes,

tapes,

(k, x) : l'itration k ,
(k 1, x) calcules l'itration

Cette quation permet de calculer de proche en proche les valeurs de


on calcule tous les

k 1.

(k, x)

pour

x Xk ,

en utilisant les valeurs

En voyant ce calcul comme un calcul de plus court chemin dans un graphe acircuitique

(Section 3.1.2), cela revient dire qu'un ordre topologique est donn facilement par le dcoupage
temporel.
Remarquons enn que tout graphe orient acircuitique n'est pas issu d'une modlisation d'un
systme dynamique. En eet, un graphe modlisant un processus de programmation dynamique
a tous ses chemins de

ayant le mme nombre d'arcs, savoir

N.

Venons-en maintenant quelques exemples de modlisation par la programmation dynamique.

Exemple : Gestion de stock. 

Considrons le problme de la gestion d'un stock pour

priodes conscutives.
Un stock suit une dynamique de la forme
pour la priode
priode et

k ime

uk

k , suppose connue, xk

xk+1 = xk dk + uk ,

dsigne la demande

dsigne le nombre d'units disponibles en dbut de

xk Z,

k ime

une quantit ngative signiant une pnurie. De plus, on

a en gnral l'existence d'une capacit maximale de stockage

x0

dk

dsigne le nombre d'units commandes (et reues immdiatement) en dbut de

priode. On prendra

supposera

qui implique que

x.

Les cots de gestion de stock se dcomposent pour chaque priode


 un cot de rapprovisionnement
 un cot de gestion

g(xk+1 ),

c(uk ),

xk K .

On

en

c'est--dire le cot d'achat des

uk

units, et

qui comprend le cot de stockage des units en excs en n de

priode et le cot de pnurie si la demande ne peut tre totalement satisfaite sur la priode.
Typiquement, on a

c(u) = b + au,

est un cot unitaire d'achat et


g(x) =
o

est le cot unitaire de stockage et

stocks ngatifs, on pose

sx
px

si
si

un cot xe et

x0
x 0,

le cot unitaire de dfaillance. Si on veut interdire les

p = +.

On veut minimiser

N
1
X

c(uk ) + g(xk+1 ).

k=0
Dans le vocabulaire de la programmation dynamique, les tats sont les valeurs possibles de niveau

xk xk+1

xk+1 satisfasse simultanment


xk dk . Le cot de la transition xk xk+1 est c(xk+1 xk +dk )+

de stock, les transitions possibles sont tous les

xk+1 Z, xk+1 K et xk+1


g(xk+1 ). On souhaite donc trouver

tels que

la trajectoire optimale pour ce modle de programmation

dynamique.
On applique l'algorithme de plus court chemin dans le graphe acircuitique suivant. Pour

k , on aura un sommet pour chaque niveau de stock possible (infrieur K et


suprieur x0 d0 d1 . . . dk1 ) en dbut de priode. On notera un tel sommet (x, k), o x
est le niveau de stock, et k la priode. Entre un sommet de priode k et un sommet de priode
k + 1, on a un arc ((x, k), (x0 , k + 1)) seulement si x0 x dk . Le poids de l'arc ((x, k), (x0 , k + 1))
0
0
est gal c(x x + dk ) + g(x ). On cherche un plus court chemin de (x0 , 0) un sommet de la
forme (x, N ). Le poids de ce plus court chemin sera le cot optimal de la gestion du stock.

chaque priode

Exemple : Remplissage d'un conteneur ou problme du sac--dos. 


assortiment de

objets

k = 1, . . . , N , l'objet k

ayant une valeur

ck 0 et un volume ak > 0, et
P
W . Si N
k=1 ak > W ,

supposons que l'on ait stocker ces objets dans un conteneur de volume ni

32

Considrons un

on va devoir slectionner des objets an de maximiser la valeur des objets stocks. Ce problme
est connu sous le nom du

problme du sac--dos,

car le conteneur est vu comme un sac--dos

avec lequel on veut transporter des objets de plus grand valeur totale, sous des contraintes de
capacit. On note

x(j, W 0 ) la valeur maximale qui peut tre transporte dans un sac de capacit
j premiers objets.

W 0 , en ne se servant que des

On a l'quation (programmation dynamique)

x(j, W 0 ) = max(x(j 1, W 0 ), x(j 1, W 0 wj ) + cj )


W 0 , avec les objets de 1 j ,
0
0
 soit n'utilise pas le j me objet, et dans ce cas x(j, W ) = x(j 1, W )
0
0
 soit utilise le j me objet, et dans ce cas x(j, W ) = x(j 1, W wj ) + cj .
0
La complexit de l'algorithme est : O(nW ). En eet, il faut calculer tous les x(j, W ) qui sont
0
0
0
au nombre de nW , et une fois calculs x(j 1, W ) et x(j 1, W wj ), la quantit x(j, W )
se calcule en temps constant. Ce n'est pas polynomial car W ncessite log2 (W ) bits pour tre
cods. On dit que c'est un algorithme pseudo-polynomial.

qui se lit : le remplissage optimal

x(j, W 0 )

d'un sac de capacit

3.1.4. Les poids sont quelconques, mais le graphe est sans circuit absorbant : encore
la programmation dynamique.  Supposons maintenant que l'on se demande comment
calculer un plus court chemin dans un graphe orient pondr, non ncessairement acircuitique.
C'est encore possible si le graphe ne possde pas de
somme des poids est

< 0.

circuit absorbant,

i.e. de circuit dont la

Ce cas contient les deux cas prcdents (graphe avec poids

et

graphe acircuitique). Noter qu'une fois encore, il existe toujours un plus court chemin qui soit
un chemin lmentaire car si le plus court chemin passe par un circuit, on peut supprimer ce
circuit sans dtriorer le poids du chemin.
En fait, pour calculer un plus court chemin dans un graphe sans circuit absorbant, on peut
appliquer la mthode de la programmation dynamique vue ci-dessus.
On considre que les tats sont les sommets (Xk

= V ) et qu' chaque instant on traverse un


arc. Le cot de la transition u v , c'est w(u, v) si (u, v) A, et + sinon. Avec les notations de
la programmation dynamique, (k, v), c'est donc le poids minimal d'un s-v chemin comportant
exactement k arcs.
L'algorithme sera une traduction de l'quation de la programmation dynamique ou quation
de Bellman
(k, v) = min ((k 1, u) + w(u, v))

(4)

(u,v)A

pour tout

v V.

Cette quation peut tre lue de la manire suivante :

Le plus court chemin de


certain antcdent
arc

de

v,

utilisant

utilisant

(u, v).

k1

arcs est le plus court chemin de

arcs, chemin auquel on a ajoute le dernier

En utilisant l'algorithme de la programmation dynamique, on calcule donc les


proche en proche, en augmentant progressivement
o

un

k.

(k, v) de
k > n,

Il est inutile de considrer le cas

est le nombre de sommets, car l'absence de circuit absorbant garantie l'existence d'un

chemin de poids minimal qui soit sans circuit. En eet, supprimer un circuit dans un chemin
fait diminuer son poids total. Puisqu'un chemin sans circuit a moins d'arcs qu'il y a de sommets
dans le graphe, on peut drouler l'algorithme de programmation dynamique en s'arrtant au
calcul des

(n 1, v),

pour

v V.
33

Une fois tous les

s -t

(k, v)

calculs pour

chemin pour un sommet

k = 0, . . . , n 1

et pour

donn est obtenu en cherchant le

v V,

le poids minimal d'un

minimisant

(k, t).

Remarquons qu'il n'est pas dicile de reconstruire le plus court chemin : en mme temps que

(k, v),

on peut stocker

pk (v)

qui est le sommet qui a permis d'obtenir le poids

ci-dessus, on rcupre ainsi un plus court chemin de

pour tout

(k, v).

Comme

v V.

Etant donns un graphe D = (V, A) et une fonction de poids w : A R


telle qu'il n'y ait pas circuit absorbant, un ensemble de plus courts chemins de s tout sommet
v V peut tre calcul en O(nm).

Thorme 3.1.3. 

Remarque : En utilisant des techniques totalement direntes [12], on peut obtenir une complexit de
que

O(n1/2 m log C)

est la valeur abolue du plus petit poids ngatif (en supposant

C 2).

3.1.5. Les poids sont quelconques. 

Dans le cas gnral, il n'y a pas d'algorithme poly-

nomial qui trouve un plus court chemin lmentaire. Rappelons qu'un chemin lmentaire est
un chemin dans lequel chaque sommet apparat au plus une fois. Si l'on ne se restreint pas au
chemin lmentaire, le problme peut ne pas avoir de solution : en eet, en faisant passer un
chemin par un circuit absorbant, on peut rpter un nombre arbitraire de fois le passage sur le
circuit absorbant et dcrotre le cot autant qu'on le souhaite.

Considrons le problme

Problme du plus court chemin lmentaire


Donne : Un graphe orient D = (V, A), une fonction de poids w : A R, deux sommets s V
et

tV.

Tche : Trouver un plus court chemin lmentaire de s t.


On a le thorme suivant dont la preuve est laisse en exercice.

Le problme du plus court chemin lmentaire avec des poids quelconques,


dans un graphe orient quelconque, est NP-dicile.
Thorme 3.1.4. 

3.2. Cas du graphe non-orient


3.2.1. Les poids sont positifs : toujours l'algorithme de Dijkstra. 

Considrons un

G = (V, E), avec une fonction de poids w : E R+ . Supposons xs deux


s et t. On veut trouver la plus courte chane de s t. Remarquons que le raisonnement

graphe (non-orient)
sommets

fait prcdemment s'applique encore : on sait qu'il existe une chane lmentaire de mme poids
que la chane de plus petit poids puisqu'on peut supprimer les cycles d'une chane de plus petit
poids (ces cycles sont alors forcments de poids nul).
L'algorithme de Dijkstra permet encore de rsoudre le problme : en eet, il sut de remplacer
chaque arte
de l'arte

uv .

uv

du graphe par deux arcs

(u, v)

et

(v, u)

et de mettre sur chacun d'eux le poids

Voir Figure 3. Un plus court chemin dans ce graphe orient induit alors une plus

courte chane dans le graphe de dpart et rciproquement.

34

we
we

we
Figure 3.

Une transformation qui fait apparatre des circuits.

3.2.2. Les poids sont quelconques, mais sans cycle absorbant. 

Il peut tre tentant de

vouloir refaire la mme transformation que dans la sous-section prcdente, savoir de remplacer
chaque arte par deux arcs de sens opposs, chacun recevant le poids de l'arte dont ils sont
issus. Le problme, c'est que dans cette transformation, on fait apparatre quantit de circuits
absorbants : toute arte de poids

<0

induit un circuit absorbant deux arcs. Les algorithmes

de style programmation dynamique ne peuvent pas appliquer. Il n'y a pas de raison particulire
de penser que ce problme soit

NP-dicile car le problme qui est NP-dicile est celui o l'on

accepte des circuits absorbants avec un nombre d'arcs non born. Ici nos circuits absorbants ont
deux arcs seulement.
En fait, il y a bien un algorithme polynomial mais curieusement elle provient d'un tout autre
domaine de l'optimisation discrte et nous en reparlerons dans le chapitre sur les tournes (Chapitre 11). L'outil dont on a besoin est le

T -joint

qui apparat naturellement dans les problmes

de tourne du style  facteur . Avec cet outil, on peut trouver une plus courte chane lmentaire
en

O(n3 ).

3.2.3. Les poids sont quelconques. 

Dans le cas gnral, le problme est nouveau

NP-

dicile.

Considrons le problme

Problme de la plus courte chane lmentaire


Donne

: Un graphe

G = (V, E),

une fonction de poids

tV.

w : E R,

deux sommets

sV

et

Tche : Trouver une plus courte chane lmentaire de s t.

On a le thorme suivant.

Le problme de la plus courte chane lmentaire avec des poids quelconques, dans un graphe quelconque, est NP-dicile.
Thorme 3.2.1. 

35

2
5

10
c

s
6

4
f

2
3

t
2

6
i

Figure 4.

On cherche la plus courte chane de s t.

3.3. Rsum
Complexit

O(n2 )

Graphe orient, poids positifs

(Dijkstra)

(1)

Graphe orient, poids quelconques,

O(m)

acircuitique

(Programmation dynamique)

O(nm)

Graphe orient, poids quelconques,


sans circuit absorbant

(Programmation dynamique, algorithme de Ford-Bellman)

NP-dicile

Graphe orient, poids quelconques

O(n2 )

Graphe non-orient, poids positifs

(Dijkstra)

(1)

Graphe non-orient, poids quelconques,

O(n3 )

pas de cycle absorbant

(voir Chapitre 11)

NP-dicile

Graphe non-orient, poids quelconques

3.4. Exercices
3.4.1. Plus court chemin. 

Trouver la plus courte chane de

Figure 3.4.1 et le plus court chemin de

3.4.2. Problme du goulot. 


graphe orient. Une origine
d'une capacit

c : A R+ .

Soit

capacit

dans le graphe de la

dans le graphe de la Figure 3.4.2.

un rseau (de gaz par exemple) modlis par un

et une destination

La

sont donnes. Pour chaque arc, on dispose

d'un chemin est le minimum des capacits de ses arcs.

Proposer un algorithme ecace qui trouve la capacit maximale d'un chemin de

1. On peut atteindre, avec les bonnes structures de donnes, O(m + n log n).
2. On peut atteindre avec des techniques direntes O(n1/2 m log C).

36

d.

(2)

2
a
10

2
6

t
5
d
Figure 5.

3.4.3. Gestion de stock. 


et

k
dk

La quantit

dk

On cherche le plus court chemin de s t.

Un stock suit une dynamique

est la demande pour la priode

d'units disponibles en dbut de priode


immdiatement) en dbut de priode
l'on doit toujours avoir

xk + uk 6

k . uk

(suppose connue).

xk N

avec

x1 = 2

est nombre

est le nombre d'units commandes (et reues

. On a une capacit maximale de stockage de 6, i.e que

(ou de manire quivalente

Le cot de gestion de stock pour la priode


et un cot de stockage et s'crit

xk+1 = xk dk + uk ,

4uk + 3 + xk+1

xk+1 + dk 6).

se dcompose en un cot d'approvisionnement


si

uk 6= 0

et

xk+1

sinon.

Trouver la stratgie qui minimise le cot total de la gestion du stock.

3.4.4. Problme du sac--dos. 


de

Un bteau peut transporter une cargaison forme partir

W.

conteneurs. Le poids total ne doit pas dpasser

transport rapporte

ck .

Le

k ime

conteneur pse

wk

et son

On veut dterminer un chargement qui maximise le bnce. Montrer

que ce problme est un problme de sac--dos. Le rsoudre sur les donnes

W =6

et

Conteneurs

Bnce

ck

wk 5 3
suivant, W = 13 et
Poids

Mme question avec le tableau


conteneurs de type

2
avec la possibilit de prendre autant de

que l'on veut.


Conteneurs
1

ck
wk

Bnce

12

25

50

Poids

5,5

6,5

3.4.5. Remplacement de machine. 

Une entreprise vient de faire l'acquisition d'une ma-

chine neuve, dont elle a besoin pour assurer son bon fonctionnement pour les cinq annes venir.
Une telle machine a une dure de vie de trois ans. A la n de chaque anne, l'entreprise peut

37

dcider de vendre sa machine et d'en racheter une neuve pour 100 000. Le bnce annuel
assur par la machine est not
quantits dpendent de l'ge

bk ,

Age

k
bk
ck
pk

son cot de maintenance

ck

et son prix de revente

pk .

Ces

de la machine et sont indiques dans le tableau ci-dessous.

de la machine en dbut d'anne

80 000

60 000

30 000

10 000

14 000

22 000

50 000

24 000

10 000

Proposer la stratgie de remplacement de la machine maximisant le prot de l'entreprise,


sachant qu' la n de ces cinq annes elle n'aura plus besoin de la machine.

3.4.6. Problme d'investissement - d'aprs Hche, Liebling et de Werra [6]. 

Une

entreprise dispose d'un budget de 500 000 pour l'amlioration de ses usines pendant l'anne
venir. L'entreprise possde trois sites de production dont les bnces annuels esprs, en
fonction de la somme investie pour leur amlioration, sont donnes dans le tableau suivant.
Montants investis
(en centaines de milliers d'euros)
Sites

Bnces annuels
1

5,5

0,5

2,5

6,5

5,5

6,5

7,5

3.4.7. Un problme d'intrimaires. 

Une entreprise a une tche raliser, qui va prendre

5 mois. Pour chaque mois, elle a besoin des nombres suivants d'intrimaires en plus de ses salaris.
Mois

Nombre d'intrimaires

10

11

Embaucher un intrimaire cote 800 (embauche + formation). La n d'une embauche cote


1200. Enn, le cot mensuel d'un des ces intrimaires est de 1600 (salaire + charges). Trouver
la stratgie de recrutement qui minimise les cots.

3.4.8. Livraisons avec fentres de temps : cas linaire. 

Supposons qu'un camion ait

x1 , x2 , . . . , xn , tous situs sur une droite. Pour chaque point xi , on connat


l'instant le plus tard di o la livraison peut se faire. Le camion se situe au dpart en un point x0 ,
livrer des points

et veut terminer sa tourne au plus tt. Le camion n'a pas retourner son point de dpart. De
plus, on suppose que la livraison en chaque point se fait de manire instantane, et que le temps
pour aller de

xi

xj

est proportionnel la distance les sparant. Montrer que l'on peut trouver

la tourne optimale en

O(n2 )

par un algorithme de type programmation dynamique (c'est un

rsultat de Tsitsiklis).

3.4.9. Biologie : plus long sous-mot commun. 

mot w sur un alphabet est une


suite nie w1 w2 . . . wn d'lment de . La quantit n est appel longueur du mot w . On dit qu'un
0
0
0
0
mot w = w1 , . . . wn0 de longueur n est un sous-mot de w s'il existe une application f strictement
38

Un

wi0 = wf (i) pour tout i {1, 2, . . . , n0 }.


0
En d'autres termes, en eaant des lettres de w , on peut obtenir w . Par exemple : ABC est un
sous-mot de AEBBAC , mais n'est pas un sous-mot de AECAB .
0
On se donne deux mots w1 et w2 sur un alphabet . On cherche leur sous-mot commun w le

croissante de

{1, 2, . . . , n0 }

dans

{1, 2, . . . , n}

telle que

plus long. Montrer que c'est un problme de type programmation dynamique, et qu'il peut se
rsoudre en

O(n1 n2 ),

n1

et

n2

sont les longueurs de

w1

et de

w2 .

Ce problme a des applications en biologie, lorsque on veut valuer la distance sparant


deux brins d'ADN.

3.4.10. Dplacement de wagonnet dans un mine souterraine avec contrainte d'orientation.  Les mines souterraines sont souvent dotes d'un rseau ferr souterrain sur lequel
circulent des wagonnets. Ces derniers servent essentiellement vacuer la roche sans valeur extraite lors des forages. Un wagonnet rcupre la roche dans sa benne en un point d'extraction
et se dplace le long du rseau, jusqu' atteindre un point d'vacuation. Un wagonnet peut se
dplacer en avant ou en arrire, mais la benne se trouve l'avant. Cela signie que lorsque le
wagonnet arrive en un point d'extraction ou un point d'vacuation, il faut imprativement qu'il
arrive en marche avant, les demi-tours tant impossibles. L'objectif de ce problme est de proposer une mthode qui trouve les trajets les plus courts satisfaisant cette contrainte additionnelle.
On se limite au cas un seul wagonnet (dans le problme rel, la question de la congestion
induite par les autres wagonnets se pose galement).
La Figure 6 reprsente un tel rseau souterrain. Un wagonnet ne peut suivre que des trajectoires

C1

(pas de changement d'orientation discontinu) ou faire des marches arrire. La Figure 7

reprend ce rseau et met en exergue quelques points. L'enchanement

ABG
est impossible car l'orientation du wagonnet changerait brusquement en

B.

En revanche, l'en-

chanement

ABCDEF G
est possible.
Concernant l'orientation du wagonnet, l'enchanement

H I J,
galement possible, fait changer l'orientation du wagonnet : s'il se dplaait en marche avant en

H,

il se dplace en marche arrire en

J.

1. Est-il possible pour le rseau de la Figure 6 de passer de n'importe quel point de rseau
n'importe quel autre ? Peut-on de plus le faire avec les orientations du wagonnet au dpart et
l'arrive imposes ? Justier brivement vos rponses.
2. Considrons le graphe dont les sommets sont les tronons, et les artes les enchanements
possibles entre les tronons. La construction est explicite sur la Figure 8. Oublions momentanment l'orientation. Quitte modier un peu le graphe, expliquer comment utiliser ce graphe
pour trouver le plus court trajet entre deux points particuliers du rseau.
3. Montrer que, en introduisant une copie de ce graphe et au prix de quelques transformations,
on peut de plus trouver le plus court trajet entre deux points avec les orientations du wagonnets
au dpart et l'arrive imposes.

39

Figure 6.

Un exemple de rseau souterrain


D

E
F

G
C

A
B

Figure 7.

Quelques points explicits dans le rseau de la Figure 6


c

f
f

Figure 8.

Illustration de la construction du graphe de la question 2.

3.4.11. Intervalles disjoints et locations rentables. 


nie

R+ .

On suppose donne une collection

d'intervalles ferms borns de la droite relle. On dispose d'une application poids

40

w:C

1. Montrer que l'on sait trouver le sous-ensemble d'intervalles de

deux deux disjoints

de poids maximal en temps polynomial (indication : construire un graphe orient acircuitique


pondr).
2. Application : Vous tes charg de la location d'un appartement. Vous connaissez un ensemble de demandes, chacune d'entre elles tant caractrise par un instant de dbut, un instant
de n et le gain qu'apporterait la satisfaction de cette demande. Montrez que grce la question
1., on sait proposer une stratgie rapide maximisant le gain total de la location de l'appartement.

41

CHAPITRE 4

PROGRAMMATION LINAIRE

4.1. Dnition et exemples


Un programme linaire est un programme qui peut s'crire sous la forme (forme

nelle)

Min

(5)

s.c.

x, c Rn , b Rm

et o

est une

mn

inquation-

cT x
Ax b,
matrice relle.

La programmation linaire est peut-tre le cas particulier de programmation mathmatique,


i.e. d'optimisation d'une fonction sous contrainte, le plus frquemment rencontr dans l'industrie.
Beaucoup de problmes se modlisent comme des programmes linaires, bien plus de problmes
encore font appel la programmation linaire pour rsoudre des sous-problmes qui mis bout-bout permettent la rsolution du problme de dpart.

Exemple. 

Commenons par un exemple de problme de production dans l'agro-alimentaire

(1) .

Supposons que l'on dispose d'une grande surface cultivable sur laquelle il est possible de faire
pousser des navets ou des courgettes. Le cot des semences est considr comme ngligeable. On
dispose de deux types d'engrais X et Y, ainsi que d'un anti-parasite AP. Le besoin en engrais et
en anti-parasite pour les courgettes et pour les navets est synthtis dans le tableau suivant.
Engrais X
Courgettes
Navets

l.m2

2
1 l.m2

Engrais Y

Anti-parasite AP

l.m2

1
2 l.m2

0 l.m2
1 l.m2

8 l d'engrais X, de 7 l d'engrais Y et de 3 l d'anti-parasite AP.


2 pour les courgettes et de 5 kg.m2 pour
On peut s'attendre une productivit de 4 kg.m
1
les navets, et un gain de 1.kg
tant pour les courgettes que pour les navets.
On dispose comme ressource de

Quel est le gain maximum qui peut tre fait compte tenu des ressources disponibles ?
On modlise ce problme comme un programme linaire.

x : surface
y : surface
Max 4x + 5y

Variables de dcision :

Fonction objectif :

1. Source : N. Brauner.

de courgettes.
de navets.

Contraintes

2x + y 8
x + 2y 7
y3
x 0 et y 0.

(ressources d'engrais A)
(ressources d'engrais B)
(ressources d'anti-parasite AB)

On veut donc rsoudre le programme suivant.


Max
s.c.

4x + 5y
2x + y 8
x + 2y 7
y3
x 0, y 0

Ce programme est bien un programme linaire comme dni par l'quation (5), avec


c=

4
5


,

b=

8
7
3
0
0

A=

2
1
1
2
0
1
1 0
0 1

Comme nous l'avons dj not lors du premier cours, le fait qu'il y ait Max dans notre problme
au lieu d'un Min comme dans l'quation (5) ne pose pas de problme : maximiser une quantit
revient minimiser son oppos.
Comme on n'a que deux variables, on peut procder une reprsentation graphique (voir
Figure 1).

Problme de production. 

n types
m types de ressources. Elle possde bi units de la ressource
i pour i = 1, . . . , m. La production d'une unit du bien j entrane un bnce gal cj , pour
j = 1, . . . , n. Pour produire une unit du bien j , elle a besoin de aij units de chaque ressource
i. Maximiser le prot revient alors rsoudre le programme linaire suivant.
Pn
cj xj
Max
Pj=1
n
(6)
s.c.
j=1 aij xj bi i = 1, . . . , m
xj 0,
j = 1, . . . , n.
On considre une entreprise qui produit des biens de

dirents. Pour cela, elle dispose de

La variable

xj

reprsente le nombre d'units du bien

produites.

C'est un exemple classique et trs frquent de la programmation linaire. L'aspect  allocation optimale des ressources  de la RO est particulirement bien illustr par le problme de
production.
Dans l'exemple des navets et des courgettes, nous avons pu rsoudre le problme assez facilement car il n'y avait que 2 variables, et donc une reprsentation graphique tait possible. Mais la
plupart des problmes rels le nombre de variables et le nombre de contraintes peuvent dpasser
le millier, et ni l'intuition, ni le dessin peuvent alors nous tirer d'aaire. Heureusement, depuis
la n des annes 40, de nombreux chercheurs ont travaill sur la programmation linaire, et c'est
maintenant un problme qui est bien rsolu tant sur le plan pratique que sur le plan thorique.

Plan pratique :

De nombreux logiciels (libres et commerciaux) rsolvent des programmes

linaires de grande taille. Voir la liste en annexe du polycopi. Il y a principalement deux


algorithmes qui sont utiliss dans ces codes : l'algorithme

points intrieurs.

du simplexe

et l'algorithme

des

On devrait plutt parler de familles d'algorithmes car tant l'algorithme

du simplexe que l'algorithme des points intrieurs existent sous de nombreuses variantes.

44

P = {(x, y) : 2x + y 8, x + 2y 7, y 3, x 0, y 0}

y=3

x
x + 2y = 7

2x + y = 8

Figure 1.

Reprsentation graphique des contraintes du problme des navets et des courgettes.

Plan thorique :

La programmation linaire est dans

P.

Cela signie qu'il existe des al-

gorithmes polynomiaux qui rsolvent la programmation linaire. L'algorithme des points


intrieurs est un de ceux-l. L'algorithme du simplexe, bien que trs rapide en pratique,
ne possde pas pour le moment de version polynomiale : pour chacune de ses versions, on
connat des instances qui ncessitent un nombre exponentiel d'tapes.
Dans ce chapitre, nous donnons quelques proprits thoriques de la programmation linaire
(PL), qui ont un grand intrt pratique (polydres, dualit,...). Les dirents algorithmes qui
rsolvent la programmation linaire sont galement prsents.

4.2. Quelques lments thoriques


4.2.1. Forme standard.  L'algorithme

du simplexe et l'algorithme des points intrieurs

utilisent une criture du programme linaire dirente de celle de l'quation (5). Ils utilisent la

forme standard

qui consiste crire le programme linaire de la faon suivante :


Min

(7)

s.c.

Comme d'habitude,

cT x
Ax = b
x 0.

est le vecteur des variables,

Rm sont deux vecteurs donns et

est le vecteur

45

est une matrice

0,

avec

mn

composantes.

donne,

c Rn ,

En plus de la forme standard et de la forme inquationnelle, il existe la

forme canonique

qui

consiste crire le programme linaire de la faon suivante :


Min
(8)

s.c.

cT x
Ax b
x 0.

Ces trois formes sont quivalentes : partir d'une solution ralisable d'un programme sous
l'une des formes, on peut aisment construire une solution ralisable pour les deux autres formes,
donnant une mme valeur pour la fonction objectif.

Passage de la forme standard la forme canonique etrciproquement.


 Pour passer


de la forme standard la forme canonique, on pose

A0 :=

programme

A
A

b0 :=

b
b

c0 := c.

Le

c Tx
A0 x b 0
x0

Min
s.c.

est alors clairement quivalent au programme (7).


A0 := A Im , b0 = b et c0 := (c, 0).
variables d'cart y et considrer le programme

La transformation rciproque consiste poser


Concrtement, cela revient ajouter des

Min
s.c.

cT x
Ax + y = b
x, y 0.

Passage de la forme standard la forme inquationnelle et rciproquement.

Pour

A
b
0
0
passer de la forme standard la forme inquationnelle, on pose A := A , b := b ,
In
0
0
c := c. Le programme
0T
Min c x
s.c.
A0 x b0 ,
est alors clairement quivalent au programme (7).
La transformation rciproque est un peu plus subtile. On a alors le programme linaire sous
forme standard suivant :
Min
(9)

s.c.

avec

A0 :=

A A Im

b0 := b

et

c0T x0
A0 x0 = b0
x0 0,

c0 := (c, c, 0).

Il faut montrer que toute solution

optimale de l'quation (5) donne une solution optimale de ce programme et rciproquement.


Pour ce faire, nous allons montrer que toute solution ralisable de l'quation (5) donne une
solution ralisable de mme cot pour ce programme.
Prenons une solution ralisable

du programme (5). On construit les variables

Rm de la manire suivante
yi := bi (Ax)i

pour

46

j = 1, . . . , m

u, v Rn

et

et


uj :=

xj
0

si

xj 0

et

sinon,

vj :=

xj
0

si

xj 0

sinon,

pour

j = 1, . . . , n.

x0 := (u, v, y) est une solution ralisable du programme (9), et


T
T
T
que l'on a bien c x = c u c v .
0
Rciproquement, soient x = (u, v, y) une solution ralisable du programme (9). Posons
x := u v . Le vecteur x est alors une solution ralisable du programme (7), et l'on a bien
cT x = cT u cT v .
Il est alors ais de vrier que

4.2.2. Prliminaires. 
A

Dans la suite, on supposera sans perte de gnralit, que la matrice

de la forme standard (7) est de plein rang, c'est--dire que les

lignes sont linairement

indpendantes. En eet, on peut tester l'existence d'une solution ralisable en rsolvant l'qua-

Ax = b (par des pivots de Gauss par exemple). S'il y a une solution ralisable et si les
lignes de A ne sont pas linairement indpendantes, alors forcment l'quation correspondante
tion

est redondante et on peut la supprimer. D'o

Hypothse : Nos programmes linaires sous forme standard seront tels que A est de plein rang.
4.2.3. Solutions basiques ralisables. 

On suppose toujours que

A est une matrice mn,

de plein rang. Pour introduire la notion de solution basique, nous introduisons la notation

B {1, 2, . . . , n},
lments de B .

suivante : pour une partie


colonnes indices par les

on note

AB

la sous-matrice de

rduite aux

Par exemple, si

1 2 0 3 3 1
A = 0 8 9 3 4 4 ,
5 6 0 7 1 1
et si

B = {1, 4, 5}

alors

1 3 3
AB = 0 3 4 .
5 7 1

Une notation semblable sera utilise pour les vecteurs : si


alors

Remarquons que pour une partie

et

xe, on peut rcrire l'galit

Ax = b

B = {1, 4, 5},

sous la forme

AB xB + AN xN = b,

(10)
o

x = (5, 4, 5, 1, 1, 2)

xB = (5, 1, 1).

B dans {1, . . . , n}.


B {1, 2, . . . , n} m lments est appele base si la matrice AB
on peut rcrire le systme Ax = b dans la base B en transformant

est le complmentaire de

Une partie
Dans ce cas,

est inversible.
l'criture (10)

en

1
xB + A1
B AN xN = AB b.
La solution

du systme

Ax = b

obtenue en posant

B := A1
x
B b

et

N := 0
x

est une

solution

basique. Si cette solution basique est ralisable (par rapport au programme linaire (7)), i.e. si
est une solution basique ralisable, et que B est une base ralisable.
A1
B b 0, alors on dit que x
On a alors le thorme important suivant qui constitue la base de l'algorithme du simplexe.

Thorme 4.2.1. 

Alors

Considrons un programme linaire sous forme standard (forme (7)).

47

 si l'ensemble des solutions ralisables est non-vide et si la fonction objectif est borne infrieurement sur cet ensemble, alors il existe une solution optimale.
 s'il existe une solution optimale, alors il existe une solution optimale qui soit basique ralisable.
Ce thorme conduit un algorithme naf pour rsoudre un programme linaire : comme il

n
m ), on essaye chaque base l'une aprs l'autre et on
T
garde celle ralisable qui fournit la plus petite valeur pour c x. Il faudrait encore vrier que le
n'y a qu'un nombre ni de bases (au plus

fonction objectif est borne infrieurement, mais dans tous les cas, un tel algorithme n'a aucun
intrt pratique. En eet, le nombre d'tapes est exponentiel

(2) .

L'algorithme du simplexe va galement numrer des bases ralisables, mais dans un ordre
intelligent, ce qui va rduire considrablement (en gnral) le nombre de bases ralisables
valuer. Pour dcrire cet ordre (voir Section 4.3.1), on a besoin de la notion de
est une base voisine de la base

si c'est une base telle que

B0 \ B

base voisine. B 0

ne contient qu'un lment

(et puisque les bases ont toute mme cardinalit, elle est galement telle que
qu'un lment).

B \ B0

ne contient

Il se peut aussi que l'ensemble des solutions ralisables soit non-vide, mais que la fonction
objectif ne soit pas borne infrieurement sur cet ensemble. Dans ce cas, on a un

rayon inni.

Considrons un programme linaire sous forme standard (forme (7)). Si


l'ensemble des solutions ralisables est non-vide et si la fonction objectif n'est pas borne infrieurement sur cet ensemble, alors il existe x0 et q tels que les points x(t) = x0 tq soient tous
ralisables pour t 0, et tels que limt+ cT x(t) = .
Thorme 4.2.2. 

x(t) = x0 tq pour t 0 est


x0 son origine et q sa direction.

L'ensemble des points

paramtre

de ce rayon,

4.2.4. Polydres. 

appel

rayon inni.

La variable

est le

On peut galement essayer de  voir  ce que signie le programme (7),

un peu comme on l'a fait dans la rsolution de l'exemple introductif des navets et des courgettes.
Les contraintes

Ax = b

et

x0

dlimitent ce qu'on appelle un

polydre,

c'est--dire une partie

n
de R obtenue comme intersection d'un nombre ni de demi-espaces ferms dlimits par des
hyperplans.
On vrie facilement qu'un polydre est

et

d'un polydre

P,

convexe,

c'est--dire que pour toute paire de points

[x, y] est inclus dans P .


sommets, qui sont les pointes,

l'ensemble des points du segment

Un polydre possde en gnral des

points extrmes

ou

ou les

piques du polydre (voir Figure 2). Pour viter la confusion avec les sommets des graphes, nous
utiliserons plutt l'appellation points extrmes dans ce cours. On dnit mathmatiquement
un point extrme de la manire suivante.
on a l'implication

(le

segment

[x, y]

vP

est un point extrme de

contient

v) (v = x

Autrement dit, on ne peut avoir un segment inclus dans

ou

si pour tout

x, y P ,

v = y).

et non rduit un point qui contienne

v.
En ralit, comme le montre le thorme suivant, les points extrmes et les solutions basiques
ralisables recouvrent le mme concept.

Soit P l'ensemble des solutions ralisables du programme linaire


est donc un polydre). Soit v P . Les deux assertions sont quivalentes :
Thorme 4.2.3. 

2. Par exemple, pour n = 2m, on a

n
m

' 4m .

48

(7)

(P

Figure 2.

Un polydre.

4x + 5y = 22

loptimum est atteint en (x , y ) = (3, 2)


Figure 3. La solution optimale au problme des navets et des courgettes est un sommet
du polydre.

 v est une solution basique ralisable de


 v est un point extrme de P .

(7).

On peut voir une illustration sur la Figure 3, qui montre la solution optimale au problme
des navets et des courgettes du dbut du chapitre.

49

4.3. Algorithmes
Il y a trois (familles d') algorithmes rsolvant les programmes linaires : le

ellipsodes

et les

points intrieurs.

simplexe,

les

Nous allons dcrire dans ces grandes lignes l'algorithme du simplexe et trs brivement l'algorithme des points intrieurs. Notre objectif est de permettre d'en comprendre les principes et
certaines de leurs proprits. Rappelons que lorsqu'un problme est dcrit comme un programme
linaire, il est inutile de programmer un algorithme pour le rsoudre : de nombreux logiciels,
dont certains libres, le font dj avec d'excellentes performances. Mme EXCEL dispose d'une
implmentation de l'algorithme du simplexe.
Pour la description exacte de ces algorithmes, il existe de nombreux ouvrages. Un excellent
ouvrage qui couvre l'ensemble de la programmation linaire et de ces algorithmes est celui de
Matouek et Grtner [

22]. Sur l'algorithme du simplexe, le meilleur livre est certainement celui

de Chvtal [ ]. Sur l'algorithme des ellipsodes, le livre de Grtchel, Lovsz et Schrijver est une

14]. Enn, sur les points intrieurs, l'article de Terlaky


est une bonne introduction aux points intrieurs [24].

excellente rfrence et un grand classique [

Sur le plan pratique, l'algorithme des ellipsodes n'a pas encore fait ses preuves, ce qui explique
qu'il ne soit pas dcrit dans ce cours. Son intrt est (pour le moment ?) thorique et historique
puisqu'il constitue le premier algorithme polynomial propos pour la programmation linaire
(en 1979, par Khachyan). Avant 1979, la question, alors ouverte, de savoir s'il tait possible de
rsoudre la programmation linaire en temps polynomial passionnait beaucoup de chercheurs.

4.3.1. Le simplexe. 

L'ide de l'algorithme du simplexe est de passer de base ralisable

en base ralisable en amliorant chaque fois la valeur du critre. Comme le nombre de bases
est ni, on obtient l'optimum ou la preuve que le programme est non born en un nombre ni
d'tapes.
On suppose que l'on connat au dpart une base ralisable

B.

L'algorithme du simplexe

commence par rcrire le programme (7) sous la forme quivalente

Min
(11)

s.c.


T 1
cTB A1
B b + c N c B AB AN x N
1
xB + A1
B AN xN = AB b
x 0.

Il faut bien noter que ce programme et le programme (7) sont compltement quivalents.
L'avantage de cette forme, c'est qu'on peut directement lire la valeur de la solution basique

cTB A1
B b de la fonction objectif. En eet, la
1
B = AB b et x
N = 0.
solution basique ralisable associe B est x
0
Ensuite, l'algorithme cherche une base ralisable voisine B qui amliore le critre (c'est l'op0
ration de pivot). Il est en eet assez simple de construire une telle base B partir de B ,
1
T 1
simplement la lecture des entres de cN cB AB AN et de AB AN . On slectionne d'abord
0
l'lment j
/ B qui va entrer dans B (la variable entrante xj ), la lecture des coecients de
1
T
cN cB AB AN . Ensuite, la lecture des coecients de la colonne correspondante de A1
B AN ,
on trouve l'lment i qui va quitter B (la variable sortante xi ).
Variable entrante : Tout coecient ngatif de cTN cTB A1
B AN peut faire oce de variable
ralisable associe

: c'est le terme constant

entrante.

Variable sortante :
soit

p :=

1
Soit q la colonne de AB AN correspondant la variable entrante et
1
AB b. On regarde les coecients strictement positifs de q et parmi ceux-l, on

choisit la variable sortante

xi

telle que

pi /qi
50

soit le plus petit possible.

On rcrit ensuite le programme sous la forme quivalente


Min
(12)

s.c.


1
1
T
T
cTB 0 AB
0 b + cN 0 cB 0 AB 0 AN 0 xN 0
1
0
0
xB 0 + A1
B 0 AN xN = AB 0 b
x 0.

pour laquelle on est nouveau capable de lire la valeur du critre pour la solution basique
ralisable associe
et

B0

(c'est

cTB 0 A1
B 0 b)

B0
et la solution basique ralisable elle-mme (x

1
= AB
0b

N 0 = 0).
x
Et on recommence.
L'optimalit est atteinte quand tous les coecients de

quelque soit alors le choix de

xN 0 ,

0
cTN 0 cTB 0 A1
B 0 AN

sont

0.

En eet,

qui est coecients positifs ou nuls, le critre verra sa valeur

augmenter.
De deux choses l'une, soit on termine sur une base optimale, soit la lecture des coecients,
on voit que le programme est non borne (i.e
toutes les composantes de la colonne

est la valeur optimale) : cela arrive lorsque

correspondante la variable entrante sont ngatives ou

nulles, on a alors un rayon inni d'origine

B0
x

et de direction

q.

On a suppos que l'on disposait d'une base ralisable de dpart. C'est en eet souvent le
cas. Par exemple, si le programme est sous forme canonique et si

b 0,

l'ajout des variables

d'cart fait apparatre une sous-matrice identit, voir Section 4.2.1, dont les colonnes sont une
base ralisable naturelle de dpart. Sinon, on dispose de techniques standard pour tester la
ralisabilit du programme et trouver une base ralisable, voir Exercice 4.6.5.
Interprtation gomtrique : L'algorithme du simplexe s'interprte facilement gomtriquement.
En eet, deux bases ralisables voisines fournissent des solutions basiques ralisables qui sont des
points extrmes confondus ou voisins (au sens des artes du polydre) du polydre des solutions
ralisables. L'opration de pivot consiste glisser le long d'une arte du polydre

(3) pour aller

vers un point extrme voisin, de meilleur valeur par la fonction objectif.


Par consquent, la suite des solutions basiques ralisables et des pivots gnrs par l'algorithme
du simplexe fournit une trajectoire qui passe par des points extrmes et des artes du polydre
et qui cherche se diriger dans le sens de

c.

Ecacit de l'algorithme du simplexe : On considre qu'en gnral, pour un programme


contraintes, l'algorithme du simplexe va faire entre

2m et 3m oprations de pivots avant d'arriver


O(m2 ) oprations. On a donc en

l'optimum. La rcriture du systme lors d'un pivot ncssite


gnral

O(m3 )

oprations pour rsoudre un programme linaire par l'algorithme du simplexe,

ce qui est tout fait raisonnable. Sur des instance relles, le simplexe fonctionne bien.
Cela dit, il existe des instances pour lesquelles le nombre de pivots est exponentiel. La question
de savoir s'il existe une rgle de pivot  c'est--dire une faon de choisir la variable entrante
lorsque le choix est possible  conduisant un comportement polynomial est une (importante)
question ouverte.

4.3.2. Les points intrieurs. 

A l'oppos de l'algorithme du simplexe, l'algorithme des

points intrieurs cherche viter le bord du polydre et rester le plus possible l'intrieur.
C'est seulement la dernire tape que l'algorithme atteint le bord, prcisment sur une solution
optimale.

3. ou rester sur le mme points extrme ; un pivot ne parvient pas toujours amliorer directement la valeur
du critre.

51

Concrtement, cela consiste considrer le cot pnalis

f (x) := cT x

n
X

log xi

i=1

et remplacer le programme (7) par le programme suivant

f (x)
Ax = b
x > 0,

Min
(13)

x>0

s.c.

xi > 0

signie que

pour

i = 1, . . . , n.

L'ide de l'algorithme est de faire tendre progressivement

optimale x () du programme (13) pour chaque valeur de

vers

0,

et de chercher la solution

successive. La suite des

x ()

tend

alors vers l'optimum du programme (7) ( quelques conditions techniques prs). La recherche
de la solution optimale

x ()

du programme (13) se fait en fait approximativement et utilise

la solution optimale approximative du programme pour la valeur de

prcdente  cette tape

revient alors une simple rsolution d'un systme linaire.


Ecacit de l'algorithme des points intrieurs : La complexit de l'algorithme est

O(n3 L)

est le nombre maximum de bits ncessaires pour coder un coecient du programme, ce qui en
fait bien un algorithme polynomial. Le nombre d'itrations (nombre de

x () est approximativement calcul) est


O(log n),

O( nL)

distincts pour lequel

mais en pratique cela semble plutt tre un

ce qui en fait un algorithme rellement ecace.

4.4. Dualit
4.4.1. Dualit faible, dualit forte. 

Nous abordons maintenant la proprit thorique

fondamentale de la programmation linaire, dont les applications sont innombrables. Il s'agit de


la proprit de dualit.
En suivant la mthode prsente en Section 2.3.5, tout programme linaire, on peut associer
un autre programme linaire, son dual. Le premier programme est le

programme primal. Lors de

la transformation, les variables du primal deviennent les contraintes du dual et les contraintes
du primal deviennent les variables du dual.
Considrons par exemple, le programme linaire suivant, sous forme standard :

Min
(14)

s.c.

cT x
Ax = b
x 0.

Son dual se dnit alors


Max

(15)

s.c.

bT y
AT y c.

Cela se vrie aisment en suivant la mthode prsente la Section 2.3.5.


Noter que chaque
chaque colonne de

yi

A,

multiplie la

ime

ligne (la contrainte) de

associe chacune une des

A,

pour

i = 1, . . . , m,

et que

variables du programme (14), devient une

contrainte pour le programme (15).

Nous expliquons maintenant une preuve de l'ingalit de dualit faible, alternative celle
prsente en Section 2.3.5.

52

Prenons une solution ralisable

du primal et une solution ralisable

gauche les contraintes du primal par

y.

du dual. Multiplions

On obtient

y T Ax = y T b.
En utilisant les contraintes du dual et le fait que les composantes de

cT x

x sont positives, on obtient

y T b ou plus lisiblement
cT x bT y.

On retrouve bien la

dualit faible.

En particulier, la valeur optimale du dual minore la valeur

optimale du primal (si optimum il y a).

en gnral, pour la programmation linaire, les valeurs optimales des programmes primal et dual concident. Plus prcisment :
En ralit, on a beaucoup plus :

Thorme 4.4.1

(Thorme fort de la dualit pour la programmation linaire)

Pour les deux programmes linaires suivants


Min

s.c.

cT x
Ax = b
x0

(P)

et
Max

s.c.

bT y
AT y c,

(D)

une et une seule des possibilits suivantes se ralise


1.

Ni (P), ni (D) n'ont de solution ralisable.

2.

(P) est non born et (D) n'a pas de solution ralisable.

3.

(D) est non born et (P) n'a pas de solution ralisable.

4.

(P) et (D) sont tous deux ralisables. Ils ont alors tous deux des solutions optimales, respectivement x et y , et l'on a
cT x = bT y .

Autrement dit,

le minimum de

(P)

est gal au maximum de

(D).

La preuve est omise, mais ce thorme peut se prouver soit en utilisant un lemme classique en
gomtrie  le lemme de Farkas  soit en utilisant l'criture de la base optimale dans l'algorithme
du simplexe (voir Exercice 4.6.4).

4.4.2. Dualit sous toutes ses formes. 

Dans le tableau suivant, on donne toutes les

situations possibles. Un bon exercice consiste redmontrer ces programmes en utilisant la


mthode de la Section 2.3.5.

53

Programme linaire primal

Programme linaire dual

x1 , x2 , . . . , xn
A
b
T
Min c x

y1 , y2 , . . . , ym
AT
c
T
Max b y
yi 0
yi 0
yi R

Variables
Matrice
Membre de droite
Fonction objectif

ime

contrainte a

Contraintes

xj 0
xj 0
xj R

j me

contrainte a

Une proprit importante de la dualit en programmation linaire, qui se vrie directement


sur le tableau ci-dessus mais aussi partir de la dnition de la Section 2.3.5, est que

Proposition 4.4.2. 

Le dual du dual est quivalent au primal.

4.4.3. Interprtation conomique de la dualit. 

Soit le problme de production pour

une entreprise E :
Max
s.c.

Pn
cj xj
Pj=1
n
j=1 aij xj bi i = 1, . . . , m
xj 0
j = 1, . . . , n.

Soit une rme F qui veut racheter les ressources de l'entreprise E. A quels prix doit-elle le
faire pour tout racheter au cot minimum ?

Pm

i=1 aij yi
j , cela garantit que E a intrt vendre les
ressources ncessaire pour produire une unit de j plutt que de la produire. D'o le programme
On note

cj

yi

pour tout

le prix de la ressource

j = 1, . . . , n.

i. F

doit xer les

yi

de manire ce que

En eet, pour tout

mathmatique suivant auquel se trouve confront F.


Min
s.c.

Pm
i=1 bi yi
Pm
i=1 aij yi cj
yi 0

j = 1, . . . , n
i = 1, . . . , m.

C'est prcisment le dual du problme de production.

4.5. Une application de la dualit : jeux matriciels somme nulle


A = ((aji )) une matrice relle m lignes et n colonnes. Une telle matrice dnit ce qu'on
jeu matriciel somme nulle de la manire suivante. On se donne deux joueurs, C
pour  colonne  et L pour  ligne . Le joueur C choisit une colonne i, et, simultanment, le
joueur L choisit une ligne j . Chacun reoit aji . Le joueur C cherche minimiser, L cherche
Soit

appelle un

maximiser.
Ce qu'on cherche en thorie des jeux, ce sont les

quilibres de Nash, i.e. des situations o aucun

des joueurs n'a intrt changer de choix. Ici, lorsque le choix est restreint au choix d'une ligne
et d'une colonne, on parle d'un quilibre en
pures est un couple

(j, i)

stratgies pures.

Un quilibre de Nash en stratgies

tel que

aj 0 i aji0 , pour

toute ligne

j0

et toute colonne

i0 .

On ne peut pas toujours assurer l'existence d'un quilibre en stratgies pures.

54

En revanche, comme l'avait remarqu von Neumann, si les joueurs choisissent des distributions

stratgies mixtes, le gain des joueurs tant alors l'esprance


P
z de Rk+ tels que ki=1 zi = 1. Un lment de 4k
s'interprte comme une distribution de probabilit sur un ensemble k lments. Si C choisit
n
m
T
la distribution x 4 et L choisit la distribution y 4 , alors le gain espr est y Ax. Un
) 4n 4m tels que
quilibre de Nash en stratgies mixtes est un couple (
x, y
de probabilit, il y a un quilibre en

de gain. Notons

4k

l'ensemble des vecteurs

T Ax0
y 0T A
xy

pour tout

x0 4n

et

y 0 4m .

Le thorme suivant, d von Neumann, assure l'existence d'un quilibre en stratgies mixtes
pour les jeux matriciels somme nulle.

Thorme 4.5.1. 

stratgies mixtes.
Dmonstration.

Dans tout jeu matriciel somme nulle, il existe un quilibre de Nash en

 On peut supposer que toutes les entres de

sont strictement positives. En

eet, ajouter une mme constante sur chaque entre de la matrice ne change rien au jeu.
Considrons le programme linaire

Pn

i=1 xi
Ax 1
x 0.

Max
(16)

s.c.

Son dual est

Pm

j=1 yj
T
y A 1T

Min
(17)

s.c.

y 0.

Le programme (16) est ralisable, car


galement ralisable :

x=0

est une solution ralisable. Le programme (17) est

a toutes ses entres strictement positives ce qui implique que tout

susament grand est solution ralisable. D'aprs le thorme 4.4.1, il existe x solution optimale
P
Pm Pn

xi = j=1 yj . Soit w = m
du primal et y solution optimale du dual, telle que
i=1 xi =
i=1
Pn

:= w1 x et y
:= w1 y satisfont les relations demandes.
j=1 yj . Les solutions x
On peut par ailleurs dmontrer facilement que, mme s'il y a plusieurs quilibres de Nash
en stratgies mixtes, la quantit
l'appelle

valeur

y T Ax

 i.e.

1
w dans la preuve ci-dessus  ne change pas. On

du jeu.

4.6. Exercices
4.6.1. Production de boissons. 

Une entreprise fabrique trois types de boissons : XXX,

YYY et ZZZ qui rapportent respectivement

1, 55, 3, 05

et

4, 80

le litre. Chaque boisson a un

1020, 1450 et 750 litres.


fabrication, un temps de mlange et

niveau minimal de production hebdomadaire qui sont respectivement de

20

litres de chaque boisson requiert un temps en heures de

un temps d'embouteillage.
XXX

YYY

ZZZ

fabrication

mlange

5,5

7,5

embouteillage

3,5

55

Pendant la semaine venir, l'entreprise aura


lange et

708 heures disponibles en fabrication, 932 en m-

342 en embouteillage. Formuler un modle donnant un plan de production qui maximise

le prot.

4.6.2. Un problme de ranerie - d'aprs Hche, Liebling et de Werra [6]. 

Une

ranerie doit fournir chaque jour deux qualits A et B d'essence partir de constituants 1, 2 et
3. On note

Qmax

la quantit maximale disponible quotidiennement :


constituant

Qmax

cot unitaire

3000

2000

4000

essence

spcication

30%
40%
50%
50%
10%

prix de vente unitaire

de 1

5,5

de 2
de 3
de 1

4,5

de 2

Donner un modle qui permet de maximiser la recette, sachant que toute la production pourra
tre coule.

4.6.3. Dual du dual. 

En utilisant les recettes de dualisation du cours, montrer que le dual

du dual est quivalent au primal.

4.6.4. Thorme fort de la dualit. 

En s'appuyant sur la caractrisation de l'optimalit

de la solution retourne par l'algorithme du simplexe, prouver le thorme fort de la dualit


(Thorme 4.4.1). Plus prcisment, montrer que le programme (12) crit dans la base optimale
permet de construire des solutions ralisables au dual (15) donnant le mme cot la fonction
objectif. Expliquer pourquoi cela permet de conclure.

4.6.5. Trouver une solution ralisable. 

Ax = b
x0

(18)
o

b Rm

Considrons le systme suivant

et

A est une mn matrice relle. L'objectif de l'exercice est de proposer une mthode

pour tester si un tel systme a une solution ralisable, et s'il en existe, en trouver une.
1. Montrer qu'on peut supposer que

b 0.

Considrons maintenant le programme

Pm

i=1 yi

Min
s.c.

(19)

Ax + y = b
x0
y0

2. Montrer que le systme (18) a une solution ralisable si et seulement si le programme (19) a
une valeur optimale

= 0.

Par consquent, l'algorithme du simplexe est une mthode pour rsoudre un systme de la
forme du systme (18). En eet, le programme (19) a une solution basique ralisable facile
identier :

y = b

et

x = 0.

On peut alors drouler l'algorithme du simplexe aisment sur le

56

programme (19) partir de cette base initiale. Noter que s'il y a une solution au systme (18),
cette mthode lui trouve une solution basique ralisable. C'est donc galement une mthode
pour trouver une premire solution ralisable un programme linaire pour lequel il n'y en a
pas d'vidente.
3. Rciproquement, montrer avec la thorie de la dualit que si on a une mthode pour trouver
une solution ralisable de n'importe quel systme d'quations et d'inquations linaires, alors on
peut utiliser cette mthode pour rsoudre les programmes linaires.

4.6.6. Meilleure droite approximante. 

Soit

(x1 , y1 ), (x2 , y2 ), . . . , (xn , yn )

des points

dans le plan. On cherche la meilleure droite approximante pour la norme sup, i.e. la droite
du plan d'quation

ax + b = y

telle que

supi=1,...,n |axi + b yi |

soit le plus petit possible. Mon-

trer que cela revient rsoudre un programme linaire. Mme question en cherchant minimiser

Pn

i=1 |axi

+ b yi | .

4.6.7. Interprtation conomique de la dualit. 

Un dittitien utilise six produits

comme source de vitamines A et C. Il a une certaine demande en vitamine A et en vitamine C.


Il veut la satisfaire au moindre cot.
Produits (units/kg)

Demande

vitamine A

vitamine C

19

35

30

60

50

27

22

Prix par

kg

1. Modliser ce problme comme un programme linaire.


2. Ecrire le programme dual. Proposer une interpration.

4.6.8. Programmation linaire en nombres entiers. 


Min
(20)

s.c.

Un programme linaire du type

cT x
Ax = b
xj N j = 1, . . . , n

est appel programme linaire en nombres entiers.

Ecrire le problme du sac--dos comme un programme linaire en nombre entiers.

NP-dicile, cela prouve


grammes linaires en nombre entiers est galement NP-dicile.
Comme le problme du sac--dos est

57

que la rsolution des pro-

CHAPITRE 5

FLOTS ET COUPES

La notion de ot dans un graphe est naturelle : tant donn un rseau de transport (train,
tuyau, cables lectriques), avec des capacits sur les arcs, quelle quantit de biens peut-on faire
transiter au maximum ? Ou alors, en supposant qu' chaque arc est attach un cot unitaire,
quel cot minimum peut-on faire transiter un volume de biens donn ?
Une notion duale est celle de coupe dans un graphe. Une coupe est un ensemble d'arcs intersectant tout chemin entre deux sommets xs. Les applications des coupes sont nombreuses
en recherche oprationnelle bien st, mais galement en dehors de la recherche oprationnelle :
positionnement de postes d'enqutes, robustesse de rseaux, imagerie, etc.

5.1. Flots et coupes


5.1.1. Gnralits. 

La notion de ot ne peut exister que par rapport un rseau. Avant

de dfnir ce qu'est un ot, il nous faut d'abord xer un rseau. Soit donc un rseau modlis par

D = (V, A), muni d'une capacit u R+ et de deux sommets particuliers s


(la source) et t (le puits). Une fonction f : A R+ est un s-t ot si f (a) u(a) pour tout arc
a A et si pour tout sommet v
/ {s, t}, la loi de conservation
X
X
f (a) =
f (a)

un graphe orient

a (v)

a + (v)

est respecte.

s-t coupe, il est intuitivement clair qu'un ot aura une valeur infrieure sa
P
+
capacit d'une s-t coupe (X) est dnie par
a + (X) u(a). Le lemme suivant

Etant donne une

capacit,

o la

formalise entre autres cette proprit.

Lemme 5.1.1. 

Soit + (X) une s-t coupe et soit f un s-t ot quelconque. Alors
X
X
value(f ) =
f (a)
f (a).
a (X)

a + (X)

En particulier,
(21)

value(f )

u(a).

a + (X)

La preuve de ce lemme est laisse en exercice.


On a galement une proprit fondamentale qui est conforme l'intuition qu'on peut se faire
d'un ot : tout ot peut se dcomposer en combinaison conique de
circuits lmentaires.

s -t

chemins lmentaires et

Pour tout

B A,

on note

la fonction qui

aA

renvoie

si

aB

et

sinon.

Soit f un s-t ot, P l'ensemble des s-t chemins lmentaires et C l'ensemble des circuits lmentaires. Il existe alors des coecients rels positifs (P )P P et (C )CC
tels que
X
X
f=
P P +
C C .
Proposition 5.1.2. 

P P

CC

De plus,
value(f ) =

P .

P P
La preuve n'est pas triviale, mais constitue tout de mme un exercice raisonnable.

5.1.2. Flot maximum et coupe minimum. 


5.1.2.1. Les problmes.

 Une question naturelleest celle de la valeur maximum d'un ot tant

donn un rseau avec des capacits. Informellement, tant donn un rseau avec des capacits
sur des arcs, la question est de savoir quelle quantit maximum de matire on peut faire passer
de la source

la destination

t.

Cette question se modlise de la faon suivante.

Problme du ot maximum


Donne : Un graphe orient D

= (V, A),

deux sommets particuliers

et

et des capacits

u : A R+ .

Tche : Trouver un s-t ot de valeur maximum.


En fait, ce problme est polynomial car il peut se modliser comme un programme linaire,
voir Exercice 5.3.2. La nature particulire du problme a pouss les chercheurs concevoir des
algorithmes

ad hoc

plus performants. L'un de ces algorithmes est celui d'Edmonds et Karp [ ],

qui est galement polynomial. Il est dcrit dans le paragraphe suivant.

Un problme associ est celui de la


du problme du

s -t

s -t

coupe minimum. C'est en ralit le problme dual

ot maximum, au sens de la dualit de la programmation linaire, voir

Exercice 5.3.2.

Problme de la s-t coupe minimum


Donne : Un graphe orient D = (V, A),

deux sommets particuliers

et

t,

et des capacits

u : A R+ .

Tche : Trouver une s-t coupe de capacit minimum.

5.1.2.2. Graphe rsiduel et chemins f -augmentants.  Les algorithmes ad hoc utilisent souvent
les graphes rsiduels et les chemins augmentants, que nous dnissons maintenant. Informellement, le graphe rsiduel est le graphe qui indique les arcs o l'on peut augmenter ou diminuer
la quantit de ot sans violer la loi de conservation et les bornes de capacits (voir exemple
Figure 1).
Pour un arc

a = (u, v),

on note

a1 := (v, u).

On dnit

ot. On dnit

Af := {a : a A

et

A1 := {a1 : a A}.

f (a) < u(a)} {a1 : a A


60

et

f (a) > 0}.

Soit

un

st

graphe rsiduel est le graphe Df := (V, Af ). Pour a Af , on associe une capacit rsiduelle
uf (a) := u(a) f (a) si a A et uf (a) := f (a) si a1 A. Tout s-t chemin dans Df est appel
chemin f -augmentant.
Le

5.1.2.3. Algorithme d'Edmonds et Karp.

 On commence par poser

Ensuite on rpte

Df . S'il n'y
en a pas, alors f est optimal. Sinon, on calcule le plus grand possible
qui permette d' augmenter  f le long de P et on  augmente  f de
la quantit .
Trouver un chemin

Le calcul de

se formalise par

la manire suivante : si

f (a) := f (a) + ;

f augmentant P

f (a) := 0 pour tout a A.

:= minaP uf (a).

dans le graphe rsiduel

Augmenter

le long de

a P est dans le mme sens dans A (i.e. a A),


a1 A), alors on pose f (a) := f (a) .

se fait de

alors on pose

sinon (i.e.

L'algorithme dcrit ci-dessus n'est polynomial que si on choisit toujours le chemin

f -augmentant

ayant le moins d'arcs possible, ce qui se fait par un algorithme de plus court chemin avec des
cots unitaires sur les arcs

(1) .

D'o

Thorme 5.1.3. 

Remarque.

L'algorithme d'Edmonds et Karp trouve un s-t ot maximum en O(nm2 ).

 Il existe maintenant de nombreux algorithmes polynomiaux. Le plus rapide de

tous est celui de Goldberg et Tarjan : ils ont montr qu'il tait possible de trouver un ot
maximum en

O(nm log n2 /m).

5.1.2.4. Thorme max otmin coupe.

 Une application de l'algorithme et du thorme ci-

dessus est la clbre proprit de max otmin coupe. En eet, lorsque l'algorithme se termine,
on a obtenu un ot maximum. En notant
est l'absence de chemin

f -augmentant

ce ot maximum, le critre qui a permis de s'arrter

dans le graphe rsiduel, i.e. qu'on ne peut atteindre

1. Dans ce cas particulier, cot = 1, il n'est pas ncessaire d'appliquer l'algorithme de Dijkstra du Chapitre 3.
Une simple recherche en largeur d'abord donne la solution.
Les nombres non-entoures sont les capacites; les nombres entoures forment le flot.
Graphe residuel:
6

v1

v2

10

6
1

5
6

5
4
3

v2

v1

3
1

2
5

v4

v4

v3
5

Figure 1.

Le graphe rsiduel.
61

5
v3

t
5

s dans Df ,
cela signie que pour les arcs a quittant X (formellement a
f (a) = u(a) et que
P

pour ceux entrant dans X (formellement a (X)), on a f (a) = 0. Donc


a + (X) f (a)
P
P
a (X) f (a) =
a + (X) u(a). Ce qui signie d'aprs le Lemme 5.1.1
X
u(a).
value(f ) =
depuis

dans

Df .

Posant

l'ensemble des sommets que l'on peut atteindre depuis

+ (X)), on a

a + (X)
On obtient donc

Thorme 5.1.4. 

minimum.

La valeur d'un s-t ot maximum est gale la capacit d'une s-t coupe

De plus, la discussion prcdente implique que l'on peut trouver une

s -t

coupe minimum

2
en O(nm ). En eet, aprs avoir appliqu l'algorithme d'Edmonds et Karp, l'ensemble X des
+
sommets que l'on peut atteindre dans Df depuis s est tel que (X) est une coupe de capacit
minimale.

Thorme 5.1.5. 

L'algorithme d'Edmonds et Karp trouve une s-t coupe minimum en O(nm2 ).

Une autre consquence importante de l'algorithme est la suivante

Thorme 5.1.6.  Si toutes les capacits sont entires, alors il existe un s-t ot maximum
entier, et l'algorithme d'Edmonds et Karp le trouve.
Dire que le ot

est entier signie que

f (a)

est entier pour tout

a A.

En fait, on a aussi

l'existence de la dcomposition de la Proposition 5.1.2 avec des coecients

et

entiers

positifs dans ce cas.

Remarque.  On peut dnir les S -T coupes o S et T sont des ensembles disjoints de sommets.
+
Une S -T coupe est un ensemble d'arcs de la forme (X), avec S X et T X = . Une S -T
coupe de capacit minimum se trouve en ajoutant une source ctive s, un puits ctif t, des arcs
(s, u) pour tout u S et des arcs (v, t) pour tout v T . Ces nouveaux arcs sont alors munis de

capacit innis.

Cette astuce consistant ajouter une source et un puits ctifs est utile dans de nombreuses
situations.

Remarque.  Dans le cas non-orient, on appelle s-t coupe un ensemble d'artes de la forme
(X), avec s X et t
/ X . Trouver une s-t coupe de capacit minimum se ramne simplement
remplacer chaque arte par deux arcs opposs.

Remarque.

 Considrons le problme suivant.

Problme de l'ensemble d'arcs dconnectant minimum


Donne : Un graphe orient D = (V, A), deux sommets particuliers

et

t,

et des capacits

u : A R+ .

Tche : Trouver un sous-ensemble B d'arcs de capacit minimum tel que pour tout s-t chemin
P,

on a

P B 6= .

Ce problme concide avec celui de la

s-t

coupe de capacit minimum. En eet, une

s-t

coupe

est une solution ralisable pour le problme de l'ensemble d'arcs dconnectant minimum. Inversement, s'il existe une solution ralisable
minimum, alors l'ensemble

pour le problme de l'ensemble d'arcs dconnectant

des sommets que l'on peut atteindre dans

62

depuis

s sans

utiliser

d'arcs de

est tel que

+ (X) B .

Exemple : Contrle routier. 

Pour amliorer l'utilisation des ottes de camions (pour

diminuer les missions de CO2 par exemple), on souhaite eectuer des contrles de poids lourds
partant d'une rgion

et allant vers une autre rgion

ct .

R.
t cote

par le biais d'un rseau autoroutier

Les contrles sont eectus sur des tronons d'autoroute. Faire un contrle sur le tronon

Le problme consiste trouver le sous-ensemble de tronons sur lesquels les contrles vont

tre eectus tel que tout camion allant de

Q passe par un contrle, et ce, cot minimum.

Avec les remarques ci-dessus, on peut voir que ce problme se modlise comme un problme
de

s -t

coupe minimum.

Exemple : Problme de l'aectation de tches. 

On suppose que l'on a direntes

tches accomplir dont on connat les dures d'excution, et que l'on dispose d'une ressource
de main d'uvre dont on connat les comptences. Les tches sont supposes telles que les
employs peuvent y travailler en parallle. On souhaite minimiser le temps ncessaire pour
raliser l'ensemble des tches.

Problmes de l'aectation des tches


Donnes : n tches et leurs dures t1 , . . . , tn
{1, . . . , m}

Tche

R+ ; m

employs et des sous-ensembles

qui correspondent aux employs comptents pour la tche

i.

Si

xij R+ pour tous i {1, . . . , n} et j {1, . . . , m} (signiant le


j la tche i) tels que toutes les tches soient nies, i.e. tels que
P
le temps qu'il faut pour terminer toutes les tches,
jSi xij = ti pour i = 1, . . . , n. Minimiser
P
i.e. la quantit T (x) := maxj{1,...,m}
i: jSi xij .
: Trouver des rels

temps consacr par l'employ

Ce problme se modlise comme un problme de ot de la manire suivante. On construit un

vi reprsentant les tches et de l'autre des sommets


wj reprsentant des employs. On met un arc (vi , wj ) si l'employ j est comptent pour eectuer
la tche i, en d'autres termes, si j Si . On ajoute deux autres sommets s et t, et on construit
tous les arcs (s, vi ) et tous les arcs (wj , t). On dnomme ce graphe D . Fixons un temps T et on
va se demander s'il est possible d'eectuer toutes les tches en un temps plus petit que T .
On munit D de capacits u(s, vi ) := ti , et u(a) := T .
Prenons maintenant un jeu de rels xij satisfaisant les contraintes du problme, et ralisant
les tches en un temps total T . Associons chaque arc (vi , wj ) la quantit xij . A chaque arc
P
P
(s, vi ) on associe la quantit jSi xij et chaque arc (wj , t) la quantit i: jSi xij . On obtient
Pn
ainsi un ot ralisable de valeur
i=1 ti .
Pn
Rciproquement, supposons que l'on trouve un ot ralisable f de valeur
i=1 ti . Alors, les
rels xij := f (vi , wj ) constituent une solution ralisable du problme de l'aectation de tches,
avec un temps de ralisation total T .
graphe biparti avec d'un ct des sommets

Par consquent pour rsoudre le problme de l'aectation de tches (trouver une solution

optimale), on cherche un ot maximum sur

Pn

i=1 ti si on pose

T :=

Pn

D.

i=1 ti . On pose alors

On sait qu'il y a un ot maximum de valeur

Pn

T :=

2
Pn

et

T 0 :=

Pn

i=1 ti . On rpte

i=1 ti , on sait qu'on peut raliser les


T . On recommence alors avec T := T /2 et T 0 := T .

Si on trouve un ot de valeur


tches en un temps

i=1 ti

63

Sinon, c'est que

tait trop petit, et on pose

T :=

T 0 := T 0 .
La solution optimale

est telle

T T (x ) T 0 .

T + T0
2

On peut s'arrter ds que

petit qu'une quantit xe au pralable.

et on laisse

T0 T

est plus

On a rsolu un problme d'optimisation par une recherche binaire, chaque tape tant un
problme de dcision.
Cette faon de procder est trs ecace en pratique, plus que l'autre solution consistant
voir le problme de l'aectation de tches comme un programme linaire.
On peut se demander si, dans le cas o les ti sont entiers, on a ncessairement alors une solution
optimale entire. L'auteur de ce polycopi ne sait pas. L'intrt pourrait tre de montrer que la
recherche binaire termine en un nombre ni d'tapes.

5.1.3. Flot de cot minimum. 


5.1.3.1. Le problme.

 Supposons maintenant que nous ajoutions un cot sur chaque arc. De

plus, pour des commodits de modlisation, on va autoriser plusieurs sources et plusieurs puits.

D = (V, A), muni de capacits `, u : A R+ tels que `(a) u(a) pour


P
b : V R tels que vV b(v) = 0. Une fonction f : A R+ est un
a A, on a `(a) f (a) u(a) et si pour tout sommet v V , la loi de

Soit un graphe orient

a A, et des
b-ot si pour tout
tout

nombres
arc

conservation

X
a + (v)

f (a)

f (a) = b(v)

a (v)

est respecte.

b(v) > 0 sont appels sources et les sommets v tels que b(v) < 0 sont
b(v) est l'ore ; pour un puits, b(v) est la demande.
Dans le cas particulier o tous les b(v) sont nuls, on parle de circulation.
On suppose que l'on a une fonction de cot c : A R.
On peut alors se demander, parmi tous les b-ots, lequel est de plus petit cot, o le cot
d'un b-ot f est dni par
X
c(a)f (a).
Les sommets

appels

puits.

tels que

Pour une source,

aA
Les applications des ots de cot minimum sont innombrables. Nous verrons ce que cela peut
apporter au problme d'aectation de trches vu prcdemment. Tout comme le problme de
ot maximum, le problme du

b-ot de cot minimum se formule comme un programme linaire

et peut donc tre rsolu avec ma mthode des points intrieurs (en temps polynomial donc) ou
par l'algorithme du simplexe.
En 1985, Goldberg et Tarjan [

13]

ont montr qu'il existait un algorithme particulirement

ecace pour rsoudre le problme ot de cot minimum. L'algorithme travaille encore sur le
graphe rsiduel, en dnissant

c(a1 ) := c(a)

Af := {a : a A
Le graphe rsiduel

Df

et

pour

aD

et

f (a) < u(a)} {a1 : a A

et

f (a) > `(a)}.

est donc maintenant muni de cots.

5.1.3.2. Algorithme de Goldberg et Tarjan.  On commence par xer un b-ot (voir ci-dessous :
comment trouver un b-ot ralisable). Le cot moyen d'un circuit C est dni par
P
aC c(a)
,
|C|
64

somme des cots des arcs du circuit

divise par le nombre d'arcs du circuit

C.

On repte
Reprer un circuit
pas, alors

de cot moyen minimum dans

est optimal. Sinon, on calcule

permette d' augmenter 


quantit
Le calcul de

f (a) := f (a) + ;

le long de

Df .

S'il n'y en a

le plus grand possible qui

et on  augmente 

de la

se formalise par

la manire suivante : si

:= minaC uf (a).

Augmenter

le long de

a C est dans le mme sens dans A (i.e. a A),


a1 A), alors on pose f (a) := f (a) .

se fait de

alors on pose

sinon (i.e.

La dicult de cet algorithme est de trouver un circuit de cot moyen minimum dans le
graphe rsiduel

Df .

19]

En fait, pour cela, on peut faire appel un algorithme de Karp [

trouve un tel circuit en

Thorme 5.1.7. 

qui

O(nm).

On peut trouver un b-ot de cot minimum en O(n2 m3 log n).

Comme pour le problme du ot maximum, si les capacits sont entires, il existe une solution
optimale entire, que l'on trouve sans plus de dicult.

Si toutes les capacits sont entires et tous les b(v) sont entiers, alors il
existe un b-ot entier de cot minimum, et l'algorithme de Goldberg et Tarjan le trouve.

Thorme 5.1.8. 

Si l'on accepte d'avoir une complexit qui dpend de la taille des nombres de l'input (on
parle alors d'algorithme

faiblement polynomial),

on peut avoir d'autres bonnes complexits. Par

exemple, l'algorithme classique d'Edmonds et Karp [ ] tourne en

O(m(m + n log n)L),

est

le nombre maximum de bits pour coder un coecient du problme.

5.1.3.3. Comment trouver un b-ot ralisable.  Remarquons d'abord que le cas o `(a) = 0
pour tout a A est facile. En eet, en ajoutant une source ctive s, un puits ctif t, les arcs
(s, v) avec capacit b(v) pour les v tels que b(v) > 0 et les arcs (v, t) avec capacit b(v) pour
les v tels que b(v) < 0, l'existence d'un b-ot se resout par un algorithme de ot maximum, par
exemple avec l'algorithme d'Edmonds et Karp ci-dessus.

`(a) = 0 pour tout


a. On fait la mme transformation que ci-dessus, et on ajoute un arc (t, s) avec `(t, s) = 0 et
u(t, s) = +. On cherche donc une circulation f (a) dans ce graphe. Montrons donc comment
trouver une circulation dans un graphe dont les arcs sont munis de bornes infrieures `(a) et de
bornes suprieures u(a).
Nous allons voir maintenant comment l'on peut toujours se ramener au cas

arc

Une telle circulation par dnition satisfait les contraintes suivantes

f (a) =

f (a)

`(a) f (a) u(a)

Posons

f 0 (a) = f (a) `(a).

a + (v)

`(a) +

X
a + (v)

pour tout

v V,

a A.

On voit que le problme de l'existence de la circulation

revient celui de l'existence d'un ot

pour tout

a (v)

a + (v)

f0

f 0 (a) =

satisfaisant

`(a) +

a (v)

f 0 (a)

pour tout

a (v)

0 f 0 (a) u(a) `(a)


65

pour tout

a A.

v V,

f (a)

b0 -ot avec borne infrieure = 0,


X
X
b0 (v) :=
`(a)
`(a),

Ce dernier est un problme d'existence de

a (v)

a + (v)

lequel est rsolu par un problme de ot maximum, comme indiqu au dbut de cette discussion.

Exemple : Conception d'un rseau de transport moindre cot, d'aprs [6]. 


Supposons que l'on souhaite calibrer un rseau de transport de faon pouvoir assurer des
livraisons depuis des sources jusqu' des destinations. Pour chaque tronon direct
connat le cot

c(u, v)

(u, v),

on

d'tablissement d'une liaison de capacit unitaire. Comment construire

le rseau dont l'tablissement soit de cot minimum ? On suppose que l'on connat pour les
sources, l'ore et pour les destinations, la demande.

b-ot de cot minimum. En eet, on cherche


le b-ot de cot minimum, o les cots sont donns par les c(u, v) et b(v) est gal l'ore si v
est une source, et est gal l'oppos de la demande si v est une destination. Noter que d'aprs
Ce problme se modlise comme la recherche d'un

le Thorme 5.1.8, on peut trouver une solution entire ce problme, ce qui est commode si
chaque tronon ne peut avoir que des capacits unitaires.

Exemple : Problme de l'aectation de tches avec considration salariale. 

Dans

le cas du problme de l'aectation des tches, mettre de cots sur les arcs dans la modlisation
par les ots permet de prendre en compte des considrations salariale.
Soit le problme

Problme de l'aectation de tche avec salaires


Donne : n tches et leurs dures t1 , . . . , tn R+ ; m
{1, . . . , m}

qui correspondent aux employs comptents pour la tche

pour l'employ

lorsqu'il eectue la tche

Si
horaire cij

employs et des sous-ensembles

i ; une dure limite T

i;

un salaire

pour la ralisation de l'ensemble

des tches.

Tche : Trouver des rels xij

R+

tels
i.e.

i {1, . . . , n} et j {1, . . . , m} tels que toutes


P
T , i.e. tels que jSi xij = ti pour i = 1, . . . , n et

pour tous

les tches soient nies en un temps infrieur

P
maxj{1,...,m} i: jSi xij T . Minimiser le cot
P
la quantit C(x) :=
j{1,...,m},i{1,...,n} cij xij .

qu'il faut pour terminer toutes les tches,

D comme dans la sous-section prcdente, avec


c(vi , wj ) := cij , c(s, vi ) := 0 et c(wj , t) := 0. Une simple

On peut rpter la construction du graphe


les mmes capacits. Les cots sont

application d'un algorithme de ot de cot minimum donne la solution.

5.2. Multiots
Nous n'avons jusqu' maintenant envisag qu'un seul bien traversant le rseau. Dans de nombreuses applications (en particulier dans le transport), il y a plusieurs biens distincts qui utilisent
le mme rseau. On parle alors de multiots.

(D, H), o D = (V, A) est le graphe


d'ore et H = (T, R) avec T V le graphe de demande. Le graphe D est muni de capacits
u : A R+ . Un multiot f est une collection (fr )rR , o chaque fr est un s-t ot avec r = (s, t)
dans R, telle que
X
fr (a) u(a) pour tout a A.
Un multiot se dnit pour un couple de graphes orients

rR

66

s1

t2

t1
s2
Figure 2.

Contre-exemple la proprit d'intgrit des multiots

Dirents objectifs peuvent tre cherchs. On peut chercher maximiser la quantit totale

demande
d : R R+ et se demander si le rseau permet de la satisfaire, i.e. s'il existe un multiot f
tel que pour tout r on ait value(fr ) = d(r). On munit parfois les arcs de cots c : A R et
on cherche satisfaire la demande au moindre cot, i.e. que l'on cherche le multiot f tel que

P
P
value fr = d(r) pour tout r R avec aA c(a) rR fr (a) minimum.
de biens transitant dans le rseau, i.e. la quantit

rR value(fr ). On peut xer une

Toutes ces questions peuvent tre rsolus en temps polynomial. En eet, elles se formulent

comme des programmes linaires.


L'intrt de formuler un problme linaire comme un problme de multiot rside dans le fait
qu'il existe des algorithmes plus ecaces pour le rsoudre. Ces algorithmes dpassent largement
la cadre de ce cours. Il faut simplement savoir que si un programme linaire n'a que des

0, 1

comme coecients dans ses contraintes  c'est le cas pour les multiots , alors il existe des
algorithmes plus ecaces que le simplexe ou les points intrieurs. Par exemple, Tardos a propos

23] qui est fortement polynomial, i.e. dont le nombre d'itrations ne dpend

tel un algorithme [

pas des valeurs prises par

ou

d.

En pratique, il existe des algorithmes encore plus ecaces, et

11]).

polynomiaux, qui rsolvent approximativement le problme (voir par exemple [


Un autre intrt rside dans la possibilit de faire de la

gnration de colonnes

facilement. La

gnration de colonne dpasse aussi le cadre de ce cours, voir Chapitre 13.


En revanche, dans le cas des multiots, des capacits entires n'impliquent plus forcment
l'existence d'un ot de mme valeur entier. L'exemple de la Figure 5.2 permet de s'en convaincre :
les capacits sont supposes tre gales

1.

sur tous les arcs, et la valeur de chaque ot est gale

On peut voir que le seul ot possible n'est pas entier (on dit qu'il est

fractionnaire).

Ce dont il faut se souvenir, c'est que si un problme peut tre modlis comme un problme
de multiot, il peut tre bon de le souligner, et de chercher des mthodes qui exploitent cette
proprit.

5.3. Exercices
5.3.1. Valeur d'un s-t ot. 

Prouver le Lemme 5.1.1.

67

5.3.2. Formulation des problmes de ots maximum sous forme de programme linaire.  Montrer que le problme de ot maximum s'crit comme un programme linaire.
Ecrire son dual. Quelle remarque pouvez-vous faire ?

5.3.3. Coupe minimum. 

On se donne un graphe orient

u : A R+ . Montrer que l'on peut trouver


P
a + (X) u(a) soit minimal. (Attention : il

5.3.4. Combat sur un rseau. 

D = (V, A) avec une capacit


X non vide tel que
t spcis).

en temps polynomial l'ensemble


n'y a pas de

et de

Un centre de commandement est situ en un sommet

d'un rseau non-orient. On connat la position des subordonns modlise par un sous-ensemble

des sommets du rseau. On souhaite dtruire un nombre minimum de liens an d'empcher

toute communication entre le centre de commandement et les subordonns. Comment rsoudre


ce problme en temps polynomial ?

5.3.5. Le problme des reprsentants  d'aprs Ahula, Magnanti et Orlin [1]. 


Une ville

citoyens,

clubs et

partis politiques. Chaque citoyen appartient au moins un

club, et au plus un parti.


Le jour du renouvellement du conseil de la ville approche... Le nombre de conseillers du parti

Pk

ne doit pas excder

uk . Or, chaque club doit nommer un reprsentant au conseil de la ville, et

certains de ces reprsentants sont membre d'un parti politique... Un citoyen sigeant au conseil
ne peut que reprsenter qu'un seul club. Proposer un algorithme polynomial permettant de
dcider si ces contraintes peuvent tre satisfaites.

5.3.6. Thorme de Menger. 

Dmontrer le thorme suivant.

Soit D = (V, A) une graphe orient, et s et t deux sommets particuliers. Le nombre maximum de s-t chemins arc-disjoints est gale la cardinalit minimale d'un sous-ensemble d'arcs
intersectant tout s-t chemin.

5.3.7. Problme de transport de Monge bis. 

Montrer que le problme de transport

de Monge (Exercice 2.6.9) se modlise comme un problme de ot de cot minimum.

5.3.8. Flotte d'avions. 


vols

Une compagnie arienne a

vols satisfaire. Pour chacun de ces

i = 1, . . . , p, elle connat son lieu oi et son heure de dpart hi , la dure du vol ti et le lieu
di . De plus, le temps pour se rendre de dj oi est connu pour chaque couple (i, j).

d'arrive

La compagnie souhaite minimiser le nombre d'avions tout en satisfaisant la demande en vols.


Modliser ce problme comme un problme de ot.

5.3.9. Flotte d'avions bis. 

Une compagnie arienne a la possibilit de satisfaire p vols.


i = 1, . . . , p, elle connat son lieu oi et son heure de dpart hi , la dure
du vol ti , le lieu d'arrive di et le produit de la vente des billets. De plus, le temps pour se rendre
de dj oi est connu pour chaque couple (i, j). Enn, pour chaque vol (u, v), le cot c(u, v) du vol
Pour chacun de ces vols

est connu (frais, salaire, carburant). La compagnie souhaite maximiser son gain, sachant qu'elle
dispose de

avions.

Modliser ce problme comme un problme de ot.

68

5.3.10. Remplissage d'un avion. 

Un avion capable d'embarquer au plus

doit partir de l'aroport 1 destination des aroports


passagers voulant voyager de l'aroport
trajet est

p(i, j).

l'aroport

passagers

2, 3, . . . , n successivement. Le nombre de
j (avec i < j ) est d(i, j) et le prix de ce

Combien de passagers faut-il prendre chaque aroport pour maximiser les

recettes totales ? Modliser ce problme comme un problme de ot.

5.3.11. Gestion dynamique de stock, cas


dt

pour chacune des

seul bien. 

On souhaite satisfaire une

t = 1, 2, . . . , T . Pour satisfaire la demande


dt sur la priode t, on peut produire une quantit xt R+ sur la priode t et/ou retirer une
certaine quantit du stock yt1 R+ de la priode t 1 (on suppose y0 = 0). On suppose de
plus que la production sur la priode t ne peut pas excder Pt .
demande prescrite

priodes

1. Justier la dynamique du stock

yt = yt1 + xt dt ,

(22)
pour

t = 1, 2, . . . , T .

Sur la priode

p t 0.

t,

le cot unitaire de stockage est

On veut grer le stock au cot minimum.

st 0

et le cot unitaire de production est

2. Montrer que ce problme se modlise comme un programme linaire.


3.

Application numrique :

On considre les donnes du tableau suivant

t=
dt
st
pt
Pt

xxx

Indiquer le cot minimal de gestion de stock, ainsi que les niveaux de productions (en p.4 ,
des programmes linaires sont donns).
4. Montrer que ce problme peut galement se modliser comme un problme de
minimum. (Indication : introduire un sommet source
puits

wt

avec

b(wt ) = dt ;

avec

b(v) =

b-ot de cot

PT

t=1 dt et des sommets

vous d'indiquer les arcs, les cots sur les arcs, les capacits sur

les arcs, etc.) Justier la modlisation.


5. Quel peut tre l'intrt d'une telle modlisation alors qu'on sait rsoudre le problme avec
un solveur de programmation linaire ?

5.3.12. Extraction de mine ciel ouvert. 

Un domaine d'application de la recherche

oprationnelle est l'exploitation des mines ciel ouvert. Un problme important consiste
dterminer les

blocs

extraire. Dans toute la suite, la mine sera assimile une collection de

blocs numrots de

n.

L'extraction du bloc

rapporte la quantit

ci ;

cette quantit peut

tre positive ou ngative (en fonction de la quantit de minerai prsent dans le bloc).
Les blocs ne peuvent pas tre extraits dans n'importe quel ordre : pour chaque bloc
connat l'ensemble

Yi

i,

on

des blocs qu'il faut avoir extraits pour pouvoir extraire le bloc i. L'objectif

est de proposer un sous-ensemble de blocs extraire de manire maximiser le prot total.


Dans un graphe orient, on dit qu'un ensemble
d'un sommet de

est encore dans

S.

de sommets est

ferm

Considrons le problme suivant.

Le problme du ferm maximum.


69

si tout successeur

Donne : Un graphe D = (V, A) orient, des rels cv pour


tout v V .
P
Tche : Trouver un sous-ensemble ferm S V tel que vS cv soit maximal.
1. Expliquez pourquoi le problme peut se modliser sous la forme d'un problme de ferm
maximum.
L'objectif va maintenant tre de modliser le problme du ferm maximum comme un problme de

s -t

coupe de capacit minimale.

= (V , A)
en ajoutant un sommet source s et un sommet
D
puits t V . On note V
= {v V : cv 0} et V = {v V : cv < 0}. L'ensemble A est alors
A auquel on ajoute les arcs {(s, v) : v V + } et les arcs {(v, t) : v V }. On met une capacit
u(s,v) = cv pour v V + et u(v,t) = cv pour v V .
On construit un nouveau graphe

ua mettre sur les arcs a A de manire ce que tout X V tel


de capacit minimale soit un ensemble ferm de D ?
s-t coupe de D

2. Quelles capacits

+
D
(X

{s})

3. Soit

soit une

XV

un ensemble ferm de

D.

X
a +
(X{s})
D

que

Montrez que

ua =

X
vV

cv

cv .

vX

4. En dduire que le problme du ferm maximum se modlise comme un problme de coupe


minimale. Conclure sur la rsolution pratique de problme.

70

CHAPITRE 6

GRAPHES BIPARTIS : PROBLME D'AFFECTATION,


PROBLME DE TRANSPORT, MARIAGES STABLES

L'objectif de ce cours est d'tudier un objet central de l'optimisation discrte et d'en voir
quelques applications parmi les plus importantes. Il s'agit des graphes bipartis.

6.1. L'objet
graphe biparti est un graphe dont l'ensemble des sommets peut tre partitionn en deux
parties X et Y telles que toute arte l'une de ces extrmits dans X et l'autre dans Y . Voir la
Un

Figure 1. On a la proposition suivante, trs utile, dont la dmonstration est laisse en exercice.

Proposition 6.1.1. 

taille impaire.

Un graphe est biparti si et seulement si il ne contient pas de circuit de

6.2. Problme du couplage optimal


G = (V, E) est un sous-ensemble d'artes M E
e et f n'ont pas de sommet en commun.
couplage d'un graphe G.

Rappelons qu'un couplage dans un graphe


disjointes : quelles que soient
On note

(G)

et

dans

M,

la cardinalit maximale d'un

Figure 1.

les artes

Un exemple de graphe biparti.

Problme du couplage de poids maximum


Donne : Un graphe G = (V, E) biparti avec des poids w : E R sur les artes.
Tche : Trouver un couplage de poids maximal.
Ce problme modlise typiquement des situations o l'on veut aecter des personnes des
tches ou des services. Le poids d'une arte

uv

reprsente alors le bnce obtenu en aectant

v.

Le problme du couplage de poids maximum se rsout en temps polynomial. En eet, ce


problme peut se modliser comme un problme de ot de cot maximum (qui est un problme

X vers Y , on
(v, t) pour v Y ;

de ot de cot minimum avec des cots opposs) : on oriente toutes les artes de

(s, v) pour v X et
b(s) = |X| = b(t) et b(v) = 0 ailleurs. Enn, les
capacits des arcs sont partout = + sauf sur les arcs (s, v) et (v, t) o elles sont gales 1, et
les cots sont partout nuls sauf sur les arcs de X Y o ils sont gaux aux poids w . C'est un

ajoute un sommet

et un sommet

enn, on ajoute un arc

(s, t),

t,

on ajoute des arcs

et on pose

problme de ot de cot maximum : en eet, tout ot entier induit un couplage de mme poids ;
et tout couplage induit un ot entier de mme cot.
Tout algorithme trouvant des ots entiers de cot optimal trouve donc la solution (en particulier celui vu au chapitre prcdent). En fait, il existe un algorithme plus ecace, appel

algorithme hongrois, dcouvert par Khn en 1955 [20].


Soit G = (V, E) notre graphe biparti, avec les ensembles X et Y partitionnant V et n'induisant chacun aucune arte. On a de plus une fonction w de poids sur E . L'algorithme hongrois
commence avec un couplage M = . Ensuite, on rpte

DM de la faon suivante :
 Orienter chaque arte e de M de Y vers X , et dnir l(e) := w(e).
 Orienter chaque arte e de E \M de X vers Y et dnir l(e) := w(e).
Soit XM (resp. YM ) les sommets de X (resp. Y ) qui ne sont pas couverts
par une arte de M . S'il y a un chemin de XM YM , en chercher un
plus court (pour la fonction l), que l'on note P . Remplacer le M courant
par M 4E(P ) (o E(P ) est l'ensemble des artes de P , et o B4C
reprsente les lments prsents dans exactement l'un des ensembles B
(1) ).
ou C
Crer le graphe orient

L'algorithme s'arte lorsqu'on ne peut pas trouver de chemin de


dmontrer que

XM

YM

dans

DM . On peut

est alors un couplage de poids maximum.

Un lecteur attentif remarquera qu'il faut calculer un plus court chemin dans
graphe orient avec des poids quelconques. Ce problme est
ici, on peut montrer que l'algorithme est tel que

DM

DM

qui est un

NP-dur en gnral. Heureusement

ne contient jamais de circuit absorbant

et que l'on peut donc calculer un tel plus court chemin avec la mthode Bellman-Ford vue au
Chapitre 3.
Avec quelque subtilit d'implmentation, l'algorithme hongrois peut tourner en

n log n)).

On a donc le thorme suivant (donn ici sans preuve).

Thorme 6.2.1. 

n log n)).

O(n(m +

Le problme du couplage de poids maximal peut tre rsolu en O(n(m +

1. On a donc B4C = (B C) \ (B C) ; on appelle cette opration la

72

dirence symtrique de B et de C .

Avec un algorithme de ot, on est en

O(n2 m3 log n).

Si on veut simplement trouver le couplage le plus grand (en nombre d'artes), on peut aller
encore plus vite.

Thorme 6.2.2.  Dans un graphe biparti, on peut construire un couplage de cardinalit

maximale en O( nm).
Dans ce cas, on gardant la mme modlisation par un graphe orient (et en oubliant les cots),
on cherche le

s-t ot de valeur maximale, ce qui donne une complexit de O(nm2 ). Par une srie

d'astuces, non dtailles ici, et sans utiliser la modlisation par les ots, on arrive la complexit
donne dans le thorme ci-dessus.

Le thorme max otmin coupe permet galement de montrer le thorme suivant, d

couverture par les sommets dans


C V tel que toute arte e de G soit

Knig (la preuve est laisse en exercice). On rappelle qu'une


un graphe

G = (V, E)

est un sous-ensemble de sommets

incident au moins un sommet de

et qu'on note

(G) la cardinalit minimale d'une couverture

par les sommets.

Thorme 6.2.3. 

Dans un graphe biparti, on a


(G) = (G).

Rappelons que l'ingalit

(G) (G)

est facile montrer, voir Proposition 2.1.1. L'algo-

rithme de Ford-Fulkerson permet par la mme construction que celle utilise dans la preuve de
calculer une telle couverture optimale. Cela dit, il existe des algorithmes plus rapides.

6.3. Couplages gnraliss


G = (V, E) un graphe biparti. Soient a, b : V N, avec a(v) b(v) pour tout v . On
couplage gnralis un ensemble d'artes F E tel que a(v) degF (v) b(v) pour
v V , o degF (v) = |(v) F | (on compte les artes de F incidentes v ). On peut alors

Soit

appelle
tout

considrer le problme suivant.

Problme du couplage gnralis de poids maximum


Donne : Un graphe G = (V, E) biparti, deux fonctions a, b : V
Tche : Trouver un couplage gnralis de poids maximal.

N,

des poids

w : E R.

Il se rsout en temps polynomial par un algorithme de ot de cot minimum, avec une
construction similaire celle de la section prcdente. Noter que si on ne veut que maximiser la cardinalit, on peut utiliser un algorithme de ot maximum (plus rapide), toujours avec
la mme construction.

Exemple. 

On se place dans un centre de tri de palettes (plateforme logistique, aroport,

etc.). En dbut de journe, on a

n palettes 1, . . . , n trier. La palette i contient ai

marchandises

mi,1 , . . . , mi,ai . Chaque marchandise est caractrise par une heure limite de tri tij ,
{1, . . . , ai }. Si la palette o se trouve la marchandise mij est trie avant l'heure tij , on
sinon, on perd di . On suppose que
on dispose de k personnes pour trier,
chaque personne met une heure pour trier une palette,
73

avec

j
ci ,

gagne

on dispose de

crneaux d'une heure, sans contrainte sur le nombre de personnes pouvant

travailler sur un crneau.

Trouver la stratgie qui minimise l'amende totale.


C'est un problme de couplage gnralis. En eet, on considre le graphe biparti suivant.

1, 2, . . ., de l'autre les horaires 1, 2, . . . , T . L'arte it modlise le fait


qu'on trie la palette i {1, . . . , n} sur le crneau t {1, . . . , T }. Si t tij , on met un poids
ci sur l'arte it ; sinon, on met di . On dnit a(i) = b(i) = 1 pour les palettes i = 1, . . . , n,
signiant qu'il faut trier chaque palette exactement une fois. On dnit galement a(t) = 0 et
b(t) = k pour le crneau t, signiant qu'on ne peut pas trier plus de k palettes sur un crneau
D'un ct, on a les palettes

horaire.

6.4. Problme de l'aectation optimale


Une situation classique o apparat un graphe biparti est le problme de l'aectation. On dit
qu'un couplage

est

parfait

lorsque tout sommet de

est incident une arte de

M.

Problme de l'aectation
Donne : Un graphe G = (V, E) biparti avec des poids w : E R sur les artes.
Tche : Trouver un couplage parfait de poids minimal.
Ce problme apparat dans quantit de situations. Comme prcdemment, les sommets du
graphe biparti peuvent tre des employs d'une part et des tches eectuer de l'autre (on
suppose qu'il y a autant d'employs que de tches). Les poids peuvent modliser le cot de
ralisation de la tche par un employ donn. On veut raliser toutes les tches avec un cot
minimal, en supposant que tout employ peut raliser n'importe quelle tche.

Thorme 6.4.1. 

On sait rsoudre le problme de l'aectation en O(n(m + n log n)).

Il y a de nombreux algorithmes qui rsolvent ce problme avec cette complexit. On peut


galement appliquer l'algorithme hongrois auquel il a t fait mention ci-dessus. En eet, l'algorithme hongrois fait en fait mieux que trouver un couplage de poids maximum : il trouve, pour
un

x, le couplage de cardinalit

de plus grand poids. Il sut alors de multiplier par

les poids et de chercher le couplage de cardinalit

n/2.

6.5. Mariages stables


Nous avons vu ci-dessus des problmes d'aectation ou de couplage o l'on maximise une
quantit globale. Dans de nombreuses situations, par exemple la cration de binmes, on veut
maximiser dans un certain sens une quantit locale (la satisfaction de chaque binme). On sent
bien qu'en gnral, on ne peut jamais satisfaire de manire optimale tout le monde, mais on a
des notions qui s'en approchent, issues de l'conomie ou de la thorie des jeux.
Nous prsentons le plus clbre des rsultats de cette famille. Bien des gnralisations sont
possibles, l'origine d'une littrature spcialise abondante, mais elles ne seront pas voques
ici.
Imaginons la situation suivante. On a

lles et

garons et l'on veut former des mariages.

Chaque lle accepterait ventuellement de se marier avec certains garons, et elle a un ordre total
de prfrence sur ces garons. De mme, chaque garon accepterait ventuellement de se marier
avec certaines lles et a un ordre de prfrence total sur ces lles. On modlise cela de la manire

74

suivante. Les lles et les garons forment les sommets d'un graphe biparti

G = (V, E). Il y a une

arte entre un sommet lle et un sommet garon si l'un et l'autre accepteraient ventuellement
de se marier ensemble. L'existence de l'ordre de prfrence pour chaque lle et chaque garon

v V.
G. Un couplage M est dit
stable si la condition suivante est satisfaite pour toute arte uv de G : si uv n'est pas dans M ,
alors il existe e (u) M avec uv u e ou il existe e (v) M avec uv v e. En d'autres
termes, si une lle u et un garon v ne sont pas maris ensemble alors que l'un et l'autre seraient
se traduit par l'existence d'un ordre total

sur

(v)

pour tout

Un ensemble de mariages est reprsent par un couplage dans

prts ventuellement l'tre, c'est que l'un des deux est mari avec quelqu'un qu'il prfre.
C'est une notion tout fait naturelle de stabilit : un tel coulage stable ne conduira pas des

rarrangements locaux. Ce sont Gale et Shapley [ ] qui ont imagin ce concept en 1962 et ont
prouv le thorme suivant. Shapley a d'ailleurs obtenu le  prix Nobel  d'conomie en 2012 pour
ses travaux sur ce sujet. De nombreux domaines en ont en eet bnci : ces mariages stables
ont t appliqus aux aectations d'internes dans des services hospitaliers, aux attributions de
bourses, aux acceptations d'lves dans les coles prparatoires, etc.

Il existe toujours un couplage stable dans un graphe biparti. De plus, un


tel couplage se trouve en O(nm).
Thorme 6.5.1. 

Ce qui est remarquable, c'est que la preuve est simple, algorithmique et peut se raconter sous
la forme d'une histoire.

Dmonstration.

 Tous les matins, chaque garon invite dner la lle qu'il prfre parmi

celles qui ne lui ont pas dj refus une invitation. Chaque lle qui a t invite dne le soir
avec le garon qu'elle prfre parmi ceux qui l'ont invite ce jour l, condition bien sr qu'elle
accepterait ventuellement de se marier avec lui. Tout garon qui a vu son invitation refuse par
une lle dcide de ne plus jamais l'inviter.
L'algorithme se poursuit tant qu'au moins une invitation change. Les couples qui ont dn
entre eux le dernier soir sont maris.

Pour se convaincre que cet algorithme fournit un couplage stable, il faut d'abord remarquer
que

toute lle qui est invite un soir dner est sre de dner le lendemain avec un garon qui lui
plaise au moins autant.
En eet, si une lle, disons Alice, est invite dner par un garon, disons Bob, c'est que Bob
prfre Alice toutes celles qui ne l'ont pas dja refus. Alice est donc sre d'tre rinvite le
lendemain par Bob, mais elle sera peut-tre aussi invite par de nouveaux garons qui viennent
d'essuyer des refus et pour qui elle est dsormais le meilleur choix restant. Peut-tre que Charlie,
l'un de ces nouveaux garons, lui plait plus que Bob, dans ce cas elle dnera avec Charlie, en
congdiant Bob. Dans tous les cas, Alice dne le lendemain avec un garon au moins aussi
plaisant.
Ensuite, on remarque que

l'algorithme se termine.
En eet, une invitation qui a t refuse ne sera jamais rpte. chaque tape prcdant la
n de l'algorithme, au moins une invitation est refuse. Le nombre d'tapes avant que la liste

75

N
O

E
S

Figure 2.

Des postes d'observation possibles.

des invitations ne se stabilise est donc born par le nombre d'invitations possibles, i.e. par le
nombre de lles fois le nombre de garons.
Enn, lorsque l'algorithme se termine,

les mariages fournissent un couplage stable.


En eet, considrons le mariage obtenu l'issue de l'algorithme.
Supposons qu'Alice et Bob ne sont pas maris ensemble et qu'Alice prfre Bob son mari
actuel. Cela implique que Bob ne l'a jamais invite car sinon, en vertu de la remarque ci-dessus,
son mari serait forcment mieux que Bob. Si Bob ne l'a jamais invite, c'est qu'il est mari
une lle qu'il prfre Alice.
Supposons qu'Alice et Bob ne sont pas maris ensemble et que Bob prfre Alice sa femme
actuelle. Comme Bob fait ses invitations dans l'ordre dcroissant de ses prfrences, c'est qu'Alice
a refus une invitation de sa part, et donc qu'Alice, ce matin-l et les suivants, a reu des
invitations plus intressantes de son point de vue.
Dans tous les cas, si Alice et Bob ne sont pas maris ensemble, c'est que l'un des deux est
maris quelqu'un qu'il prfre. L'ensemble des mariages est donc stable.

6.6. Exercices
6.6.1. Une caractrisation des graphes bipartis. 
6.6.2. Thorme de Knig. 

Prouver la Proposition 6.1.1.

Prouver le Thorme 6.2.3.

6.6.3. Positionnement de postes d'observation. 

Considrer le domaine de la Figure

2. Chaque point indique une position possible pour un poste d'observation. On veut que chaque
poste d'observation ait la vue compltement dgage dans les 4 directions cardinales (nord, sud,
est, ouest)  deux postes d'observation ouverts ne peuvent donc ni se trouver sur la mme ligne,
ni se trouver sur la mme colonne. On veut en ouvrir un nombre maximum. Proposer un nombre
maximum dans le cas particulier de la Figure 2. Prouver la qualit de votre solution. Proposer
la mthode gnrale (est-ce polynomial ?).

76

CHAPITRE 7

QUE FAIRE FACE UN PROBLME DIFFICILE ?

7.1. Introduction
Jusqu' prsent nous avons vu un certain nombre de problmes, certains

NP-durs, d'autres

polynomiaux. Pour les problmes polynomiaux, nous avons discut les algorithmes possibles
pour les rsoudre ; pour les autres, rien n'a t indiqu, ce qui pourrait laisser penser qu'on ne
sait pas les rsoudre. Bien entendu, c'est faux, et heureusement, car de nombreux (la plupart ?)
problmes industriels sont

NP-durs.

L'objet de ce chapitre est de prsenter quelques mthodes gnrales, indpendantes du problme, que l'on peut employer lorsqu'on est confront un problme d'optimisation

NP-dur,

que l'on crit sous la forme

Min

(23)

s.c.

f (x)
x X,

est suppos ni mais trs grand.

Un problme

NP-dur

est tel qu'il n'est pas possible (sauf si nalement il s'avrait que

P = NP) de trouver en temps polynomial, i.e. raisonnable, la solution exacte pour toute instance. On peut donc soit relcher la condition  solution exacte  et vouloir garder un temps
raisonnable d'excution, soit relcher la condition sur le temps et garder le dsir d'avoir une
solution exacte.
La premire option conduit aux

algorithmes approchs, qui calculent en temps raisonnable des

solutions qui sont proches de l'optimum. Ces algorithmes approchs sont des heuristiques ou des
mtaheuristiques. Une heuristique n'a de sens que pour un problme donn, c'est un algorithme

ad hoc pour lequel le bon sens assure son fonctionnement en gnral. Il n'est pas toujours possible
de garantir la qualit de la solution fournie par une heuristique et l'on est parfois oblig de les
valider par des batteries de tests prouvant leurs ecacits de manire exprimentales. Nous
verrons quelques exemples dans les chapitres suivants, mais il n'existe pas de schma gnral
qui permettent de driver de tels algorithmes. Une mtaheuristique est une mthodologie trs
gnrale pour concevoir un algorithme d'optimisation. Sa vocation est de pouvoir s'adapter un
grand nombre de problmes d'optimisation, plus ou moins indpendamment de leur structure. Ce
sera l'objet de la Section 7.3. Il est en gnral trs dicile de garantir

a priori leurs performances

et l'on ne peut alors chapper des validations exprimentales.


La seconde option conduit aux algorithmes exacts, comme ceux de sparation et valuation, ou
branch-and-bound, dont nous allons prsenter le principe dans la Section 7.2. Plusieurs exemples

seront donns aux cours des sances suivantes. Un branch-and-bound suppose l'existence de
bonnes bornes sur la solution (borne infrieure si on minimise, borne suprieure si on maximise).

Dans un contexte industriel, un algorithme exact, dont le temps d'excution peut tre long,
sera plutt utilis pour des questions stratgiques. Une heuristique ou une mtaheuristique peut
avoir des temps d'excution trs courts et sera donc plutt utilise pour des questions tactiques
ou oprationnelles.

7.2. Sparation et valuation ou branch-and-bound


7.2.1. Description.  On suppose que l'on dispose d'une fonction : P(X) R qui a toute

Y de X , associe (Y ) Min xY f (x). La quantit (Y ) est donc une borne infrieure de


Y . On supposera de plus que se calcule facilement (par exemple, en temps polynomial).

partie

sur

Conceptuellement, l'algorithme maintient

 une collection

de parties de

 la meilleure solution courante

X
x
.

telle que

contient un minimum de

f (x)

sur

Une itration est alors

Choisir une partie

Si

de

Y.

est rduit un singleton

poser

x
:= y .

{y} : supprimer Y

de

Y ; si f (y) < f (
x),

Y en parties Y1 , Y2 , . . . , Ys ; supprimer Y
i = 1, . . . , s, si (Yi ) < f (
x), poser Y := Y {Yi }.

Sinon : partitionner
faire : pour

de

Y;

L'ide principale du branch-and-bound rside dans cette dernire tape : il ne sert rien de

Yi

conserver la partie
sur

Yi

si

(Yi ) f (
x).

En eet, comme

(Yi )

Min xYi f (x), on n'est sr que

on ne parviendra pas amliorer strictement la valeur de la fonction objectif. Il ne sert

donc rien d'explorer cette partie.


On reprsente souvent l'exploration de l'espace des solutions par une arborescence, dont les
nuds sont les

Y,

et les artes codent la partition (voir exemple ci-dessous).

On comprend qu'un algorithme de branch-and-bound marchera d'autant mieux que la borne

sera bonne. La

branchement,

i.e. l'opration de partition de

est galement importante.

Souvent, la structure du problme impose assez naturellement les faons de brancher. Enn, le
choix de la partie

dans

peut galement inuencer la qualit de l'algorithme. Deux solutions

classiques sont les suivantes :




En profondeur d'abord

: brancher toujours sur la dernire partie

Yi

ajoute

Y.

On va

descendre trs vite dans l'arborescence. Cela peut tre utile par exemple si on n'a pas de
bonne solution ralisable.


En largeur d'abord : brancher toujours sur la partie Y telle que Y = argminY Y (Y ). C'est
intressant si est une bonne valuation par dfaut de f .

Nous allons maintenant voir deux exemples trs classiques de calcul de borne, et nous appliquerons ensuite l'algorithme sur un exemple trs simple, en guise d'illustration.

7.2.2. Quelques exemples de calcul de bornes. 

Un grand champ d'application du

branch-and-bound est la programmation linaire en nombres entiers. Comme il va tre vu cidessous, la programmation linaire en nombres entiers est

78

NP-dicile.

Remarque importante. 

Il a dj t not que si un problme s'crit sous la forme d'un

programme linaire avec des variables continues, il est inutile de procder l'implmentation
d'un algorithme pour rsoudre ce problme : il existe dj de nombreux solveurs  libres ou
commerciaux  utilisant l'algorithme de simplexe ou l'algorithme des points intrieurs. La mme
remarque vaut galement en grande partie pour les programmes linaires en nombres entiers : la
plupart des solveurs comportent des branch-and-bound intgrs et trs performants, voir l'annexe
du polycopi. La partie informatique de la rsolution du problme consiste alors principalement
crire le problme dans un

langage de modlisation

simple d'utilisation (comme OPL, AMPL,

GPL,...) que peut comprendre le solveur et  appuyer sur le bouton  pour obtenir la solution.
Implmenter son propre branch-and-bound pour un problme linaire en nombres entiers peut
cependant tre justi dans certains cas : par exemple, si le problme a une structure particulire
qui n'est pas exploite par ces solveurs, ou si le nombre de contraintes est exponentiel comme
pour le problme du voyageur de commerce, voir Chapitre 11.

7.2.2.1. Programmation linaire en nombres entiers.

 Contrairement la programmation li-

naire o les variables prennent leurs valeurs dans

R, la programmation linaire en nombres


entiers, o les variables prennent leurs valeurs dans Z, n'est pas polynomiale. De faon gnrale,
la programmation linaire en nombre entiers se modlise, avec A une matrice mn coecients
m et c Qn
rationnels, et b Q
Min
(24)

s.c.

cT x
Ax b
x Zn .

Mme le cas suivant, o il n'y a qu'une seule contrainte, est


Max
s.c.

avec les

wi

et

Pn
ci xi
Pi=1
n
i=1 wi xi W
xi {0, 1}

pour

NP-dur.

i = 1, . . . , n,

entiers. Il s'agit en eet du problme du sac--dos, vu au Chapitre 3.

Noter que les algorithmes du simplexe, des points intrieurs ou des ellipsodes ne peuvent
absolument pas rsoudre les programmes linaires en nombres entiers, ils sont conus uniquement
pour les variables continues.

7.2.2.2. Relaxation continue.

vplne de (24) s'obtient


que x soit coordonnes

 Une borne infrieure la valeur optimale

en relchant la contrainte d'intgrit, i.e. en ne demandant plus ce


entires. En eet, considrons
Min
(25)

et notons

s.c.

vpl

sa valeur optimale. Toute solution ralisable du programme (24) tant solution

ralisable de (25), on a

Exemple. 

vplne vpl .

On considre le programme
Max

(26)

cx
Ax b
x Rn ,

s.c.

x1 + 52
4x1 + 2x2 3
2x1 + 8x2 39
x1 , x2 Z.
79

L'arborescence est donne Figure 1. Remarquer que par deux fois, on vite l'exploration d'une
sous-arborescence en utilisant la borne : une fois sur le noeud

x1 4, x2 3.

7.2.2.3. Relaxation lagrangienne.

 Considrons le problme

f (x)
xX
gi (x) = 0 i = 1, . . . , p
gi (x) 0 i = p + 1, . . . , p + q

Min
s.c.

(27)

f, g1 , . . . , gp+q

sont des fonctions de

suppose que si les fonctions

gi

Rn

dans

R,

gi

avec

:=
v

Si on note
(28)

(R+ )

un sous-ensemble non vide de

en crivant le lagrangien (voir Section 2.3.5)

L(x, ) := f (x) +
q

et

Rn .

On

n'taient pas prsentes, le problme serait facile rsoudre. L'ide

consiste dualiser les contraintes

Rp

x1 1, et l'autre fois sur le noeud

p+q
X

i gi (x),

i=1

la valeur optimale de (27), on a toujours

v = inf sup L(x, ) sup inf L(x, ) = sup G(),


xX

xX

x1 = 1, 5
x2 = 4, 5
v = 24
x1 2

x1 1
x1 = 1
x2 = 3, 5

x1 = 2
x2 = 4, 375

v = 18, 5
x2 4
on abandonne lexploration car v est moins bon
que le meilleur resultat entier courant.

v = 23, 875
x2 5

x1 = 3, 5
x2 = 4

irrealisable

v = 23, 5
x1 3

x1 4

x1 = 3

x1 = 4

x2 = 4

x2 = 3, 875

v = 23

v = 23, 375
x2 3

x2 4

x1 = 7, 5
x2 = 3
v = 22, 5

on abandonne lexploration car v est moins bon


que le meilleur resultat entier courant.

Figure 1.

Un arbre de branch-and-bound.
80

irrealisable

G:

R {}
G() 7 inf xX L(x, ),

est la fonction duale. Elle est concave et ane par morceaux (car inmum de fonctions afnes). L'ide de la

relaxation lagrangienne

est d'utiliser

sup G()

comme borne infrieure.

La question est donc de savoir calculer cette quantit. Pour cela on peut utiliser des techniques
de l'optimisation non-direntiable, une mthode de sur-gradient par exemple
principalement de savoir calculer un sur-gradient en tout point

(1) , qui ncessite

Cette mthode est dcrite

la n de cette section.
Rappelons qu'un

En particulier, si

sur-gradient p

de

au point

est tel que

G() G() pT ( )

pour tout

est drivable, le sur-gradient concide avec son gradient.

Heureusement, cela se fait facilement, grce la proposition suivante.

Si X est ni, alors (gi (x))i=1,...,p+q est un sur-gradient de G au point


ds que x ralise inf xX L(x, ).

Proposition 7.2.1. 

Dmonstration.  Soit
Pp+q
i=1 gi (x)(i i ).

un tel

x.

Pour tout

on a

G() G() L(x, ) L(x, ) =

Un des intrts de la relaxation lagrangienne est contenu dans le thorme suivant (preuve
omise).

Pour un programme linaire en nombres entiers, la borne obtenue par relaxation lagrangienne est toujours au moins aussi bonne que celle obtenue par relaxation linaire.

Thorme 7.2.2. 

Cela dit, il existe beaucoup de cas o ces deux bornes concident. Cela n'empche pas la
relaxation lagrangienne d'tre intressante (comme dans l'exemple ci-dessous), car le calcul de

sup G()

peut-tre plus rapide que la rsolution du programme linaire.

Exemple. 

Un exemple trs classique est celui du plus court chemin avec contrainte de

temps.

D = (V, A) un graphe orient, avec deux sommets s et t. A chaque arc a est associ un cot
et un temps ta 0. On veut trouver le st chemin le moins coteux qui mette un temps
infrieur T . Ce problme se rsout bien avec un branch-and-bound, utilisant des bornes fournies
P
par la relaxation lagrangienne. X est alors l'ensemble des st chemins, f (x) =
aA ca xa et
P
l'on a une seule contrainte du type gi , c'est g(x) :=
aA ta xa T .
Ecrivons G(), dni pour 0.
!
X
X
L(x, ) =
ca xa + T +
ta xa .
Soit

ca 0

aA

aA

Donc

G() = T + min
xX

Le calcul de
non plus les

ca

G()

(ca + ta )xa .

aA

se fait donc par un calcul de plus court chemin o les cots des arcs sont

mais les

1. ou alors par

ca + ta . Ce calcul peut se faire par l'algorithme de Dijkstra car les poids

la mthode des faisceaux, plus ecace mais qui dpasse le cadre de ce cours, voir [5].
81

P
g donne la valeur T + aA ta xa , cette
dernire quantit tant alors le sur-gradient de G en (d'aprs la Proposition 7.2.1). On sait
donc calculer les sur-gradients de G , donc on sait maximiser G sur = R+ , donc on sait calculer
sont positifs ou nuls, et la solution

x,

injecte dans

de bonnes bornes infrieures pour notre problme, et on peut donc faire un branch-and-bound.

Mthode de sur-gradient.  Posons = {(1 , . . . , p , p+1 , . . . , p+q ) Rp+q : i 0 pour i


+
p + 1}. Soit P la projection dans dnie par P () = (1 , . . . , p , +
p+1 , . . . , p+q ), avec la
+ = max(0, t). Supposons que l'on veuille maximiser G() sur , avec G concave.
notation t
L'algorithme de sur-gradient consiste construire la suite



k
k+1 = P k +
pk ,
||pk ||

est choisi arbitrairement dans

pk

est un sur-gradient de

est une suite prdtermine de rels strictement positifs telle que

lim k = 0

k+
Lorsque

pk

vaut

0,

l'algorithme s'arrte,

et

+
X

au point

k ,

et o

(k )

k = +.

k=0

G.
G , mais

est alors le maximum de

On peut montrer que l'algorithme converge vers le maximum de


lente (le pas de convergence devant ncessairement tendre vers

0).

la convergence est

7.3. Mtaheuristiques
Nous allons dcrire quelques mtaheuristiques, qui sont des mthodes gnrales d'exploration
de l'espace des solutions ralisables, qui peuvent tre dcrites indpendamment du problme.
Les mtaheuristiques peuvent parfois donner de trs bons rsultats ou constituer la seule arme
pour attaquer un problme ; il est donc ncessaire de les connatre lorsqu'on fait de la recherche
oprationnelle. De plus, il est facile de contrler leur temps d'excution. Cela dit, leur implmentation dpend d'un certain nombre de paramtres dont les valeurs ncessitent beaucoup
d'exprimentations. De plus, ces algorithmes n'ont gnralement pas de garantie sur la qualit
de la solution trouve.

7.3.1. Recherche locale. 


7.3.1.1. Le principe.  On cherche toujours rsoudre (23).
L'ide de la recherche locale est la suivante. On suppose connue

une bonne solution ralisable

de dpart, trouve par une heuristique quelconque. Ensuite, on essaie d'amliorer la solution
courante en procdant des modications locales.
Plus prcisment,
1. il faut dnir sur

un graphe implicite (ce graphe ne sera jamais explicitement cod en

machine), une solutions ralisable tant connecte une autre solution ralisable si on passe

x,
(x) l'ensemble de ses voisins dans le graphe implicite, i.e. l'ensemble des solutions
ralisables que l'on peut atteindre de x par une modication locale. Une condition ncessaire

de la premire la seconde par une modication autorise. Pour une solution ralisable
on note

pour pouvoir trouver l'optimum global est que la solution ralisable de dpart est dans la
mme composante connexe du graphe implicite que l'optimum cherch.
2. il faut aussi dnir quelle condition on modie la solution courante. La solution consistant
modier la solution courante si la modication a amlior la valeur de

est nave : en

eet, un tel algorithme va plonger vers un optimum local, qu'il ne va plus quitter.

82

x.

Ensuite

y (x)

tel que

L'implmentation de la version nave est donc : On part d'une solution ralisable


on rpte

{y (x) : f (y) < f (x)}


f (y) < f (x) et poser x := y .

Si

Puisqu'on a suppos
de

est non vide, choisir

ni, l'algorithme se termine sur un

f.

x X,

qui sera un minimum local

Pour viter de se retrouver bloqu sur n'importe quel minimum local, deux stratgies classiques
sont employes, la

mthode tabou

et le

recuit simul,

7.3.1.2. Un exemple : la coloration de graphe.

dtailles plus bas.

 Considrons le problme de la coloration de

graphe (voir Section 2.1.1.3). On veut colorer les sommets d'un graphe

G = (V, E)

de manire

ce que deux sommets voisins ont des couleurs distinctes, et en utilisant un nombre minimum
de couleurs. C'est un problme

NP-dicile.

Une recherche locale pour ce problme consiste dnir l'ensemble

des solutions ralisables

comme l'ensemble des colorations propres et considrer deux colorations propres comme voisines si elles dirent uniquement par la couleur d'un sommet. La fonction objectif est le nombre
de couleurs utilises. Cette approche a un inconvnient : la plupart des modications n'implique
pas un changement de la valeur de la fonction objectif. Avec la dnition stricte de l'algorithme
naf ci-dessus, on se retrouve trs vite bloqu sur des minima locaux. Mme en acceptant des
modications valeur constante de la fonction objectif, ou des modications dtriorant cette
valeur (comme dans les mtaheuristiques dcrites ci-dessous), cela reste problmatique car la
fonction objectif donne peut d'information sur la direction prendre.
Une faon plus ecace de rsoudre le problme de la coloration [

16]

est de xer un entier

P
k et de rsoudre le problme consistant minimiser ki=1 |E[Vi ]| sur l'ensemble des partitions
V1 . . .Vk de V . Rappelons que E[Vi ] est l'ensemble des artes de G ayant leurs deux extrmits
dans Vi . Si l'on parvient atteindre 0, on aura trouv une coloration en au plus k couleurs : chaque
partie Vi peut tre vue comme l'ensemble des sommets de couleur i ; comme alors E[Vi ] = ,

on est sr de ne pas avoir deux sommets de mme couleur adjacents. La recherche locale rsout
extrmement bien cette tche : l'ensemble
partitions

V1 . . . Vk

de

V.

des solutions ralisables est alors l'ensemble des

La fonction objectif est

Pk

i=1 |E[Vi ]|. On accepte de passer de

passer d'une solution une autre si le changement consiste modier la couleur (l'appartenance
l'un des

Vi )

d'un sommet appartenant une arte dont les deux extrmits sont de couleur

identique. Une dichotomie sur

7.3.1.3. Mthode tabou.

permet de trouver

in ne

le nombre chromatique de

La mthode tabou consiste maintenir une liste

G.

de solutions

ralisables  tabous , dont la taille, constante, est un paramtre de l'algorithme. Si

est cette

(2) , on commence par une solution ralisable x tabou. On choisit une liste L qui contient l

autres solutions ralisables et on pose x := x (x est la meilleure solution courante). Ensuite,

taille

on rpte
 choisir

minimisant

f (y)

sur

 enlever le premier lment de

x := y ,
f (x) < f (x ),

(x) \ L
L, et ajouter x

 poser
 si

poser

2. par exemple l = 7.

83

x := x.

la n de

L,

Puisqu'on a suppos

f.

ni, l'algorithme se termine avec

x X ,

qui sera un minimum local de

Rien n'assure qu'on se retrouve sur un optimum global.

7.3.1.4. Recuit simul.

 Le recuit simul imite la pratique du recuit en mtallurgie qui consiste

alterner de lents refroidissements et de rchauages (recuits) pour minimiser l'nergie d'un


matriau. L'algorithme maintient une temprature

qui va tendre vers

0, et les transitions d'une

solution ralisable une solution ralisable voisine auront lieu avec une probabilit dpendant
de la dirence de la valeur prise par

voisin de

x,

et de la temprature. Plus prcisment, si on a choisi

la probabilit de passer eecivement de

(3)
physique

min(1, e
Une fois xe au pralable la suite

Tk

f (y)f (x)
T

bilit

des tempratures (telle que

min(1, e

x.

uniformment dans

f (y)f (x)
Tk

).

Poser

sera, par analogie avec la

).

peut crire l'algorithme. On part d'une solution ralisable


Tirer un voisin

y (x)

Tk 0

quand

Ensuite, on rpte

(x).

Faire

x := y

k ),

on

avec la proba-

k := k + 1.

Plusieurs auteurs ont donn des conditions susantes pour que

tende en probabilit vers

15] a donn une condition ncessaire et susante assez

l'optimum global. Par exemple, Hajek [

lgre pour cette convergence en probabilit avec

Tk

de la forme

log 2+k .Cette condition met en

jeu les notions d'irrductibilit et de faible rversibilit des chanes de Markov.


En pratique, on aime bien avoir

Tk

de la forme

Tk := T0 k
(4) ou de la forme

Tk :=
avec

et

1
+ sk

des paramtres bien choisis. La plupart du temps, ces derniers sont dtermins

exprimentalement.

7.3.2. Algorithmes volutionnaires, colonie de fourmi, etc.


exemples de mtaheuristiques. L'ide des

algorithmes volutionnaires

Il y a bien d'autres

est d'identier les solu-

tions ralisables des individus et de coder ces solutions ralisables sur les chromosomes des
individus. On autorise les individus se croiser avec une probabilit d'autant plus grande que
les individus sont de qualit. De plus ces individus peuvent muter. On part alors d'une population de taille xe d'individus, et on laisse voluer le tout. Ce qui est crucial ici, c'est le codage
d'une solution ralisable sur les chromosomes et la nature du croisement, qui doit maintenir les
avantages comptitifs de ses parents.
L'algorithme

de colonie de fourmis, tout comme le recuit simul ou les algorithmes volution-

naires, cherche imiter la nature dans la faon dont elle rsout ses problmes d'optimisation.
Les fourmis pour trouver leur nourriture explorent au hasard l'espace des solutions, en ayant une
toute petite vue locale, mais grce des changes d'information (phromones), elles parviennent
trouver la source de nourriture et trouver le trajet le plus court. Une fourmi qui a trouv
de la nourriture revient la fourmilire en dposant au sol des phromones, qui s'vaporent
au bout d'un certain temps. D'autre part, une fourmi qui part la recherche de nourriture va

3. Pour un systme ferm, la temprature T , la probabilit d'tre dans un tat d'nergie E est de la forme

e kB T
Z

o Z est la fonction de partition, kB la constante de Boltzmann.


4. avec par exemple = 0, 93.

84

suivre prfrentiellement ces phromones au sol. Etant donns deux chemins conduisant de la
fourmilire la nourriture, le plus court sera donc plus attractif que le long car les fourmis
qui l'empruntent dposent des phromones plus frquemment. L'algorithme va donc simuler
l'exploration de l'espace des solutions par des fourmis, qui marqueront leur passage.

7.4. Exercices
7.4.1. Borne infrieure par la relaxation lagrangienne. 

Prouver l'ingalit (28).

7.4.2. Gestion dynamique de stock, cas plusieurs biens. 

Cet exercice fait suite

l'exercice 5.3.11.
Supposons maintenant qu'il n'y ait pas un seul bien, mais
Pour chaque bien
produisant

yk(t1)

xkt

k,

biens, indics par

dkt sur chaque priode t. On satisfait la demande en


k sur la priode t et/ou en prlevant une certaine quantit sur le srock
t 1. On suppose que la production en priode t pour le bien k ne peut
on a une demande

Pkt .

De plus, on ne possde qu'une machine, et donc sur une priode on ne peut

produire qu'un seul type de bien. Le cot de production unitaire du bien

pkt ,

k = 1, 2, . . . , K .

de bien

de la priode

pas excder

en priode

est not

skt .

et celui de stockage unitaire

1. Ecrire la dynamique du stock dans ce cas-l.

zkt qui indique si le bien k est produit sur la priode t, proposer


une contrainte linaire (indice par t) qui empche la production de plusieurs biens sur la priode
t.
2. En introduisant une variable

3. Ecrire une contrainte (indice par

et

t)

en tenant compte du fait que si un autre bien


doit tre nulle.

qui limite la production du bien

k 0 6= k

en priode

est produit, alors la production du bien

t,
k

4. Montrer que ce problme peut se modliser comme un programme linaire mixte en nombres
entiers (mixte signie que toutes les variables ne sont pas contraintes tre entires).
Dans une approche par branch-and-bound, on va chercher des bornes infrieures. Une solution
est de procder par relaxation lagrangienne.
5. Montrer qu'en relaxant les bonnes contraintes, le calcul des bornes infrieures par la relaxation lagrangienne se ramne des calculs de gestion de stock un seul bien, et expliquer

Pkt

comment calculer ces bornes dans le cas o les


6. Si les

Pkt

sont susament grands.

ne sont pas susament grands, le problme un seul bien est

NP-dur. Proposer

une solution pour le calcul de la borne infrieure par la programmation dynamique qui garde
une complexit raisonnable.

7.4.3. Extraction de mine ciel ouvert  cas dynamique. 

On se remet dans le

contexte de l'Exercice 5.3.12. On essaie cette fois de prendre en compte l'aspect dynamique. On
cherche dterminer la squence d'extraction des
est assimile une collection de

blocs
1

blocs numrots de

dans les mines ciel ouvert. La mine

n,

le bloc

ayant une masse

mi .

On

se place dans un contexte horizon de temps ni. Le temps est discrtis est assimil des
annes

ci,

= 1, . . . , T . Un bloc i extrait l'anne

entrane un prot de

peut ventuellement tre ngative si l'extraction du bloc

ci,

dollars. Cette quantit

cote plus qu'il ne rapporte. La

dpendance en temps permet de tenir compte du taux d'actualisation, des tendances des cours
boursiers, etc.

85

A l'anne

Les blocs ne peuvent pas tre extraits dans n'importe quel ordre : pour chaque
connat l'ensemble

M .
bloc i, on

donne, on peut extraire plusieurs blocs, mais pas plus d'une masse totale

Yi

des blocs qu'il faut avoir extraits pour pouvoir extraire le bloc i. Si le bloc

est extrait au cours de l'anne

tout bloc de

Yi

doit tre extrait au cours de l'anne

ou

avant. L'objectif est de proposer un sous-ensemble de blocs extraire et les annes auxquelles

plan d'extraction).
On suppose maintenant que les ci, dpendent bien du temps. On parle alors du cas dynamique.
Etant donn un plan d'extraction, on note xi, = 0 si le bloc i est extrait strictement aprs l'anne
et xi, = 1 sinon. On tient nouveau compte de la contrainte de masse.
extraire ces blocs de manire maximiser le prot total (on appelle cela un

1. Proposez un programme linaire en nombres entiers qui modlise le cas dynamique, en


utilisant les variables

xi, .

On posera de plus

xi,0 = 0

pour tout

i.

Justiez votre rponse.

En pratique, ces programmes linaires peuvent avoir un grand nombre de variables (le produit

NT

peut tre grand). On va chercher dans la suite des mthodes pour amliorer les temps de

calculs lorsqu'on donne un tel programme linaire un solveur.


2. Soit

et

tels que

mi +

kYi

mk >

0 =1 M 0 . On dit alors que

(i , ) est une bonne

paire. Expliquez pourquoi toute solution ralisable du programme linaire en nombres entiers de

1. satisfait xi , = 0 lorsque (i , ) est une bonne paire.
P

et une anne tels que


3. Considrons deux blocs i et j
kYi Yj {i }{j } mk >
P

0 =1 M 0 . On dit alors que (i , j , ) est un bon triplet. Expliquez pourquoi toute solution
ralisable du programme linaire en nombres entiers de 1. satisfait xi , + xj , 1 lorsque
(i , j , ) est un bon triplet (on dira que cette contrainte est induite par le bon triplet).
4. Supposons que le solveur fonctionne par un branch-and-bound qui utilise les bornes de
la relaxation continue (ou linaire). On xe

les variables indices par une bonne paire. On

ajoute au programme linaire en nombres entiers de 1. plusieurs contraintes induites par des
bons triplets. Expliquez pourquoi cela ne change pas la solution optimale du programme linaire
en nombres entiers, et en quoi cela va amliorer les temps de calculs (au moins pour les grandes
instances).

86

Deuxime PARTIE II

PROBLMATIQUES

CHAPITRE 8

REMPLISSAGE DE CONTENEURS

Le thme de ce chapitre est le suivant : on a des objets et des conteneurs, comment remplir
au mieux ? Ecrit comme cela, le problme est assez imprcis. Nous allons nous focaliser sur deux
problmes particuliers qui rentrent dans la catgorie des problmes de remplissage, le problme
du

sac--dos et celui du bin-packing. Le problme du sac--dos a dj t vu au Chapitre 3, mais

allons discuter d'autres aspects de ce problme.


Le problme du sac--dos dans sa version la plus simple peut se dcrire informellement de
la manire suivante : on a des objets de poids et de valeur variable ; on dispose d'un seul
conteneur (le sac--dos) qui est muni d'une contrainte de poids ; remplir le conteneur de manire
maximiser la valeur des objets stocks.
Le problme du bin-packing dans sa version la plus simple peut se dcrire informellement de
la manire suivante : on a des objets de taille varie et un seul type de conteneur ; trouver le
nombre minimum de conteneur permettant de tout stocker.
Ces problmes ont des applications directes dans le domaine de la logistique : stocker des
produits, remplir des camions, etc.

8.1. Sac--dos
8.1.1. Le problme. 

De faon formelle, le problme du sac--dos s'crit

Problme du sac--dos
Donne : des entiers n, w1 , . . . , wn et W , et des rels c1 , . . . , cn .
Tche : trouver un sous-ensemble S
mum.

{1, . . . , n}

Cela peut s'interprter de la manire suivante :


est le poids de l'objet i, et

ci

sa valeur. On a

tel que

jS

wj W

et

jS cj est maxi-

est la charge maximale du conteneur,

wi

n objets, mettre dans le conteneur un sous-ensemble

d'objets de valeur maximale, tout en respectant la contrainte de poids.


Les applications en logistique sont videntes. Mais il existe bien d'autres domaines o ce

problme se retrouve. Par exemple, en nance : on a un budget ni


nanciers

cotant chacun

wi

et rapportant

ci

W,

Comme d'habitude, commenons par cerner la complexit du problme.

Thorme 8.1.1. 

on a des produits

sur l'anne venir ; maximiser le prot.

Le problme du sac--dos est

NP-dicile.

Nous avons dj vu au Chapitre 3 qu'une faon commode de rsoudre ce problme, si les


sont entiers (ce quoi on peut toujours se ramener en changeant l'unit de mesure) et si

wi
W

n'est pas trop grand, passe par l'utilisation de la programmation dynamique, laquelle fournit un
algorithme pseudo-polynomial en

O(nW ).

Nous allons prsenter d'autres faons de rsoudre ce

problme.

8.1.2. Formulation sous forme d'un programme linaire et branch-and-bound. 


On peut modliser le problme du sac--dos sous forme d'un programme linaire en nombres
entiers.

Pn
cj xj
Pj=1
n
j=1 wj xj W
xj {0, 1}

Max
s.c.

j {1, . . . , n}.

Remarquons que dans un sens ce programme linaire en nombres entiers est le plus simple
possible : chaque variable ne peut prendre que deux valeurs, et il n'y a qu'une seule contrainte.
La relaxation continue fournit une borne suprieure naturelle la solution du programme
prcdent

Pn
cj xj
Pj=1
n
j=1 wj xj W
0 xj 1

Max
s.c.

j {1, . . . , n}.

Pour la calculer (pour faire du branch-and-bound par exemple  voir ci-dessous), on pourrait
bien sr faire appel l'algorithme du simplexe ou l'algorithme des points intrieurs. Mais il
existe un algorithme trs simple, glouton, qui calcule la solution optimale du relch continu.
On suppose que

Pn

j=1 wj

> W,

sinon, le problme du asc--dos est trivial. Ensuite on fait

Classer les objets de faon ce que

c1
c2
cn

...
.
w1
w2
wn
Poser

Pj

x1 = x2 = . . . = xj := 1

j=1 wj

Lemme 8.1.2. 

avec

le plus grand entier tel que

W.

P
W jj=1 wj
.
wj+1

Poser

xj+1 :=

Poser

xj+2 = = xn := 0.

Un tel x est solution optimale du relch continu.

Elments de preuve.  On prouve d'abord que si x est optimal avec xi < 1, xk > 0 et i < k ,
alors ci /wi = ck /wk . Par consquent, il existe une solution optimale avec un indice
j tel que
xi = 1 pour tout i < j (si j 2) et tel que xi = 0 pour tout i > j (si j n 1).
On sait donc calculer une borne d'assez bonne qualit (relch continu) en

O(n log(n)). Cette

borne permet de mettre en place un branch-and-bound. Pour le branchement, c'est la technique


usuelle pour les programmes linaires en

{0, 1}

: xer certaines variables

90

et d'autres

1.

8.1.3. Une heuristique naturelle. 

La discussion prcdente sur la relaxation linaire

j calcul par l'algorithme qui


{j + 1} est une solution ralisable.

permet de construire une heuristique trs simple. Reprenons le


rsout le relch continu. Chacun des ensembles
On prend celui de plus grande valeur.

{1, . . . , j}

Une solution construite ainsi a toujours une valeur


En eet,

Pj+1

j=1 cj est par dnition de

8.2. Bin-packing
8.2.1. Le problme. 

et

12 OP T ,

une borne suprieure de

OP T

est la valeur optimale.

OP T .

Le problme du bin-packing traite du cas o l'on a des objets de

tailles variables et un seul type de conteneurs, et o l'on se demande comment utiliser un nombre
minimum de conteneurs pour ranger tous les objets. Dans les formes les plus gnrales de ce
problme, on peut aussi prendre en compte la forme des objets (on parle alors de bin-packing
2D ou de bin-packing 3D), des incompatibilits, etc.
Ce problme peut tre parfois appel aussi

cutting-stock.

En eet, les problmes de dcoupes

(de pices de textile, mtal, etc.), o l'on cherche minimiser les pertes, se modlisent de faon
similaire.
Ici, on se limite au cas le plus simple, 1D. C'est un cas dj trs utile en pratique, puisqu'il
peut fournir des bornes, tre utilis en sous-routines, ou tre appliqu tel quel (nombre min de
CD-rom pour stocker le contenu d'un disque dur, dcouper des planches de longueurs variables
dans des grandes planches de longueur xe, dcoupe dans des bandes de tissu, etc.).
Le problme s'crit alors formellement

Problme du bin-packing
Donne : Des entiers positifs ou nuls a1 , . . . , an , W .
Tche
:
P
avec

k minimium
j {1, . . . , k}.

Trouver un entier naturel

i: f (i)=j ai 1

pour tout

Thorme 8.2.1. 

et une aectation

Le problme du bin-packing est

Non seulement il est

f : {1, . . . , n} {1, . . . , k}

NP-dicile.

NP-dicile, mais il existe encore de nombreuses instances de  petite 

taille non rsolue, ce qui justie et motive largement des travaux de recherche dans ces domaines.
Par exemple, considrons l'instance suivante, dont on ne connat pas ce jour la solution optimale

(1) .

taille de la bote : 150


nombre d'objets : 120
taille des objets : 100 22 25 51 95 58 97 30 79 23 53 80 20 65 64 21 26 100 81 98 70 85 92 97
86 71 91 29 63 34 67 23 33 89 94 47 100 37 40 58 73 39 49 79 54 57 98 69 67 49 38 34 96 27 92
82 69 45 69 20 75 97 51 70 29 91 98 77 48 45 43 61 36 82 89 94 26 35 58 58 57 46 44 91 49 52
65 42 33 60 37 57 91 52 95 84 72 75 89 81 67 74 87 60 32 76 85 59 62 39 64 52 88 45 29 88 85
54 40 57

meilleure solution connue : 51 botes.


1. source : la page web du professeur Eric Taillard http ://mistic.heig-vd.ch/taillard/

91

Le d est de trouver une solution en moins de 51 botes, ou alors de parvenir montrer que 51
botes est la solution optimale. Nous allons dcrire maintenant quelques heuristiques classiques
(NEXT-FIT, FIRST-FIT, FIRST-FIT DEACRISING), puis nous verrons les approches branchand-bound.

8.2.2. Quelques heuristiques classiques. 


8.2.2.1. NEXT-FIT.

 Je prends les objets les uns aprs les autres. Ds que l'objet

ne peut

pas entrer dans la bote courante, je passe une nouvelle bote.


De faon plus formelle :
Commencer par

k := 1, i := 1
Si
et

S := 0.

et

Rpter

S +ai > 1, faire k := k+1 et S := 0. Sinon, faire f (i) := k , S := S +ai


i := i + 1.

On a

Thorme 8.2.2. 

NEXT-FIT fournit une solution SOL telle que


SOL 2OP T 1,

o OP T est la valeur d'une solution optimale.


Dmonstration.

 On prouve d'abord la borne suivante.

 Pn

i=1 ai

(29)


OP T.

Cette quation se montre en numrotant les botes de


Ensuite, on note

o(j)

o(j)

l'ensemble des indices

forment une partition de

{1, . . . , n}.
OP
XT
j=1

Le fait que

OP T

OP T

dans la solution optimale.

d'objet tels que l'objet

soit dans la bote

j.

Les

On a donc

OP
XT

ai =

j=1 io(j)

n
X

ai .

i=1

soit entier permet de conclure (ajout des parties entires).

k fournit par NEXT-FIT est tel


P
k 2 d( ni=1 ai )/W
e

1 et utiliser la borne (29) pour



k
Pour j = 1, . . . ,
2 on a
X
ai > W,
On veut prouver que le

que

que

i: f (i){2j1,2j}
par dnition de l'algorithme NEXT-FIT.
En sommant :

  X
n
k
<
ai ,
W
2
i=1

qui peut se rcrire

k1

 Pn

i=1 ai

ce qu'on voulait montrer.

92

k 2OP T 1.

conclure.


1,

On va montrer

8.2.2.2. FIRST-FIT.

 Je prends les objets les uns aprs les autres. Je mets l'objet

dans la

bote de plus petit rang o il peut entrer.


De faon plus formelle,
poser

i := 1.

Rpter :
poser

Poser

n
o
P
f (i) := min j N : ai + h<i: f (h)=j ah W ;

poser

i := i + 1.

k := maxi{1,...,n} f (i).

FIRST-FIT fournit une solution SOL telle que




17
OP T ,
SOL
10
o OP T est la valeur d'une solution optimale.

Thorme 8.2.3. 

La preuve de ce rsultat, dicile, est omise. Ce que ce rsultat indique et qui est vri en
pratique, c'est que l'heuristique FIRST-FIT marche en gnral mieux que l'heuristique NEXTFIT

8.2.2.3. FIRST-FIT DECREASING.

 Je trie d'abord les objets par

ai

dcroissant. Puis j'ap-

plique FIRST-FIT.

Thorme 8.2.4. 

FIRST-FIT DECREASING fournit une solution SOL telle que


3
SOL OP T.
2

Tout comme pour le Thorme 8.2.3, la preuve de ce rsultat est omise. C'est cette heuristique
qui a en gnral les meilleurs rsultats. L'avantage des deux premiers algorithmes sur ce dernier
est qu'ils peuvent fonctionner

on-line,

ce qui signie qu'on peut les faire tourner lorsque les

objets arrivent les uns aprs les autres et qu'on ne connat pas la taille des objets futurs.

8.2.3. Branch-and-bound. 
8.2.3.1. Formulation PLNE.

 Pour l'approche branch-and-bound, la formulation sous forme

d'un programme linaire va s'avrer utile.


On suppose que l'on a

Min
s.c.

(30)

zj = 1

si la bote

botes disponibles. Le problme du bin-packing peut alors s'crire

PK
zj
Pj=1
K
y =1
Pnj=1 ji
i=1 ai yji W zj
yji , zi {0, 1}

est utilise et

8.2.3.2. Relaxation continue.

yji = 1

i = 1, . . . , n
j = 1, . . . , K
i = 1, . . . , n ; j = 1, . . . , K

si l'objet

est mis dans la bote

j.

Comme d'habitude, la borne la plus naturelle s'obtient par

relaxation continue :
Min
s.c.

PK
zj
Pj=1
K
yji = 1
Pj=1
n
i=1 ai yji W zj
yji , zi 0
yji , zi 1

i = 1, . . . , n
j = 1, . . . , K
i = 1, . . . , n ; j = 1, . . . , K
i = 1, . . . , n ; j = 1, . . . , K

C'est un programme linaire avec un nombre linaire de contraintes, il n'y a donc pas de
problme pour calculer la borne obtenue par relaxation continue.

93

8.2.3.3. Relaxation lagrangienne.


PK
les contraintes
j=1 yji = 1.

 On peut faire de la relaxation lagrangienne en oubliant

On crit le lagrangien

K
X

L(y, z, ) :=
Si on note

zj +

j=1

n
X

i (

i=1

K
X
j=1

yji 1).

la valeur optimale du programme (30), c'est--dire la solution optimale de notre

problme de bin-packing, on a toujours

v = inf sup L(x, ) sup inf L(x, ) = sup G(),


xX

xX

G:

R {}
G() 7 inf xX L(x, ),

est la fonction duale.

Rappelons que cette dernire est concave et ane par morceaux et que l'ide de la relaxation
lagrangienne est d'utiliser
proche de l'optimum).

sup G()

comme borne infrieure (ou mme n'importe quel

G()

Ici,

G() :=

Min
s.c.

P
P
PK
zj + ni=1 i ( K
j=1 yji 1)
Pj=1
n
a
y

W
z
j = 1, . . . , K
j
i=1 i ji
yji , zi {0, 1}
i = 1, . . . , n ; j = 1, . . . , K

se rcrit

G() :=
Sj := miny,z{0,1} {z +
On doit donc rsoudre K

avec

Pn

i=1 i yi

n
X

i +

Sj

i=1

j=1

i=1 ai yi

W z}.

Pn

K
X

problmes de sac--dos

(
Sj :=

min

z+

y,z{0,1}

n
X

i yi :

i=1

n
X
i=1

)
ai yi W z

G() (assez) facilement et trouver les y, z le ralisant. Et par consquent,


sur-gradients de la fonction concave G(), et donc la maximiser.

On sait donc calculer


on sait calculer les

8.3. Exercices
8.3.1. Ingalits valides pour le sac--dos. 
a1 , . . . , a n , b

des rels positifs. On note

l'ensemble des solutions ralisables

(
S :=
On appelle

ensemble dpendant

1. Montrer que tout

xS

x {0, 1}n :

tout ensemble

n
X
i=1

)
ai xi b .

C {1, . . . , n}

satisfait l'ingalit

X
iE(C)

On considre un problme de sac--dos avec

xi |C| 1,

E(C) = C {j : aj maxiC ai }.
94

tel que

iC

ai > b.

2. Expliquer l'intrt de ce type d'ingalits dans une rsolution d'un problme de sac--dos
dans une approche branch-and-bound.

8.3.2. Ingalits valides pour le bin-packing. 

On rappelle la modlisation PLNE du

problme du bin-packing. On suppose que l'on dispose d'un stock de

botes de taille

1.

PK
zj
Pj=1
K
y =1
i = 1, . . . , n
s.c.
Pnj=1 ji
i=1 ai yji zj j = 1, . . . , K
yji , zi {0, 1}
i = 1, . . . , n ; j = 1, . . . , K
j est utilise et yji = 1 si l'objet i est mis dans la bote j .
min

zj = 1

si la bote

1. Montrer qu'en ajoutant les contraintes


modliser le problme du bin-packing.
2. Mme question avec la contrainte

PK

zj zj+1 ,

j=1 zj

pour

j = 1, . . . , K 1,

on continue

P
d ni=1 ai e.

3. Expliquer l'intrt de ce type d'ingalit dans une rsolution d'un problme de bin-packing
dans une approche branch-and-bound.

8.3.3. Gros objets. 


ai >

1
3 pour tout

Supposons qu'une instance

i = 1, . . . , n.

a1 , . . . , a n

du bin-packing soit telle que

On suppose toujours que les conteneurs sont de taille

1.

1. Montrer comment modliser ce problme de bin-packing comme un problme de couplage


de cardinalit maximale dans un graphe.
2. Montrer comment en ralit on peut rsoudre ce problme en

O(n log(n)).

8.3.4. Calcul glouton de relch continu de problme de sac--dos. 


preuve du Lemme 8.1.2.

95

Complter la

CHAPITRE 9

POSITIONNEMENT D'ENTREPTS

De nombreuses dcisions conomiques mettent en jeu la slection ou le positionnement de


dpts, d'usines, de relais, d'hpitaux, etc. an de rpondre de manire optimale la demande.

9.1. Formalisation
La version la plus simple du problme de positionnement d'entrepts est la suivante.

Problme du positionnement d'entrepts


Donne : Un ensemble ni de clients D, un ensemble ni d'entrepts potentiels F , un cot xe

fi R+ d'ouverture
i F et j D.

pour chaque entrept

Tche : Trouver un sous-ensemble X F

iF

(dits

et un cot de service

cij R+

pour chaque

entrepts ouverts) et une aectation : D X

des clients aux entrepts ouverts, de faon ce que la quantit

fi +

iX

c(j)j

jD

soit minimale.

Un exemple d'input et d'output pour ce problme est donn Figures 1 et 2.


On dit qu'on est dans le le cas

mtrique

cij + ci0 j + ci0 j 0 cij 0

si
pour tout

i, i0 F

C'est en particulier le cas lorsque les cots de services

cij

et

j, j 0 D.

sont proportionnels la distance

gomtrique. Cette ingalit contient plus de termes que l'ingalit triangulaire classique,
laquelle elle ressemble. C'est d au fait que les cots ne sont pas ncessairement dnis entre
entrepts ou entre clients.
Commenons par la question de la complexit.

Proposition 9.1.1. 

le cas mtrique.

Le problme du positionnement d'entrepts est NP-dicile, mme dans

Nous allons un peu discuter des formulations sous forme de programmes linaires en nombres
entiers et parler rapidement de recherche locale.

Emplacement potentiel dun entrep


ot

Client

Figure 1.

Figure 2.

Les donnes d'un problme de positionnement d'entrepts.

Une solution au problme du positionnement d'entrepts.

9.2. Branch-and-bound
9.2.1. Programme linaire en nombres entiers. 

Une bonne faon de rechercher un

schma de branch-and-bound est de commencer par la modlisation sous forme d'un programme
linaire en nombres entiers. Ici, le problme s'crit facilement sous cette forme.

98

Min
s.c.

P
P
fi yi + iF jD cij xij
x yi
Pij
iF xij = 1
xij {0, 1}
yi {0, 1}
iF

9.2.2. Relaxation linaire. 

i F, j D
jD
i F, j D
i F.

(1)
(2)
(3)
(4)

On peut appliquer la technique du branch-and-bound dans

sa version la plus classique. Le branchement se fait sur les choix de xer


variables

xij

et

yi .

ou

certaines

Les bornes sont obtenues par le relch continu :


Min
s.c.

(31)

P
P
fi yi + iF jD cij xij
x yi
Pij
iF xij = 1
0 xij
0 yi
iF

9.2.3. Relaxation lagrangienne. 

i F, j D
jD
i F, j D
i F.

(1)
(2)
(3)
(4)

On peut galement obtenir une borne infrieure par

relaxation lagrangienne. Relchons la contrainte (2)

xij = 1

fi yi +

XX

iF

pour

On crit le lagrangien

j F.
!

L(x, y, ) =

X
iF

cij xij +

iF jD

jD

xij

iF

Notre problme consiste rsoudre

max L(x, y, ).

min

x{0,1}F D ,y{0,1}F : xij yi j R

Une borne infrieure notre problme est donc fournie par

max

min

j R x{0,1}F D ,y{0,1}F : xij yi

L(x, y, ),

c'est--dire, en posant

G() :=
on a

G()

min

x{0,1}F D ,y{0,1}F : xij yi

borne infrieure pour tout

RF ,

L(x, y, ),

la meilleure borne tant

max G()

RF
On veut donc tre capable de calculer

G(),

i.e. de rsoudre

min

x{0,1}F D ,y{0,1}F : xij yi


Il est facile de rsoudre le programme :
En eet on peut crire

G() =

x

L(x, y, ).

G() := minx{0,1}F D ,y{0,1}F : xij yi L(x, y, ).


X

j +

jD

di ()

iF

avec

di () =

xi {0,1}D ,yi {0,1},xij yi

fi yi +

X
jD

(cij j )xij .

di se calcule facilement. Il sut de comparer la valeur obtenue en posant yi = 0


di = 0 et celle obtenue en posant yi = 1 qui impose xij = 0 si et seulement si cij j .

Chacun des
qui impose

min

99

9.3. Recherche locale


Rappelons que la recherche locale consiste mettre une notion de voisinage sur l'espace des
solutions ralisables. Une fois ce voisinage dni, on peut facilement implmenter des mtaheuristiques du type tabou, rcuit simul, etc. Dans le cas du positionnement d'entrepts, il est trs
facile de dnir un voisinage sur l'espace des solutions et les mthodes de recherche locale sont
en gnral trs ecaces.
Remarquons d'abord que l'espace des solutions peut tre identi l'ensemble des parties

F.
iX
de

En eet, une fois


minimisant

2.

:= X \ {x}

X0

voisin

est

pour un

X 0 := X {x0 }

0
3. X

x, on a toujours intrt aecter le client

l'entrept ouvert

cij .

Ensuite, on dit que

0
1. X

si l'on est dans une des ces situations

x X , (drop)

pour un

:= X \ {x}

de

x0 F \ X (add)

ou

{x0 } (swap).

Dans le cas du problme de positionnement d'entrepts, on a ralis dans les annes 2000 que
la recherche locale tait extrmement ecace (plus que pour les autres problmes de RO).

On a par exemple le thorme suivant [ ]

On se place dans le cas mtrique. Si X est un minimum local pour le


voisinage dni prcdemment, alors X vaut au plus 3 fois l'optimum.
Thorme 9.3.1. 

En revanche, on n'a pas a priori d'valuation du temps de calcul d'un optimum local.

9.4. Exercices
9.4.1. Positionnement d'entrepts avec capacit. 

On reprend le problme de posi-

tionnement d'entrepts vu en cours, mais avec cette fois une contrainte supplmentaire : chaque
entrept ne peut desservir qu'un nombre limit de clients. Modliser le problme suivant comme
un problme linaire en nombres entiers.

Donne

D, un ensemble ni d'entrepts potentiels F , un cot


xe fi R+ d'ouverture et une capacit Ki pour chaque entrept i F , et un cot de service
cij R+ pour chaque i F et j D.
: Un ensemble ni de clients

Tche : Trouver un sous-ensemble X F

(dits

entrepts ouverts) et une aectation : D X


i, l'entrept i ne desserve pas plus de Ki

des clients aux entrepts ouverts, tel que pour tout

clients, de faon ce que la quantit

X
iX

fi +

c(j)j

jD

soit minimale.

9.4.2. Relaxation lagrangienne du problme de localisation d'entrept. 


prend la modlisation PLNE du problme de la localisation d'entrept.
Min
s.c.

P
P
fi yi + iF jD cij xij
x yi
Pij
iF xij = 1
xij {0, 1}
yi {0, 1}
iF

100

i F, j D
jF
i F, j D
i F.

(1)
(2)
(3)
(4)

On re-

Dans le cours, on a relch la contrainte (2). Relcher maintenant la contrainte (1) la place
de la contrainte (2) et montrer que la fonction duale se calcule encore trs simplement.

9.4.3. Positionnement d'entrepts, forward logistique et reverse logistique. 

La

logistique traditionnellement prise en compte est la logistique forward, qui concerne l'approvisionnement de clients partir d'entrepts, que nous appellerons dans cet exercice

forward. La logistique reverse concerne les retours


entrepts reverse chargs de traiter ces retours.

entrepts

(biens non consomms par le client) vers des

Pour de nombreuses raisons (environnementales, dure de vie plus courte des produits, vente
distance), la reverse logistique prend de l'importance dans le management de la supply-chain.
L'objectif de cet exercice est d'tudier l'implication que cela peut avoir dans la modlisation des
problmes de positionnement d'entrepts.
On suppose donc que l'on dispose d'un ensemble
d'un ensemble

de positions potentielles d'entrepts, et

de clients. Les clients souhaitent s'approvisionner en un certain bien, dont la

quantit est mesure par un nombre rel.

fi R+ et celui d'un
entrept reverse ri R+ . La capacit d'un entrept forward en position i (ie la demande totale
qu'il peut satisfaire) est note bi et la capacit d'un entrept reverse en position i (ie le retour
total qu'il peut accepter) est note ei . Chaque client j a une demande hj R. De plus, chaque
client j a un taux de retour j [0, 1], ce qui signie qu'il renvoie une quantit j hj du bien. Le
cot de tranport d'une unit de bien d'un entrept i un client j , ou d'un client j l'entrept
i, est cij R+ .
Le cot d'ouverture d'un entrept forward en la position

est not

Le bien tant suppos parfaitement fractionnable, un client peut tre approvisionn par plu-

sieurs entrepts forward ; et de mme, plusieurs entrepts reverse peuvent tre destination des
retours d'un client. De plus, il est possible d'ouvrir au mme endroit

en entrept forward et

un entrept reverse.
1. Proposer une modlisation par la programmation linaire mixte (avec des variables entires
et des variables relles) du problme de minimisation des cots de conception d'un tel systme,
pouvant traiter toute la demande et tous les retours. Noter que ce problme se dcompose en
deux sous-problmes indpendants : un pour le forward et l'autre pour le reverse.
On suppose maintenant que si on parvient ouvrir un entrept forward et un entrept reverse
au mme endroit

i,

cela diminue le cot total d'ouverture des deux entrepts d'une quantit

si .

2. Modier la modlisation prcdente pour tenir compte de cette nouvelle possibilit, tout en
restant dans la programmation linaire mixte. Noter que les deux sous-problmes ne sont plus
indpendants.
3. Proposer une dnition de l'espace des solutions et d'un voisinage et expliquer comment
pourrait tre construite une mtaheuristique de type recherche locale partir de cette dnition.
4. Toujours dans le cas d'une mtaheuristique de type recherche locale, comment adapter la
mthode au cas o le bien n'est pas parfaitement fractionnable (les quantits seront donc des
entiers) et que les

j hj ,

les

hj ,

les

bi

et les

ei

sont entiers pour tout

9.4.4. Rduction du nombre d'entrepts. 


pays de

et

j?

Un grand groupe industriel dispose dans un

entrepts abritant des pices de rechange. La direction souhaite fermer

entrepts et

transfrer le contenu des entrepts ferms dans les entrepts rests ouverts qui disposent encore
de place. Tous les entrepts sont considrs comme identiques et possdent une capacit de

101

1.

On note la quantit de pices de rechange stocks dans l'entrept

par

qi .

Cette quantit est

[0, 1]. Le cot unitaire de transfert de l'entrept i l'entrept j est not


x [0, 1] de l'entrept i l'entrept j , cela cote cij x. On suppose de plus

assimile un rel dans

cij

: si l'on transfert

que les cots

cij

satisfont l'ingalit triangulaire

cij + cjk cik


pour tout triplet

(i, j, k).

On posera

cii = 0

pour tout

i.

Noter que le contenu d'un entrept

ferm peut trs bien tre rparti entre plusieurs entrepts rests ouverts.
1. Ecrire sous forme d'un programme linaire en variables mixtes (entires et continues) le
problme consistant choisir les

entrepts fermer et le plan de transfert des pices de

rechange des entrepts ferms vers ceux rests ouverts, tout en minimisant le cot total du
transfert. Justier en particulier les contraintes utilises.
2. Expliquer pourquoi il est facile de voir si ce problme a une solution ralisable.
Il est maintenant demand d'admettre que l'on peut assez facilement montrer que ce problme
est

NP-dicile (il contient le problme du dominant d'un graphe).

3. Ce problme tant

NP-dicile, proposer une mthode raisonnable permettant de trouver

l'optimum exact de ce problme (quelques lignes donnant le nom de la mthode et son principe
sont susantes). Est-on certain de pouvoir obtenir l'optimum en quelques minutes ?
4. Y a-t-il des logiciels libres permettant de rsoudre un tel problme avec cette mthode ? Si
oui, en citer un.
On souhaite maintenant proposer une mthode du type recherche locale pour ce problme.
5. Quel peut tre l'intrt d'une telle mthode ?
6. Expliquer pourquoi une recherche locale pour ce problme peut limiter le codage des solutions au choix des

entrepts ferms, sans prcision sur les transferts. Donner le nom d'un

problme traditionnel de recherche oprationnelle dont la rsolution rapide permet un tel codage.
7. Proposer une dnition du voisinage pour cette recherche locale.

9.4.5. Positionnement d'ambulances. 

Pour diminuer le temps mis par les ambulances

pour atteindre les victimes d'accidents, certains hpitaux envisagent de les positionner de manire optimise sur le dpartement dont ils ont la charge. Considrons donc un certain hpital
ayant

C.
|S| K .

ambulances. L'ensemble des communes est not

On dispose d'un ensemble

de

c C et s S , on note ts,c
c. Si S 0 S est l'ensemble
0
des points o sont positionnes les ambulances (avec bien sr |S | K ), dans le pire des cas, une
ambulance atteindra la commune o a eu lieu l'appel en un temps gal maxcC minsS 0 ts,c .
points de stationnement potentiel et on suppose que

le temps ncessaire une ambulance positionn en

Pour

pour atteindre

C'est ce temps maximum que l'hpital souhaite rendre le plus petit possible.
1. Montrer que ce problme est
orient ; on appelle
a un voisin dans

dominant

NP-dicile.

un sous-ensemble

Indication : soit

Y V

G = (V, E) un
v V est soit

tel que tout

; dcider s'il existe un dominant de taille

est

NP-complet.

graphe nondans

Y,

soit

2. Dmontrer que le programme linaire suivant modlise le problme. Pour cela, procdez
en deux temps : montrez que toute solution optimale du problme donne une solution de mme

102

valeur au programme linaire ; puis montrez que toute solution optimale du programme linaire
donne une solution de mme valeur au problme.

Min

s.c.

X
sS

X
cC

ys K

(i)

xs,c |C|ys

sS

(ii)

xs,c = 1

cC

(iii)

sS; cC

(iv)

sS

ts,c xs,c h
xs,c
ys

{0, 1} s S ; c C

(v)

{0, 1} s S

(vi)

h R+

(vii)

Un tel programme linaire se rsout par branch-and-bound. La borne dont on se sert alors
peut tre celle obtenue en relchant les contraintes d'intgrit de

et de

y.

On se propose de

voir si l'on peut galement obtenir des bornes par relaxation lagrangienne.
3. Ecrire le programme d'optimisation obtenu lorsqu'on procde la relaxation lagrangienne
de la contrainte (ii).
4. Montrer que ce programme se ramne deux programmes distincts et indpendants, l'un
ne mettant en jeu que les variables

y,

l'autre ne mettant en jeu que les variables

et

h.

5. Montrer que chacun de ces deux programmes se rsout en temps polynomial.


6. Expliquer pourquoi la polynomialit de ces deux programmes permet d'esprer un calcul
ecace d'une borne infrieure au programme linaire de la question 2.

103

CHAPITRE 10

ORDONNANCEMENT INDUSTRIEL

Dans un contexte de tches ou d'oprations eectuer sous des contraintes de temps et de


ressource, un problme d'ordonnancement consiste donner les instants auxquels commencer
les tches, en vue d'optimiser un certain critre. Dans l'industrie, dans le btiment, sur les
gros chantiers, les problmes d'ordonnancement sont souvent trs prsents, et de leur solution
peut dpendre la russite du projet. Nous verrons que pour une certaine famille de problmes
d'ordonnancement (les problmes d'atelier), les problmes sont non seulement

NP-diciles, mais

mme mal rsolus en pratique.

10.1. Prliminaires
tches,
contraintes, on

De manire un peu gnrique, un problme d'ordonnancement se formule avec des

oprations. Etant donnes des


ordonnancement la donne des instants auxquels commencent les direntes tches ou

qui elles-mmes se dcoupent ventuellement en


appellera

oprations.
Les

contraintes de temps

peuvent tre de deux natures :

 Dures des tches


 Prcdences

contraintes de ressource peuvent galement tre de deux natures :


Disjonctive :  si les tches i et j sont eectues sur la machine k , elles

Les


doivent tre faites

dans tel ordre 




Cumulative :  la tche i consomme aik de la ressource k . La ressource k a une capacit


Ak . A tout instant, la somme des consommations sur la machine k doit tre infrieure sa
capacit. 

Les critres optimiser peuvent tre varis. Exemples :







Cot : Cot total de l'ordonnancement. Cela suppose dni le cot d'aectation d'une tche
i sur une machine k .
Makespan : Temps pour eectuer l'ensemble des tches.
Temps moyen : Temps moyen mis par une tche pour tre traite. Son intrt peut tre
vari. Par exemple si le problme d'ordonnancement s'insre dans un processus plus grand,
ce genre de critre peut tre intressant.

Une faon commode de reprsenter un ordonnancement est le

diagramme de Gantt

: en abs-

cisse, on met le temps, et on ordonne, les direntes tches. Sur chaque ligne repre par une
tche, on met des intervalles qui occupent les instants pendant lesquels la tche est traite. Un
exemple est donn Figure 1.

F
E
D
C
B
A

20

Figure 1.

40

60

80

100

120

jours

140

Le diagramme de Gantt qui correspond l'exemple de la section qui suit.

10.2. Management de projet


Lorsqu'on a un projet conduire et direntes tches eectuer, connaissant la dure des
tches et les relations de prcdence, une question naturelle est celle de la dure minimale
du projet. Direntes mthodes peuvent tre utilises, certaines informelles, en jouant avec le
diagramme de Gantt, d'autres exactes, comme la mthode PERT ou la mthode potentiel-tches.
C'est cette dernire que nous allons maintenant prsenter.

On se donne une collection

de tches, pour chaque tche

i,

on se donne sa dure

contraintes par rapport aux autres tches de cette forme :  la tche


lorsque

r%

de la tche

di ,

et des

ne peut commencer que

au moins a t eectu .

On veut trouver
 la dure minimale du projet.


les tches critiques : les tches pour lesquelles une modication de l'instant de dbut rallonge
la dure du projet.

les marges : la marge d'une tche est l'intervalle de temps sur lequel on peut faire dmarrer
la tche sans rallonger la dure du projet. En particulier, une marge nulle signie une tche
critique.

On modlise ce problme sous la forme d'un graphe dont les sommets sont les dbuts des
tches et les arcs sont les relations de prcdence. On ajoute deux tches ctives :

Dbut

et

Fin. De plus, chaque arc (u, v) est muni d'une longueur gale la dure minimale sparant le
dbut de

de celui de

v.

La premire remarque que l'on peut faire est la suivante

Si ce projet a un sens, le graphe est acircuitique.


En eet, un circuit traduirait l'obligation de remonter dans le temps.
Considrons l'exemple suivant.

106

Tches

Description

Dure (j)

Contraintes

A
B
C
D
E
F

Construction voie ferre

80

Dbut

Forage des puits

70

Dbut

Construction logements provisoires

30

Dbut

Pompage de l'eau (Fonds de mine)

30

Amnagement fonds + ascenseurs

50

Construction logements dnitifs

40

B
A, D
A, C

On fait la modlisation dcrite ci-dessus : voir Figure 2.

D
80

70

30
30

Debut
0

Fin

50
80
0

40

F
C
30
Figure 2.

Notons

tI

et

t0I

Le graphe de la mthode potentiel tche.

les instants au plus tt et au plus tard auxquels commencer la tche

tI est la longueur du plus long chemin de


moins la longueur du plus long chemin de I Fin.
Proposition 10.2.1. 

Dmonstration.

Dbut

I.

I . t0I , c'est tFin

 En eet,

 pour chaque tche

I,

plus long chemin de

on ne peut pas commencer avant la somme des longueurs des arcs du

Dbut I .

 on faisant dbuter chaque tche


long chemin de
De mme pour

t0I .

prcisment la somme des longueurs des arcs du plus

Dbut I , on peut commencer chaque tche l'instant tI .

Pour trouver la dure minimale du projet, les tches critiques, etc. il faut donc savoir calculer
les plus longs chemins dans un graphe acircuitique

D = (V, A), muni d'une longueur l : A R+ .

Cela se fait par la programmation dynamique, comme nous l'avons vu au Chapitre 3. Si on note

la longueur du plus long chemin de

Dbut I , on peut crire (quation de Bellman)

I = max (J + l(J, I)).


(J,I)A

On peut calculer tous les

en

O(m)

est le nombre d'arcs. On peut calculer de mme

I , plus longs chemins de I Fin. On pose alors tI := I , t0I := tFin I et la marge


mI := t0I tI . Les chemins critiques sont les plus longs chemins de Dbut Fin ; toutes les

les

tches d'un chemin critique sont caractrises par une marge nulle.

107

10.3. Ordonnancement d'atelier


10.3.1. Introduction.  Un problme
tches J1 , . . . , Jn

d'un ensemble de

d'ordonnancement d'atelier se dcrit sous la forme

et d'un ensemble de

machines M1 , . . . , Mm .

Une tche

j,

pour tre ralise, ncessite son excution sur direntes machines successivement. Le temps
d'excution de la tche
tion d'une tche
la tche

sur la machine

sur une machine

sur la machine

est une donne du problme et se note

s'appelle une

opration,

on parle galement

pjk . L'excude passage de

k.

Dans ce cours, on fait de plus les suppositions suivantes.


 Chaque tche passe exactement une fois sur chaque machine. (Quitte accepter des temps
d'excution nuls, cela est sans perte de gnralit.)
 Deux tches ne peuvent passer simultanment sur une machine.
 A l'exception du cas trait dans la Section 10.3.3.5, le passage d'une tche sur une machine
doit se faire d'une traite. En d'autres termes, une opration, une fois commence, ne peut
tre interrompue. On dit qu'on est dans le cas

non-premptif.

Il y a trois modles de base pour les problmes d'ordonnancement d'atelier.





ow-shop : Toutes les tches doivent passer sur les machines dans le mme ordre.
job-shop : L'ordre dans lequel dans passer chaque tche sur les machines est x, mais peut
direr d'une tche l'autre.

open-shop

Remarque.

: L'ordre dans lequel dans passer chaque tche sur les machines n'est pas x.

 Le ow-shop est un cas particulier du job-shop.

Trouver l'ordonnancement, c'est xer les instants


sur toute machine

k.

On note

Cj

tjk

de dbut du passage de toute tche

l'instant d'achvement de la tche

j.

Comme indiqu au dbut de ce chapitre, deux objectifs classiques sont


 minimiser la dure moyenne, lequel s'crit donc
 minimiser le

makespan,

lequel s'crit

Cj ,

et

Cmax = maxj Cj .

L'essentiel du cours se focalisera sur la minimisation du makespan. L'objectif de minimisation


des cots n'est pas abord dans ce cours.

10.3.2. Dicult. 

Les problmes d'ordonnancement sont diciles, dans tous les sens du

terme.

 Le problme du ow-shop non-premptif trois machines et minimisation du makespan Cmax est NP-dicile.
P
 Le problme du ow-shop non-premptif deux machines et minimisation du j Cj est
NP-dicile.
 Le problme de l'open-shop non-premptif trois machines et minimisation du makespan
Cmax est NP-dicile.
P
 Le problme de l'open-shop non-premptif deux machines et minimisation du j Cj est
NP-dicile.

Thorme 10.3.1. 

Mais en plus d'tre

NP-dicile, on a du mal en pratique rsoudre de manire optimale ces

problmes, contrairement au problme du voyageur de commerce par exemple, que l'on tudiera
au Chapitre 11. Mme avec des mtaheuristiques ou des techniques de branch-and-bound, des
instances job-shop 15 machines et 15 tches sont encore non rsolues ce jour !

108

Par exemple, on ne connat pas l'ordonnancement optimal pour l'instance suivante de owshop

20

tches et

machines

(1)

54

83

15

71

77

36

53

38

27

87

76

91

14

29

12

77

32

87

68

94

79

11

99

56

70

99

60

56

61

73

75

47

14

21

86

77

16

89

49

15

89

45

60

23

57

64

63

41

63

47

26

75

77

40

66

58

31

68

78

91

13

59

49

85

85

39

41

56

40

54

77

51

31

58

56

20

85

53

35

53

41

69

13

86

72

49

47

87

58

18

68

28

Ce tableau se lit de la manire suivante : il faut eectuer

20 tches. Chaque tche se dcompose

5 oprations 1, 2, 3, 4 et 5, identies avec 5 machines. Les oprations doivent tre faites dans
k me opration de la tche j se lit sur l'entre qui
est l'intersection de la k me ligne et de la j me colonne.
en

cet ordre (ow-shop), le temps pour faire la

Nous allons voir maintenant


 des cas particuliers polynomiaux.
 un cas

premptif

: l'open-shop avec un nombre quelconque de machines, qui est encore un

problme polynomial.
 un schma de branch-and-bound pour le job-shop.
 un schma de recherche locale pour le job-shop.

10.3.3. Quelques cas particuliers polynomiaux. 

Les cas particuliers polynomiaux les

plus clbres sont les suivants.


1. Le problme du ow-shop non-premptif deux machines et minimisation du makespan

Cmax : algorithme de Johnson.


2. Le problme du job-shop non-premptif deux machines et minimisation du makespan

Cmax : algorithme de Jackson.


3. Le problme du job-shop non-premptif deux tches et minimisation du makespan

Cmax

algorithme de Brucker.
4. Le problme de l'open-shop non-premptif deux machines et minimisation du makespan

Cmax : algorithme de Gonzalez et Sahni

10.3.3.1. Flow-shop non-premptif deux machines et minimisation du makespan Cmax . 


C'est rsolu par l'algorithme de Johnson [18]. On a n tches J1 , J2 , . . . , Jn . Chaque tche Jj a
une dure pj1 sur la machine 1 et pj2 sur la machine 2. On doit d'abord passer par la machine
1, puis par la machine 2.
L'algorithme produit une squence j1 , j2 , . . . , jn : ce sera l'ordre dans lequel eectuer les tches
sur les deux machines. En eet, comme nous le verrons ci-dessous, il y a toujours une solution
optimale pour laquelle les tches sont ralises dans le mme ordre sur les deux machines.

j la dure qj = min(pj1 , pj2 ). Classer les tches par qj croissant.


q1 q2 . . . qn . Commencer j = 1. Fixer r, s = 0. Rpter

On dnit pour chaque tche


Quitte renumroter, on a
jusqu'

j=n

:
si
si

qj
qj

est atteint sur la premire machine, dnir

Faire

est atteint sur la seconde machine, dnir

jr+1 := j
0
js+1
:= j

j := j + 1.

1. Source : la page web du professeur Eric Taillard http ://mistic.heig-vd.ch/taillard/

109

et
et

r := r + 1 ;
s := s + 1.

Retourner l'ordre

j1 , . . . , jr , js0 , . . . , j10 .

Il y a deux autres formulations alternatives de cet algorithme.

que

pj1 pj2 , un paquet B avec les j tels


croissants, B selon les pj2 dcroissants. Concatner

1. Faire deux paquets : un paquet

avec les

pj1 > pj2 . Ordonner A selon les pj1


j de A celle de B dans cet

la suite des
2.

tels que

ordre.

Choisir la tche Jj ayant le plus petit pj1 ou pj2 parmi tous les pji .
Appliquer rcursivement l'algorithme sur les tches 6= j : cela

j1 , j2 , . . . , jr , js0 , . . . , j10 ,
Les tches j1 , . . . , jr

avec

donne une squence

r + s = n 1.

sont choisies de faon ce que le temps sur la machine 1 soit plus

court que sur la machine 2. Les tches

js0 , . . . , j10

sont choisies de faon ce que le temps

sur la machine 2 soit strictement plus court que sur la machine 1.


Si
Si

pj1 pj2 ,
pj1 > pj2 ,

retourner j, j1 , j2 , . . . , jr , js0 , . . . , j10 .


retourner j1 , j2 , . . . , jr , js0 , . . . , j10 , j .

Considrons l'exemple suivant.


Tches

temps sur la machine 1

temps sur la machine 2

A
B
C
D
E

12

14

11

25

13

17

15

L'algorithme va successivement xer :

...,A
E, . . . , A
E, D, . . . , A
E, D, . . . , B, A
E, D, C, B, A.
Thorme 10.3.2.  L'algorithme de Johnson rsout correctement le problme du ow-shop
deux machines et minimisation du makespan Cmax .

Dmonstration.

 Droulons maintenant l'algorithme et plaons nous l'itration

j.

On peut

j 1 tches ont dj
t xes : pour xer les notations, supposons que les tches xes sont celles d'indices j1 , . . . , jr
0
0
et j1 , . . . , js . On suppose donc que j = r + s + 1. On peut mettre les autres dans un ordre

supposer sans perte de gnralit que

qj

est atteint sur la premire machine.

quelconque, pas forcment le mme sur la premire et la seconde machine. On suppose que l'on
a les instants de dmarrage de chacune des oprations et que cet ordonnancement est ralisable.
On a donc un ordre de tches sur la premire machine

(1)

(1)

j1 , . . . , jr , i1 , . . . , inrs , js0 , . . . , j10

et sur

(2)
(2)
0
0
la seconde j1 , . . . , jr , i1 , . . . , inrs , js , . . . , j1 .
On fait maintenant commencer

gauche de

sur la machine

l'instant auquel commenait

(1)

i1

, et sur

(2)
l'instant auquel commenait i1 . On dcale vers la droite les tches qui tait

2
j sur

la machine

la machine

et sur la machine

sur le Figure 3.

110

en consquence. Cette opration est illustre

j1

M1

j2

M2

j3

j2

j1

j1

M1

j2

M2

j20

i0

j3

j3

j2

j1

j10

`0

j20

j20

j3

j10

i0

j20

`0

Illustration d'une itration de l'algorithme de Johnson : changer la position


relative de la tche en pointills par rapport i et ` ne dtriore pas la dure de
l'ordonnancement

Figure 3.

Montrons que ce nouvel ordonnancement est encore ralisable et garde le mme makespan.
Une fois l'itration
sur la machine

1,

nie, les tches dcales ont vu leur temps de dmarrage augmenter de

et de

pj2

sur la machine

pour les tches direntes de

j.

2.

Comme

pj1 < pj2 ,

lorsqu'elle a t termine sur la machine

1.

Mais c'est vident car

(2)
au plus tard l'instant auquel commenait i1 sur la machine

pj1

on reste ralisable, en tout cas

Il faut encore vrier que la tche

et

dmarre sur la machine

commence sur la machine

2
1

pi(2) 1 pj1 .
1

En conclusion, partant d'un ordonnancement quelconque, on peut toujours obtenir un ordonnancement de mme makespan tel que les tches soient classes de la mme faon que par
l'algorithme de Johsonn.

10.3.3.2. Job-shop non-premptif deux machines et minimisation du makespan Cmax .


rsolu par l'algorithme de Jackson [
On a

machine

tches

2.

J1 , J2 , . . . , Jn .

Pour chaque tche

j,

 C'est

17], qui est une simple adaptation de l'algorithme de Johnson.

Chaque tche

Jj

a une dure

pj1

sur la machine

l'ordre de passage sur les machines

et

et

pj2

sur la

est x.

L'algorithme consiste dnir

J12 := {Jj : Jj

J21 := {Jj : Jj

doit d'abord tre eectu sur

puis sur

2}

doit d'abord tre eectu sur

puis sur

1}

et faire les oprations suivantes :


 sur la machine 1 :
 sur la machine 2 :
o

J12

et

J21

J12 J21 ,
J21 J12 ,

sont ordonns selon l'algorithme de Johnson.

L'algorithme de Jackson rsout correctement le problme du job-shop


deux machines, au plus deux oprations par tche, et minimisation du makespan Cmax .
Thorme 10.3.3. 

Dmonstration.

 Similaire celle du Thorme 10.3.2.

111

j10

j10

10.3.3.3. Job-shop non-premptif deux tches et minimisation du makespan Cmax .  On a


deux tches et des machines numrotes de 1 m. Chaque tche j = 1, 2 est dcrite par l'ordre
(mji )i=1,...,m des machines dans lequel elle doit passer.
On note qji le temps pour eectuer la ime opration de la tche j , i.e. qji := pjmji .

Pour rsoudre ce problme, on peut appliquer l'algorithme de Brucker [ ], qui est en fait un
algorithme de plus court chemin dans un certain graphe.

i, i0 telle que m1i = m2i0 (i.e. la


0
utilise la mme machine que la i me opration de la tche 2), on

On se place dans le quart de plan positif. Pour toute paire

ime

opration de la tche

dessine un obstacle rectangulaire dont les cts


 sont parallles auxaxes de coordonnes, dont

Pi1

k=1 p1k ,

le point infrieur gauche est de coordonnes


longueurs

q1i

et

Pj1

k=1 p2k

et dont les cts sont de

q2j .

Un ordonnancement ralisable induit un chemin partant de

m
X

q1i ,

i=1

m
X

(0, 0)

et allant jusqu'

!
q2i

i=1

Ce chemin se dplace soit de gauche droite, soit de haut en bas, soir vers le nord-est. On
cherche donc le plus court chemin : c'est un problme de plus court chemin dans un graphe
acircuitique  le poids d'un arc tant la dure correspondant la transition reprsente par l'arc
 qui conduit un algorithme en

O(m2 log(m)) (le plus court chemin lui-mme met O(m2 ), mais

la construction du graphe est un peu plus coteuse).


En toute rigueur, le nombre de chemins respectant ce genre de dplacement est innis : si la
tche 1 met en jeu la machine 1 sur une certaine plage de temps, et si la tche 2 peut pendant
ce temps passer sur la machine 2, avec un temps de passage beaucoup plus court, on peut
faire dbuter un grand nombre de moment sur la plage horaire l'opration sur la machine
2. La dmonstration du Thorme 10.3.4 ci-dessous, omise ici, consiste dans un premier temps
montrer qu'en se limitant un nombre ni de mouvements possibles (voir Figure 5), on ne
diminue pas la longueur du plus court chemin.
D'aprs cette discussion, on a

L'algorithme de Brucker rsout correctement le problme du job-shop


deux tches et minimisation du makespan.
Thorme 10.3.4. 

L'algorithme est illustr sur les Figures 4 et 5.

Remarque.

 Cet algorithme peut se gnraliser au problme

tches, mais la complexit

n
devient alors O(nm log(m)), ce qui n'est pas polynomial...

10.3.3.4. Open-shop non-premptif deux machines et minimisation du makespan Cmax .  On


a n tches et deux machines. Chaque tche est constitue de deux oprations, identies avec les
machines. Comme on est en open-shop, il n'y a pas de contrainte sur l'ordre dans lequel doivent
tre faites les oprations d'une tche. On a alors le rsultat suivant.

Thorme 10.3.5. 

Pour ce cas, on a l'optimum

n
n
X
X
Cmax = max max(pj1 + pj2 ),
pj1 ,
pj2 .
j

j=1

Un tel ordonnancement peut se trouver en temps polynomial.


112

j=1

tache 1: M1 M2 M3 M4
tache 2: M2 M4 M3 M1
tache 2

M1

q24

q23
M3

M4 q22

M2 q21

q12

q11
M1

q14

q13

M2

t
ache 1

M4

M3

un ordonnancement possible
un autre ordonnancement possible

Illustration de l'algorithme de Brucker qui rsout le job-shop deux tches


et minimisation du makespan.

Figure 4.

poids de cet arc: p24

tache 2

M1

q24
poids de cet arc: p22

q23
M3

M4 q22

M2 q21

q11
M1

q12
M2

q13

q14

t
ache 1

M4

M3

un ordonnancement possible
un autre ordonnancement possible

Figure 5.

Dmonstration.

Graphe acircuitique associ l'algorithme de Brucker.

 Il est clair que l'on ne peut pas faire mieux que la valeur

ci-dessus.

Montrons qu'on peut l'atteindre. Quitte ajouter des tches ctives, on peut supposer que

Pn

j=1 pj1

Pn

j=1 pj2

= T.
113

On peut dnir

j1

le plus grand indice

tel que

(p11 + p12 ) + (p21 + p22 ) + . . . + (pj1 + pj2 ) T.


Pj1

On considre que cela donne une seule grande tche J1 , avec p11 :=
j=1 pj1
De mme, on peut dnir j2 le plus grand indice j tel que

On considre

et

p12 :=

(p(j1 +1)1 + p(j1 +1)2 ) + (p(j1 +2)1 + p(j1 +2)2 ) + . . . + (pj1 + pj2 ) T.
Pj2

que cela donne une seule grande tche J2 , avec p21 :=


j=j1 +1 pj1

Pj1

j=1 pj2 .

et

p22 :=

Pj2

j=j1 +1 pj2 .
Enn, on dnit de mme

Pn

j .
P3n

On considre que cela donne une seule grande tche

J3 ,

avec

:= j=j2 +1 pj1 et p32 := j=j2 +1 pj2 .

Aprs avoir dni J3 , toutes les tches sont soit dans J1 , soit dans J2 , soit dans J3 . En eet,
Pn
Pn
Pn
Pn

p11 +p12 +p(j1 +1)1 +p(j1 +1)2 > T et j=1 pj1 + j=1 pj2 = 2T , donc j=j1 +2 pj1 + j=j1 +2 pj2 <
p31

T.
J1 , J2 , J3 , avec p11 + p21 + p31 = T et
+
+
=
+
T pour tout j = 1, 2, 3.

En renumrotant, on peut supposer que p11 p22 et p12 p31 . On vrie ensuite que l'on

peut eectuer J1 , J2 , J3 sur la machine 1 dans cet ordre, et J2 , J3 , J1 sur la machine 2 dans

cet ordre. C'est un ordonnancement de dure T . Pour chaque Js , on eectue les Jj dont il est
On se retrouve donc avec l'open shop trois tches

p12

p22

p32

T , et pj1

pj2

compos, conscutivement selon les indices.

10.3.3.5. Open-shop premptif.  On a n tches et m machines, chaque tche j est dcrite par
un vecteur pj = (pj1 , . . . , pjm ), le nombre pjk indiquant le temps que la tche j doit passer sur
la machine k . Chaque tche peut passer dans un ordre quelconque sur les machines (open-shop).
De plus, chaque opration (passage sur une machine) peut tre interrompue et reprise plus tard,
et ce, autant de fois que ncessaire (cas premptif ). L'important est qu'au total, chaque tche
ait pass un temps

pjk

sur la machine

k,

et ce pour tout

On a le rsultat suivant.

Thorme 10.3.6. 

A l'optimum, on a

Cmax = max max


j

m
X

k {1, . . . , m}.

, max

pjk

k=1

n
X

pjk .

j=1

De plus, un tel ordonnancement se trouve en temps polynomial.


En fait, c'est une application directe du thorme de Birkho-von Neumann dont la preuve
est laisse en exercice.

Thorme 10.3.7

(Thorme de Birkho-von
Neumann).
P

trice carre bistochastique

i).

(ie aij 0 et

n
i=1 aij

Soit A = ((aij )) une maP


= 1 pour tout j et nj=1 aij = 1 pour tout


Alors A est combinaison convexe de matrices de permutation (matrices 01 ayant exactement


un 1 par ligne et par colonne).
Preuve du Thorme 10.3.6.

P := ((pjk )).

 Considrons la matrice

A :=

..

PT
114

P
.

..

Dnissons

(n + m) (n + m). Quitte ajouter des quantits positives sur la


supposer que A a toutes ses sommes par ligne et par colonne gale

!
m
n
X
X
T := max max
pjk , max
pjk .

C'est une matrice


de

A,

on peut

On applique Birkho-von Neumann

Q sont des
P i
i i = 1.

o les

et

k=1

A.

j=1

On obtient que

matrices ayant au plus un

diagonale

peut s'crire comme

par ligne et par colonne, et o

i > 0

i i Qi

pour tout

1 T premiers instants, on fait passer la tche j sur


(j, k) entre non nulle de la matrice Q1 ; on fait passer la tche j sur la
(j, k) entre non nulle de la matrice Q2 , etc.

Cela donne un ordonnancement : sur les


la machine
machine

k,

k,

pour tout

pour tout

10.3.4. Cas non-polynomiaux. 

Comme il a t indiqu dans l'introduction de ce chapitre,

les problmes d'ordonnancement sont mal rsolus en pratique, contrairement au problme du


voyageur de commerce o l'on sait rsoudre des instances plusieurs dizaine de milliers de villes.
Pour le job-shop par exemple, il existe ce jours un grand nombre d'instances 15 tches et 15
oprations par tches (soit des instances occupant l'quivalent mmoire de 225 nombres rels)
dont on est trs loin de connatre l'optimum.
Les techniques employes en pratique pour rsoudre les problmes d'ordonnancement sont
donc en gnral trs sophistiques et dpassent largement le cadre d'un tel cours. Nous n'allons
donc qu'eeurer certaines notions utiles la conception d'algorithmes branch-and-bound pour
le problme job-shop.

10.3.4.1. Graphe disjonctif.

Un outil particulirement commode pour les cas diciles, et

qui peut servir tant pour les algorithmes de recherche locale que les mthodes exactes du type

graphe disjonctif.
Le graphe disjonctif est un graphe mixte ( la fois des arcs et des artes) dont les sommets sont

branch-and-bound est le

les oprations, les arcs les relations conjonctives (un arc est mis entre deux oprations conscutives d'une mme tche), les artes les relations disjonctives (une arte est mise entre toute
paire d'oprations utilisant la mme machine). La longueur d'un arc est la dure de l'opration
dont il est issu.
Considrons par exemple le job-shop suivant, trois tches, et trois machines.

J1 M1 : 2 M2 : 5 M3 : 4
J2 M2 : 1 M1 : 6 M3 : 7
J3 M3 : 6 M2 : 8 M1 : 3
Le graphe disjonctif correspondant est donn sur la Figure 6.
La remarque fondamentale qui motive l'introduction du graphe disjonctif est la suivante

Trouver un ordonnancement, c'est orienter les artes du graphe disjonctif de manire acircuitique.
En mettant sur chaque arc obtenu par orientation d'une arte la dure de l'opration dont elle
est issue, il est facile de calculer le makespan, c'est--dire la dure totale de l'ordonnancement.
On se retrouve en eet dans la mme situation que dans la mthode potentiel-tche (Section
10.2) o les dures et les prcdences sont entirement xes.

115

: arc conjonctif
: arete disjonctive

J1
4

Debut
1

Fin

J2

3
J3

8
Un exemple de graphe disjonctif.

Figure 6.

10.3.4.2. Branch-and-bound.  On dnit alors comme dans la Section 10.2, pour toute opration O , la quantit O qui est la longueur du plus long chemin de Dbut O , et de mme O
(en ne gardant que les arcs). Les calculs sont dcrits Section 10.2.
On dnit

(O) := minOO O , (O) := minOO O

et

p(O) :=

OO

p(O).

Cela permet de dnir un schma de branch-and-bound. On a en eet alors la borne suivante


sur la dure des ordonnancements :


max

k=1,...,m
o

Ok


max (O) + (O) + p(O) ,

OOk

est l'ensemble des oprations devant tre eectues sur la machine

k.

Carlier a mon-

tr qu'elle se calculait en temps polynomial. Le branchement le plus naturel consiste xer


progressivement les arcs depuis l'origine

10.3.4.3. Recherche locale.

Dbut.

Pour faire de la recherche locale (recuit simul, tabou, etc.),

il faut dnir une notion de voisinage sur les ordonnancements ralisables, ces derniers tant
identis avec les orientations acicuitique du graphe disjonctif. Par exemple, on peut dire que
deux ordonnancements ralisables sont

voisins

si on passe de l'un l'autre par

 retournement d'arc
 retournement des arcs disjonctifs d'un chemin critique.

10.4. Exercices
10.4.1. Management de projet. 

Considrons le projet de construction d'immeuble sui-

vant, dcoup en direntes tches. Pour la ligne d'une tche

116

donne, la colonne contraintes

indique quelles tches doivent tre termines pour pouvoir commencer

T.

Trouver la dure mi-

nimale de ce projet. Justier la rponse.


Tches

Description

Dure (j)

Contraintes

A
B
C
D
E
F
G
H
I
J

prparation, fondations

Dbut

construction des murs

10

plomberie extrieure

plomberie intrieure

lectricit

toit

peinture et nitions extrieures

16

B,C,F

lambris

D,E

sol

D,E

peinture et nitions intrieures

11

H,I

10.4.2. Ordonnancement de travaux sur un chantier, d'aprs de Werra, Liebling,


Hche.  Trouver le temps minimum ncessaire pour raliser les tches suivantes. Trouver
galement les chemins critiques.
Tches

Dures

10

Dbut

12

A, G

14

10

au plus tt

Contraintes

Pose de cloisons

B
menuiserie

C
vitrerie

D
construction

2 jours aprs Dbut

de l'ossature

plomberie

11

au plus tt lorsque les 4/5

charpente
de

sont termins

et au plus tard 30 jours


avant le dbut

13

15

E, I

16

pose de
la couverture

H
installation
des radiateurs

I
revtement des murs
et des cloisons

10.4.3. Cas une seule machine. 

On considre les problmes d'ordonnancement d'atelier

dans le cas une seule machine. On se met dans le cas non premptif, chaque tche est faite d'une

117

seule opration (ow-shop, job-shop et open-shop identiques). Rsoudre le minimum makespan,


minimum

Cj ,

minimum

wj C j

(o chaque tche

est munie d'un poids

j ).

10.4.4. Retour sur le problme de l'aectation de tche (cours sur les ots). 

On

revient sur l'exercice d'aectation des tches, mais cette fois on ne suppose plus que les employs
puissent travailler en parallle.
On suppose que l'on a direntes tches accomplir dont on connat les dures d'excution,
et que l'on dispose d'une ressource de main d'uvre dont on connat les comptences. A un
instant donn, un employ ne peut se consacrer qu' une seule tche la fois. Enn, on se met
dans un cadre premptif, c'est--dire qu'un employ peut interrompre son travail sur une tche,
et le reprendre plus tard.
On veut trouver un ordonnancement, c'est--dire tout instant la donne pour chaque employ

de la tche

sur lequel il travaille. On souhaite minimiser le temps ncessaire pour raliser

l'ensemble des tches (makespan).

Problme de l'aectation de tches


Donne : n tches et leurs dures t1 , . . . , tn
{1, . . . , m}

R+ ; m

employs et des sous-ensembles

qui correspondent aux employs comptents pour la tche

i.

Si

Tche : Trouver un ordonnancement, c'est--dire tout instant la donne pour chaque employ
i

de la tche

sur lequel il travaille, minimisant le temps ncessaire pour raliser l'ensemble des

tches (makespan).
Montrer que ce problme peut se rsoudre en temps polynomial.

10.4.5. Preuve du thorme de Birko-von Neumann. 

Nous allons montrer le tho-

bistochastique A (matrice carre


coecients positifs, dont la somme des termes de chaque ligne fait 1, et la somme des termes
de chaque colonne fait 1) est combinaison convexe de matrices de permutation (matrice carre
coecients dans {0, 1} ayant exactement un 1 par ligne et par colonne).
rme de Birkho-von Neumann, qui dit que toute matrice

1. Avec l'aide du thorme de Knig (qui dit que la cardinalit minimale d'une couverture
par les sommets est gale la cardinalit maximale d'un couplage), montrer le thorme de Hall

Soit G un graphe biparti, de classes U et V . Supposons que pour tout X U , on a


|N (X)| |X|, o N (X) est le voisinage de X dans G. Alors il existe un couplage couvrant U .

suivant :

2. En dduire le thorme de Birkho-von Neumann (indication : le faire par rcurrence sur


le nombre d'entres non-nulles de

A,

et construire un graphe biparti

dont les classes sont les

lignes d'une part, et les colonnes d'autre part.)

10.4.6. Job-shop deux machines. 

Considrons l'instance job-shop non-premptif sui-

vante, la che indique l'ordre des tches.

J1
J2
J3
J4
J5
J6

M1
6
5
7

2
4

M2
3
4

3
6
3

118

Proposer un ordonnancement optimal.

10.4.7. Open-shop deux machines. 

Considrons l'instance open-shop non-premptif

suivante.

J1
J2
J3
J4
J5
J6

M1 M 2
7
0
3
7
9
14
7
3
7
3
7
0

Proposer un ordonnancement optimal.

10.4.8. Dchargement et chargement d'une otte de camions. 

Un site d'une entre-

prise logistique est constitu de deux entrepts : l'un de dchargement (entrept


de chargement (entrept

C ).

Le matin, 6h,

15

D)

et l'autre

camions se prsentent, chacun contenant un

nombre de caisses connu, indiqu dans le tableau ci-dessous. Chacun de ces camions doit tre
intgralement vid dans l'entrept

avant d'accder l'entrept

C , o il sera nouveau charg

avec un nombre de caisses connu, indiqu galement dans le tableau ci-dessous. Pour des raisons
lies aux eectifs en personnel et aux contraintes de manutention, un seul camion peut tre trait
la fois par chaque entrept, et lorsqu'on commence traiter un camion, on ne peut interrompre

15 camions, sachant que le temps


de chargement et de dchargement est exactement proportionnel au nombre de caisses : 1 minute
cette opration. On souhaite nir au plus tt le traitement des

par caisse. On nglige le temps pour se rendre d'un entrept l'autre. A quelle heure peut-on
avoir ni au plus tt ? Justier votre rponse.
Camions

Nbre de caisses dcharger

Nbre de caisses charger

20

11

10

11

12

11

12

13

14

15

119

CHAPITRE 11

TOURNES

Les problmes de tournes sont parmi les plus naturels en Recherche Oprationnelle et en
Logistique. Le thme gnral est le suivant : un rseau tant donn, il s'agit de le visiter entirement en minimisant le cot. Les variations sont alors innies et peuvent concerner la nature du
rseau, la notion de visite, la dnition du cot. Des contraintes peuvent galement tre ajoutes
l'envie : fentre de temps, retour au point de dpart, etc.
Dans cette sance, nous nous intresserons aux deux problmes les plus simples formuler
dans cette famille, tous deux d'un grand intrt pratique : le
et le

problme du postier.

problme du voyageur de commerce

De plus, nous verrons qu'ils illustrent les deux aspects de la recherche

oprationnelle car, bien que trs semblables dans leur formulation, ils dirent radicalement
quant leur rsolution puisque l'un d'eux peut tre rsolu en temps polynomial par un algorithme
simple implmenter, et l'autre au contraire est

NP-dicile

et ncessite pour tre rsolu un

mlange de techniques avances et d'heuristiques.

11.1. Problme du voyageur de commerce


11.1.1. Version non oriente. 
11.1.1.1. Formulation du problme.

 Le problme du voyageur de commerce (Traveling Sa-

lesman Problem ou TSP en anglais) se formule de la manire suivante.

Problme du voyageur de commerce


Donne : Un graphe G = (V, E) et une fonction de cot sur les artes c : E R+ .
P
Tche : Trouver une chane ferme C passant par tous les sommets telle que eC c(e)

soit

minimum.
Rappelons que c'est un problme dicile, comme il a t dj signal au Chapitre 2.

Thorme 11.1.1. 

Le problme du voyageur de commerce est

NP-dicile.

Il faut donc mettre en uvre des stratgies de rsolutions plus intelligentes, et donc se tourner
vers les techniques de la recherche oprationnelle. Nous allons prsenter trois approches : heuristique, branch-and-bound, recherche locale. Les grands progrs de ces dernires annes dans la
rsolution du problme du voyageur de commerce rsident principalement dans les techniques de
branch-and-bound, et plus prcisment dans le calcul des bornes. On sait de nos jours rsoudre
des instances

1000 000 villes, alors qu'il y a une vingtaine d'annes, on ne dpassait pas quelques

Graphe complet des plus courtes


chanes

b
2

c
1

3
e

a
2

b
4
3

3
e
1

4
c

1
d

Le problme du voyageur de commerce peut se reformuler comme un problme de cycle hamiltonien dans un graphe complet.
Figure 1.

centaines de villes (la puissance de calcul joue un rle trs secondaire dans ces performances 
voir la discussion sur la complexit du Chapitre 2).
Les approches que nous allons dcrire s'noncent plus facilement sous la reformulation suivante
sur le graphe complet
comme cot

c(xy)

le

Kn . Elle s'obtient en prenant le mme ensemble de sommets et en mettant


cot du plus court chemin dans G de x y . En eet, prenons une chane

G passant par tous les sommets. La succession des premiers passages en chaque sommet
Kn . Rciproquement,
un cycle hamiltonien de cot minimum dans Kn induit une chane ferme de mme cot dans G.
Cela permet de conclure que le cycle hamiltonien de plus petit cot dans Kn induit une tourne
de cot minimum dans G.

ferme de

plus le sommet de dpart induit un cycle hamiltonien de cot infrieur dans

Voir l'illustration de cette reformulation sur la Figure 1.

Problme du voyageur de commerce (reformulation)


Donne
artes

Kn = (V, E)
c(xy) + c(yz) c(xz)

: Le graphe complet

c : E R+

avec

avec

sommets et une fonction de cot sur les

pour tout

x, y, z V .

Tche : Trouver un cycle hamiltonien de cot minimum.


11.1.1.2. Une heuristique naturelle.

 L'heuristique la plus naturelle est problablement celle

consistant toujours se rendre la ville la plus proche non encore visite. Cette heuristique
s'appelle

nearest-neighbor.

Ses performances sont en gnral trs mauvaises.

122

5
6
4

7
2

7
2

3
6
6
4
4

Figure 2.

L'heuristique de Christods.

11.1.1.3. Heuristique de Christods.  La plus clbre heuristique du voyageur de commerce


dans le cas non-orient est l'heuristique de Christods qui fournit une 3/2-approximation. L'algorithme est trs simple (voir l'illustration Figure 2).

J comme l'ensemble de sommets de T ayant un degr impair dans T ; trouver un


couplage M de Kn de poids mininimum, reliant les sommets de J .
M T est un graphe eulrien contenant tous les sommets de Kn ; suivre

Trouver un arbre couvrant

de poids minimum ; dnir

un cycle eulrien ; prendre des  raccourcis  quand ncessaire.

Cet algorithme utilise deux routines : celle de l'arbre couvrant de poids minimum, qui est
dcrite au chapitre sur la conception de rseau (Chapitre 12) ; et celle du couplage parfait de
poids minimum, non dcrit dans ce cours. Il sut de savoir qu'un

couplage parfait est un couplage

qui couvre tous les sommets d'un graphe. Si le graphe est pondr, et s'il existe un tel couplage,
on sait trouver un couplage parfait de poids minimum avec un algorithme d'Edmonds.

L'algorithme polynomial dcrit ci-dessus fournit une 3/2-approximation


au problme du voyageur de commerce.
Thorme 11.1.2. 

123

H = cycle hamiltonien de plus petit co


ut
J = sommets de degre impair dans T .
J = {j1 , j2 , . . . , js }

inegalite triangulaire :
c(M ) + c(M ) c(H)

j2
j1

H
j3

j6

j5

j4

Figure 3.

Illustration de la preuve du facteur d'approximation de l'heuristique de Christods.

Dmonstration.

 Soit

le cycle hamiltonien obtenu la n. Il faut prouver que l'on obtient

bien

X
eH

3
ce OP T.
2

M est 21 OP T .
un cycle hamiltonien optimal. J = {j1 , . . . , js } sont les sommets de degr impair de T ,
Soit H
. Considrons le couplage ji ji+1 pour i = 1, 3, . . ., ainsi
numrot dans l'ordre de parcours de H
que son  complmentaire  ji ji+1 pour i = 2, 4, . . .. La somme de leur poids est OP T , par
1
ingalit triangulaire. Par consquent, l'un des deux a un poids OP T . A fortiori, c'est le cas
2
pour M (car c'est le couplage de plus petit poids sur J ). La preuve est illustre Figure 3.
Pour cela, il faut prouver que le poids de

11.1.1.4. Recherche locale.

 On peut aussi se demander si l'on peut attaquer le problme du

voisinage. Le
voisinage 2-OPT est le plus classique. On dit que deux cycles hamiltoniens C, C 0 sont voisins
voyageur de commerce par des mta-heuristiques. Il faut alors dnir la notion de

s'ils dirent d'exactement deux artes

|C \ C 0 | = |C 0 \ C| = 2,

voir Figure 4 On peut alors

intgrer ce voisinage dans n'importe quel schma de mtaheuristique du type recherche locale
(mthode tabou, recuit simul,...).
Des gnralisations du voisinage
et consistent changer

2-OPT

existent, ce sont des voisinages

k -OPT

avec

k 2,

artes. En multipliant ce type de voisinages, on peut parvenir des

recherches locales extrmement performantes, tout en restant prudant sur la taille du voisinage
explorer : un

trop grand conduirait un voisinage trop grand, compltement ingrable par

une recherche locale.


Il existe une recherche locale spcique au voyageur de commerce : l'heurisique de Lin-

21].

Kernigan [

C'est considre comme la meilleure heuristique pour le problme du voyageur

124

de commerce. Il en existe direntes versions, toutes bases sur le voisinage


gnral

k {2, 3}.

k -OPT,

avec en

On considre que cette heuristique, bien implmente, est capable de trouver

en moins d'une minute sur une machine du commerce l'optimum d'instances jusqu'

1000 villes.

11.1.1.5. Formulation sous forme d'un programme linaire en nombres entiers. Rappelons
B o
qu'un vecteur d'incidence d'une partie A d'un ensemble B est le vecteur x {0, 1}

xe =

1
0

si

eA

sinon.

On peut modliser le problme du voyageur de commerce de faon trs compacte sous forme
d'un programme linaire en nombres entiers.

Les vecteurs d'incidences des cycles hamiltoniens sont exactement les


vecteurs entiers du systme
Proposition 11.1.3. 

0x 1
eE
P e
x =2 vV
Pe(v) e
e(X) xe 2 X V, X 6= , V.

Dmonstration.

x le vecteur d'incidence d'un cycle hamiltonien. Il est clair que ce vecteur


ci-dessus. Rciproquement, soit x un vecteur satisfaisant les contraintes

 Soit

satisfait les contraintes


ci-dessus. Comme

0x 1
eE
P e
e(v) xe = 2 v V,
les artes

e telles que xe = 1 forment une collection disjointe de cycles lmentaires couvrant tous

les sommets du graphe. Il sut donc de montrer qu'il n'y a qu'un seul cycle dans la collection.
C'est une consquence des ingalits

e(X) xe

pour tout

y a un cycle qui ne couvre pas tous les sommets, en posant

X V, X 6= , V .

par ce cycle, on obtient une contradiction.

Figure 4.

Illustration du voisinage 2-OPT.


125

En eet, s'il

l'ensemble des sommets couverts

Rsoudre le problme du voyageur de commerce, c'est donc rsoudre le programme


Min

(32)

11.1.1.6. Branch-and-cut.

c(e)xe
0 xe 1
xe Z
P
x =2
Pe(v) e
e(X) xe 2
eE

eE
eE
vV
X V, X 6= , V.

 On peut essayer d'en tirer une borne pour construire une mthode

de branch-and-bound. Le problme, c'est que les contraintes sont en nombre exponentiel. On


peut en prendre moins de contraintes, de manire obtenir des bornes calculables en temps
raisonnable, mais la qualit des bornes est moindre.
Min
(33)

c(e)xe
0 xe 1
eE
P
x
=
2
vV
Pe(v) e
e(X) xe 2 pour certains X V, X 6= , V.
eE

Dans les branch-and-bound, la qualit de la borne est cruciale. Une technique ecace, appele

branch-and-cut,

permet d'amliorer la qualit de la borne. Elle consiste suivre le schma d'un

branch-and-bound en agrandissant le programme linaire qui fournit les bornes au fur et mesure
de l'exploration de l'arbre de branchement.
On rsout le programme (33). Supposons que l'on ait une solution
Il y a
1.

3 possibilits
x est le vecteur d'incidence d'un cycle hamiltonien.

du programme linaire.

On a trouv une solution

optimale pour le nud courant de l'arbre de branchement.


2.

On trouve une ingalit du type

e(X) xe

qui soit viole.

Cela se fait en

temps polynomial : c'est un problme de coupe minimum (voir le Chapitre 5). On ajoute
la contrainte viole au programme linaire, et on rsout le nouveau programme linaire.
3.

On ne trouve aucune ingalit de ce type qui soit viole, mais x n'est pas
entier. On a une borne pour le nud de l'arbre de branchement. Il faut brancher sur ce
nud et recommencer pour les ls.

11.1.1.7. Relaxation lagrangienne.

 Nous avons vu que dans certains cas, la

relaxation la-

grangienne pouvait fournir de bonnes bornes, si une partie des contraintes est  facile .
C'est le cas ici (Held et Karp 1970). On peut rcrire le systme linaire (32)

0 xe 1
xe Z
P
x =2
Pe(v) e
eE[X] xe |X| 1

eE
eE
vV
X V, X 6= , V.

E[X] dsigne l'ensemble des artes induites par X , i.e. l'ensemble des artes ayant leurs deux
X.
P
P
P
P
P
En eet 2
xe + e(X) xe = vX e(v) xe . Donc, si e(v) xe = 2 pour tout
eE[X]
P
P
v V , on a 2 eE[X] xe + e(X) xe = 2|X|, d'o l'quivalence des deux formulations. En
faisant jouer un rle particulier au sommet 1, on peut rcrire le systme sous la forme

extrmits dans

126

7
2

3
6
4
5
Figure 5.

Un 1-arbre.

0 xe 1
eE
xe Z
eE
P
x =2
Pe(1) e
x |X| 1 X {2, . . . , n}, X 6=
PeE[X] e
x
=n
PeE e
v {2, . . . , n}.
e(v) xe = 2
P
En  oubliant  les contraintes
e(v) xe = 2 pour v {2, . . . , n}, on obtient un systme
linaire qui dcrit les 1-arbres. Un 1-arbre est un arbre couvrant {2, . . . , n}, avec deux artes
supplmentaires quittant 1 (voir la Figure 5) et se calcule en temps linaire (la routine de calcul
des arbres couvrants de poids minimum est dcrite au Chapitre 12).
On a tout ce qu'il faut pour calculer une borne par relaxation lagrangienne. Le lagrangien est

L(x, ) :=

ce xe +

n
X

i=2

eE

e(i)

xe 2 .

La borne infrieure sur le cycle hamiltonien est donne par

max G()

Rn1
o

G() := 2
en posant

1 := 0,

X
iV

pouvoir calculer

min

vecteur d'incidence d'un 1-arbre

L(x, )

soit encore

G() = 2
On sait calculer

i +

G() en temps
maxRn1 G()

X
iV

i +

min
est un 1-arbre

(cij + i + j ).

ijT

polynomial, pour tout

cela sut (voir Chapitre 7) pour

par une mthode de sur-gradient.

Cette borne est trs bonne.

127

Thorme 11.1.4

tion linaire (32).

(Held Karp 1970).

11.1.1.8. Branchement.

maxRn1 G() est gal la solution de la relaxa-

 En gnral, dans un branch-and-bound ou dans un branch-and-cut,

le problme rsolu en un nud de l'arbre est de mme nature qu' la racine de l'arbre, laquelle
consiste en la rsolution du relch continu du problme de dpart. Dans le cas du voyageur
de commerce, ce n'est pas le cas. En un nud de l'arbre de branchement, on doit rsoudre des
tournes contraintes passer par certaines artes ou en viter d'autres, ce qui est

a priori

un problme plus gnral que le problme de dpart. Nous expliquons maintenant une faon
classique de traiter cette dicult.

La faon classique de brancher pour le voyageur de commerce est de choisir une arte
d'crire l'ensemble des solution
l'arte

e.

X = Xe (X \Xe ) o Xe

e,

et

est l'ensemble des solutions empruntant

Par consquent, tout noeud de l'arbre de branch-and-bound est de la forme

SA,B = {S S : A S, B S = }
Rsoudre le problme au niveau du noeud

SA,B

avec

A, B E.

consiste donc chercher le cycle hamiltonien

de plus petit cot empruntant toutes les artes de

A,

et aucune de

B.

Il reste dcrire la faon

de calculer des bornes lorsqu'on branche. On pourrait se dire qu'il sut de calculer des
avec des artes prescrites (celles de

A)

et des artes interdites (celles de

B ),

1-arbres

mais il n'y a pas

d'algorithme simple qui eectue cette tche. Une petite astuce permet de pallier cette dicult.
On niveau d'un nud de l'arbre de branchement, on a donc un problme de voyageur de
commerce avec contraintes (ensemble d'artes prescrites et interdites). Une petite astuce permet
d'crire ce problme de voyageur de commerce  avec contraintes , comme un problme de
voyageur de commerce sans contrainte, simplement en modiant la fonction de cot.
Si on pose

c(e)
c0 (e) :=
c(e) + C

c(e) + 2C
o

C :=

eE

c(e) + 1,

si
si
si

eA
e
/ AB
e B,

on a la proprit, qui peut se dmontrer assez aisment,

Les cycles hamiltoniens de SA,B sont exactement ceux dont le nouveau cot est (n+1|A|)C .
De plus, les cycles hamiltoniens dans SA,B ont un cot qui dire de l'ancien cot d'exactement
(n |A|)C .
On peut donc calculer des bornes pour un problme de voyageur de commerce non contraint,
avec la nouvelle fonction de cot, pour obtenir des bornes infrieures pour le problme avec
contraintes.

11.1.2. Version oriente. 


11.1.2.1. Formulation.

 On a aussi une version oriente de ce problme :

Problme du voyageur de commerce, version oriente


Donne : Un graphe D = (V, A) avec n sommets et une fonction de cot sur les artes w : A
R+ .

Tche : Trouver un chemin ferm de cot minimum passant par tous les sommets.
De mme que dans le cas non-orient, on peut reformuler la problme sur le graphe complet
orient (toute paire de sommets est relie par deux arcs de sens oppos).

128

Problme du voyageur de commerce, version oriente (reformulation)


Donnes : Un graphe Kn = (V, A), avec un arc (i, j) pour tout i 6= j V , et une fonction de
cot sur les arcs

c : A R+ .

Tche : Trouver un circuit hamiltonien C

passant par tous les sommets tel que

aC

c(a)

soit

minimum.
Comme dans le cas non-orient, on a :

Thorme 11.1.5. 

dicile.

Le problme du voyageur de commerce dans sa version oriente est

NP-

Cela peut se retrouver partir du Thorme 11.1.1. En eet, en prenant un graphe nonorient, on peut ddoubler les artes pour en faire deux arcs parallles mais de sens opposs. On
se ramne alors au problme du voyageur de commerce sur un graphe orient, et si on avait un
algorithme polynomial le rsolvant, on en aurait galement un dans la version non-oriente, ce
qui contredit le Thorme 11.1.1.

11.1.2.2. Algorithmes.

 Le problme dans se version oriente est considr comme plus di-

cile.
Voici un rsum de la situation.
 Complexit : pareil, c'est

NP-dicile.

 Heuristique nearest-neighbor : galement mauvaise.


 Heuristique avec un ratio d'approximation ( la Christods) : c'est une question ouverte.
On ne connat ce jour aucun algorithme fournissant en temps polynomial une solution
dans un rapport born avec l'optimum.
 Recherche locale : mme voisinage. En revanche, Lin-Kernighan fonctionne beaucoup moins
bien.
 Branch-and-Bound : pareil :
 La formulation par programme linaire semblable.
 La relaxation lagrangienne semblable : on cherche alors un

1-arbre orient,

voir ci-

dessous.
Un




1-arbre orient

est un ensemble

d'arcs tel que le

F est un arbre sur {2, . . . , n}


degin (v) = 1 si v {2, . . . , n}
degin (1) = degout (1) = 1.

On sait trouver un tel ensemble en temps polynomial (thorie des

r-arborescences).

11.2. Problme du postier


11.2.1. Version non oriente. 
11.2.1.1. Formulation.

 Le problme du postier se formule de la manire suivante :

Problme du postier
Donne : Un graphe G = (V, E) et une fonction de cot sur les artes c : E R+ .
Tche : Trouver une chane ferme de cot minimum passant par toutes les artes
une fois.

129

au moins

Ici,

peut tre vu comme la modlisation d'une ville, les sommets tant les intersections de

rues et les artes les portions de rues. Les poids peuvent tre le temps de parcours des rues. Le
problme est alors celui que se pose un facteur voulant dposer tout son courrier en un minimum
de temps.

11.2.1.2. Algorithme.

Contrairement au problme du voyageur de commerce, il existe un

algorithme polynomial simple qui trouve la tourne optimale. Remarquons dj que dans le cas
o le graphe est eulrien, la question est triviale.
Sinon, on a la proprit suivante.

Lemme 11.2.1.  La chane ferme de cot minimum qui passe par toutes les artes au moins
une fois passe au plus deux fois par chaque arte.

Dmonstration.

G = (V, E) le graphe. Soit une chane C passant par toutes les artes au
moins une fois. Pour chaque arte e, on construit des artes e1 , . . . , er correspondant chacun
0
0
des passages sur e. Notons G ce nouveau (multi)graphe. G est eulrien. On a donc cr des
copies de certaines artes de manire rendre G eulrien. Rciproquement, si on cre des copies
d'artes pour rendre G eulrien, on a la possibilit de parcourir le multigraphe en passant par
chaque arte du multigraphe une fois et une seule, et cela induit sur G une chane C passant
 Soit

par toutes les artes au moins une fois.


Soit un multigraphe
si on enlve

2p

G0

reprsentant de

Chercher la chane de

e prsente un nombre s de fois s 3. Alors,


s > 2p, alors G0 reste eulrien.

eulrien, et soit une arte

e,

avec

pN

et

qui passe moindre cot par toutes les artes consiste donc

dupliquer moindre cot des artes de

G an de le rendre eulrien. Ici, le cot de la duplication

est gal la somme des cots des artes dupliques.


On peut donc reformuler le problme du postier de la manire suivante.

Problme du postier
Donne : Un graphe G = (V, E) et une fonction de cot sur les artes c : E R+ .
P
Tche : Trouver F E tel que degF (v) = degE (v) mod 2 pour tout v V , et tel que eF c(e)
soit minimal.

Trouver F E tel que degF (v) = degE (v) mod 2 pour tout v V et tel que eF c(e)
soit minimal : On peut vrier que, si les c(e) 0, un tel F est constitu de chanes appariant
P

les sommets de degr impairs de


Un tel

(qui sont en nombre pair).

est alors facile trouver : soit

considre le graphe complet

c(jj 0 ) =
sur chaque arte

jj 0

de

sur

J,

l'ensemble des sommets de degr impair de

G.

On

et on met un cot

le cot de la chane de plus petit cot entre

et

j0

K . Le couplage parfait de plus petit cot donne alors la solution (on sait

trouver un tel couplage en temps polynomial, comme indiqu dans le paragraphe sur l'heuristique
de Christods).
D'o

Thorme 11.2.2. 

Il existe un algorithme polynomial qui rsout le problme du postier .

11.2.2. Version oriente. 


130

Figure 6.

11.2.2.1. Formulation.

Une tourne dans le plan.

 La version oriente existe galement. Dans l'exemple de notre facteur,

cela permet de prendre en compte l'existence de sens interdits.

Problme du postier, version oriente


Donne : Un graphe D = (V, A) et une fonction de cot sur les arcs c : A R+ .
Tche : Trouver un chemin ferm de cot minimum passant par tous les arcs au moins une fois.
11.2.2.2. Algorithme.

 Et de mme que pour la version non oriente, on a un algorithme de

rsolution exacte en temps polynomial, simple implmenter. En eet, un tel chemin est une

circulation x RA
+ de cot minimum, tudie au Chapitre 5, pour des capacits infrieures la = 1
et des capacits suprieures ua = + pour tout a A. (Rappelons qu'une circulation satisfait
la loi de Kircho en tous les sommets  c'est un ot sans source ni puits). Rciproquement, si
on a une circulation

x RA
+

entire satisfaisant ces contraintes, et si

est faiblement connexe,

en vertu du Thorme 2.2.2, il existe un chemin ferm passant par chaque arc un nombre

xa

de

fois.

Thorme 11.2.3. 

sa version oriente.

Il existe un algorithme polynomial qui rsout le problme du postier, dans

11.3. Exercices
11.3.1. Nombre de sommets de degr pair. 

Montrer que dans tout graphe, le nombre

de sommets de degr impair est pair.

11.3.2. Voyageur de commerce dans le plan. 

On considre la tourne de la Figure 6.

Les distances sont les distances euclidiennes ( vol d'oiseau ). Montrez que cette tourne est
optimale en vous inspirant de la Figure 7.

11.3.3. Voyageur de commerce, cas orient. 


 Ecrire la relaxation linaire du problme du voyageur de commerce dans le cas orient,
comme cela a t fait pour le cas non-orient dans le cours.
 Expliquer pourquoi une relaxation lagrangienne dans ce cas conduit au calcul des  1-arbres
orients .

131

Cela permet-il de prouver l'optimalit de la tourne de la Figure 6 ?

Figure 7.

11.3.4.

T -joins.

Soit

un graphe avec des cots

accepte des cots ngatifs). Soit

c:ER

(contrairement au cours, on

un ensemble de cardinalit paire. Notons

l'ensemble des

l'ensemble des sommets incidents un nombre impair d'artes de


artes de cot ngatif, T
E , et enn d : E R+ avec d(e) := |c(e)|. On dit que J est un T -join si degJ (v) est impair si

vT

A4B = (A \ B) (B \ A)).

et pair sinon. (rappel

1. Montrer que

c(J) = d(J4E ) + c(E ).

2. Montrer que

3. Conclure que

est un

T -join

est un

si et seulement si

T -join

J4E

est un

de cot minimal pour le cot

un (T 4T )-join de cot minimal pour le cot

(T 4T )-join.
si et seulement si

J4E

est

d.

4. Conclure que l'on sait trouver en temps polynomial un

T -joint

de cot minimum, quelque

soit le cot.

11.3.5. Plus courte chane dans les graphes sans cycle absorbant. 

Utiliser l'exercice

3
prcdent pour montrer que l'on sait calculer en O(n ) une plus courte chane dans les graphes
sans cycle absorbant (rappel : un cycle absorbant est un cycle de cot total
couplage parfait de cot min se fait en

< 0;

trouver un

O(n3 )).

11.3.6. Tournes avec contraintes de temps. 

Un reprsentant de commerce doit visiter

des clients situs en des villes direntes. Il a x un rendez-vous pour chacun de ses clients,
i.e. pour tout client
tant

bi .

i,

le reprsentant sait qu'il doit passer aprs l'instant

ai ,

mais avant l'ins-

Il souhaite optimiser sa tourne (et en passant vrier que les contraintes ne sont pas

contradictoires). On suppose qu'il sait le temps qu'il lui faut pour aller d'une ville une autre.
Proposer une formulation sous la forme d'un programme linaire mixte (variables entires et
continues), qui, contrairement au problme du voyageur de commerce usuel, ne contient pas un
nombre exponentiel de contraintes.

11.3.7. Voyageur de commerce et programmation dynamique. 


tance suivante : un graphe complet
dnis pour toute paire

v, w

Kn = (V, E)

sommets (n

Considrons l'ins-

3), des cots positifs c(vw)


s V . On cherche la chane

de sommets, et un sommet particulier

hamiltonienne de plus petit cot dont une des extrmits est


1. En prenant comme tats les couples

s.

(X, v) tels que v X V \ {s}, montrer que l'on peut

crire une quation de programmation dynamique permettant le calcul de la chane optimale.


Pour les questions suivantes, on peut se servir des identits indiques la n de l'examen.
2. Quel est le nombre d'tats possibles ?

132

On prend comme opration lmentaire l'addition.


3. Estimez le nombre d'additions que ferait un algorithme exploitant cette quation de programmation dynamique. Comparez ce nombre au nombre d'additions que ferait un algorithme
qui numrerait toutes les solutions.
4. Si votre ordinateur est capable de faire
pour chacune des valeurs suivantes de

n,

million d'oprations lmentaires par seconde,

indiquez (par un calcul  la louche) si vous serez

capable de rsoudre le problme avec cet algorithme en


mois,

an,

seconde,

heure,

jour,

semaine,

sicle :

n = 15 n = 30 n = 45.
5. Comment utiliser l'algorithme pour rsoudre le problme du voyageur de commerce (cycle
hamiltonien de plus petit cot) sur

Kn ?

133

CHAPITRE 12

CONCEPTION DE RSEAUX

Les rseaux sont omniprsents. Qu'ils soient routiers, ferrs, informatiques, lectriques ou
gaziers, ils ont souvent des rles stratgiques et conomiques cruciaux, et leur robustesse (i.e.
leur capacit assurer leur mission mme en cas de dfaillance locale) est une qualit souvent
recherche.
L'objet de ce chapitre est de prsenter quelques modles et algorithmes de base dans le
domaine de la conception de rseau robuste  champ essentiel de la recherche oprationnelle.
Nous tudierons deux problmes :
 celui de l'arbre couvrant de poids minimal : tant donn un graphe pondr, trouver un
arbre inclus dans ce graphe, de poids minimal, tel que tous les sommets soient relis par
l'arbre.
 celui de l'arbre de Steiner de poids minimal, qui gnralise le problme prcdent : tant
donn un graphe pondr, trouver un arbre inclus dans ce graphe, de poids minimal, tel
que tous les sommets d'un sous-ensemble prdtermin soient relis par l'arbre.

12.1. Quelques rappels


Un

arbre

est un graphe connexe sans cycle. On a la proprit suivante.

Proposition 12.1.1. 

Tout arbre n sommets a n 1 artes.

Dmonstration.  Par rcurrence sur n. Si n = 1, c'est vident. Pour n 2, prendre un sommet


(1) . Retirer ce sommet de l'arbre. Le graphe restant reste un arbre. Par rcurrence, il
de degr 1
a n 1 sommets et n 2 artes. En remettant le sommet que l'on vient de retirer, on ajoute un
sommet et une arte.
Un

arbre couvrant

un graphe

termes, tous les sommets de

G = (V, E)

est un arbre

sont couverts par

T,

T := (V, F ) avec F E . En d'autres


T sont des artes de G. Voir

et les artes de

une illustration sur la Figure 1.


Un graphe sans cycle mais pas forcment connexe est appel

fort.

1. Si on veut tre prcis, il faut encore prouver qu'un tel sommet existe. Cela a l'air vident,... mais il faut
parfois se mer des vidences en thorie des graphes. Pour le prouver, on prend un sommet quelconque de
l'arbre. On suit une chane partant de ce sommet en s'interdisant de repasser par un mme sommet. Par nitude
de l'arbre, la chane s'arrte en un sommet v . Si v est de degr 2, alors il existe une autre arte que par celle
par laquelle on est arriv dont l'autre extrmit est sur la chane. Or ceci est impossible, car il y aurait alors un
cycle sur l'arbre. Donc le sommet v est de degr 1.

Figure 1.

Un exemple d'arbre couvrant.

12.2. Arbre couvrant de poids minimal


n villages,
(n = 7)

Considrons le problme suivant. On a

sont donnes dans le tableau suivant

A
A
B
C
D
E
F
G

les distances entre le village

et le village

0 3 8 9 10 5 5
3 0 9 9 12 5 4
8 9 0 2 10 9 9
9 9 2 0 11 9 8
10 12 10 11 0 11 11
5 5 9 9 11 0 1
5 4 9 8 11 1 0

On veut trouver le rseau routier de distance totale minimale qui relie tous les villages, sachant
qu'un tronon relie toujours deux villages (il n'y a pas d'embranchement sur les routes).
On peut modliser le problme prcdent par un graphe complet
l'ensemble des villages et
lments de

V.

soit connexe.

Remarque.

est
des

w : E R+ .
P
F E tel que eF w(e) soit minimal et tel que le graphe

On a une fonction de poids

On cherche alors un sous-ensemble

(V, F )

Kn = (V, E), o V
ij avec i 6= j

tous les tronons possibles, i.e. toutes les paires

 Le problme ci-dessus admet toujours une solution qui soit un arbre. En eet,

s'il ne l'tait pas, il y aurait ncessairement un cycle puisqu'il est connexe. On pourrait alors
supprimer une arte de ce cycle sans faire disparatre la connexit et sans dtriorer le poids
total puisque la fonction de poids est valeur

0.

On cherche donc rsoudre un problme d'arbre couvrant de poids minimal.

136

Une autre application a dj t vue : les arbres couvrants apparaissent dans la relaxation
lagrangienne du problme du voyageur de commerce (borne du

1-arbre),

voir Chapitre 11.

Cela justie la formulation sous forme de problme.

Problme de l'arbre couvrant de poids minimal


Donne : Un graphe G = (V, E), une fonction de poids w : E R.
Tche : Trouver un arbre couvrant de plus petit poids.
Pour ce problme, il y a un  petit miracle  puisque nous allons voir qu'il existe un algorithme
polynomial glouton qui le rsout : l'algorithme de Kruskal. Rappelons qu'un algorithme est dit

glouton

si chaque itration on fait le meilleur choix local. Ces algorithmes sont rarement

optimaux (penser aux algorithmes FIRST-FIT et NEXT-FIT du bin-packing : ils sont gloutons,
mais non-optimaux ; de mme pour l'algorithme glouton pour le sac--dos).
L'algorithme de Kruskal se dcrit de la manire suivante.
 Trier les artes par poids croissant :
 Poser

e1 , . . . , e m .

F := {e1 }, i := 1.

 Rpter

i := i + 1.
F {ei }.
Faire

Thorme 12.2.1. 

minimal.

Si

F {ei }

ne contient pas de cycle, faire

L'algorithme de Kruskal rsout le problme de l'arbre couvrant de poids

La preuve s'appuie sur le lemme suivant, illustr Figure 2. On dit qu'une fort

bonne

F :=

s'il existe un arbre couvrant

T =

(V, F 0 ) de poids minimal avec

F0

F = (V, F ) est

Soit F = (V, F ) une bonne fort, soit une coupe (X) (avec X V )
disjointe de F et e une arte de poids minimal dans (X). Alors (V, F {e}) est encore une
bonne fort.
Lemme 12.2.2. 

Dmonstration.  Soit T un arbre couvrant de poids minimal contenant F . Soit P le chemin


0
reliant dans T les extrmits de e. P intersecte (X) en au moins une arte f . Alors T :=
T \ {f } {e} est encore un arbre couvrant. D'aprs la dnition de e, on a w(e) w(f ), et
0
0
donc w(T ) w(T ). Par consquent, T est encore un arbre couvrant de poids minimal. Comme
F {e} est contenu dans T 0 , c'est encore une bonne fort.

Preuve du Thorme 12.2.1.  L'algorithme de Kruskal ajoute chaque itration l'arte de plus
petit poids dans la coupe (K), o K est l'une des deux composantes connexes de F = (V, F )
incidentes ei . Comme (K) est disjointe de F , le Lemme 12.2.2 s'applique.
Tout au long de l'algorithme, (V, F {ei }) est donc une bonne fort. En particulier la

dernire itration o la fort se transforme en arbre. Par dnition d'une bonne fort, cet arbre
est optimal.

Remarque.

 Cet algoritme fonctionne quelque soit le signe des poids des artes. Dans l'exemple

introductif, on supposait que les poids taient tous positifs ; cela pour permettre de conclure que
le problme du graphe connexe couvrant de plus petit poids pouvait se ramener au problme
de l'arbre couvrant de plus petit poids. Ce dernier problme lui se rsout par l'algorithme de
Kruskal indpendament du signe du poids des artes.

137

1
2

aretes dune bonne foret

Une bonne fort, qui reste une bonne fort lorsqu'on ajoute l'arte e (on
suppose que e est de poids minimal dans (X)).

Figure 2.

12.3. Arbre de Steiner


12.3.1. Gnralits. 

Dans le problme de l'arbre de Steiner, c'est seulement un sous-

ensemble des sommets du graphe que l'on souhaite voir reli par un arbre. Curieusement, alors
que le problme de l'arbre couvrant de poids minimal est polynomial, celui de l'arbre de Steiner
est

NP-dicile.

Le problme se formalise comme suit.

Problme de l'arbre de Steiner


Donne : Un graphe G = (V, E), une fonction de poids w : E R+ et un ensemble de sommets
S V,

appels

terminaux.

Tche : Trouver un arbre T

de plus petit poids couvrant

S.

Les applications sont innombrables, et ce problme apparat frquemment dans la conception


de rseau en tant que tel ou en tant que sous-routine.

Thorme 12.3.1. 

sont gaux 1.

Le problme de l'arbre de Steiner est NP-dicile, mme si tous les poids

Comme d'habitude dans ce cas-l, il faut se poser la question de l'existence d'algorithme


d'approximation, d'algorithmes exacts ecaces ou de cadre adapt la recherche locale. C'est
ce que nous allons voir maintenant.

138

12.3.2. Une heuristique  la Christods . 

Il existe une heuristique similaire celle

de Christods pour le problme du voyageur de commerce, qui se dcrit trs simplement.

G = (V, E) connexe. On construit le graphe complet K = (S, E 0 ) sur S et sur


0
chaque arte uv E on met le poids w
du plus court chemin de u v dans G (mme construction
On suppose

que pour le problme du voyageur de commerce  voir Chapitre 11).


On prend l'arbre

T0

de plus petit poids couvrant

T 0 induit un graphe partiel

de

G.

pour le poids

w
.

On en prend un arbre couvrant de plus petit poids

w.

L'algorithme est illustr Figure 12.3.2.

L'algorithme dcrit ci-dessus fournit une solution de poids au plus 2 fois


plus grand que la solution optimale.
Thorme 12.3.2. 

Dmonstration.

l'arbre de Steiner
Soit

w(T
0)
w(T ).

 Il sut de prouver que


de poids minimum

est au plus deux fois plus grand que celui de

l'arbre de Steiner de plus petit poids. Dupliquons chacune des artes de

T.

On a donc

maintenant un graphe eulrien que l'on peut parcourir en passant exactement une fois sur chaque
arte : cycle

C.

Cela induit un cycle hamiltonien

premire apparition dans


u

C.

: on parcourt

dans l'ordre de leur

dans

On a nalement

C0

3
4
7
4

1
1

4
2

5
w

2
1
1

2
v

2
v
w

Figure 3.

de Steiner.

Illustration de l'heuristique  la Christods  pour le problme de l'arbre

139

w(T
0 ) w(C
0 ) w(C) = 2w(T ).

12.3.3. Programmation dynamique. 

Dreyfus et Wagner [ ] ont trouv une mthode

assez astucieuse  base sur la programmation dynamique (voir Chapitre 3)  qui permet de
calculer un arbre de Steiner de poids minimum, quand le nombre d'lments de

n'est pas trop

grand.
En eet, si on pose pour

U V

et

x
/U

p(U ) := min{w(T ) : T

est arbre de Steiner pour

U },

on a l'quation de programmation dynamique suivante

p(U {x}) =

(34)
o

min

yV,$U 0 $U

(dist(x, y) + p(U 0 {y}) + p(U \ U 0 {y})).

dist(x, y) est la distance de x y , i.e. la longueur d'une plus courte chane de x y en prenant

comme longueur des artes (voir Chapitre 3 pour ces calculs de plus courts chemins).

est reli par une chane un sommet

Pour voir que l'quation (34) est vraie, supposons d'abord que

 soit
 soit

yU
y
/U

et

l'quation est vraie car alors

U 0 {y}

est une feuille. Dans ce cas,

de degr au moins 2.

Pour le premier point, l'quation (34) est vraie en posant

couvrant

qui est tel que

Pour le second point,

est le point de rencontre d'une chane partand de

et d'un arbre couvrant

Enn, supposons que

U 0 := {y}.

U \ U 0 {y}.

x,

d'un arbre

ne soit pas une feuille. Dans ce cas l'quation est vraie pour

y = x.

L'quation (34) calcules de proche en proche conduit

Thorme 12.3.3.  Le problme de l'arbre de Steiner de poids minimum se rsout de manire


exacte en O(3s ns + mn + n2 log n), o s est le nombre d'lments de S .

Elements de preuve.

 La preuve de l'quation (34) a t esquisse ci-dessus. Il reste expliquer

la complexit.

O(3s n2 ) vient du calcul de p(U ). Supposons que l'on ait calcul tous les p(U ) pour un
i
cardinal |U | = i. Le calcul d'un p(U ) pour une cardinalit |U | = i+1 se fait en n2 (interprtation
Ps1 i s 
s
de l'quation (34)). La complexit totale est donc de l'ordre de
i=0 n2 i+1 = O(3 ns).
2
Le terme O(mn + n log n) vient du calcul des plus courtes distances.
Le terme

Une approche par la programmation dynamique peut donc tre pertinente si le nombre

de

terminaux est petit.

12.3.4. Branch-and-cut. 

L'approche branch-and-cut (voir le Chapitre 11 pour une pre-

mire approche du branch-and-cut) repose sur la proposition suivante.

Soit r un sommet arbitraire, r S . Rsoudre le problme de l'arbre


de Steiner de cot minimum revient rsoudre
P
w(e)xe
minxRE
PeE
s.c.
/X
e(X) xe 1 pour tout X V tel que r
et X S 6=
xe {0, 1}
e E.
Proposition 12.3.4. 

140

Dmonstration.

 Si

est vecteur d'incidence d'un arbre de Steiner, il est clair qu'il satisfait

les ingalits ci-dessus. Rciproquement, soit

une solution optimale du programme linaire.

P
T := {e E : xe = 1}. D'aprs l'ingalit e(X) xe 1, l'ensemble T est connexe.
T contient un cycle C , on peut trouver une arte e C telle que w(e) = 0, arte que l'on

Notons
Et si

peut supprimer sans que les contraintes se retrouvent violes.

Le programme linaire en nombres entiers prcdent a deux caractristiques qui le rende


dicile rsoudre.

il est en nombres entiers.


il a un nombre exponentiel de contraintes.

On est exactement dans la mme situation que pour la formulation PLNE du problme du
voyageur de commerce. La relaxation continue lve le premier problme : la solution de ce
problme fournit une borne infrieure sur la solution optimale. Cela indique qu'une mthode de
branch-and-cut peut tre approprie. Pour rsoudre le programme linaire prcdent, on peut
utiliser une approche branch-and-cut trs semblable celle suivie pour le voyageur de commerce.
Pour pouvoir appliquer un branch-and-cut, il faut pouvoir trouver s'il existe

r
/X

et

X S =
6 tel que e(X) xe < 1. Cela se fait par une recherche
v r ot maximum pour tout v S (voir Chapitre 5).

X V

avec

de coupe minimum :

on recherche le

On a donc tout ce qu'il faut pour faire du branch-and-cut. L'algorithme suit le mme schma
que celui dcrit au Chapitre 11.

12.3.5. Relaxation lagrangienne. 

La ressemblance avec les problmes d'arbres couvrants

suggre la modlisation suivante

Soit r un sommet arbitraire, r S . Soit v0 un nouveau sommet, reli


tout sommet de V \S et r. On tend w par w(v0 v) := 0. On appelle G0 = (V0 , E0 ) ce nouveau
graphe. Rsoudre le problme de l'arbre de Steiner de poids minimum revient rsoudre
P
minxRE
eE w(e)xe
s.c.
xe {0, 1}
et est le vecteur indicateur
(35)
d'un arbre couvrant G0 ,
xv0 v + xe 1 v V \ S ; e G (v)
Proposition 12.3.5. 

Dmonstration.

 Si

est vecteur d'incidence d'un arbre de Steiner, il est clair qu'il satisfait

les ingalits ci-dessus, quitte ajouter des


soit

xv0 v := 1,

sans modier le poids. Rciproquement,

une solution optimale du programme linaire. Notons

gardant que les artes qui sont non incidentes

v0 ,

T := {e E : xe = 1}.

En ne

on obtient un arbre de Steiner de mme

cot.
Comme d'habitude pour ce genre de problme, on peut avoir de meilleures bornes en utilisant
la relaxation lagrangienne, ce qui peut tre cruciale pour les problmes de grande taille. Il faut
donc se demander si la suppression de certaines contraintes du programme (35) rend le problme
soluble.
Il est clair que la suppression des contraintes

xv0 v + xe 1 rend le problme polynomial, grce

l'algorithme de Kruskal. On crit donc le lagrangien.

L(x, ) :=

X
eE

w(e)xe +

vV \S e(v)

v,e (xv0 v + xe 1).

Le problme de l'arbre de Steiner consiste trouver


cette quantit par

max G(),

avec

G() := minx L(x, ),


141

minx max L(x, ).


ie :

On peut minorer

G() :=
P
P
P
min
eE w(e)xe +
vV \S
eG (v) v,e (xv0 v + xe 1)
s.c.
xe est le vecteur indicateur d'un arbre couvrant G0
qui peut se rcrire...

G() :=
G
P0

o l'arbre couvrant

uv E
G()

0
et wv v
0

:=

v,e + poids

minimal d'un arbre couvrant

G0

vV \S e(v)

est calcul avec les poids

e(v) v,e .

0 := w
wuv
/ S) + v,uv 1(v
/ S)
uv + u,uv 1(u

si

se calcule donc aisment par l'algorithme de Kruskal, ainsi que ses sur-gradients. On

sait donc maximiser

G(),

et on peut calculer de bonnes bornes infrieures.

Pour le branchement, c'est simple : les solutions ralisables associes un nud de l'arbre de
branch-and-bound correspond l'ensemble des arbres avec un sous-ensemble d'artes impos.
Il est en eet facile de voir que trouver l'arbre couvrant de poids minimum avec des artes
imposes se fait encore avec l'algorithme de Kruskal. La situation est ici plus simple que dans le
cas du voyageur de commerce o pour conserver la borne du

1-arbre

en xant des artes et en

en interdisant d'autres il faut modier la fonction de cot.

12.3.6. Recherche locale. 

Classiquement, les algorithmes de recherche locale pour le

problme du Steiner tree s'appuient sur la remarque suivante : Une fois xs les sommets
de l'arbre de Steiner (on a bien sr
couvrant de poids minimum.

T V 0 ),

Le voisinage se construit sur les parties

V0 V

les artes s'obtiennent par un simple calcul d'arbre

V0

de

: on dit que

V0

est

voisin

de

V 00

si l'on est

dans une des ces situations


1.
2.
3.

V 00 := V 0 \ {v 0 }

pour un

V 00 := V 0 {v 00 }

v 0 V 0 , (drop)

pour un

v 00 V \ V 0 (add)

ou

V 00 := V 0 \ {v 0 } {v 00 } (swap).

12.4. Quelques remarques pour nir


Reprenons le problme des villages du dbut, mais maintenant autorisons-nous des embranchements. On veut donc convevoir le rseau routier de distance totale minimale tel que tous les
villages soient relis.
Ici, contrairement la situation du dbut, la liste des tronons possibles est potentiellement
innie, l'input est alors plutt les coordonnes des

villages. Ce genre de problme justie la

formalisation du problme suivant.

Problme de l'arbre de Steiner euclidien


Donne : t points de coordonnes (x1 , y1 ), . . . , (xt , yt ).
Tche : Trouver l'arbre de plus petite longueur reliant tous les points.
Sans surprise, on a

Thorme 12.4.1. 

Le problme de l'arbre de Steiner euclidien est


142

NP-dicile.

Figure 4.

A gauche, l'input d'un problme de Steiner euclidien, droite l'output.

Remarquons que l'arbre de Steiner de plus petite longueur est le rseau de plus petite longueur
reliant tous les points, l'existence d'un cycle conduisant toujours une solution sous-optimale.
Pour une illustration d'un tel rseau, voir Figure 4.
Les heuristiques de rsolutions, les algorithmes, etc. s'appuient sur la proprit suivante. On
appelle

point de Steiner

une extrmit de segment qui ne soit pas un des points de l'input.

Les points de Steiner sont toujours de degr 3 (au sens du nombre


d'artes). De plus, on ne peut avoir deux segments se rencontrant en un angle de strictement
moins de 120 .
Proposition 12.4.2. 

Cette proposition se dmontre en rsolvant le problme de l'arbre de Steiner euclidien dans


le cas o il n'y a que trois points. Ce problme avait t rsolu en son temps par Fermat.

ABC dont les angles font tous moins de 120 , il faut


\
\
appel point de Fermat, tel que les angles AP
B , BP
C et

Si ces trois points forment un triangle


ajouter un point

[
CP
A

dans le triangle,

fassent tous trois 120 . La preuve de ce fait est un exercice classique de gomtrie plane

en les points A, B et C .

\, alors le rseau optimal est form


Si l'un des angles du triangle fait plus de 120 , disons ABC

et passe par les rotations d'angles 120

des deux segments

[A, B]

et

[B, C].

Tout comme le problme de l'arbre de Steiner sur un graphe, le problme de l'arbre de Steiner
euclidien est trs tudi. On connat des branch-and-bound ecaces et de bonnes heuristiques
et mtaheuristiques du style recherche locale.
Un autre problme trs tudi  avec des rsultats semblables  est le problme de l'arbre
de Steiner  Manhattan , en ne s'autorisant que les segments horizontaux et verticaux. Une
application rside par exemple dans la conception des circuits intgrs.

12.5. Exercices
12.5.1. Un rseau d'eau. 

Un ensemble de pavillons doit tre reli par un rseau de

canalisation d'eau au moindre cot un chteau d'eau. Voir Figure 5. Sur la gure, les liaisons
possibles sont indiques par la prsence d'un lien entre deux pavillons. Le cot d'ouverture d'une
liaison est indiqu proximit de ce lien.
Mettez en vidence un rseau de moindre cot sur la gure, indiquez son cot et justiez
l'optimalit de la solution que vous proposez.

143

Ch
ateau deau

Figure 5

12.5.2. Plus grand poids le plus petit possible. 


muni de poids

w : E R.

Considrons un graphe

G = (V, E)

On cherche l'arbre couvrant dont le poids maximal d'une arte est le

plus petit possible. Comment peut-on le trouver ?

12.5.3. Produit des poids. 

Considrons un graphe

G = (V, E) muni de poids w : E R+

strictement positifs. Peut-on trouver en temps polynomial l'arbre couvrant dont le produit des
poids est minimal ?

12.5.4. Graphe partiel connexe couvrant. 


poids

w : E R.

Considrons un graphe

G = (V, E) muni de

Peut-on trouver en temps polynomial le graphe partiel connexe couvrant de

poids minimal ?

graphe partiel H d'un graphe G = (V, E)


F E . Si V 0 = V , on dit qu'il couvre G.

Rappelons qu'un

V V

et

est tel que

H = (V 0 , F )

avec

12.5.5. Transmission optimale de message, d'aprs Ahuja, Alimanti et Orlin [1].


 Un service d'espionnage a n agents dans un pays ennemi. Chaque agent connat certains
des autres agents et peut orgainer une rencontre avec toute personne qu'il connat. Pour toute
rencontre entre l'agent
est de

pij .

i et l'agent j , la probabilit que le message tombe entre des mains hostiles

Comment transmettre le message tous les agents en minimisant la probabilit

d'interception ?

12.5.6. Matrodes (pour les lves ayant un got pour les maths). 
ensemble ni et soit

une collection de parties de

144

E.

Si

satisfait

Soit

un

I I et J I , alors J I .
(ii) si I, J I et |I| < |J|, alors I {z} I
alors (E, I) est appel un matrode.
(i) si

1. Soit

G = (V, E)

pour un certain

un graphe connexe. Montrer que

est un matrode.

(E, F)

z J \ I.

est l'ensemble des forts de

E = E1 E2 . . .Ek l'union de k ensemble disjoints, et soient u1 , u2 , . . . , uk des entiers


positifs. Montrer que (E, I) o I est l'ensemble des parties I de E telles que I Ei ui
est un matrode (appel matrode de partition).

2. Soit

3. Soit

une matrice relle. Soit

l'ensemble des colonnes de

(appel
4. Soit

I les sous-ensembles
(E, I) est un matrode

et soit

de colonnes indpendantes (pour l'agbre linaire). Montrer que

matrode matriciel).

(E, I) un matrode. Supposons donne une fonction de poids w : E R. Montrer que

trouver l'indpendant de poids maximum peut se faire par l'algorithme glouton.

12.5.7. Design de rseau - un seul bien. 

Supposons que l'on souhaite calibrer un rseau

de transport de faon pouvoir assurer des livraisons depuis des sources jusqu' des destinations.
Pour chaque tronon direct

(u, v),

on connat le cot

c(u, v)

d'tablissement d'une liaison de

capacit unitaire. Comment construire le rseau dont l'tablissement soit de cot minimum ? On
suppose que l'on connat pour les sources, l'ore et pour les destinations, la demande. Modliser
ce problme comme un problme de ot.

12.5.8. Design de rseau - plusieurs biens. 

D = (V, A).
t1 , . . . , tk . Le bien i circule de la source si
i
la destination ti . Ce bien est modlis par un ot x : A R+ .
0
On doit slectionner maintenant un sous-ensemble A de A tel que chaque bien puisse circuler

Ce rseau a des sources

s1 , . . . , s k

On dispose d'un rseau orient

et des destinations

de sa source sa destination.
Le cot de slection de l'arc
bien

se note

cia .

fa

se note

On veut trouver

A0

et le cot d'utilisation de l'arc

pour une unit de

tel que le cot total (slection des arcs et transport du

ot) soit le plus petit possible.

1. Modliser ce problme sous forme d'un programme linaire en nombres entiers, en les
variables

xia ,

aA

pour

et

i = 1, . . . , k ,

et

ya ,

pour

dans la conception du rseau.

a A,

ya

code la slection de l'arc

2. Proposer une relaxation lagrangienne qui permette de calculer de bonnes bornes infrieures.

12.5.9. Un problme de rseau avec une contrainte de degr. 


ensemble
plus

de terminaux alimenter en lectricit et une centrale

p,

On se donne un

d'o peuvent partir au

cbles. On veut crer un rseau connectant l'ensemble des terminaux la centrale. Une

connexion consiste soit relier deux terminaux entre eux, soit connecter un terminal la
centrale. Comme la centrale a au plus

cbles la quittant, on peut avoir au plus

connexions

directes la centrale. Chaque connexion a un cot strictement positif. On cherche le rseau de


plus petit cot.
On modlise ce problme par un graphe complet

c
K , de

un vecteur de cot
arbre couvrant de

K = (V, E),

avec

V = T {p}.

On a donc

(R+ )E . Comme les cots sont strictement positifs, on cherche donc un


plus petit cot, et dont le degr en

145

n'excde pas

s.

Pour un ensemble

Notons

B E,

on dit qu'un vecteur

x {0, 1}E

l'ensemble

x {0, 1}E

est le

vecteur indicateur

de

si

xe = 1 e B.

des vecteurs indicateurs d'arbres couvrants de

K.

On cherche

donc rsoudre le problme suivant


Min
s.c.

P
c x
PeE e e
e(p) xe s
xX

(i)
(ii)

La mthode que l'on va suivre consiste utiliser la relaxation lagrangienne. Ici, non seulement elle permettra d'obtenir des bornes infrieures, mais elle permettra galement de trouver
l'optimum.
1. Ecrire le lagrangien
de la contrainte (i), avec

L(x, ) de ce problme quand on procde la relaxation


la variable duale associe cette contrainte.

G() = minxX L(x, ). Calculer G() revient

note x la solution dans X correspondante.

On dnit
sation. On
2. A

lagrangienne

rsoudre un problme de minimi-

x, peut-on calculer en temps polynomial la valeur de

G() ?

Avec quel algorithme ?

x0 est le vecteur indicateur d'un arbre couvrant K dont le degr en p est au


G(0) G() pour tout 0. Que peut-on par ailleurs dire de cet arbre couvrant

3. Montrer que si
plus

s,

alors

par rapport notre problme de dpart ? Justier.


Supposons maintenant que
en

x0

est le vecteur indicateur d'un arbre couvrant

est strictement plus grand que

dont le degr

s.

R+ tel que G() soit maximal. Expliquer pourquoi on peut se limiter


de la forme = ce cf avec e
/ (p) et f (p). Evaluer une borne suprieure
nombre de telles valeurs et en conclure que maximiser G se fait en temps polynomial.

4. On veut trouver
aux valeurs de

sur le

On ordonne ces valeurs de

de faon avoir une squence

1 < 2 < . . . < N . Soit i le


p est infrieur ou gal s.

plus

petit indice tel que x i est un arbre couvrant dont le degr en


5. Montrer que

est la valeur de

en laquelle

est maximal.

6. Montrer que quitte changer un peu la solution


degr

en

xi

on peut obtenir un arbre couvrant de

de vecteur indicateur x tel que

L(xi , i ) = L(x , i ).
7. En dduire que

G(i ) =

eE ce xe et que

est la solution notre problme de dpart.

On est donc dans une situation o la borne fournie par la relaxation lagrangienne concide avec
l'optimum.

146

CHAPITRE 13

OUVERTURE

En conclusion, signalons les outils de la recherche oprationnelle ainsi que des domaines la
frontire que nous avons simplement voqus, par manque de temps et de place, mais qui sont
extrmement importants.

mthodes de dcomposition, les mthodes de coupes, l'optimisation


convexe et la simulation.
Ces domaines sont les statistiques, les les d'attente et la thorie des jeux.
Ces outils sont les

13.1. Quelques outils absents de ce livre


13.1.1. Les mthodes de dcomposition. 

Souvent associ au nom de Bender qui initia

ces techniques, les mthodes de dcomposition traitent des cas o le nombre de variables est
trs grand, voire exponentiel en la taille du problme. Trs schmatiquement, dans le cas o
le problme se formule sous la forme d'un programme linaire
la faon suivante (on parle alors de

gnration de colonnes

(P ),

ces mthodes procdent de

 le mot  colonne  tant alors

synonyme de  variable  comme dans l'algorithme du simplexe) :


1. ne travailler que sur une partie des variables, on appelle ce problme
2. rsoudre le dual

(D0 )

(P 0 ) ;

de ce problme rduit ; de deux choses l'une

 soit la solution de ce dual satisfait toutes les contraintes du dual


cas, la solution primale optimale de

(P 0 )

(D)

de

(P )

est galement solution optimale de

auquel

(P ),

et

l'algorithme est ni,


 soit la solution de ce dual ne satisfait pas toutes les contraintes de

(D). On slectionne

alors une des contraintes violes (par exemple, la plus viole, ce qui ncessite souvent
un autre problme d'optimisation), on ajoute la variable correspondante

(P 0 )

ce qui

donne naissance un nouveau programme rduit. On retourne en 1.

13.1.2. Les mthodes de coupes. 

Les mthodes de coupes sont utilises pour la program-

mation linaire en nombres entiers. On peut crire le problme de la programmation linaire en


nombres entiers sous la forme

min(cT x : x P Zn ),

est un polydre.

Les mthodes de coupes consistent ajouter des contraintes linaires qui sont vries par tous
les points entiers de

P , mais pas par tous les points de P . Comme on cherche une solution entire,

on ne se prive pas de solution, et la relaxation continue est meilleure. Il existe des techniques
de gnration automatique de contraintes linaires (coupes de Dantzig, Gomory, Chvtal,...), on
peut aussi trouver de telles coupes par des mthodes

ad hoc,

adaptes au problme particulier

auquel on s'intresse. On a vu deux exemples dans les exercices du Chapitre 8.

13.1.3. Optimisation convexe. 

La gnralisation immdiate de la programmation li-

naire est la programmation convexe, dont les contraintes et l'objectif sont convexes. Dans le
domaine du transport de gaz ou dans les rseaux tlcom par exemple, on rencontre souvent
des problmes du type : on se donne un graphe orient, avec des contraintes de capacit, et des
cots

ca : R R convexes, pour tout a A, et on demande de trouver le ot de cot minimum.

On dispose de nombreux algorithmes ecaces (et trs souvent polynomiaux) pour rsoudre ces
problmes.

programmation semi-dnie positive,

Il faut aussi signaler le cas particulier de la

r-

solue en temps polynomial par les points intrieurs. Elle concerne le cas o les vecteurs des
problmes de programmation linaires, tant ceux qui dnissent l'objectif ou les contraintes que
les variables, sont remplacs par des

matrices semi-dnie positive, i.e. des matrices symtriques

relles dont toutes les valeurs propres sont positives ou nulles.


La programmation semi-dnie positive ne modlise pas aussi naturellement que la programmation linaire des problmes rels, mais apparat souvent comme relaxation ecace de certains
problmes combinatoires, en particulier lorsque le critre comporte des termes quadratiques.

13.1.4. Simulation. 
d'un

modle

Simuler c'est reproduire volont un phnomne

original

l'aide

qui en abstrait les lments essentiels, dans le but de tirer des conclusions sur ce

phnomne.
L'intrt est vident quand
 le phnomne original est dicile reproduire volont (conditions particulires diciles
remplir, cot, dure, etc.)
 la modlisation sous forme problme ne se rsout pas facilement (par exemple, les problmes
biniveaux compliqus ; ou en physique : quations Navier-Stokes)
On distingue les simulations

temps continu

et ceux

vnements discrets.

La simulation peut tre utile par exemple pour dimensionner une otte de vhicule de transport la demande, compte tenu de la fonction d'utilit des agents, de la congestion, etc. ; pour
proposer un nouveau systme logistique, avec des tarications variables ; pour tudier une chane
d'approvisionnement complexe ; etc.
La simulation est souvent couple avec des techniques plus classiques de recherche oprationnelle, comme on le dvine aisment la lecture des exemples ci-dessus.

13.2. Trois domaines la frontire de la recherche oprationnelle


13.2.1. Statistiques.  Les statistiques, que l'on peut dnir comme la

science de la re-

prsentation simplie des grands ensembles de donnes, interviennent en amont de la partie

Donne

d'un Problme : les donnes ne sont pas toujours faciles obtenir, ou peuvent tre

entaches d'erreurs.

13.2.2. Files d'attente. 

C'est un outil de modlisation (puissant) des systmes logistiques

et de communication. Il y a des
d'obtenir un

clients,

qui cherchent accder des

ressources

limites, an

service. Ces demandes concurrentes engendrent des dlais et donc des les d'attente

de clients.
Les mesures de performance sont en gnral :

temps moyen d'attente.

Le modle le plus simple est donne Figure 1.

148

nombre moyen de clients en attente

et

depart
service

arrivee

attente
Figure 1.

Les taux d'arrive et de service,

et

Une le d'attente simple.

sont donns. Si le processus d'arrive est poissonien

et si la dure de service suit une loi exponentielle, le nombre de personnes dans la le est une
chane de Markov en temps continu. Notons que pour avoir un rgime stationnaire, il faut que

/ < 1.

En toute gnralit, il n'y a pas de raison que la le d'attente puisse tre modlise

par une chane de Markov, et leur tude peut devenir extrmement dicile.
Les applications sont nombreuses : dimensionnement des caisses de supermarch, des services
hospitaliers, des standard tlphoniques, serveurs informatiques, etc.

13.2.3. Thorie des jeux. 

La thorie des jeux est ne en mme temps que la recherche

oprationnelle, pendant la seconde guerre mondiale.


Dans ce cours, nous avons vu la thorie des jeux deux fois : dans le Chapitre 4, la dualit forte
nous a permis de dmontrer le thorme de von Neumann (Thorme 4.5.1 ; dans le Chapitre 6,
nous avons vu les mariages stables (thorme de Gale-Shapley), qui appartiennent au champ des
jeux coopratifs o l'on s'intresse la stabilit des coalitions.
Il y a parfois des intractions fortes entre la thorie des jeux et le recherche oprationnelle :
1. lorsque la fonction objectif ne veut pas optimiser mais  partager quitablement  : les problmes acadmiques sont par exemple les mariages stables,

cake cutting, necklace splitting.

Dans ces deux derniers problmes, on veut partager un objet (un gteau ou un collier) et
l'on veut que toutes les personnes peroivent le partage comme juste dans un certain sens,
mme si elles n'ont pas la mme fonction d'valuation.
2. lorsque la fonction objectif contient un terme qui rsulte d'un terme  rponse  conomique. Par exemple, lorsqu'on veut concevoir un rseau routier, on est oblig de se demander par o va s'couler le ot des usagers. Mais le ot est le rsultat de ce que chaque
personne dcide de faire, d'un processus d'optimisation locale. Il faut donc valuer et comparer les quilibres de Nash selon les choix qui sont faits. On parle alors de

biniveau.

problme

Dans ce second cas, il faut souligner que les choses sont diciles, et peu intuitives comme en
tmoigne le clbre paradoxe de Braess.
Considrons les rseaux de la Figure 2. Un ot de valeur

1 veut aller de s t. Chaque lment

innitsimal du ot  un usager  choisit le chemin le moins coteux. On obtient un quilibre


de Nash. Dans le rseau de gauche, cet quilibre de Nash est form d'un ot de valeur
pruntant la route suprieure, et d'un ot de valeur

1/2

1/2

em-

empruntant la route infrieure. L'ajout

d'une autoroute au milieu dtriore tout : on peut vrier qu' l'quillibre de Nash la totalit
de ot unitaire suit la route

s, v, w, t.

On vrie que le cot s'est dtrior pour chaque usager.

Enn, on peut mettre galement l'intersection de la recherche oprationnelle et de la thorie


des jeux, la problmatique de

yield management, utilis dans les transports et l'htellerie, et des


149

c(x) = x

c(x) = x

c(x) = 1

c(x) = 1

c(x) = 0
s

s
t
c(x) = 1

t
c(x) = 1

c(x) = x

Figure 2.

enchres.

c(x) = x

Un rseau simple o apparat le paradoxe de Braess

La question traite par le yield management concerne la trajectoire suivie par le tarif

d'une prestation en fonction de la date o elle est achete : on peut maximiser le bnce en
suivant une trajectoire tenant compte des direntes fonctions d'utilit des clients potentiels.
Dans les problmes d'enchres, utilises en particulier par les prestataires logistiques, on se
demande quelles rgles mettre en place pour maximiser le prix auquel est vendue
prestation.

150

in ne

la

ELMENTS DE CORRECTION

Exercice 2.6.5. 

Considrons le graphe

G = (V, E) dont les sommets V

sont les formations,

et dans lequel une arte relie deux formations s'il existe un employ devant suivre ces deux
formations. Enn, les couleurs sont les jours. Il est clair que tout planning compatible avec les
contraintes de la DRH induit une coloration propre du graphe, et dont le nombre de couleurs est
le nombre de jours de la session. Rciproquement, toute coloration induit un planning compatible
avec les contraintes de la DRH, avec un nombre de jours gal au nombre de couleurs.

Exercice 3.4.5. 

Ce problme se rsout par la programmation dynamique. Les tats sont

les ges possibles de la machine en dbut d'anne. Les priodes sont les annes. On s'intresse
aux quantits

(t, k) = prot

maximal possible en terminant la

On souhaite trouver

(t, k)

tme

anne en possdant une machine d'ge

k.

maxk{1,2,3} ((5, k) + pk ).

satisfait les relations suivantes :


(1, k) =

0
b0 c0

pour tout
pour

k {2, 3}
k = 0.

(t + 1, k + 1) = (t, k) + bk ck

(t + 1, 1) =

t
k
1
2
3

k {1, 2}

max ((t, k) + pk1 100000 + b0 c0 )

k{1,2,3}

On peut alors remplir le tableau des valeurs de

si

t {1, 2, 3, 4}

70000 90000 110000 90000 150000


0
116000 136000 156000 136000
0
0
124000 144000 164000

Le prot maximal de l'entreprise est donc

10000) = 200000.

si

max(150000 + 50000, 136000 + 24000, 164000 +

Une stratgie optimale consiste garder la machine deux ans, puis la vendre

et en racheter une nouvelle, encore une fois pour deux ans.

Exercice 3.4.10. 
1. On peut passer de n'importe quel point n'importe quel autre point. On peut vrier
exhaustivement que l'on peut atteindre n'importe quel tronon depuis le point suprieur gauche.
On peut de plus imposer l'orientation du wagonnet : on peut partir du point suprieur gauche vers
la droite, et suivre un parcours ferm qui ramne la wagonnet au mme point avec l'orientation

oppose ; quitte ajouter ce parcours ferm au dbut du trajet, on peut donc xer l'orientation
en n de trajet.

2. Soient

et

les deux points particuliers. On peut arbitrairement dire que les sommets

associs aux tronons sont les milieux physiques des tronons. On les relie conformment
l'nonc. On relie

et

aux plus proches milieux de tronons, et ventuellement entre eux s'ils

ne sont spars par aucun milieu de tronon. On obtient donc le graphe dont la construction est
prcise dans l'nonc, avec en plus deux sommets particuliers

s et t. Les cots sur chaque arte

sont les distances correspondantes dans le rseau. On peut appliquer l'algorithme de Djikstra
pour calculer la chane de plus petit cot dans ce graphe, qui correspond au trajet le plus court
dans le rseau.

3. On reprend le graphe de la question prcdente, on le duplique. Chaque sommet possde


donc deux copies : l'une correspondant une orientation du wagonnet et l'autre l'autre orientation. On eace maintenant toutes les artes et on en construit des nouvelles : deux sommets
sont relis entre eux s'ils taient auparavant relis entre eux et si de plus le trajet qui passe de
l'un des sommets l'autre est compatible avec les orientations qu'ils reprsentent. Si on veut
aller de

avec des orientations xes, on peut donc le faire en calculant une chane de plus

petit cot dans ce graphe, encore avec l'algorithme de Djikstra.

Exercice 3.4.11. 
1. On considre le graphe orient
valles

de

(on identie alors

et

C)

V est la collection d'inter(I, J) si l'extrmit suprieure

dont l'ensemble des sommets

et dans lequel on a un arc

est strictement infrieure l'extrmit infrieure de

J.

C'est un graphe acircuitique, et

les sommets des chemins lmentaires sont prcisement les sous-ensembles d'intervalles deux

(I, J) la quantit w(I), et en ajoutant un


I C que l'on pondre avec w(I), chercher le

deux disjoints. En mettant comme poids sur tout arc


dernier sommet

et tous les arcs

(I, X)

C deux deux disjoints de poids maximal revient chercher le


D pour la pondration w, ce qui se fait par un algorithme de programmation

sous-ensemble d'intervalles de
plus long chemin de

avec

dynamique (le graphe tant acircuitique). Pour se ramener totalement au cas du cours, on peut
galement ajouter un sommet
chercher le chemin de

et tous les arcs

(Y, I)

de plus grand poids.

avec

I C

que l'on pondre avec

0,

et

2. Une demande de location se modlise par un intervalle de la droite relle dont les extrmits
sont les debut et n de la location, pondr par la gain qui serait obtenue en satisfaisant cette
demande. Maximiser le gain revient alors chercher le sous-ensemble d'intervalles disjoints (les
locations ne pouvant se recouvrir) de plus grand poids.

Exercice 5.3.12. 
1. Considrons le graphe
arc

(u, v)

si

v Yu .

D = (V, A)

dont les sommets sont les blocs et pour lequel on a un

Une solution du cas statique est un ferm de ce graphe et rciproquement

tout ferm du graphe est une solution du cas statique.

ua := + pour tout a A, on a la proprit recherche. En eet, soit X V


de capacit minimale. Aucune arte de A ne peut
{s}) soit une s-t coupe de D
tre dans cette coupe, sinon sa capacit serait = +. Donc, si u X , tout successeur de u est
encore dans X . Ce qui est prcisment la dnition de ferm.
2. Si on met

+
tel que (X
D

152

N
O

E
S

Une solution optimale et une preuve d'optimalit.

Figure 3.

3. On note

:= V \ X .
X

donc

ua =

cv

les seuls arcs qui vont jouer un rle dans la

(v, t)

et ceux de la forme

cv =

vXV

X
vV +

cv

avec

v X.

On a

cv .

vX

vV + cv .

. D'aprs ce qui a t montr ci-dessus, on a alors


C .
de capacit minimale . D'aprs ce qui a t
Rciproquement, prenons une s-t coupe de D
montr, l'ensemble X induit sur D est alors ferm et de valeur C .
est quivalent chercher un
On a donc : C = , et chercher une coupe minimale sur D
ferm maximum sur D . Comme chercher une coupe minimale se fait en temps polynomial, on
Soit

une

s -t

C :=

X
+

vXV

a +
(X{s})
4. Posons

X est ferm,

(s, v) avec v X

Comme

coupe sont les arcs de la forme

un ferm de

coupe de

de valeur maximale

de capacit

sait rsoudre le problme de manire ecace.

Exercice 6.6.3. 
il sut de trouver

Dans le cas de la Figure, ce maximum est

de points tels que deux points quelconques de

dans la mme ligne ou colonne, et notons

au plus un lment de
et

P.
R de

cardinalit

la cardinalit

ne soient jamais

la cardinalit minimale d'une famille

colonnes contenant tous les points. On a forcment

Pour prouver son optimalit,

lignes ou colonnes qui contiennent tous les points. Notons

maximale d'une famille

Ces ensembles

4.

de lignes ou

puisque chaque lment de

contient

sont indiqus sur la Figure 3.

Le cas gnral est polynomial. En eet, ce problme se modlise sous la forme d'un graphe
biparti de la faon suivante :
les sommets sont les lignes d'une part et les colonnes d'autre part, une arte relie la ligne
la colonne

et

c s'il y a un point noir leur intersection. Un ensemble de points tels que deux points

quelconques de l'ensemble soient toujours sur des lignes et des colonnes distinctes correspond
un couplage dans ce graphe. On recherche donc un couplage de cardinalit maximale dans ce
graphe biparti, ce qui peut se faire en
primtre du rectangle), et

O( nm)

est le nombre de sommets (ici le demi-

le nombre d'artes (ici le nombre de points noirs).

Exercice 7.4.2. 
153

Gestion dynamique de stock, cas 1 seul bien.

1. Par dnition du processus : ce qui reste dans le stock sur la priode


dj dans le stock la priode
la demande.

t 1,

t,

c'est ce qui tait

plus ce qui a t produit, moins ce qui est parti cause de

2. Aux contraintes dcrivant la dynamique du stock, il faut ajouter les contraintes de capa-

xt Pt et les contraintes de positivit. La fonction objectif est


PT 1
t=1 pt xt +
t=1 st yt . On s'arrte T 1 pour le stock car comme
que les cot de stockage sont positifs, on aura toujours yT = 0.

cit

PT

simplement le cot total


on souhaite minimiser et

Le programme linaire s'crit donc


Min
s.c.

P 1
+ Tt=1
s t yt
xt yt + yt1 = dt
xt Pt
xt 0
yt 0
PT

t=1 pt xt

t = 1, . . . , T
t = 1, . . . , T
t = 1, . . . , T
t = 1, . . . , T 1.

3. Le cot minimal est 37. Le vecteur de production est

x = (8, 1, 3, 1)

ou

x = (9, 0, 4, 0),

ou

n'importe quelle combinaison convexe des deux.


4. En dehors du puits et des sources proposes par l'nonc, il n'y a pas d'autres sommets. Il
y a deux types d'arcs :
 les arcs

= pt

(v, wt ),

avec une capacit suprieure

= Pt ,

une capacit infrieure

=0

et un cot

et

(wt1 , wt ) avec une suprieure = +, une capacit infrieure = 0 et un cot = st1 .


problme du b-ot de cot minimum est exactement le problme linaire de la question 2.

 les arcs
Le

En particulier, la dynamique correspond la loi de Kircho.


5. Les problmes de ot de cot min sont des cas particuliers de la programmation linaire.
Ils possdent des algorithmes ddis qui peuvent tre plus rapides que les solveurs gnraux de
programme linaire (mthode des cycles de cot moyen minimum, vu en cours par exemple).

Gestion dynamique de stock, cas plusieurs biens.


tout k, t.
PK
7. C'est
k=1 zkt 1 pour tout t.
8. C'est

xkt Pkt zkt

pour tout

 6. On a

ykt = yk(t1) + xkt dkt

pour

k, t.

9. En reprenant les contraintes dj identies en premire partie, et cette nouvelle contrainte,


le problme que l'on cherche rsoudre s'crit
Min
s.c.

P
PT 1
+ K
k=1
t=1 skt ykt
xkt ykt + yk(t1) = dkt
xkt Pkt zkt
PK
k=1 zkt 1
zkt {0, 1}
xkt 0
ykt 0
PK PT
k=1

t=1 pkt xkt

PK

t = 1, . . . , T ; k = 1, . . . , K
t = 1, . . . , T ; k = 1, . . . , K
t = 1, . . . , T
t = 1, . . . , T , pour k = 1, . . . , K
t = 1, . . . , T ; k = 1, . . . , K
t = 1, . . . , T 1 ; k = 1, . . . , K.

xkt Pkt zkt . On pose RT+ le multiplicateur


TK
de Lagrange associ aux premires contraintes et R+ celui associ aux secondes contraintes.
10. Relchons les contraintes

k=1 zkt

et

154

Avec les notations usuelles on a

G(, ) =

PT

t=1 t +

min

P

K PT
k=1
t=1 pkt xkt

xkt ykt + yk(t1) = dkt


zkt {0, 1}
xkt 0
ykt 0

s.c.

PK PT 1

k=1

t=1

t = 1, . . . , T
t = 1, . . . , T
t = 1, . . . , T
t = 1, . . . , T

skt ykt +

PK PT

t=1 (t kt Pkt )zkt

k=1

; k = 1, . . . , K
; k = 1, . . . , K
; k = 1, . . . , K
1 ; k = 1, . . . , K,

qui peut se rcrire, puisque les biens ne sont plus coupls

G(, ) =

PT

t=1 t +

PK

min

k=1

P

T
t=1 pkt xkt

PT 1
t=1

xkt ykt + yk(t1) = dkt


zkt {0, 1}
xkt 0
ykt 0

s.c.

skt ykt +

PT

t=1 (t kt Pkt )zkt

t = 1, . . . , T
t = 1, . . . , T
t = 1, . . . , T
t = 1, . . . , T

k,

PT
P
T 1
T
(

P
)z
s
y
+
p
x
+
t
t
t
t
t
t
t
t
t=1
t=1
t=1

; k = 1, . . . , K
; k = 1, . . . , K
; k = 1, . . . , K
1 ; k = 1, . . . , K.

On veut donc rsoudre, en oubliant l'indice

P

min

xt yt + yt1 = dt pour t = 1, . . . , T
zt {0, 1}
t = 1, . . . , T
xt 0
t = 1, . . . , T
yt 0
t = 1, . . . , T 1.

s.c.

zt = 0 si t t Pt 0 et zt = 1 si t t Pt < 0.
valeur de zt peut tre xe indpendament de x et

On remarque qu' l'optimum on peut choisir


On veut rsoudre nalement, puisque la

:
Min
s.c.

P

T
t=1 pt xt

PT 1
t=1

st yt

xt yt + yt1 = dt t = 1, . . . , T
xt 0
t = 1, . . . , T
yt 0
t = 1, . . . , T 1.

qui est prcisment le problme de la premire partie, sans les capacits de production. C'est
bien un problme de

b-ot.

On sait donc facilement trouver les solutions optimales


On sait calculer les sur-gradients de

x , y

et

qui rsolvent

(d'aprs le cours). On sait donc maximiser

G(, ).
et donc

trouver de bonnes bornes infrieures notre problme de dpart. Tout est en place pour un
branch-and-bound.

Exercice 7.4.3. 
1.
Min
s.c.

Pn PT
i=1

(xi, xi, 1 )
xi, 1
xi,
Pn
i=1 mi (xi, xi, 1 )
xi,
xi,0

xi, xi, 1

=1 ci,

xi,
xj,
M
{0, 1}
0

i {1, . . . , n} ; {1, . . . , T }
i {1, . . . , n} ; j Yi ; {1, . . . , T }
{1, . . . , T }
i {1, . . . , n} ; {0, 1, . . . , T }
i {1, . . . , n}

(ii)
(iii)
(iv)
(v)

0 sinon. La fonction objectif


est donc bien celle attendue. Les contraintes (i) imposent que pour i x, la squence des xi, est
de la forme 0, 0, . . . , 0, 1, 1, . . . , 1, comme attendu. Les contraintes (ii) imposent que si un bloc i
vaut

1 si le bloc i est extrait au cours de l'anne

(i)

155

et

est extrait au cours de l'anne

ou avant, alors tout bloc de

ou avant, conformment la dnition de


extraite au cours de l'anne

Yi .

Yi

est extrait au cours de l'anne

Les contraintes (iii) imposent que la masse totale

soit infrieure

M ,

comme attendu.

0 =1 M 0 est la masse maximale qui a pu tre extraite sur les annes de 1 . Si la masse

de Yi et du bloc i est strictement suprieure, forcment le bloc i ne peut tre extrait au cours

de l'anne ou avant.
2.

0 =1 M 0 est la masse maximale qui a pu tre extraite au cours des annes de 1 . Si

la masse de Yi Yj et des blocs i et j est strictement suprieure, forcment les blocs i et j

ne peuvent tre extraits tous deux au cours de l'anne ou avant.


3.

4. La suppression des variables indices par des bonnes paires rduit le nombre de variables du
programme linaire. Cela rduit forcment sa complexit. L'ajout des contraintes induites par
des bons triplets ne changent pas les solutions entires du programme linaire, mais diminue la
valeur de la relaxation continue, ce qui amliore la qualit de la borne utilise dans le branch-andbound  on est dans un problme de maximisation  et donc rduit potentiellement le nombre
de branchements.

Exercice 8.3.3. 
g

et

Question 2. Supposons que l'on ait une solution optimale

ensemble dans un conteneur, notons

ag0 ag .

et

et notons

respectivement le plus petit et le plus gros objets qui soient placs. S'ils ne sont pas mis

Comme

ap0 + ag 1,

p0

celui qui est avec

on a

ap0 + ag0 1

et

g et g 0 celui qui est avec p. On a ap ap0


ap + ag 1. Il existe donc toujours une

solution optimale dans laquelle le plus petit et le plus gros objets placs sont ensemble dans un
conteneur. Par induction, on peut montrer qu'en triant les

ai

et en cherchant mettre le plus

petit objet courant avec le plus grand possible, on obtient une solution optimale en

Exercice 9.4.3. 

O(n log(n)).

Nous proposons dans la suite une modlisation, toute en sachant que

plusieurs autres sont possibles.

xij (resp. yij ) la part de la demande du client j desservie par l'entrept forward
(resp. reverse) i. Notons ui (resp. vi ) la variable binaire codant l'ouverture d'un entrept forward
(resp. reverse) i.
1. Notons

Un programme linaire possible est alors

Min
s.c.

P
P
(fi ui + ri vi + jJ cij hj (xij + j yij ))
iI
P
x = hj
PiI ij
y = j hj
PiI ij
x bi ui
PjJ ij
jJ yij ei vi
ui , vi {0, 1}
xij , yij R+

jJ
jJ
iI
iI
i I, j J
i I, j J.

Ce programme linaire est dcomposable en deux sous-problmes indpendants : l'un avec les

xij

et

ui

et l'autre avec les

yij

2. En ajoutant la variable

zi

et

vi .

qui indique la possibilit de fusionner les deux entrepts lorsqu'il

sont tous deux ouverts en i, on peut modliser un gain la mutualisation de la manire suivante :

156

Min
s.c.

En eet, si
objectif,

zi

ui

P
P
(f u + ri vi si zi + jJ cij hj (xij + j yij ))
PiI i i
x = hj
PiI ij
iI yij = j hj
zi ui
zi v i
P
x bi ui
PjJ ij
y
jJ ij ei vi
ui , vi {0, 1}
xij , yij R+
et

vi

jJ
jJ
iI
iI
iI
iI
i I, j J
i I, j J.

1, puisqu'on cherche minimiser


1. Sinon, zi vaut 0, comme souhait.

sont tous deux gaux

sera automatiquement mis

3. Mme remarque que dans le cours : une fois les

ui

et

vi

la fonction

xs, toutes les autres variables

(zi , xij , yij ) sont automatiquement xes, puisqu'on cherche minimiser la fonction objectif. Les

xij
et

et

yij

sont alors le rsultat d'un problme de transport sur le graphe biparti complet avec

les deux classes de couleur.

Par consquent, une faon compacte de coder les solutions consistent ne considrer que les

(u, v) {0, 1}2|I| . La valeur d'une solution (u, v) s'obtient en mettant zi = 1


ui = vi = 1 et rsoudre le problme de transport.
0 0
On dit que deux solutions (u, v) et (u , v ) sont voisines si

u = u0
0
on passe de v v par une opration drop, add ou swap  dnies en cours,

couples

ds que

ou

on passe de

u0

drop, add
v = v0

par une opration

ou

swap

 dnies en cours,

Avec une telle dnion de voisinage, l'espace des solutions est clairement connexe, ce qui
assure qu'une recherche locale potentiellement pourra atteindre la meilleure solution.
Remarque : on peut galement faire les oprations simultanment sur

et

v,

mais alors il

faut dmontrer, ce qui n'est pas immdiat, que l'espace des solutions est bien connexe...
4. Cela ne change rien, car les

hj , j hj , bi , ei

tant entier, le problme de transport a forcment

une solution entire.

Exercice 9.4.4. 
1. On introduit la variable
galement la variable

yij

xi

qui vaut

si l'entrept

est ferm et

qui est la quantit transfre de l'entrept

s.t.

Pn Pn
i=1P j=1 cij yij
qj + ni=1 yij 1
Pn
j=1 yij = qi xi
yij 1 xj
Pn
i=1 xi = k
xi {0, 1}
yij 0
157

sinon. On introduit

i l'entrept j . Le problme

se modlise donc de la manire suivante

Min

j {1, . . . , n}
i {1, . . . , n}
i, j {1, . . . , n}
i {1, . . . , n}
i, j {1, . . . , n}.

2. Le problme a une solution ralisable si et seulement si


que la capacit totale lorsque les

Pn

i=1 qi

nk

: il faut simplement

entrepts sont ferms soit susante pour tout accueilir.

3. Ce type de problme se rsout l'optimum avec un

branch-and-bound.

Le principe est de

procder implicitement l'numration exhaustive de toutes les solutions. Une borne infrieure,
calcule ici par relaxation linaire, permet d'viter de calculer la valeur exacte d'un grand nombre
de solutions. Puisque le problme est

NP-dicile, on ne peut avoir la garantie d'avoir la solution

en quelques minutes dans tous les cas.


4. Oui, le plus clbre des logiciels libres tant GLPK (ou GUSEK).
5. Une recherche locale permet d'avoir des solutions raisonnables en un temps d'excution
court. Cela peut permettre des dcideurs de pouvoir obtenir rapidement des solutions optimises.
6. Si on note

F les entrepts ferms, le


P
P
c y
PiF jO ij ij
y 1 qj j O
PiF ij
iF
jO yij = qi
yij 0
i F, j O

les entrepts ouverts et


Min
s.t.

On reconnat un problme du type

problme rsoudre s'crit

problme de transport de Monge. Il se rsout par la program-

mation linaire. Mieux encore, il peut se rsoudre par un algorithme de ot de cot minimum.
Une fois xs les

entrepts ferms, le calcul du meilleur transfert est donc trs rapide.

7. L'espace des solutions est donc l'ensemble des

0
et F comme tant voisins si

pivot,

|F \

F 0|

|F 0

F {1, . . . , n}

\ F | = 1.

avec

|F | = k .

Une telle opration s'appelle

F
opration de

On dnit

et rappelle le pivot de l'algorithme du simplexe.

Exercice 9.4.5. 
1. Prenons un graphe

G = (V, E)

et construisons l'instance suivante du problme des ambu-

S = C = V , K ambulances, et tu,v = nombre minimum d'artes de u v . Il y a un


K sommets dans G si et seulement si le temps maximum pour le problme des
ambulances associ est = 1. Si le problme des ambulances admettait un algorithme polynomial,
lances :

dominant

on pourrait alors s'en servir pour tester l'existence en temps polynomial de dominant de taille

dans le graphe. Ce qui est impossible, ce dernier problme tant

NP-complet.

2. Considrons une solution optimale au problme des ambulances. On construit alors de la

ys = 1 s'il y a au moins une ambulance


s et ys = 0 sinon ; xs,c = 1 si l'ambulance la plus proche de c est situe en s, et xs,c = 0

manire suivante une solution au programme linaire :


situe en

sinon. Si plusieurs sites sont les plus proches, on en choisit arbitrairement un. Enn, on pose

h=

temps maximum pour qu'une commune soit atteinte par une ambulance. Cette solution est

une solution ralisable du programme linaire, et de mme valeur du critre optimiser.

x, y, h une solution optimale du programme linaire. On positionne une


(ou plusieurs) ambulance en s si ys = 1. Comme on cherche minimiser h, h est forcment gal
maxcC minsS: xs,c =1 ts,c d'aprs l'ingalit (iv). Combin avec (ii), cela indique que toute les
communes peuvent tre rallies en un temps maximum h.
Rciproquement, soit

Le problme et le programme linaire ont donc mme valeur optimale et on peut passer
directement d'une solution du problme une solution du programme linaire et vice-versa.

158

3. En notant

le multiplicateur de Lagrange assioci la contrainte (ii), on obtient

h+

Min

X
XX
(s )|C|ys +
s xs,c
sS

sS cC

s.c.

sS

ys K

(i)

xs,c = 1

sS

ts,c xs,c h
xs,c
ys

cC

(iii)

sS; cC

(iv)

{0, 1} s S ; c C

(v)

{0, 1} s S

(vi)

h R+
4. Les variables

d'une part, et les variables

et

(vii)

d'autre part sont indpendantes dans

y,

on

par valeurs de

les contraintes du programme linaire de la question prcdente. Quelque soit le choix de


peut xer

et

indpendament. On optimise donc les deux programmes

min h +

XX

s xs,c

sS cC

s.c.

xs,c = 1

sS

ts,c xs,c h
xs,c

cC

(iii)

sS; cC

(iv)

{0, 1} s S ; c C

h R+

et

min

(v)

(vii)

X
(s )ys
sS

s.c.

X
sS

ys K
ys

indpendament.

(i)

{0, 1} s S

(vi)

s
ys = 0

5. Optimiser le deuxime programme est simple : il sut de trier les


dcroissantes ; ensuite on met
Complexit

ys = 1

pour les

premiers

s,

et

pour les suivants.

O(S log S).

Optimiser le premier programme est presque aussi simple. Noter que les
l'optimum, (iv) est une galit. On essaie successivement dans

sont positifs. A

h toutes les valeurs de ts,c , et pour


c, on cherche parmi les ts,c h

chacune de ces valeurs, on fait la chose suivante : pour chaque

159

celui tel que

SC

valeurs de

est le plus petit, et c'est ce couple

(s, c)

pour lequel

xs,c = 1.

Pour chacune des

essayes, on obtient une valeur de la fonction objectif ; on garde alors la plus

petite. Complexit

O(S 2 C 2 ).

6. Avec les notations de cours, pour tout

RS ,

on sait calculer

G()

et ses surgradients en

O(S 2 C 2 ) (donc rapidement), et donc optimiser par un algorithme de surgradient


sant ainsi des bornes au programme linaire en nombres entiers.

Exercice 10.4.3. 
la dure de la tche

G(),

fournis-

Les deux premires questions sont triviales. Pour la dernire, notons

j.

pj

Sans perte de gnralit, supposons que les tches sont ordonnes de

manire ce que

w1
w2
wn

...
.
p1
p2
pn

Prenons maintenant un ordonnancement quelconque et supposons qu'il y ait une tche

et

wj 0
pj 0 . En inversant l'ordre de ces deux tches, on ajoute la

wj
0
suivie d'une tche j telles que
pj

fonction objectif la quantit wj pj 0 wj 0 pj

qui est ngative ou nulle. Un ordonnancement optimal

est donc obtenu en ordonnant les tches dans l'ordre de leur indexation.

Exercice 10.4.8. 

Si on voit les entrepts

et

comme des machines, les camions comme

des tches, et le dchargement et le chargement comme des oprations, on est exactement dans
le cas d'un problme de ow-shop 2 machines, 15 tches et minimisation du makespan, ce qui
se rsout en temps polynomial (et mme la main) par l'algorithme de Johnson. Les dures des
oprations sont donnes par le temps qu'il faut pour dcharger ou charger les botes.
Ici la solution est de 91 minutes. On terminera donc au plus tt 7h31.

Exercice 11.3.7. 
1. Pour

(X, v)

Conformment ce qui a t ajout l'oral, on suppose les cots positifs.

v X V \ {s}, on note (X, v) le cot minimum d'une chane


{s} X et dont les extrmits sont s et v . On a alors

c(sv)
si |X| = 1
(X, v) =
minuX\{v} ((X \ {v}, u) + c(uv)) sinon.
tels que

lmentaire dont les sommets sont

Pour trouver la meilleure chane hamiltonienne d'extrmit


valeurs de

(V, v)

pour tout

vV

2. C'est le nombre de couples

s,

il sut alors de comparer les

(les cots tant positifs, on n'a pas intrt revenir en

(X, v) comme dans l'nonc. Il


n1
X n 1
k = (n 1)2n2 .
k

s).

y en a

k=1

3. Pour chaque tat

(X, v),

le nombre d'additions est

|X| 1

(nombre de

possibles dans

l'quation de programmation dynamique). D'o un nombre d'oprations

n1
X
k=1


n1
k(k 1) = (n 1)(n 2)2n3 .
k

Enumrer toutes les solutions donne un nombre d'additions


ce qui est incomparablement plus grand.

(n 1)!(n 1) n!

2n

n = 15, on compte 7450 472 oprations, ce qui se fait en moins d'une seconde.
n = 30, on compte 1.09 1011 oprations, ce qui se fait en 1.09 105 secondes,
30 heures. On ne peut rsoudre cette instance en 1 jour, mais en une semaine oui.


n n
,
e

4. Pour
Pour
environ

160

soit

Ch
ateau deau

Figure 4

Pour

263

n = 45,

on compte

8.32 1015

oprations, ce qui fait

8.32 109

secondes, soit environ

annes. Mme en un sicle on ne parvient rsoudre cette instance.

5. On sait calculer la plus courte chane hamiltonienne de


alors de comparer les valeurs de

Exercice 12.5.1. 

(V, v) + c(vs)

pour tout

v,

pour tout

v.

v
/ V.

Il sut

C'est une application directe de l'algorithme de Kruskal, qui dtermine

l'arbre couvrant de plus petit poids. Il y a plusieurs arbres possibles. L'un est donn Figure 4.
Le cot optimal est

35.

Exercice 12.5.9.

P
1.

L(x, ) =

2. A
cot

eE ce xe +

P

e(p) xe s

x, on cherche trouver l'arbre couvrant du graphe K de plus


ce sur l'arte e si e
/ (p) et ce + si e (p). L'algorithme de

petit cot avec comme


Kruskal rsout cela en

temps polynomial.
3. On a alors

0
e(p) xe

s 0.

Donc

G(0) =
Par ailleurs,
gal

x0

X
eE

ce x0e

X
eE

ce x0e +

X
e(p)

x0e s min L(x, ) = G().


xX

est un arbre couvrant, satisfaisant les contraintes de l'nonc et dont le cot est

G(0) borne infrieure du problme. C'est donc une solution optimale pour notre problme.
161

4. Quand

varie,

ne change que lorsque l'ordre obtenu en classant les artes par cots

croissants change (algorithme de Kruskal). Cet ordre ne peut changer que lorsque une arte

f (p)

voit son cot concider avec celui d'une arte

est de la forme donne dans l'nonc. On a alors

(e, f )).

tels couples d'artes

On peut maximiser

de Kruskal.

e(p) xe

on a

> s.

ce qui ne peut arriver que si

N
G() en

appliquant au plus

fois l'algorithme

< , on a

X
X
X
X
xe s min L(x, ) = G().
xe s
ce xe +
G() =
ce xe +

5. Si

< i ,

e
/ (p),

1
2
2 |T | (|T | 1) (en comptant le nombre de

Donc, pour tout

eE

eE

e(p)

xX

i . Comme G() est continue


G() G(i ).
P
i
Par ailleurs,
e(p) xe s 0 et donc on a pour tout i

X
X
X
X
G(i ) =
ce xe i + i
xe i s
ce xe i +
xe i s min L(x, ) = G().

Avec ce raisonnement, on montre que

G()

e(p)

est croissant jusqu'

(ou concave  cela sut en fait), on peut conclure que

eE

eE

e(p)

Avec ce raisonnement, on montre que


6. Si

xi

cas. Pour

est de degr

en

p,

e(p)

xX

G() G(i ).

il n'y a rien montrer. Supposons donc que ce ne soit pas le

lgrement infrieur

i ,

le degr de

tous deux solutions du problme de minimisation

x en p est > s. Notons que x et xi sont


de G(i ). Ensuite, il faut remarquer que si on

a deux arbres couvrant optimaux d'un graphe pondr, on peut progressivement substituer les

artes de l'un par les artes de l'autre, tout en maintenant le caractre optimal. En procdant
une telle transformation de

xi ,

l'un des arbres intermdiaires constitue une solution la

question.

P
G(i ) = L(x , i ) et que le degr de x en p est gal s, on a G(i ) = eE ce xe .

Par ailleurs La solution x est une solution ralisable notre problme, et dont le cot concide
avec celui d'une borne infrieure (en l'occurence G(i )). C'est donc une solution optimale.
7. Comme

162

BIBLIOGRAPHIE

[1] R.K. Ahuja, T.I. Magnanti, and J.B. Orlin,

Network ows,

Prentice Hall, 1993.

[2] V. Arya, N. Garg, R. Khandekar, A. Meyerson, K. Mungala, and V. Pandit,

heuristics for k -median and facility location problems,

Local search

SIAM Journal on Computing

33

(2004), 544562.
[3] P. Brucker,

An ecient algorithm for the job-shop problem with two jobs,

Computing

40

(1988), 353359.
[4] V. Chvtal,

Linear programming,

[5] R. Correa and C. Lemarechal,


Mathematical Programming

W. H. Freeman, New York, 1983.

Convergence of some algorithms for convex minimization,

62 (1993), 261275.

[6] D. de Werra, T. M. Liebling, and Hche J.-F.,

Recherche oprationnelle pour ingnieurs,

Presses polytechniques et universitaires romandes, 2003.


[7] S.E. Dreyfus and R.A. Wagner,

Journal of the ACM

[9] D. Gale and L.S. Shapley,

Networks (1972), 195207.

Theoretical improvements in algorithmic eciency for network

[8] J. Edmonds and R.M. Karp,

ow problems,

The Steiner problem in graphs,

19 (1972), 248264.

College admissions and the stability of marriage,

American Ma-

thematical Monthly (1962), 915.


[10] M.R. Garey and D.S. Johson,

completness.

Computers and intractability : A guide to the theory of

np-

Faster and simpler algorithms for multicommodity ow and


other fractional packing problems, Proceedings of the 39th Annual IEEE Symposium on

[11] N. Garg and J. Knemann,

Foundations of Computer Science, 1998, pp. 300309.


[12] A. V. Goldberg,
puting

Scaling algorithms for the shortest paths problem,

24 (1995), 222231.

[13] A.V. Goldberg and R.E. Tarjan,

cycles,

Journal of the ACM

SIAM Journal on Com-

Finding minimum-cost circulations by cancelling negative

36 (1985), 873886.

[14] M. Grtchel, L. Lovsz, and L. Schrijver,

zation,

Geometric algorithms and combinatorial optimi-

2nd edition, Springer, Heidelberg, 1994.

[15] B. Hajek,

Cooling schedules for optimal annealing, Mathematics of Operations Research 13

(1991), 311329.
[16] A. Hertz and D. De Werra,

Using tabu search techniques for graph coloring,

Computing

39

(1987), 345351.

Scheduling a production line to minimize maximum tardiness,

[17] J.R. Jackson,

Tech. report,

University of California, Los Angeles, 1955.


[18] S.M. Jonson,

Optimal two- and three-stage production schedules with setup times included,

Naval Res. Log. Quart


[19] R.M. Karp,
matics

1 (1954), 6168.

A characterization of the minimum cycle mean in a digraph,

23 (1978), 309311.

Discrete Mathe-

[20] Kuhn, (1955).


[21] S. Lin and B.W. Kernighan,

problem,

Operations Research

[22] J. Matousek and B. Grtner,

An eective heuristic algorithm for the traveling-salesman

21 (1973), 498516.

Understanding and using linear programming,

Sringer, Berlin

Heidelberg New York, 2007.


[23] E. Tardos,

A strongly polynomial algorithm to solve combinatorial linear programs,

tions Research
[24] T. Terlaky,
Research

34 (1986), 250256.

An easy way to teach interior-point methods,

130 (2001), 119.

164

Opera-

European Journal of Operational

ANNEXE

QUELQUES OUTILS DE R.O.

Quelques socits
Roadef (www.roadef.org) : socit francaise de recherche oprationnelle et d'aide la dcision.
Euro (www.euro-online.org) : associations europennes des socits de recherche oprationnelle.
Informs (www.informs.org) : Institute for Operations Research and the Management Sciences.
C'est la plus grande socit professionnelle dans le domaine de la recherche oprationnelle.

Ressources en ligne
 24h Operations research.
 Une liste d'outils open-source logiciels pour la Recherche Oprationnelle : NEOS : Server for optimisation (http ://www-neos.mcs.anl.gov) Propose des serveurs de logiciel R.O
utilisables en ligne via des formats de modlisation standard (AMPL, ...)
 Outils par ordre alphabtique COIN-OR (http ://www.coin-or.org/) COmputational INfrastructure for Operations Research Projet Open source, ambitieux, d'origine IBM (C++).
 COMET (http ://www.cs.brown.edu/people/pvh/comet/comet.html) COMET est une platforme associant la recherche local et la programmation par contrainte. COMET s'appuit
sur un langage objet et peut tre tendu (cration de contraintes...) en C++.
 GLPK (http ://www.gnu.org/software/glpk/) : La bibliothque Glpk est livre avec un
solveur autonome (glpsol), capable de traiter des problmes linaires (continus ou en nombre
entier) par des mthodes de simplexe ou de Points Intrieur. Ces problmes peuvent tre
modliss dans dirents langages, dont l'excellent GMPL (clone de AMPL).
 Page RO de Google (http ://code.google.com/p/or-tools/) : Google a dvelopp pour ses
besoins propres un certain nombre d'outils de recherche oprationnelle. Sur ce site, ils sont
proposs en open-source.
 GUSEK (http ://gusek.sourceforge.net/gusek.html) : le solveur GLPK avec une interface ;
pour Windows.
 Graphviz (http ://www.graphviz.org/) : Logiciel permettant d'acher automatiquement
un graphe partir de formats de description textuels simples.
 LP_Solve (http ://groups.yahoo.com/group/lp_solve/) : autre solveur de programmation
linaire.
 LocalSolver (http ://www.localsolver.com/) : solveur permettant de modliser et rsoudre
des problmes d'optimisation discrte par recherche locale ; dvelopp par l'e-lab de Bouygues.
 Operations Research - Java object (http ://OpsResearch.com/OR-Objects) Librairie JAVA
pour (petits) problmes de R.O. Utilisation gratuite, mais sources non accessibles. Ne semble
plus maintenue, mais reste intressante pour les API.
 QSopt-Exact Home Page (http ://www.dii.uchile.cl/ daespino/) Solveur linaire avec calculs
exacts (car rationnels), bas sur la librairie GMP (Gnu Multi Precision)

 TSP (http ://www.tsp.gatech.edu/index.html) : le site de rfrence sur le TSP. De la documentation, des solveurs, interfaces, jeux, etc.
 SCILAB(http ://www.scilab.org/) : L'environnement de calcul scientique open-source de
rfrence.
 SCIP (http ://scip.zib.de/doc/html/index.html) : Peut-tre un des meilleurs logiciels libres
actuels. Il possde de plus une librairie permettant une implmentation simple des branchand-cuts.

Quelques SSII spcialises dans la RO


 Artelys (http ://www.artelys.com/) Socit spcialise en optimisation - formation. Par
ailleurs, Artelys propose dsormais Artelys Kalis un environnement (librairie C++ ou java)
de Programmation par Contraintes exploitable avec le langage de modlisation XpressMosel.
 Eurodcision (http ://www.eurodecision.com) ralise des applications d'aide la dcision
par intgration de technologies d'optimisation et de simulation. Les principaux domaines
d'application sont : la logistique, les ressources humaines, la production, le transport, les
achats, les tlcommunications.
 FuturMaster (http ://www.FuturMaster.com) FuturMaster accompagne ses clients dans
leur dmarche d'amlioration de leurs performances logistiques en leur orant des solutions logicielles pertinentes, volutives et ractives, pour suivre les changements internes et
externes de l'entreprise.
 Rostudel (http ://www.rostudel.com/) C'est une toute jeune entreprise (fonde par un
ancien lve de l'cole des ponts) qui propose des prestations de conseil en recherche oprationnelle.

Quelques socits ditrices de logiciels de RO


 Amadeus (http ://www.amadeus.com) : propose des solutions d'optimisation dans l'industrie du voyage et du tourisme.
 Dash optimization (http ://www.dash.co.uk/) : propose l'outil Xpress-MP.
 Equitime (http ://www.equitime.fr/) : propose des logiciels d'optimisation d'emplois du
temps.
 Gower Optimal Algorithms Ltd (http ://www.packyourcontainer.com/index.htm) : optimisation de la logistique.
 ILOG (http ://www.ilog.fr/products/optimization) Propose des outils de rfrence dans le
domaine de l'optimisation comme ILOG/Cplex pour la programmation linaire et quadratique et ILOG/CP pour la Programmation par contraintes.
 INRO (http ://www.inro.ca/fr/produits/) : L'INRO est spcialise dans les logiciels de
planication des transports : EMME/2 et Dynameq.
 KLS Optim (http ://www.klsoptim.com/) : spcialise dans l'optimisation des plans de
chargement (packing).
 Koalog (http ://www.koalog.com/php/jcs.php) : Cette socit franaise propose entre autre
un Solveur par contraintes crit 100% en java, avec formation... Une application permettant
le choix d'une conguration d' options d'automobile .
 LoadPlanner (http ://www.loadplanner.com/) : spcialise dans l'optimisation des plans de
chargement (packing).
 Opti-time (http ://www.opti-time.com) : spcialise dans l'optimisation de tournes. Logiciel phare TourSolver.
 Ortec (http ://fr.ortec.com/solutions/lb.aspx : spcialise dans l'optimisation des plans de
chargement (packing) et des tournes.

168

 Routing International (http ://www.routing-international.com/index.html) : spcialise dans


l'optimisation de tournes. Logiciel phare : WinRoute.

Entreprises franaises ayant des dpartements avec comptences en RO


EDF, SNCF, Bouygues, Renault, GDF-Suez, Saint-Gobain, Air Liquide, France Telecom, Air
France, Volia, la Poste, l'Arme de Terre, la Marine, ...

Quelques solveurs de programmation linaire


Payants : CPLEX, XPRESS, MINOS
Libres : GLPK, LPSOLVE, CLP, SCIP, SOPLEX
En gnral, ces solveurs peuvent rsoudre bien d'autres types de programmes mathmatiques.

Quelques langages de modlisation


AMPL, APL, OPL, TOMLAB, ...

169

Vous aimerez peut-être aussi