Vous êtes sur la page 1sur 62

Programmation Linaire

Chapitre 1 Programmation linaire


1.1 Qu'est-ce que la programmation linaire
1.1.1 Exemple: le problme du rgime de Polly [1, p.3]

Besoins journaliers:

nergie
2000 kcal
Protines
55g
Calcium
800 mg
Nourriture disponible
Portion nergie (kcal) Protines (g) Calcium (mg) Prix/portion
Crales

28g

110

Poulet

100g

205

32

12

24

Oeufs

2 gros

160

13

54

13

Lait entier

237cc

160

285

Tarte

170g

420

22

20

Porc et haricots 260g


Quels choix pour Polly ?
Contraintes:

260

14

80

19

Crales
au plus 4 portions par jour
Poulet
au plus 3 portions par jour
Oeufs
au plus 2 portions par jour
Lait
au plus 8 portions par jour
Tarte
au plus 2 portions par jour
Porc et haricots
au plus 2 portions par jour
Problem 1 Polly peut-elle trouver une solution ?
Comment formaliser le problme ? (modlisation)

Qu'est-ce qui fait la spcificit du problme ?


Savez-vous rsoudre des problmes similaires ?

1.1.2 Forme standard d'un problme de programmation linaire


Problme 1 [1, p. 5]
Dfinition 1 Problme de programmation linaire sous forme standard:
Maximiser:
n

-z: \ cjx
= / j
-j=
1

Sous les contraintes:


n

-\ a x <= b , pour
ij j
i
/ i=1,...,m
-j=
1

xj>=0, pour j=1,...,n


Un choix des variables (x1,...,xn) est appel solution du problme.
Une solution est faisable si elle vrifie les contraintes.
z est appel fonction objective. chaque solution elle associe une valeur.
Une solution est optimale si elle est faisable et maximize la fonction objective.
Exercice 1 Peut-on mettre sous forme standard les exemples prcdents ?

1.1.3 Existence de solutions optimales ?


Problem 2 [1, p. 7]
On considre les trois problmes de programmation linaire standard suivants, crits avec la syntaxe
du systme de calcul formel MuPAD:
Chvatal7a := [ [

x1

<= 3,

x2 <= 7 ],
3 +x1

+x2,

NonNegative]:
Chvatal7b := [ [

x1

+x2 <= 2,

-2*x1-2*x2 <= -10 ],


3*x1

-x2,

NonNegative]:
Chvatal7c := [ [-2*x1

+x2 <= -1,

-x1-2*x2 <= -2 ],
x1

-x2,

NonNegative]:
extra

:= [ [

x1

+x2 <= 1 ],

x1

+x2,

NonNegative]:

Problem 3 Dterminer pour ces trois problmes s'il y a des solutions optimales.
Premier cas: une solution optimale unique

Deuxime cas: pas de solution faisable


Troisime cas: pas de solution optimale, car on peut faire tendre la fonction objective vers
l'infini avec des solutions faisables.

Quatrime cas: une infinit de solutions optimales.

1.2 Algorithme du simplexe


1.2.1 Premier problme
Problem 1 [1, p. 13]

Chvatal13 := [{2*x1 + 3*x2 +


4*x1 +

x3 <= 5,

x2 + 2*x3 <= 11,

3*x1 + 4*x2 + 2*x3 <= 8


5*x1 + 4*x2 + 3*x3,
NonNegative]:

Solution faisable ?
Amlioration de la solution ?

},

Introduction de variables d'cart:


5

= s1

+ 2*x1 + 3*x2 +

11 =
8

s2

+ 4*x1 +

x3

x2 + 2*x3

s3 + 3*x1 + 4*x2 + 2*x3

---------------------------------z

5*x1 + 4*x2 + 3*x3

En augmentant x1 jusqu' 5/2, on fait tomber s1 zro.


On transforme le systme, pour se ramener une situation similaire la prcdente:
5/2 = x1
1

+ 3/2*x2 + 1/2*x3 + 1/2*s1


s2

1/2 =

5*x2

- 2*s1

s3 - 1/2*x2 + 1/2*x3 - 3/2*s1

----------------------------------------z

= 25/2

- 7/2 x2 + 1/2*x3 - 5/2*s1

On augmente x3 jusqu' 1, ce qui fait tomber s3 0:


1 = x3
2 =

x1

1 =

x2 - 3*s1 + 2*s3

+ 2*x2 + 2*s1 -

s3

s2 - 5*x2 - 2*s1

--------------------------------z = 13

- 3*x2 -

s1 -

s3

Et maintenant, que fait-on ?

1.2.2 Variables d'cart


Problem 2 Est-ce que l'introduction de ces variables change le problme ?

1.2.3 Tableaux
Problem 3 [1, p. 19]
Chvatal19 := [[

x1 + 3*x2
-x1

+3*x3 <= 2,

2*x1 + 3*x2
2*x1

+ x3 <= 3,

- x3 <= 2,

- x2 + 2*x3 <= 4],

5*x1 + 5*x2 + 3*x3,


NonNegative]:

Dfinition 2 Tableau initial:


n

-bi=si \ aijxj, pour


/ i=1,...,m
+
-j=
1
n

-z \ cjx
=/ j
-j=
1

Ou sous forme matricielle:


B =S+ AX
z = CX
X >= 0
Exemple 1 Tableau initial du problme prcdent:
3 = s1

+ x1 + 3 x2

2 =

- x1

s2

2 =

s3

4 =

+ 3 x3

+ 2 x1 + 3 x2
s4 + 2 x1

+ x3

- x3

- x2 + 2 x3

--------------------------------z = 0

+ 5 x1 + 5 x2 + 3 x3

Exemple 4 On peut l'abrger sous forme matricielle:


read("tableaux.mu"):
linopt::Transparent(Chvatal19);
+-

-+

|"linopt","restr",slk[1],slk[2],slk[3],slk[4],x3,x1,x2|
|
|

|
"obj",

0,

0,

0,

0,

0,

|
| slk[1],

|
3,

1,

0,

0,

0,

|
| slk[2],
|

3, 5, 5|

1, 1, 3|
|

2,

0,

1,

0,

0,

3,-1, 0|
|

| slk[3],

2,

0,

0,

1,

0,

-1, 2, 3|

| slk[4],

4,

0,

0,

0,

1,

2, 2,-1|

+-

-+

Dfinition 3 De manire gnrale, un tableau est un ensemble d'quations de la forme:


4 = x1

+ 3/2 x2

- 1/2 x3 + 1/2 s4

2 =

+ 3/2 x2

+ 3/2 x3 - 1/2 s4

+ 3/2 x2

+ 5/2 x3 + 1/2 s4

3 =

s1

2 =

s2
s3

- 4 x2

+ 3 x3

- s4

---------------------------------------z = 5

- 5/2 x2 + 11/2 x3 - 5/2 s4

x1,s1,s2,s3 sont les variables basiques; { x1,s1,s2,s3} est la base.


x2,x3,s4 sont les variables non basiques.
Remarque 5 Terminologie: on utilise dans ce cours les tableaux, plutt que les dictionnaires
utiliss par exemple dans [1]. La diffrence est minime: on fait juste passer les variables non
basiques d'un ct ou de l'autre des quations. D'autre part, on utilise s1,s2,s3,s4 plutt que x4,x5,x6,x7
comme noms pour les variables d'carts.
Voici le dictionnaire correspondant au tableau prcdent:
x1 = 1 - 3/2 x2

+ 1/2 x3 - 1/2 x7

x4 = 2 - 3/2 x2

- 3/2 x3 + 1/2 x7

x5 = 3 - 3/2 x2

- 5/2 x3 - 1/2 x7

x6 = 2

+ 4 x2

- 3 x3

+ x7

--------------------------------z = 5 - 5/2 x2 + 11/2 x3 - 5/2 x7

Remarque 6 La caractristique essentielle d'un tableau est que, connaissant les variables nonbasiques, on peut immdiatement calculer les variables basiques et la fonction objective (d'o le
terme de dictionnaire). Le calcul devient mme immdiat si toutes les variables non-basiques sont
nulles.
Les quations d'un tableau dcrivent un sous-espace affine E de Rn+m.
Un point p de cet espace est caractris par ses coordonnes dans les variables non-basiques.
Exercice 2 Calculer directement le tableau correspondant aux variables non-basiques x1,s2,s3 du
programme linaire Chvatal13.
Exercice 3 Soit t1 et t2 deux tableaux correspondant au mme programme linaire.
Que peut-on dire des deux sous-espaces affine de Rn+m qu'ils dfinissent ?

Chaque choix de variables non-basiques correspond une base affine de ce sous-espace.


Dfinition 7 Le point de coordonnes (0,...,0) dans les variables non-basiques est appell solution
basique du tableau.
Un tableau est faisable si la solution basique (0,...,0) est une solution faisable.
De manire quivalente, un tableau est faisable si les constantes dans les quations du haut sont
toutes positives ou nulles.
Revenons l'exemple [1, p. 19]:
read("tableaux.mu"):

t:=linopt::Transparent(Chvatal19);
t:=linopt::Transparent::userstep(t, slk[3], x3);

Exercice 4 [1, 2.1 p. 26]


Utilisez l'algorithme du simplexe pour rsoudre les programmes linaires suivants:
Chvatal26_21a :=
[[

x1

+x2+2*x3 <= 4,

2*x1

+3*x3 <= 5,

2*x1

+x2+3*x3 <= 7],

3*x1+2*x2+4*x3,
NonNegative]:
Chvatal26_21c :=
[[2*x1+3*x2 <= 3,
x1+5*x2 <= 1,
2*x1

+x2 <= 4,

4*x1

+x2 <= 5],

2*x1

+x2,

NonNegative]:

Exercice 5 Essayez d'appliquer l'algorithme du simplexe aux programmes linaires de l'exercice [1,
p. 7] (cf. ci-dessus). Que se passe-t'il ?

1.3 Piges et comment les viter


1.3.1 Bilan des pisodes prcdents

On a un algorithme qui marche sur quelques exemples.


Il faut vrifier trois points pour savoir s'il marche en gnral:
1. Initialisation
2. Itration
3. Terminaison

1.3.2 Itration
Proposition 1 tant donn un tableau faisable, on peut toujours effectuer l'une des oprations
suivantes:
1. Conclure que le systme a une solution optimale unique, la calculer et la certifier;
2. Conclure que le systme a une infinit de solutions optimales, les calculer et les certifier;
3. Conclure que le systme est non born, et le certifier en dcrivant une demi-droite de
solutions sur laquelle z prend des valeurs aussi grandes que voulu.
4. Trouver une variable entrante, une variable sortante, et effectuer un pivot. Par construction, le
tableau obtenu est quivalent au tableau prcdent, et est encore faisable. De plus, z a
augment au sens large (i.e. la constante z* dans la nouvelle expression de z est suprieure ou
gale l'ancienne).
Proof. Il suffit d'analyser le tableau faisable. Notons S1,...,Sm les variables basiques, X1,...,Xn les
variables non-basiques, et C1,...,Cn,z* les coefficients tels que z=z*+sumCiXi.
Par exemple, dans le tableau final du problme1, on a X1=x2, X2=s1, X3=s2, S1=x1, S2=x3, S3=s3, C1=-3,
C2=-1, C3=-1 et z*=13.
1. Si Ci<0, pour tout i, alors la solution basique du tableau, de coordonnes X1*==Xn*=0 est
l'unique solution optimale. Vrifiez le en prouvant qu'une toute solution faisable quelconque
de coordonnes X1,...,Xn donnant la mme valeur z=z* la fonction objective est gale la
solution basique du tableau.
2. Si Ci<=0 pour tout i, la solution basique du tableau est optimale, et l'ensemble des solutions
optimales est dcrit par les inquations linaires du systme et l'annulation des variables nonbasiques Xi pour lesquelles on a Ci<0. Les dtails sont similaires au 1.
3. Sinon, on peut prendre Xi, variable non-basique avec un coefficient Ci>0. Si les quations du
tableau n'imposent pas de limite sur Xi, le systme est non born: la demi-droite dcrite par
(0,...,0,Xi,0,...,0) pour Xi>=0 est compose de solutions faisables qui donnent des valeurs aussi
grandes que voulu z.
4. Autrement, une des variables basiques Sj tombe zro, et on peut faire un pivot entre la
variable entrante Xi et la variable sortante Sj. Par construction, la nouvelle solution basique
correspond une solution faisable (0,...,0,Xi,0,...,0) pour un Xi>=0. En particulier le nouveau
tableau est faisable, et comme Ci>=0, la constante z* a augment au sens large.
Exemple 2 [1, p. 29] Systme o z n'augmente pas strictement lors du pivot:
Chvatal29 :=

[[

2*x3 <= 1,

- x1 + 3*x2 + 4*x3 <= 2,

2*x1 - 4*x2 + 6*x3 <= 3],


2*x1

- x2 + 8*x3,

NonNegative]:
t0:= linopt::Transparent(Chvatal29);
t1:= linopt::Transparent::userstep(t0, slk[1], x3);
t2:= linopt::Transparent::userstep(t1, slk[3], x1);
t3:= linopt::Transparent::userstep(t2, slk[2], x2);
t4:= linopt::Transparent::userstep(t3, x3, slk[1]);

Remarque 1 Lorsque z n'augmente pas, on est forcment dans une situation de dgnrescence: le
pivot change le tableau, mais pas la solution basique dcrite par le tableau.

1.3.3 Terminaison
Problem 1 Peut-on garantir que l'algorithme va finir par s'arrter ?
Thorme 1 Si l'algorithme du simplexe ne cycle pas, il termine en au plus C(n+m,m) itrations.
Proof. (Rsum)
Chaque itration correspond un tableau faisable.
Un tableau faisable est entirement caractris par le choix des variables basiques.
Il n'y a que C(n+m,m) choix possibles de variables basiques.
Remarque 2 L'algorithme ne peut cycler qu'en prsence de dgnrescence.
Avec une stratgie incorrecte, l'algorithme du simplexe peut cycler ternellement:
Exemple 3 [1, p. 31] Systme cyclant en 6 itrations avec la stratgie:
Choix de la variable entrante avec le coefficient dans l'expression de z le plus fort
Choix de la variable sortante avec le plus petit index
Chvatal31 := [[0.5*x1 - 5.5*x2 - 2.5*x3 +

9*x4 <= 0,

0.5*x1 - 1.5*x2 - 0.5*x3 +

x4 <= 0,

x1
10*x1

<= 1],
- 57*x2

- 9*x3 - 24*x4,

NonNegative]:
t0 := linopt::Transparent(Chvatal31);
t1 := linopt::Transparent::userstep(t0, slk[1], x1);

t2 := linopt::Transparent::userstep(t1, slk[2], x2);


t3 := linopt::Transparent::userstep(t2, x1, x3);
t4 := linopt::Transparent::userstep(t3, x2, x4);
t5 := linopt::Transparent::userstep(t4, x3, slk[1]);
t6 := linopt::Transparent::userstep(t5, x4, slk[2]);

Comment garantir que l'algorithme ne cyclera pas ?


La mthode des perturbations
L'algorithme du simplexe ne peut cycler qu'en prsence de dgnrescence.
Problem 2 Comment se dbarasser des dgnrescences ?
Ide: supprimer les dgnrescences en perturbant lgrement le systme!
Exemple 4 [1, p. 34,35]
On introduit des constantes 1>>>>n.
Inconvnient: solution approche, ou introduction de calcul symbolique
La mthode du plus petit index
Thorme 2 L'algorithme du simplexe termine si, lorsqu'il y a ambigut sur le choix de la variable
entrante ou sortante, on choisit toujours la variable de plus petit index.
Cette mthode est simple et lgante.
Par contre, elle empche toute stratgie pour faire converger l'algorithme plus vite.
Mthodes intermdiaires
Stratgie au choix, mais si z n'augmente pas pendant plus d'un certain nombre d'itrations, on bascule
sur la stratgie du plus petit index jusqu' ce que l'on soit sorti de la dgnrescence.

1.3.4 Initialisation
Pour le moment, l'algorithme du simplexe ncessite de partir d'un tableau faisable.
Problme 2 Dans le cas gnral, comment se ramener un tableau faisable?
Le systme pourrait mme ne pas avoir de solution!
Exemple 5 [1, p. 39] Systme P1:
Maximiser: x1-x2+x3
Sous les contraintes:
2x1-x2+2x3<=4
2x1-3x2+x3<=-5

-x1+x2-2x3<=-1
x1,x2,x3>=0
Exemple 6 Introduction d'un systme auxiliaire P0 pour dterminer si P est faisable:
Maximiser: -x0
Sous les contraintes:
2x1-x2+2x3-x0<=4
2x1-3x2+x3-x0<=-5
-x1+x2-2x3-x0<=-1
x0,x1,x2,x3>=0
Remarques:
P0 est faisable (prendre x0 suffisamment grand);
Les solutions faisables de P correspondent aux solutions faisables de P0 avec x0=0;

P est faisable si et seulement si P0 a une solution faisable avec x0=0.

tudions ce nouveau systme:


Chvatal40 := [[ -x1

+ x2 - 2*x3 - x0 <= -1,

2*x1 - 3*x2
2*x1

+ x3 - x0 <= -5,

- x2 + 2*x3 - x0 <= 4],

-x0,
NonNegative]:
t0:=linopt::Transparent(Chvatal40);
t1:=linopt::Transparent::userstep(t0, slk[2], x0);
t2:=linopt::Transparent::userstep(t1, slk[1], x2);
t3:=linopt::Transparent::userstep(t2, x0, x3);

Maintenant, nous savons que le systme P est faisable.


En fait, en liminant x0 on obtient mme un tableau faisable pour P!
Algorithme du simplexe en deux phases pour rsoudre un problme P sous forme standard:
Phase I:
1. Si (0,...,0) est solution faisable de P, on passe directement la phase II.
2. Dfinir un problme auxiliaire P0.
3. Le premier tableau pour P0 est infaisable.
4. Le rendre faisable par un pivot appropri de x0.

5. Appliquer le simplexe habituel:


a. Si une tape donne, x0 peut sortir de la base, le faire en priorit:
En effet, il y a une solution faisable avec x0=0, et on peut passer en phase II.
b. Si une tape donne on atteint une solution optimale:
i.

Si x0 n'est pas basique:


Il y a une solution faisable avec x0=0. On peut donc passer en phase II.

ii.

Si x0 est basique et z0<0:


P est infaisable, et on s'arrte.

iii.

Sinon x0 est basique et z0=0:


Situation impossible si on fait toujours sortir x0 en priorit de la base.

6. Tirer de P0 un tableau faisable pour P;


Phase II:
1. Appliquer le simplexe habituel partir du tableau donn par P0.
Exercice 1 [1, ex 3.9a p. 44]
Maximiser 3x1+x2
Sous les contraintes:
x1-x2<=-1
-x1-x2<=-3
2x1+x2<=4
x1,x2>=0

t0:=linopt::Transparent(Chvatal44_39a0)
t1:=linopt::Transparent::userstep(t0, slk[2], x0)
t2:=linopt::Transparent::userstep(t1, slk[1], x1)
t3:=linopt::Transparent::userstep(t2, x0, x2)
t0:=linopt::Transparent(Chvatal44_39a)
t1:=linopt::Transparent::userstep(t0, slk[1], x1)
t2:=linopt::Transparent::userstep(t1, slk[2], x2)

t3:=linopt::Transparent::userstep(t2, slk[3], slk[2])

1.3.5 Le thorme fondamental de la programmation linaire


Thorme 3 Tout programme linaire P sous forme standard a l'une des proprits suivantes:
1. Si P n'a pas de solutions optimales, alors P est infaisable ou non born;
2. Si P a une solutions faisable, alors P a une solution basique faisable;
3. Si P a une solution optimale, alors P a une solution basique optimale.

1.4 Efficacit de l'algorithme du simplexe


Pour une discussion complte sur ce thme, nous renvoyons au livre de rfrence [1, 4. How fast is
the simplex method], ainsi qu' l'excellente Foire Aux Questions http://rutcor.rutgers.edu/ mnk/lpfaq.html pour les volutions rcentes.
Exercice 2 [1, 4.2 et 4.3, p. 53]

1.5 Le thorme de dualit


1.5.1 Motivation: estimer la valeur optimale de la fonction objective
Exemple 7 Maximiser: z=4x1+x2+5x3+3x4
Sous les contraintes:
x1-x2-x3+3x4<=1
5x1+x2+3x3+8x4<=55
-x1+2x2+3x3-5x4<=3
x1,x2,x3,x4>=0
Problme 3 Borne infrieure sur la valeur optimale z*?
Borne suprieure sur la valeur optimale z*?
D'aprs la seconde contrainte:
25
z <=4x1+x2+5x3+3x4<=
*

40

275

x1+ x2+5x3+ x4<=


3
3
3

En utilisant la somme de la deuxime et troisime contrainte:


z*<=4x1+3x2+6x3+3x4<=58

Problme 4 Comment faire cela de manire systmatique ?


On recherche des combinaisons linaires des contraintes:
y1 fois la premire contrainte: x1-x2-x3+3x4<=1
y2 fois la seconde contrainte: 5x1+x2+3x3+8x4<=55

y3 fois la troisime contrainte: -x1+2x2+3x3-5x4<=3

Ce qui donne:
(y1+5y2-y3)x1+(-y1+y2+2y3)x2+(-y1+3y2+3y3)x3+(3y1+8y2-5y3)x4
<= y1+55y2+3y3
Quelles sont les contraintes pour obtenir une borne sur z* ?
Pour garder le sens des ingalits: y1,y2,y3>=0
Pour obtenir une majoration de z=4x1+x2+5x3+3x4:
y1+5y2-y3>=4
-y1+y2+2y3>=1
-y1+3y2+3y3>=5
3y1+8y2-5y3>=3
Si y1,y2,y3 satisfont ces conditions, on obtient la borne z<= y1+55y2+3y3.
On veut donc minimiser y1+55y2+3y3!
Par exemple, en prenant y1=0 et y2=y3=1, on retrouve l'ingalit z<=58.

1.5.2 Le problme dual


Dfinition 4 Soit P un programme linaire sous forme standard:
Maximiser:
z n cj
= -- xj
\

/
-j=
1

Sous les contraintes:


n

-\ a x <= b , pour
ij j
i
/ i=1,...,m
-j=
1

xj>=0, pour j=1,...,n


Le dual de P est le problme:
Minimiser:
m

-w \ bi
= / yi
-i=
1

Sous les contraintes:


m

-\ a y >= c , pour
ij i
j
/ j=1,...,n
-i=
1

yi>=0, pour i=1,...,m


P est appel problme primal.
Proposition 2 Si x1,...,xn est une solution faisable du problme primal et y1,...,ym une solution
faisable du problme dual, alors z<= w, i.e.
n

--\ c
\ b
j
i
/ x <= / y
j
i
--j=
1

i=
1

Proof. Il suffit d'appliquer les ingalits qui dfinissent les solutions faisables:
z= n cj xj<= n ( m aij )xj= m ( n aij )yi<= m bi
--- (-- yi ) -- (-- xj )
-- yi=w

\
/
-j=1

(
(\
(/
(-j=1 i=1
(

)
)
)
)
)

\
/
--

(
(\
(/
(-i=1 j=1
(
\
/
--

)
)
)
)
)

\
/
-i=1

En particulier:
Si, comme dans l'exemple prcdent, on connat une solution faisable du problme dual, on
obtient une borne sur le problme primal et rciproquement!
Si on connat une solution faisable du problme primal et une solution faisable du problme
dual telles que z=w, i.e.
n

--\ c \
x= b y,
/ j j / i i
--j=1

i=1

alors on sait que ces deux solutions sont optimales!

Exercice 3 Prouver que les solutions faisables x1=0 , x2=14, x3=0, x4=5 et y1=11, y2=0, y3=6 du
problme original et de son dual sont optimales.
La donne de (y1,y2,y3) donne un certificat de l'optimalit de la solution (x1,x2,x3,x4):
Quelqu'un qui veut faire une vrification peut le faire quasiment sans calcul:
il suffit de tester que les solutions sont faisables et que que z=w.
Problme 5 Est-il toujours possible de trouver un tel certificat ?
La rponse est oui, et c'est le thorme central de la programmation linaire.

1.5.3 Le thorme de dualit


Thorme 4 Si le problme primal a une solution optimale (x1*,...,xn*), alors le problme dual a une
solution optimale (y1*,...,ym*) telle que w*=z*, i.e.
n

--\ x* \ b
i
c j
/ j = / y *.
i
--j=
1

i=
1

Ce thorme nous assure de l'existence d'un certificat.


Mais y-a-t'il une technique pour le calculer ?
Oui, car la preuve va tre constructive: son principe va prcisment tre de construire une solution
optimale, en utilisant le tableau final obtenu par l'algorithme du simplexe.

Exemple 8 Faisons un peu de magie sur notre exemple.


Le tableau initial est:

Chvatal54 :=
[[

x1

- x2

- x3 + 3*x4 <= 1,

5*x1

+ x2 + 3*x3 + 8*x4 <= 55,

-x1

+2*x2 + 3*x3 - 5*x4 <= 3 ],

4*x1

+ x2 + 5*x3 + 3*x4,

NonNegative]:
t0:=linopt::Transparent(Chvatal54)

L'algorithme du simplexe donne comme tableau final:


t1:=linopt::Transparent::userstep(t0, slk[1], x4);
t2:=linopt::Transparent::userstep(t1, slk[3], x2)

Ce calcul donne la solution optimale (x1*:=0, x2*:=14, x3*:=0).


Ce calcul donne aussi un certificat, mais pour le vrifier, il faut refaire tout le calcul!
Sortons le lapin du chapeau ...
La variable y1 est associe la premire contrainte, qui elle mme est associe la variable d'cart
s1. Hop, on prends pour y1* l'oppos du coefficient de s1 dans l'expression de z dans le tableau final.
De mme pour y2* et y3*:
y1*:=11, y2*:=0, y3*:=6.
(y1*,y2*,y3*) est une solution faisable du problme dual.
Par miracle, on obtient w*=z*.
On a donc pu lire le certificat voulu directement sur le tableau final!
Voyons maintenant pourquoi cela marche dans le cas gnral.
Proof. Il suffit de construire une solution faisable (y1*,...,ym*) vrifiant w*=z*.
On applique l'algorithme du simplexe au problme initial, en introduisant comme d'habitude les
variables d'cart s1,...,sm. Dans le tableau final, z est de la forme
n

-\
xj
z=z*+
/
+
-- c
j=1 j

-\
d s,
/ i i
-i=1

o les cj et di sont des coeffs nuls pour les variables basiques, et ngatifs pour les autres.
On pose comme dans l'exemple:
yi*:=-di, pour i=1,...,m.

Il ne reste plus qu' vrifier que (y1*,...,ym*) est faisable et donne w*=z*.
C'est un calcul fastidieux mais direct (surtout sous forme matricielle!) ...
Pour une solution quelconque (x1,...,xn), on a par dfinition:
n

-\ cj
z=
/ xj
-j=1
n

-\ aij
si=bi/ xj
-j=1

En remplaant dans l'expression ci-dessus, on obtient


n

----\ c
\
x
\
\
j
xj=z*+
yi*(bi- aijxj)
/ j
/
- /
/
--- c --j=1
n

j=1 j

i=1

j=1

----\ c
\
\
\
x =z*- b yi*+ ( + aij yi*) xj
/ j j
/ i
/
/
---- c -j=1

i=1

j=1

i=1

Cette galit tant vrifie quel que soit le choix de (x1,...,xn), il doit y avoir galit des coefficients
des xj de part et d'autre. On en dduit d'une part que
n

-\
z*= bi yi*=w*,
/
-j=1

comme voulu, et d'autre part que


m

-\ aij
/ yi*=cj-i=1

>= cj,
c
j

c'est--dire que (y1*,...,ym*) est une solution faisable du problme dual.

1.5.4 Relations entre un problme et son dual


Proposition 3 Le dual du dual d'un problme P est le problme P lui-mme.
Exercice 4 Vrifiez-le sur un exemple.
Il s'ensuit:
Thorme 5 On a les relations suivantes entre un problme P et son dual Q:
P admet une solution optimale si et seulement si Q en admet une.
Si P est faisable, alors Q est born; si Q est faisable, alors P est born.
Remarque 3 Un problme et son dual peuvent tre simultanment infaisables!
Maximiser: 2x1-x2
Sous les contraintes:
x1-x2<=1
-x1+x2<=-2
x1,x2>=0
Le tableau suivant rsume les possibilits (nb: un problme non born est faisable!)
primaldual optimal infaisable non born
optimal

possible impossible impossible

infaisable impossible possible

possible

non born impossible possible impossible

1.5.5 Notations matricielles


Exercice 6 TODO!Introduire les notations matricielles. Vrifier que prendre le dual revient
transposer et multiplier par -1. En dduire que le dual du dual de P est P. Redmontrer la
proposition et le thorme en utilisant les notations matricielles.

1.5.6 Conditions de complmentarit des variables d'cart


Problme 6 Supposons que l'on connaisse la solution optimale (x1*,...,xn*) du problme, mais pas le
tableau final dans l'algorithme du simplexe. Peut-on retrouver la solution optimale (y1*,...,ym*) du
problme dual de faon obtenir un certificat ?
Pour voir cela, on va raffiner l'ingalit w>= z sur des solutions xj et yi faisables en utilisant les
variables d'cart pour mesurer la diffrence w-z.
Exercice 7 On veut introduire des variables d'cart ti pour le problme dual:
Donner une formule raisonable pour ti.

Exprimer w-z en fonction des xi, yi, si, ti.


Par dfinition des variables d'cart si, on a
n

-\
si=bi- aijxj,
/
-j=1

et donc
n

-\
bi=si+ aijxj.
/
-j=1

De mme, par dfinition des variables d'cart tj pour le problme dual, on a


m

-\
tj= aijyi-cj,
/
-i=1

que l'on utilise pour exprimer cj


m

-\
cj= aijyi-tj.
/
-i=1

En remplaant dans l'expression de w-z, on obtient


(
)
(
)
n
n m
n
(
)
(
)
----- --- --(
)
(
)
\
\
\
\ \ aijx \ \ aijy
\
w-z= biyi- cjxj= siyi+ (
)yi- (
)xj+ tjx
/
/
/
/ / j
/ / i
/ j
(
)
(
)
----- --- --) j=1(i=1 ) j=1
i=1
j=1
i=1
i=1(j=1
(
)
(
)
m

Qui se simplifie en:


m

--\
\
w-z= siyi+ tjxj.
/
/
--i=1

j=1

Problme 7 Que peut-on dduire de cette galit ?


Thorme 6 (Complmentarit des variables d'cart) Si (x1*,...,xn*) est solution optimale du
problme primal et (y1*,...,ym*) est solution optimale du problme dual, alors:
yi*=0 ou si*=0, pour tout i=1,...,m;
xj*=0 ou tj*=0, pour tout j=1,...,n.
Problme 8 Et maintenant ? Comment utiliser ce thorme pour trouver (y1*,...,ym*)?
Exercice 5 [1, p. 64-65]
Thorme 7 Si (x1*,...,xn*) est une solution basique non dgnre, alors les quations que l'on tire
du thorme de complmentarit ont une unique solution.
Donc, lorsque la solution optimale du problme est non dgnre, la technique que l'on a utilise
dans les exercices permet toujours d'obtenir un certificat, pour le prix de la rsolution d'un systme de
m quations linaires en m variables.

1.5.7 Interprtation gomtrique de la dualit


Exercice 6 Maximiser x1+x2
Sous les contraintes
2x1+x2<=14
-x1+x2<=8
2x1-x2<=10
x1,x2>=0.
Faire une figure dans le plan de la rgion des solutions faisables.
Donner le problme dual.
Prendre y1=y2=1,y3=0. Donner l'ingalit sur les xi correspondante, et reprsenter la rgion qu'elle
dlimite dans le plan.
Donner quelques solutions faisables du problme dual.
Tracer sur la figure les rgions dlimites par les ingalits correspondantes.
Calculer la solution optimale du primal et du dual.
Les tracer sur la figure.
Essayer d'interprter gomtriquement les thormes que l'on a rencontrs.

1.5.8 Interprtation conomique des variables duales

Problem 1 Modle conomique d'une usine dont on veut maximiser le profit.


Une papetterie produit et vend diffrents types de papier: du papier kraft vendu au rouleau, du
papier recycl vendu la ramette et du papier velin vendu la feuille. Pour cel, elle dispose en
dbut de mois d'un certain stock de matire premire: de l'eau ( l'hectolitre), du chlore (au litre) du
bois ( la tonne), du vieux papier (au kilo), des fibres textiles (au ballot). Remplacer les stocks en fin
de mois un certain cot. Chaque type de papier ncessite une certaine proportion de chaque
matire premire. Par exemple, le chlore sert blanchir le papier; il n'y en a pas besoin pour le
papier kraft; le papier velin est essentiellement produit partir de bois et de fibres textiles, etc. Le
but est de prvoir, pour le mois qui vient, quelle quantit de chaque papier il faut produire pour
maximiser le profit de la papetterie.
Modliser ce problme sous forme de programme linaire sous forme standard.
xj : quantit de produit j fabrique
cj : prix de vente unitaire du produit j
aij: quantit de ressource i consomme par unit de produit j fabrique
bi: limites sur la disponibilit de la ressource i
Maximiser:
n

-z \ cjx
=/ j
-j=
1

Sous les contraintes:


n

-\ a x <= b , pour
ij j
i
/ i=1,...,m;
-j=
1

xj>=0, pour j=1,...,n.


Quelle dimension (au sens physique) ont les variables xj , bi , cj , aij?
On voudrait trouver une interprtation pour les variables yi dans le problme dual. Quelle dimension
physique ont-elles ? Qu'est-ce que cela suggre ?
Cela suggre que yi mesure la valeur intrinsque de la ressource i pour l'usine.
Thorme 8 S'il y a au moins une solution optimale (x1*,...,xm*) non dgnre, alors il existe
strictement positif tel que lorsque |ti|<= pour tout i, le programme linaire relax:

Maximiser:
n

-z \ cjx
=/ j
-j=
1

Sous les contraintes:


n

-\ a x <= b +t , pour
ij j
i
i
/ i=1,...,m;
-j=
1

xj>=0, pour j=1,...,n.


a une solution optimale, et la valeur optimale est
m

-z* \ yi*t
+ / i
-i=
1

o z* est la valeur optimale du problme original et (y1*,...,ym*) est la solution optimale du dual.
Autrement dit, on peut mesurer l'esprance de gain au voisinage d'une solution optimale lorsque l'on
relaxe certaines des contraintes: yi* dcrit le gain que l'usine peut esprer en augmentant la quantit de
ressource i disponible.

1.5.9 Problmes
Problem 2 Utiliser le thorme de dualit pour vrifier les solutions des problmes de
programmation linaire que vous avez rsolu jusqu'ici.
Problem 3 Un bcheron a 100 hectares de bois de feuillus. Couper un hectare de bois et laisser la
zone se rgnrer naturellement cote 10 kF par hectares, et rapporte 50 kF. Alternativement, couper
un hectare de bois, et replanter avec des pins cote 50 kF par hectares, et rapporte terme 120 kF.
Sachant que le bcheron n'a que 4000 kF en caisse au dbut de l'opration, dterminer la meilleure
stratgie adopter et le profit escomptable.
Maintenant, le bcheron a aussi l'option d'emprunter pour augmenter son capital initial, et ce pour
un taux d'intrt total de S% sur la dure de l'opration. Alternativement, il peut dcider d'investir
son capital dans une autre activit rapportant T% sur la dure de l'opration. Dterminer, selon les
valeurs de S et T, la meilleure stratgie adopter.
Problem 4 Pouvez vous interprter les conditions de complmentarit des variables d'cart en
termes conomiques ?

Problem 5 L'objectif est de dmontrer l'un des sens du thorme d'interprtation conomique des
variables duales. L'autre sens est plus technique, et ne sera pas abord ici; voir les rfrences pour
les dtails.
Soit z* la valeur optimale du problme primal et (y1*,...,ym*) une solution optimale quelconque du
problme dual. Montrer que pour toute solution faisable (x1,...,xn) du problme primal o l'on a
relax chaque contrainte i de la quantit ti, on a
n

--\ c x < z* \
j j
yi*t
/ =
/
+
i
--j=
1

i=
1

Proof. Exprimons le fait que (x1,...,xn) est solution faisable du problme avec les contraintes
relaxes:
n

-\
a x <= bi+ti
/ ij j
-j=1

Donc:

(
)
n
m
m
m
m
(
)
------(
)
\ * \ aijx
\ * \ *
\
\ *
yi (
)<= yi bi+ yi ti=w*+ yi*ti=z*+ yi t
/
/ j
/
/
/
/ i
(
)
------) i=1
i=1 (j=1
i=1
i=1
i=1
(
)
m

On a trouv le terme de droite voulu.


Reste trouver le terme de gauche, ce que l'on fait avec une inversion de somme
similaire celle qui a t utilise dans les dmonstrations prcdentes.

(
)
(
)
n
n m
n
(
)
(
)
---- --(
)
(
)
\ * \ aijx \ \
\
yi (
)= ( aijyi* )xj>= cjx
/
/ j
/ /
/ j
(
)
(
)
---- --) j=1(i=1
)
i=1 (j=1
j=1
(
)
(
)
m

Problme 9 Construire un exemple montrant que la conclusion du thorme est fausse si


l'hypothse de non dgnrescence de la solution optimale est omise.

1.6 Applications
1.6.1 Jeux matriciels
Le jeu de Morra
Rgles du jeu (pour deux personnes, Louis et Claire).
chaque tour, chaque joueur cache un ou deux pions, et essaye de parier, voix haute, combien de
pions l'autre joueur a cach. Si un seul des joueurs a pari la bonne solution, son score augmente
d'autant de point qu'il y a de pions cachs en tout; le score de l'autre joueur diminue du mme nombre
de points. Sinon, rien ne ce passe. Par exemple, si Claire cache 2 pions et parie 1 tandis que Louis
cache 2 pions et parie 2, Louis gagne 4 points et Claire en perds 4.
Le but est de trouver une stratgie gagnante.
Exercice 8 Jouez!
chaque tape, chaque joueur a le choix entre 4 actions:
[1,1]: Cacher 1 pion, parier 1 pion
[1,2]: Cacher 1 pion, parier 2 pions

[2,1]: Cacher 2 pions, parier 1 pion

[2,2]: Cacher 2 pions, parier 2 pions

Chacune de ces options est appele stratgie pure.


Problme 10 Est-ce que suivre une stratgie pure est une stratgie raisonnable ?
Quelles autres stratgies ?
Exercice 9 Claire et Louis font un long match.
Stratgie de Claire: inconnue; elle a jou c1 fois [1,1], c2 fois [1,2], c3 fois [2,1] et c4 fois [2,2].
Stratgie de Louis: lancer une pice chaque tour pour choisir entre [1,2] et [2,1].
Calculer les gains et pertes de Claire et Louis.
Rsultat:
Gain de Louis: (c1-c4)/2.
Perte moyenne maximale chaque tour: 1/2.
Une stratgie alatoire de ce type est appelle stratgie mixte.
Exercice 10 Gnralisation: on suppose que Louis se fixe une stratgie mixte. Caractrisez la
meilleure stratgie de contre-attaque de Claire, c'est--dire celle qui minimise le gain moyen de
Louis.

Problem 1 Comment caractriser la meilleure stratgie mixte pour Louis ?


Jeux matriciels
Chaque matrice A=(aij) dfinit un jeu. chaque tour, le joueur par Ligne (Louis) choisit une ligne i
parmi les m lignes, et le joueur par Colonnes (Claire) choisit une colonne j parmi les n colonnes.
Le gain pour Louis est le coefficient aij:
Si aij>=0, Louis reoit aij de Claire
Si aij<=0, Claire reoit -aij de Louis

Si aij=0, il n'y a pas d'change

Exercice 7 crire la matrice pour le jeu de Morra.


crire la matrice pour le jeu papier/ciseaux/caillou/puits.
Exercice 11 Dans un long match, Louis adopte une stratgie mixte, en choisissant au hasard la
stratgie pure i avec une probabilit fixe xi. Claire joue selon une stratgie de son choix: la fin du
match, elle a jou cj fois la stratgie pure j.
On note N:=sumici et yi:=ci/N. Calculer le gain moyen par tour pour Louis.
Dfinition 5 Les vecteurs x:=(x1,...,xm) et y:=(y1,...,yn) sont dit stochastiques:
xi>=0 et x1++xm=1.
On considre x:=[x1,...,xm] comme un vecteur ligne, et y:=[y1,...,yn]T comme un vecteur colonne, de
faon pouvoir crire commodment le gain de Louis sous la forme:
xAy.
Exercice 12 Louis adopte une stratgie mixte donne. Caractriser le gain au pire pour Louis.
Ici, x est constant. Cela peut se mettre sous la forme du programme linaire en y:
xA
miny
y

Si Louis veut une bonne garantie pour maintenir ces gains hauts (ou ses pertes faibles), il peut
chercher une stratgie mixte qui maximise la quantit miny xAy.
On appelle une telle stratgie mixte optimale; son gain moyen vaut
xA
max miny
x

Problem 2 Est-ce que la stratgie mixte optimale est la meilleure stratgie ?


Comment calculer la stratgie optimale ?

Tel quel, le problme ne se met pas sous la forme d'un programme linaire. On avait vu une astuce
pour se dbarasser d'un min dans les contraintes; celle ci ne s'applique cependant que lorsque l'on
prend le min d'un nombre fini d'expressions, alors qu'ici il y en a a priori autant que de choix de y.
Proposition 4 On peut toujours atteindre la quantit miny xAy avec un y de la forme:
(0,...,0,1,0,...,0).
Autrement dit:
m

-\ ax
ij i
mi xAy mi
/ .
=
n
n
y
j -i=
1

Interprtation ?
Proof. Clairement, pour une stratgie pure j donne:
m

-\
minxAy<= / aijxi.
y
-i=1

Maintenant, supposons que j0 minimise sumi=1maij0xi:


m

--\
\
aijxi>= aij0xi pour j=1,...,n.
/
/
--i=1

i=1

Alors, si y:=(y1,...,yn) est un vecteur stochastique, on a:


(
)
(
) (
)(
)
n m
n
m
n
m
n
m
(
)
(
) (
)(
)
-- --- --- ---(
)
(
) (
)(
)
\ \
\ y \ aijx
\ y \ aij0x \ y \ aij0x
xAy=
xa y=
(
)>=
(
)= (
)(
).
/ / i ij j / j / i
/ j / i
/ j / i
(
)
(
) (
)(
)
-- --- --- ---) j=1 (i=1
) (j=1 )(i=1
)
j=1i=1
j=1 (i=1
(
)
(
) (
)(
)
Donc, comme voulu,
m

-\
xAy>= aij0x
/ i
-i=1

Exercice 13 Formuler le problme de trouver une stratgie mixte optimale pour Louis comme un
programme linaire.
Supposons que Claire veuille aussi adopter une stratgie mixte optimale. Formuler de mme son
problme sous forme de programme linaire.
Thorme 9 (Thorme minimax). Pour toute matrice m n A, il existe un vecteur stochastique x*
de longueur m, et un vecteur stochastique y* de longueur n tel que:
mi x*Ay ma xAy*
n =
x ,
y

o le minimum est pris sur tout les vecteurs stochastiques y de longueur n, et le maximum est pris sur
tout les vecteurs stochastiques x de longueur m.
Interprtation ?
Proof. Application immdiate du thorme de dualit.

Dfinition 6 Si A est interprte comme un jeu, la valeur du jeu est la quantit:


mi x*Ay ma xAy*
n =
x .
y

Exercice 8 Calculer la valeur du jeu de Morra et du jeu caillou/pierre/ciseaux/puit.


D'o vient cette particularit ?
Stratgie cache / stratgie rvle
Problem 3 Est-ce que rvler sa stratgie son adversaire, diminue l'esprance de gain?
Morra modifi
Il n'est pas trs pratique de devoir annoncer simultanment les paris.
Problem 4 Est-ce que le jeu est modifi si Claire annonce toujours son pari en premier ?
Exercice 9 Faire l'analyse de ce nouveau jeu.
Bluff et antibluff
Jeu de poker avec trois cartes (jeu invent et analys par Kuhn en 1950).
A et B dposent chacun un pion, puis reoivent chacun une carte.
Ensuite, A peut parier un pion supplmentaire ou passer.

De mme pour B, puis pour A, jusqu' ce que:


Un pari est rpondu par un passe: celui qui a pari gagne tous les pions;
Un pari est rpondu par un pari ou un passe est rpondu par un passe:
Celui qui a la plus haute carte gagne tous les pions.
Exercice 10 Jouez!
tant donn une distribution des cartes, dcrire les stratgies pures pour A et B.
Dcrire toutes les stratgies pures pour A et B.
Quelle est la taille de la matrice des gains ?

Y-a-t'il des stratgies que l'on peut liminer d'office ?


Au final, on peut obtenir comme matrice de gain:
124 124 314 324
112 0

0 -1/6 -1/6

113 0 1/6 1/3 -1/6


122 -1/6 -1/6 1/6 1/6
123 -1/6 0

1/6

312 1/6 -1/3 0 -1/2


313 1/6 -1/6 -1/6 -1/2
322 0 -1/2 1/3 -1/6
323 0 -1/3 1/6 -1/6
Stratgie mixte pour A: [1/3,0,0,1/2,1/6,0,0,0]; stratgie mixte pour B: [2/3,0,0,1/3]T.
Exercice 11 Prouver que ces stratgies sont optimales.
Exercice 12 Lorsque A a la carte 1 en main, calculer en quelles proportions il doit choisir entre les
4 stratgies lmentaires.
Rsum de la stratgie de A:
Avec la carte 1: mixer 1 et 3 en proportions 5:1;
Avec la carte 2: mixer 1 et 2 en proportions 1:1;

Avec la carte 3: mixer 2 et 3 en proportions 1:1.

Pour A, bluffer ou contre-bluffer est rentable.


Rsum de la stratgie de B:
Avec la carte 1: mixer 1 et 3 en proportions 2:1;
Avec la carte 2: mixer 1 et 2 en proportions 2:1;

Avec la carte 3: toujours utiliser 4.

Pour B, bluffer est rentable, mais pas contre-bluffer.

1.7 Rseaux de transport


Objectif: tudier une certaine classe de problmes de programmation linaire sur laquelle l'algorithme
du simplexe prends une forme simple et efficace.

1.7.1 Un exemple d'application


Exemple 9 Considrons le problme de transport d'lectricit suivant.
Les noeuds sont des villes.
Les arcs sont des cbles lectriques, sens unique, reliant les villes.

Sources (noeuds avec production): 6: 9 MW; 7: 5 MW


Puits (noeuds avec consommation): 3: 6 MW; 4: 6 MW; 5: 2 MW
Noeuds intermdiaires (noeuds sans production ni consommation): 1,2
Il y a des pertes en lignes, donc transporter du courant a un cot. On le modlise par un cot par
unit de courant transporte sur chaque arc entre la ville i et la ville j.

Rpartition du flux de courant pour satisfaire la consommation au plus bas cot?


Exercice 13 Mettre le problme prcdent sous forme de problme de programmation linaire.
Qu'a-t'il de spcifique ?
Consommation et production sont modlises par des constantes bi qui reprsentent la demande. On a
pour les puits, bi>0, pour les sources bi<0, et pour les noeuds intermdiaires, bi=0;
Attention, sur les graphiques, c'est l'offre qui est reprsente! Le signe est invers!

Le cot de transport unitaire le long d'un arc est modlis par des constantes cij;
On modlise le flux de courant en mesurant par xij la quantit de courant transfre
directement entre les villes i et j.

Remarque 4 Cette modlisation est a priori ambigue: dans le rseau suivant, x12=1, x23=1 et x24=1
peut reprsenter deux situations diffrentes:
Transporter une unit de 1 vers 3 via 2, et une unit de 2 vers 4 directement;
Transporter une unit de 1 vers 4 via 2, et une unit de 2 vers 3 directement.

Comme le consommateur ne se soucie pas de l'origine du courant (un watt, c'est un watt), et comme
le cot dans les deux situations est le mme, on peut ignorer cette ambigut, et considrer que ces
deux situations sont quivalentes.

1.7.2 Problme standard de transport


Dfinition 7 Un problme comme le prcdent est appel problme standard de transport.
On impose les restrictions suivantes:
La consommation totale est gale la production totale;
Les arcs sont orients, avec au plus un arc dans chaque sens;

Le rseau est connexe (cf. ci-dessous).

Ces restrictions permettent d'obtenir un algorithme plus simple et lgant. Nous verrons plus tard
comment les contourner pour traiter des problmes plus gnraux.
Une solution d'un problme de transport peut tre modlis en introduisant pour chaque arc allant du
noeud i au noeud j une variable xij qui mesure le flux le long de cet arc.
Proposition 5 Une solution dcrite par les valeurs des xij est ralisable (faisable) si et seulement si:
Chaque xij est positif (le flux est dans le sens de l'arc);
Pour chaque noeud intermdiaire, le flux entrant est gal au flux sortant;

Pour chaque source, le flux sortant moins le flux entrant est gal la production;

Pour chaque puit, le flux entrant moins le flux sortant est gal la consommation;

Le seulement si est clair; le si demanderait une vrification pour dcider les dtails de la ralisation:
quel watt venant d'o se retrouve o au final.
Les solutions faisables sont donc dcrites par un systme d'quations de la forme:
x14+x24-x45=6.
(ici, il s'agit du sommet 4 dans notre exemple), et d'ingalits du type x14>=0.
Exercice 14 Donner une solution faisable pour notre exemple.
Remarque 5 Pour des raisons de conventions, on note n le nombre de noeuds du rseau, et m le
nombre d'arcs. C'est l'inverse de ce que l'on avait utilis pour les problmes de programmation
linaire gnraux ...
Dfinition 8 La matrice d'incidence du rseau est une matrice A de taille n m. Les lignes sont
indexes par les noeuds du rseau, et les colonnes par les arcs. Dans la cellule correspondant un
noeud k et un arc ij, on mets un coefficient valant:
-1 si l'arc part du sommet (i=k),
1 si l'arc arrive au sommet (j=k),

0 sinon.
L encore les notations ne sont pas parfaites: une paire ij indexe un arc, et donc une colonne,
et non pas une cellule de la matrice...

Avec cette notation, et en notant b le vecteur colonne des bi, x le vecteur colonne des xij, et c le
vecteur ligne des cij on peut mettre le problme sous forme matricielle:

Minimiser: cx
Sous les contraintes: Ax=b et x>=0.
Exercice 15 crire sous forme matricielle le problme correspondant notre rseau:
[

x13
x14
[ ]
x15
x21
[ ]
x23
x24
[ ]
x: x25 ,
= x45 b:=
[ ]
x61
x62
[ ]
x63
x67
[ ]
x72
x75
[ ]
[

0
[0 ]
6
[6 ]
2
[ -9 ]
-5
[ ]
[

A: [ -1 -1 -1 1
1
]
=
-1 -1 -1 -1
1
1
[1
1
1
]
1
1 -1
[
1
1 1
1]
-1 -1 -1 -1
[
1 -1 -1 ]

c:
[c13 c14 c15 c21 c23 c24 c25 c54 c61 c62 c63 c67 c72 c75 ]
=
c:
[48 28 10 7 65 38 7 56 48 108 24 33 19 ]
=
On peut vrifier que dans lgalit Ax=b, la quatrime composante donne l'quation
x14+x24-x45=6,
correspondant au sommet 4.

1.7.3 Solutions faisables arborescentes


Dfinition 9 Quelques classes de graphes classiques:
Chemin

Cycle

Graphe non connexe

Graphe connexe

Fort (graphe acyclique)

Arbre

Arbre couvrant du rseau:

Exercice 16 Supposez que seuls les arcs dans l'arbre couvrant prcdent peuvent tre utiliss.
Y-a-t'il une solution ? Est-elle faisable ?
Proposition 6 tant donn un arbre couvrant T, il y a une unique solution de transport pour
satisfaire les contraintes de production et consommation en n'utilisant que les arcs de l'arbre
couvrant.
Formellement, il existe un unique vecteur x:=[xij] vrifiant:
Ax=b et xij=0 pour ij n'appartenant pas T.
Dfinition 10 On appelle une telle solution arborescente.
Si de plus le vecteur x vrifie x>=0, c'est une solution arborescente faisable.
On dit aussi que l'arbre est faisable.

1.7.4 Algorithme du simplexe pour les rseaux, une motivation conomique


Exemple 10 Description de l'algorithme sur le rseau prcdent.

1.7.5 Dmonstration algbrique de l'optimalit

Soit T un arbre.
On note x:=[xij] la solution correspondante.
Objectif: comparer le cot cx pour la solution x avec le cot cxpour une autre solution faisable x.
Soit y:=[y1,...,yn] les prix chaque noeuds pour la solution x.
Lors de l'application du simplexe, on a compar le cot du transport cij d'une unit le long de l'arc ij
par rapport la diffrence de prix yj-yi entre les noeuds i et j.
On pose cij:=cij-(yj-yi), et c=[cij] le vecteur ligne correspondant.
Exercice 17 Montrer que c=c-yA.
Lemme 1 On a cx=cx+cx.
Proof. On va utiliser le rsultat de l'exercice pour reformuler le cot de x en fonction de c:
= +yA
+y
=
c (
)
A

x c

x cx

= +yb.

x cx

En particulier, cx=cx+yb.
Comme en plus cij=0 si ijappartient T et xij=0 si ijn'appartient pas T, cx=0, on a cx=yb.
Conclusion: cx=cx+cx.
Thorme 10 Si cij>=0 pour tout arc ij, alors la solution x est optimale.
Exercice: finissez de le dmontrer!
Proof. Si x est une autre solution faisable, xij>=0. Donc cx=sumcijxij>=0.

1.7.6 Initialisation
Comment choisir un arbre de dpart faisable ?
On va, comme pour le simplexe habituel, introduire un problme auxiliaire:
1. Choisir un arbre couvrant T.
2. Calculer la solution x correspondante.
3. Si pour un arc ij de T on a xij<0, la solution est infaisable. Ca n'est pas un problme:
S'il n'existe pas, on ajoute un arc artificiel ji dans le rseau.
On met ji la place de ij dans T.
4. L'arbre obtenu est faisable dans le rseau modifi.

Problme: existe-t'il un arbre faisable dans le rseau modifi n'utilisant pas d'arc artificiel?
On prend comme fonction de cot w:=sumij artificiel xij.
De la sorte, si x est une solution faisable du problme original, alors w=0.
On applique le simplexe. la fin, on est dans l'une des situations suivantes:
1. w*>0: Le problme original est infaisable.
2. w*=0, et l'arbre final T1 n'utilise aucun arc artificiel:
T1 est une solution faisable du problme initial, comme voulu.
3. w*=0, et l'arbre final T1 utilise au moins un arc artificiel:

On a clairement xij*=0 pour tous les arcs artificiels.


Comme le rseau est connexe, on peut toujours changer les arcs artificiels par d'autres arcs
non artificiels, sans changer les xij*.

1.7.7 Terminaison et cyclage


Comme dans le cas gnral, l'algorithme du simplexe pour les rseaux a les proprits suivantes:
Il peut y avoir des situations dgnres (pivot ne changeant pas le cot);
L'algorithme peut cycler, mais seulement en prsence de dgnrescence;

S'il ne cycle pas, alors il termine;

Il y a des stratgies efficaces pour viter les cycles.

Mme en vitant les cycles, la complexit au pire peut monter jusqu' 2n;

Dans la pratique, il ne cycle jamais; la complexit est infrieure n.

Pour les dtails, nous renvoyons [1, Ch. 19].

1.7.8 Comment contourner les restrictions ?


Dans les exercices suivants, on cherche contourner les restrictions sur les problmes standards de
transport.
Arcs orients
galit de la production et de la consommation

Connexit

Au plus un arc dans chaque sens entre deux sommets

Exercice 18 Dans les problmes suivants, on veut rpartir au mieux le transport d'oranges via des
rseaux ferroviaires, avec les productions et consommations indiques sur les noeuds, et les cots de
transports indiqus sur les arcs. Pour chacun d'entre eux, indiquer si on peut le modliser sous forme
de problme standard de transport, et si oui, comment.

1.8 Applications du simplexe des problmes de transports


Problem 1 Une usine de barrettes mmoire pour ordinateur doit faire face une demande
fluctuante dans le temps. On suppose que pour l'anne venir, la demande dj pour chaque mois j est
connue l'avance (cette hypothse vaut ce qu'elle vaut).
Pour adapter la production la demande, l'usine a le choix entre plusieurs options:
Stocker des barrettes d'un mois sur l'autre, sans limite, mais pour un cot unitaire de a.
Produire, dans la limite de r barrettes par mois, pour un cot unitaire de b.

Surproduire, dans la limite de s barrettes par mois, moyennant un cot unitaire plus lev c.

la fin de l'anne, on veut de plus qu'il n'y ait plus aucun stock, afin de faciliter l'inventaire.
videmment, l'objectif est d'adapter la production au moindre cot.
Modliser ce problme sous forme de problme de transport standard.

1.8.1 Un problme d'assignement


Exercice 19 Rpartition de cours entre plusieurs professeurs.
Dans le dpartement de mathmatiques d'une universit aux USA, l'valuation des enseignants par
les tudiants a donn au cours des derniers semestres les rsultats suivants:
CoursProfesseur
Bill Yu Luis John Hugh
Calculus 1

4 2,3 2,9

2,8

Differential Equations 2,25 3,2 3,7 1,9

4,4

Statistics

2,6 3,7 4,5 2.7

3,1

Calculus 2

3,9 4,1 2,6 3,9

2,4

Discrete maths

2,8 2,8 3,5 3,4

4,2

Dans un semestre, chaque cours est enseign par un professeur, et chaque professeur enseigne un
cours. Le chef du dpartement veut rpartir les cours du prochain semestre entre les professeurs de
faon exploiter au mieux leurs talents respectifs (ou minimiser la grogne des tudiants, au choix...).
Il dcide de prendre comme mesure de la qualit d'une rpartition la moyenne sur chaque cours de la
note du professeur qui l'enseigne.
Modliser le problme, et indiquer comment on pourrait le rsoudre.
Problme 11 Est-on sr d'obtenir une solution entire ?
Thorme 11 (dit d'intgralit) Soit P un problme standard de transport o les contraintes sont
entires (i.e. les bi sont entiers). Alors:
1. Si P a une solution, alors il a une solution coefficients entiers;
2. Si P a une solution optimale, alors il a une solution optimale coefficients entiers.
Proof. Une solution arborescente pour P a toujours des coefficients entiers!
En effet, la matrice d'incidence de l'arbre a des coefficients 1, -1 et 0, et on peut la mettre sous forme
triangulaire avec des coefficients 1 et-1 sur la diagonnale. Du coup, lorsque l'on calcule le flux le
long des arcs de l'arbre (ce qui revient inverser la matrice), on obtient uniquement des flux entiers.
Le thorme d'intgralit est assez simple. Alors quel est son intrt ?
Le problme prcdent est appell problme d'assignement, et est essentiellement combinatoire (les
variables sont discrtes).
Ce que dit fondamentalement le thorme d'intgralit, c'est que dans certains cas les mthodes de
programmation linaire peuvent tre utilises pour rsoudre des problmes purement combinatoire,
ce qui est loin d'tre trivial!
C'est le sujet de la combinatoire polyhdrale.

1.8.2 Quelques commentaires sur la programmation linaire en coefficients entiers


Les problmes de programmation linaire en entiers (on impose que les solutions soit coordonnes
entires) sont notoirement difficile. Ils sont la plupart du temps NP-complets, et ncessitent la plupart
du temps l'utilisation d'algorithme de backtrack (essai-erreur) qui ne sont pas polynomiaux.
Par contre, si par chance on peut les mettre sous forme de problmes standards de transport, le
thorme d'intgralit permet de les rsoudre par l'algorithme du simplexe.
Exemple 11 Un problme de sac--dos:
On a des objets de diffrentes tailles l1,...,ln et diffrentes valeurs v1,...,vnque l'on veut mettre dans un
sac--dos de taille l. videmment le sac est trop petit, et l'on doit donc faire un choix. Le but est de
remplir au maximum le sac--dos. Cela peut se mettre sous la forme:
Maximiser v=sumi=1nxivi, sous les contraintes 0<= xi<=1, xi entier.

Peut-on le mettre sous forme de problme de transport ?


Exemple 12 Le problme d'assignement cours/professeurs.
Problme 12 Est-ce que ce ce problme est polynomial ?
On note que l'algorithme du simplexe n'est pas polynomial!
Par contre, il existe un autre algorithme, dit de l'ellipsode, pour rsoudre les problme de
programmation linaire qui est polynomial. Il est amusant de constater qu'en pratique il est moins
efficace que l'algorithme du simplexe. Nous renvoyons au Chvatal pour une description complte de
cet algorithme.
Toujours est-il que cela peut permettre de montrer que le problme d'assignement est polynomial.

1.8.3 Combinatoire polyhdrale


Pour des dtails sur ce domaine, nous recommandons particulirement la lecture de l'article sur le
sujet dans le handbook of combinatorics.
L'ide gnrale de la combinatoire polyhdrale est la suivante:
On part d'un problme d'optimisation combinatoire du type maximiser une certaine quantit
sur un ensemble discret E
On le transforme en problme de programmation linaire, en assignant aux lments de E des
vecteurs, et en considrant le polyhdre convexe qu'ils engendrent.

Ce convexe peut tre dcrit par des ingalits (Comment ? c'est l'tape difficile!).

On a alors un problme de programmation linaire, que l'on peut rsoudre.

Si tout ce passe bien, le thorme d'intgralit garantit que la solution trouve correspond bien
un des vecteurs extrmaux correspondant aux lments de E.

Le thorme de dualit donne alors des relations de type min-max entre des problmes
combinatoires.
Thorme de Knig (lemme des mariages)
Thorme 12 On a un ensemble de n filles et n garons que l'on veut marier ensemble. Dans notre
grande magnanimit, on veut bien faire attention ne pas marier deux personnes qui ne se
connaissent pas.
Si chaque fille connait exactement k>=1 garons et chaque garon connat exactement k filles, alors
on peut arranger n mariages de faon ne pas marier des inconnus.
Exercice 20 Prouvez ce thorme en construisant le problme de transport qui va bien.

Proof. On associe chaque fille i une source ri produisant une unit, et chaque garon un puit si
consommant une unit, et on met un arc entre chaque couple ri si se connaissant.
Indpendamment du cot sur les arcs, le problme est faisable:
Il suffit de mettre un flux de 1/k sur chaque arc.
Le thorme d'intgralit indique alors qu'il y a une solution entire.
Cette solution entire donne une faon d'organiser les mariages.
Matrices doublement stochastiques
Dfinition 11 Une matrice X=[xij] de taille n n est doublement stochastique si les coefficients xij
sont positifs et si la somme des coefficients sur chaque ligne et chaque colonne vaut 1:
[
]
[ 0,5 0,2 0,3 ]
0,01 0,7 0,29 .
[0,49 0,1 0,41 ]
[

X est une matrice de permutation si sur chaque ligne et chaque colonne il y a exactement un 1 et n-1
zros:
[
]
[0 1 0 ]
001 .
[1 0 0 ]
[

La matrice prcdente correspond la permutation 3,1,2.


Clairement une matrice de permutation est une matrice doublement stochastique.
Les matrices de permutations sont les matrices doublement stochastiques coeffs entiers.
Exemple 13 Dimension 2: quelles sont les matrices doublement stochastiques ? quelles sont les
matrices de permutations ?
Thorme 13 (Birkhoff-Von Neumann) Toute matrice doublement stochastique est une combinaison
linaire convexe de matrices de permutations.
Exercice 14 crire la matrice doublement stochastique ci-dessus comme combinaison linaire
convexe de matrices de permutations.

Lemme 2 Pour toute matrice X doublement stochastique, on peut trouver une matrice de
permutation Y de faon ce que si xij=0 alors yij=0.
Exercice 15 Dmontrer ce lemme en utilisant un rseau de transport adquat, et dduisez-en le
thorme.

Couvertures et couplages dans les graphes bipartis


On va maintenant regarder une application de la programmation linaire pour tudier des graphes non
orients comme le suivant:

Une couverture C de ce graphe est un ensemble de sommets qui touchent toutes les artes, comme
par exemple C:={1,3,4,7,8}:

Exemple 2 On a 8 petits villages relis par des routes. En cas d'accident de la route, on veut que les
pompiers puissent intervenir rapidement. Le prefet impose que lorsqu'une route relie deux villages, il
y ait une caserne de pompier dans au moins l'un des deux villages. videmment le budget est serr,
donc on veut construire des casernes de pompier dans un nombre minimal de villages.
Modlisation: Chaque village est reprsent par un sommet du graphe prcdent, les artes

reprsentant les routes. Rsoudre notre problme revient chercher une couverture de taille
minimale du graphe.
Un couplage M de ce graphe est un ensemble d'artes qui ne se touchent pas, comme par exemple
M:={{1,3},{4,5},{7,8}}:

Exemple 3 On veut loger un groupe de 8 personnes dans un hotel, avec des chambres simples et
doubles. Pour minimiser les dpenses, on utiliser le maximum de chambres doubles. D'un autre ct
on ne veut pas forcer deux personnes qui ne se connaissent pas bien partager une chambre.
Modlisation: chaque sommet du graphe prcdent reprsente une personne, et chaque arte relie
deux personnes qui se connaissent bien. Rsoudre notre problme revient alors rechercher un
couplage de taille maximale dans le graphe.
Exercice 16 Montrer que pour un couplage M et une couverture C d'un mme graphe, on a toujours
|M|<=|C|.
Proof. Comme C est une couverture, chaque arte de M devra tre touche par au moins un sommet
dans C. De plus, M tant un couplage, chaque sommet de C touche au plus une arte de M. Donc, on
a bien |M|<=|C|.
Problem 4 Peut-on trouver M et C de faon avoir galit ?
Dans notre exemple, non. Par contre, on va voir que pour certaines classes de graphe, cela va tre
vrai: on aura un thorme de dualit min-max. Comme par hasard, c'est une consquence de la
programmation linaire.
On appelle graphe biparti un graphe dont on peut partitioner les sommets en deux paquets A et B de
sorte que toutes les artes soient entre A et B:

Exercice 17 On veut rechercher un couplage maximal du graphe prcdent. Montrer comment on


peut rsoudre ce problme en utilisant un rseau de transport.
On peut par exemple introduire le rseau suivant.

Chaque solution entire du rseau correspond un couplage M du graphe biparti (les artes sur
lesquelles passent une unit). Le cot de cette solution est 4-|M|. Donc minimiser ce cot revient
rechercher un couplage de taille max.
Voil une solution arborescente optimale du rseau; on a indiqu sur les sommets les prix relatifs, et
sur les artes les quantits transportes:

La taille maximale d'un couplage M est donc 3.


On remarque que les sommets du graphe biparti de prix 1 gauche et de prix 0 droite (en gris)
forment une couverture optimale de taille 3 du graphe biparti.
Problem 5 Est-ce une concidence?
Exercice 18 Soit T une solution arborescente optimale pour le rseau associ un graphe biparti
quelconque. On dfinit M et C comme ci-dessus.
1. Vrifier que si ij est une arte du graphe biparti, et si in'appartient pas C, alors jappartient
C.
2. En dduire que C est une couverture du graphe biparti.
3. Vrifier que si i est dans C, alors i appartient une des artes du couplage M.
4. Vrifier que si ij est une des artes du couplage M, alors i et j ne sont pas simultanment dans
C.
5. En dduire que |M|=|C|.
Theorem 6 (Knig-Egervry) Dans tout graphe biparti, la taille d'un couplage maximal est gale
la taille d'une couverture minimale.
C'est une exemple typique o le thorme de dualit de la programmation linaire donne un thorme
min-max reliant deux problmes combinatoires qui ne sont pas clairement relis a priori.

1.9 Problmes de transports avec limites de capacits


Exemple 14 Modliser un rseau routier par un rseau de transport sous forme standard n'est pas
trs raliste: sur une autoroute donne, on ne peut pas faire passer autant de camions que l'on veut !
Dans cette section, nous allons regarder une gnralisation des problmes de transports, dans lesquels
on ajoutera des contraintes de capacits maximales.
Nous verrons rapidement que l'algorithme du simplexe et les rsultats thoriques en dcoulant
peuvent tre tendus sans grosses difficults. Puis nous tudierons quelques applications.

Dfinition 12 Problme de transport avec limites de capacits sous forme standard:


Minimiser: cx
Sous les contraintes: Ax=b et 0<= x<= u,
o A est la matrice d'incidence d'un rseau.
(u pour upper bound).
Exercice 21 Peut-on mettre le problme suivant sous forme standard ?
Minimiser: cx
Sous les contraintes: Ax=b et l<= x<= u.

Exercice 22 Donner une solution optimale pour le problme suivant:

.
Comme on peut le constater dans l'exercice prcdent, on ne peut pas toujours esprer trouver une
solution optimale, ni mme une solution faisable arborescente: c'est--dire telle qu'on utilise aucune
arte en dehors d'un certain arbre T.
On va donc relcher cette contrainte. Toute arte en dehors de l'arbre T devra tre soit non utilise,
soit au contraire utilise pleine capacit:
Dfinition 13 Soit T un arbre couvrant du rseau.
Une solution x est T-arborescente si tout arc ijn'appartient pas T on a:
xij=0 ou xij=uij.
Une solution x est arborescente s'il existe un arbre couvrant T tel que x est T-arborescente.
Exercice 23 Donner une solution arborescente au problme prcdent.

Exercice 24 tant donn un arbre T, a-t'on unicit de la solution arborescente vis--vis de cet arbre
?
Exercice 25 Montrer que si les bi et les uij sont entiers, alors toute solution arborescente est entire.
Nous allons maintenant voir sur un exemple comment on peut adapter l'algorithme du simplexe pour
les rseaux.
Dans le cas classique (sans limites de capacits), le principe tait de faire rentrer dans l'arbre T une
arte ij inutilise (xij=0) rentable (yi+cij<yj) de faon pouvoir l'utiliser.
Ici, il y a un autre cas de figure: faire rentrer une arrte ij utilise pleine capacit (xij=uij) alors
qu'elle n'est pas rentable (yi+cij>yj), de faon pouvoir diminuer son utilisation.
Exemple 1 Cf. [1, p.356-359].
Thorme 14 Soit x une solution T-arborescente telle que pour toute arte ij en dehors de l'arbre,
on ait:
soit xij=0 et yi+cij>= yj,
soit xij=uij et yi+cij<= yj.
Alors x est une solution optimale.
Proof. La dmonstration est trs similaire celle du cas sans limites de capacits.
On va considrer une autre solution faisable x du problme, et comparer les cots cx et cx
correspondants.
On pose cij:=cij-(yj-yi), et c=[cij] le vecteur ligne correspondant.
cij mesure le cot relatif:
cij=0 si ij est dans T
cij>=0 si xij=0 (non rentable d'utiliser l'arc ij).

cij<=0 si xij=uij (rentable d'utiliser l'arc ij pleine capacit).

On note que dans les trois cas, cijxij>=cijxij. Donc matriciellement cx>=cx.
Comme prcdemment on peut crire c matriciellement sous la forme c=c-yA.
De plus, x et x sont solutions faisables et vrifient donc toutes deux Ax=b.
On en dduit alors:

c =

+y
A

x cx

+yb> x+yb
=

x cx

x+yAx=cx.

1.10 Problmes de flot maximum

1.10.1 Introduction
Dfinition 14 Problme de flot max:
Rseau avec source et puits
Pas de cots sur les arcs

Contraintes de capacits sur les arcs

Production et consommation nulle sur chaque noeud intermdiaire

Objectif:
Maximiser le volume du flot, c'est--dire la quantit transporte entre s et p.
Exemple 15 Un dimanche soir, maximiser le nombre de voitures allant d'Albertville Lyon, en les
rpartissant entre les diffrentes routes possibles.
Exercice 26 Mettre le problme de flot dessin ci-dessus sous forme de problme de transport
standard avec limites de capacits
Clairement, cela se gnralise tout problme de flot max.
Problme 13 Que peut-on en dduire ?
On a un algorithme de rsolution (simplexe)

Le problme de flot est polynomial


On a un thorme d'intgralit:
Si les contraintes de capacits sont entires (ou infinies), alors:

Soit le problme est non born:

Soit le problme a une solution entire

On doit bien avoir une dualit !

1.10.2 Dualit: le thorme flot max / coupe min


Dfinition 15 Une coupe C dans un rseau est un ensemble de sommets du rseau contenant la
source.
La capacit de la coupe C est la somme des capacits des arrtes sortantes de C.
Exemple 16 Dans notre rseau, la coupe C={s} est de capacit 5.

Exercice 27 Quelle est la capacit de la coupe C={s,i2,i3}?


Que peut-on en dduire sur la valeur d'un flot ?

Proposition 7 Pour toute coupe C et tout flot F dans un rseau, la capacit |C| de la coupe est
suprieure au volume |F| du flot: |C|>=|F|.
Problme 14 Que peut on esprer avoir ?
Une dualit et un thorme min-max, bien-sr!
Thorme 15 (Coupe min-Flot max) Dans un rseau, le volume maximal d'un flot est gal la
capacit minimale d'une coupe.
Exercice 28 Vrifiez-le dans notre exemple.
Proof. On considre une solution F optimale du problme de flot obtenue avec le simplexe pour les
rseaux avec limites de capacit.

On calcule les valeurs yi en chaque sommets.


Les cots sont de 0 partout sauf sur l'arc ps, o le cot est de -1.
Donc la valeur de yi est:
0 si i est reli s dans T,
1 si i est reli t dans T.
On prend comme coupe C l'ensemble des sommets i avec yi=0.
Chaque arc ij sortant de C est rentable puisque yi+cij=0<1=yj.
Or, ij n'est pas dans l'arbre, et le flot est optimal.
Donc ij doit tre utilis pleine capacit: xij=uij.
De mme, tout arc ij entrant est non rentable, et n'est donc pas utilis: xij=0.
Conclusion: Le volume du flot F est gal la capacit de la coupe C:
-|F|=\
/
-ij sortant

-xij- \
/
-ij entrant

-xij= \
/
--

uij=|C|.

ij sortant

Remarque 6 Il y a quelques boulons serrer.


1. Le simplexe pourrait terminer en indiquant que le problme est non born: i.e. il existe des
flots de volume aussi grand que l'on veut:

Dans ce cas, il ne peut pas y avoir de coupe de capacit finie.


Donc le thorme reste valide.
2. Le simplexe pourrait indiquer que le problme est non faisable.
En fait, non, puisque xij=0, pour tout xij est solution.
3. Si le flot max est de volume 0, il se pourrait que l'arbre ne contienne pas l'arc ps. Du coup,
l'ensemble des sommets i tels que yi=0 ne serait pas forcment une coupe.
Un tel cas correspond en fait une solution dgnre qui est arborescente vis--vis de
plusieurs arbres.
En fait, en faisant un pivot convenable, on peut toujours remettre ps dans l'arbre.

1.10.3 Applications
On a vu que les problmes de flots tait un cas particulier des problmes de transport avec limites de
capacits.
Quel est donc l'intrt de considrer les problmes de flots ?
On a un algorithme (mthode du chemin augmentant) plus rapide que le simplexe.
Trouver une solution faisable dans un problme de transport avec limites de capacits
Exemple 17 On prend le problme de transport suivant, et on se demande s'il est faisable.

On peut le transformer en problme de flot, en oubliant les cots, et en rajoutant une source, relie
convenablement aux producteurs, et un puits, reli convenablement aux consommateurs:

S'il existe un flot de volume 8, les arcs reliant s aux producteurs seront utiliss pleine capacit, et
de mme pour les arcs reliant les consommateurs t. Cela simule exactement les productions et
consommations escomptes, donc le problme de rseau d'origine est faisable.
La rciproque est aussi clairement vraie: si le problme est faisable, alors il existe un flot de volume
8.
Dans notre cas, on en dduit que le problme n'est pas faisable. En effet, on peut trouver une coupe
de capacit 7.
De manire gnrale, on peut toujours transformer un problme de transport avec limite de capacit
en un problme de flot, de faon dterminer s'il est faisable.
Cela donne un algorithme plus rapide que le simplexe pour la phase I de la rsolution.
Couplages dans les graphes bipartis
Exercice 29 Mettre sous forme de problme de flot le problme de rechercher un couplage max
dans le graphe biparti suivant.

Problme des mines ciel ouvert


Problme 15 Des tudes gologiques ont permis de dterminer prcisment la nature du sous-sol,
et l'emplacement des gisements orifres l'endroit ou l'on a dcid de creuser une mine ciel ouvert.
Certains gisements sont profonds, et il n'est pas clair qu'il soit rentable d'excaver tout le sol audessus pour y accder.
Modle: le sous-sol a t dlimit en un certain nombre de blocs. Pour chaque bloc i, on connat le
cot Ci d'excavation, et le profit Pi que l'on peut escompter de son traitement.
Au final, on associe chaque bloc i la quantit wi=Ci-Pi. Si l'on ne considre pas les autres blocs, il
est rentable de creuser i si et seulement si wi<0.
On veut dterminer quels blocs on doit creuser pour maximiser le profit total -sumiwi (ou autrement
dit minimiser sumiwi).
Maintenant, il y a des contraintes supplmentaires: si un bloc i est sous un bloc j, on ne peux pas
creuser i sans creuser j!
On introduit un ordre partiel, de sorte que i<j si pour creuser i on doit creuser j.
Comme on le verra, la forme des blocs, et le type d'ordre partiel n'est pas relevant.
Exemple 18 On considre le sous-sol suivant:
Comment modliser notre problme sous forme de problme de flot max ?
La modlisation des contraintes de prcdences et un peu astucieuse!
On introduit le rseau suivant:
C'est la remarque suivante qui va faire marcher la machine:
Remarque 7 Soit C une coupe.
S'il existe deux blocs i<j, avec iappartient C et jappartient C, alors C est de capacit infinie.
La rciproque est vraie.
Les coupes de capacit finie sont en correspondance avec les coupes respectant les contraintes.
Maintenant, on peut vrifier que la capacit d'une coupe finie vaut exactement
-\
/
--

-\
wi-/
-iappartient C, i bloc non
rentable

wi.
in'appartient pas C, i bloc
rentable

Quitte rajouter le terme constant sumi, i blocwi, on est en train de calculer le profit lorsque l'on enlve
les blocs i avec iappartient C.

Rsum: Soit I un ensemble de blocs, et C la coupe {s}union I.


Si I ne satisfait pas les contraintes, la capacit de C est infinie.
Si I satisfait les contraintes, la capacit de C est l'oppos du profit.
Maximiser le profit revient trouver une coupe min.
Remarque 8 En termes pdants: on peut rsoudre par un algorithme de flot le problme de trouver
une section finale de poids minimal dans un ordre partiel.
Dualits chanes/antichanes dans les ordres partiels; thorme de Dilworth
Problem 1 [1, p. 338] Problme des visites guides. Une compagnie propose 7 visites guides dans
la journe, notes a,b,c,d,e,f,g, dont les horaires et dures sont fixes. Si une visite (par ex. a)
termine suffisament avant une autre (par exemple c), le guide de la premire visite peut enchaner
sur la deuxime; on notera alors a-> c. En l'occurence, voici tous les enchanements possibles:
a-> c, a-> d, a-> f, a-> g, b-> c, b-> g, d-> g, e-> f, e-> g.
Combien de guides faut-il de guides au minimum dans cet exemple ?
Comment trouver le nombre minimum de guides ncessaires dans le cas gnral ?
Dfinition 16 Soit P=(E,<) un ordre partiel.
Une chane C de P est un ensemble de sommets de P deux -deux comparables:
xappartient C et yappartient C => x<y ou y<x.
Une antichane A de P est un ensemble de sommets deux--deux incomparables.
Une couverture en chanes de P est un ensemble C1,...,Ck de chanes, de sorte que tout sommet de P
est dans une unique chane Ci.
Une couverture en antichanes de P est un ensemble A1,...,Ak d'antichanes, de sorte que tout sommet
de P est dans une unique antichane Ai.
Exercice 30 Trouver dans l'ordre partiel P prcdent:
1. Une chane de taille maximale
2. Une antichane de taille maximale
3. Une couverture en chanes de P de taille minimale
4. Une couverture en antichanes de P de taille minimale
Que remarquez vous ?

Y-aurait-il un thorme min-max reliant la taille de la plus grande chane et la taille de la plus petite
couverture en antichanes ? Et un autre reliant la taille de la plus grande antichane et celle de la plus
petite couverture en chanes ?
Exercice 31 Soit P un ordre partiel quelconque.

1. Soit C une chane de P et A1,...,Ak une couverture de P en antichanes.


Montrer que |C|<= k.
2. Soit A une antichane de P et C1,...,Ck une couverture de P en chanes.
Montrer que |A|<= k.
Proposition 8 Soit P un ordre partiel. La taille de la plus grande chane de P est gale la taille de
la plus petite couverture en antichanes de P.
Exercice 32 Prouvez-le!
Le thorme dans l'autre sens est plus difficile et bien plus profond. Il n'y a pas de construction
lmentaire de l'antichane et de la couverture en chane idoine. On va en fait se ramener la
programation linaire (surprise).
Thorme 16 (Dilworth) Soit P un ordre partiel. La taille de la plus grande antichane de P est
gale la taille de la plus petite couverture en chanes de P.
Proof. On note n le nombre de sommets de P.
Choisir une couverture en chane de P est quivalent slectionner un certain nombre d'arcs dans P,
de sorte que chaque sommet ait au plus un arc sortant de slectionn, et un arc rentrant de
slectionn.
Remarque: s'il y a k chanes, il y a n-k arcs slectionns.
Cela ressemble un problme de couplage maximal dans un graphe biparti.
On construit un graphe biparti B dans lequel chaque sommet x de P est dupliqu en (x,1) et (x,2).
Chaque fois que x<y dans P, on relie (x,1) et (y,2).
Qu'est-ce qu'un couplage dans B?
Un ensemble d'arcs de P vrifiant exactement les conditions voulues.
Une couverture de P en k chanes correspond un couplage de B de taille n-k.
Prenons une couverture de P de taille k minimale.
Cela donne un couplage de taille max n-k de B.
Le thorme min-max pour les graphes bipartis indique qu'il y a une couverture de B de mme taille:
n-k sommets de B qui touchent tous les arcs.
Dans P cela correspond au plus n-k sommets qui touchent tous les arcs.
Soit A l'ensemble des sommets restants qui est de taille au moins k.
Il ne peut pas y avoir d'arcs entre deux sommets de A.

Conclusion: A est une antichane de taille au moins k.


Exercice 33 Suivez le droulement de la preuve sur l'ordre partiel prcdent

1.10.4 La mthode du chemin augmentant


Rechercher un couplage max dans un graphe biparti est un problme trs classique.
Il existe en fait des techniques plus rapides que les algorithmes de flots pour cela.
L'une d'entre elles est la mthode du chemin augmentant.
Cas gnral des graphes simples
Exemple 19 Couplage de taille maximale dans le chemin P6.
On peut construire un couplage de taille maximal progressivement partir d'un couplage vide en
rajoutant des artes une une. Mais si on n'est pas parti correctement, on risque d'tre bloqu avec
un couplage qui est maximal, alors qu'il n'est pas de taille maximale. Il faut appliquer une
transformation au couplage pour pouvoir l'agrandir.
Dfinition 17 Soit M un couplage dans un graphe G.
Un sommet M-satur (ou satur) est un sommet touchant une arte du couplage.
Un chemin M-altern de G est un chemin de G qui utilise alternativement des artes dans M et hors
de M.
Un chemin M-augmentant est un chemin M-altern commenant et finissant par des sommets non Msaturs.
Exemple 20 Regardons ce que cela donne avec le couplage suivant:

Remarque 9 Si M est un couplage, et C est un chemin M-augmentant, alors on peut construire un


couplage M' strictement plus grand en utilisant C.
Cas particulier: lorsque le chemin M-augmentant consiste d'une seule arte reliant deux sommets
non saturs, on est ramen au rajout d'une arte au couplage M'.

Exercice 34 Soit G le graphe

Le couplage M dessin est maximal, mais pas de taille maximale. Trouvez un chemin M-augmentant
et construisez le couplage M' correspondant.
Est-ce que cette opration de chemin augmentant est suffisante ?
Thorme 17 (Berge 1957) Un couplage M est de taille maximale si et seulement s'il n'y a pas de
chemin M-augmentant.
Proof. Soit M un couplage, comme dans l'exemple suivant:

On suppose qu'il existe un couplage M' de taille strictement plus grande.

On va construire un chemin M-augmentant.


On considre le graphe H obtenu par runion de M et M'.
Les sommets de H sont de degr au plus 2.

Ses composantes connexes sont donc des doubles artes ou des cycles et chemins dont les artes
alternent entre M et M'. Dans un cycle ou une double arte il y a autant d'artes de M que de M'. Il y
aura donc forcment un chemin qui contiendra une arte de plus de M' que de M. Ce chemin est un
chemin M-augmentant.
On dduit de ce thorme un algorithme (ou plutt une mthode):
Algorithme 2 Recherche d'un couplage maximal dans un graphe:
1. Partir d'un couplage M quelconque (par exemple le couplage vide);
2. Chercher un chemin M-augmentant;
3. S'il n'y en a pas, renvoyer M qui est maximal; sinon ritrer avec M:=M'.
Exercice 35 Appliquez cette mthode pour trouver un couplage maximal du graphe

Pour un graphe quelconque, l'tape 2 peut tre difficile!


Par contre, pour un graphe biparti, il y a un algorithme.
Recherche d'un chemin augmentant pour un couplage d'un graphe biparti
Exemple 21 On va rechercher un couplage maximal dans le graphe biparti prcdent, en montrant
comment on peut trouver de manire systmatique un chemin M-augmentant.
Algorithme 3 Soit M un couplage d'un graphe biparti B entre les parties X et Y.
Cet algorithme renvoie soit un chemin M-augmentant, soit une couverture du graphe de taille |M|, ce
qui indiquera que le couplage M est de taille maximale.
Soit U l'ensemble des sommets de X non touchs par M, et V l'ensemble des sommets de Y non
touchs par M.
On va rechercher par un parcours en largeur les chemins M-alterns allant de U V.
S (resp. T) va reprsenter l'ensemble des sommets x de X (resp. Y) pour lesquels on aura dj trouv
un chemin M-altern allant de U x.
Initialisation:
S:=U, T:=;
Itration:
Cas 1:

Il y a une arte reliant un sommet de S un sommet de V. Cela donne un chemin Maugmentant que l'on renvoie
Cas 2:
Il y a une arte reliant un sommet x de S un sommet y de Y-V avec xyn'appartient pas M.
Ce sommet est reli par une arte du couplage un sommet w de X. Comme y et w sont relis
U par un chemin M-altern, on rajoute y T et w S.
Cas 3:
Tunion(X-S) est une couverture de taille |M| du graphe (vrifiez le!) que l'on renvoie.
Exercice 19 Appliquer l'algorithme sur un graphe biparti de votre choix
Dmontrer que Tunion(X-S) est bien une couverture de taille |M| du graphe.
Donner la preuve

1.10.5 Algorithme de Ford-Fulkerson


La mthode du chemin augmentant se gnralise la recherche de couplage max dans un graphe
biparti valu, et en fait aussi aux problmes de flots max. On ne va regarder son fonctionnement que
sur un exemple, et on renvoie [1, p. 369] pour les dtails.
Exemple 22 On veut transporter le plus grand nombre possible de voyageurs de San-Francisco
New-York, sachant qu'il ne reste que quelques places dans les avions entre les villes suivantes:

Dfinition 18 Soit R un rseau, et F un flot donn dans ce rseau.


Un chemin allant de la source s au puits p est F-augmentant si pour chaque arte ij du chemin on a:
xij<uij si l'arc ij est dans le mme sens que dans le rseau
xij>0 si l'arc ij est dans le sens inverse du rseau.
partir d'un chemin F-augmentant, on peut construire un nouveau flot F' qui sera de volume
strictement plus gros.
Le principe de l'algorithme de Ford-Fulkerson est de partir d'un flot F quelconque, et de l'amliorer
itrativement en recherchant des chemins F-augmentant.
chaque tape, la recherche d'un chemin F-augmentant se fait par un parcours en profondeur, de
manire similaire la recherche d'un chemin M-augmentant dans un graphe biparti. Si cette recherche

choue, elle dvoile une coupe de capacit gale au flot, ce qui donne un certificat d'optimalit du
flot.
Remarque 10 On peut toujours initialiser l'algorithme avec un flot nul.
Si toutes les capacits sont entires et finies, chaque itration augmente le flot d'au moins 1. Cet
algorithme ne peut donc pas cycler, et il termine en un nombre fini d'tapes.
Avec une mauvaise stratgie, et des capacits infinies ou non-entires, l'algorithme peut ne pas
terminer.

Avec une stratgie convenable, cet algorithme est en fait polynomial, en O(n3), mme si les capacits
sont infinies ou non entires.
Pour les rseaux avec peu d'arcs, il y a des algorithmes plus compliqus qui permettent d'obtenir
d'encore meilleurs bornes. Cf. [1, p. 369] pour les dtails.

1.11 Mthodes alternatives au simplexe


Pour conclure ce chapitre sur la programmation linaire, nous prsentons rapidement quelques
mthodes alternatives qui ont t dveloppes pour rsoudre les problmes de programmation
linaire gnraux. Nous nous contentons d'voquer leur principe, leurs avantages et inconvnients, et
donnons des rfrences pour ceux qui voudraient en savoir plus.

1.11.1 Mthode de l'ellipsode


Principe
On commence par utiliser la dualit pour se ramener la recherche d'une solution faisable
d'un systme d'inquations linaires. On peut en fait se ramener par une perturbation
convenable la recherche d'une solution faisable d'un systme d'inquations linaires strictes!
Si un tel systme est faisable, le volume de l'ensemble des solutions peut alors tre minor par
une quantit V qui dpends de la dimension de l'espace, et de la taille des coefficients dans le
systme linaire.
On part d'un ellipsode E suffisamment gros pour contenir toutes les solutions faisables.
Si le centre de E est une solution faisable, on a termin.

Sinon, on peut couper l'ellipsode en deux, et inclure ce demi-ellispode dans un ellipsode E'
qui contient encore toutes les solutions faisables. On ritre avec E:=E'.
chaque itration, on a V(E')<alpha V(E), o alpha<1 est une constante qui ne dpends que
de la dimension; donc le volume de E dcrot exponentiellement. Au bout d'un petit nombre
d'itrations, si l'on a pas obtenu de solution faisable, on a V(E)<V, ce qui prouve que la
systme n'a pas de solution faisable.
Avantages

Algorithme polynomial

Inconvnients

Plus lent en pratique que l'algorithme du simplexe


Ne donne pas certains rsultats thoriques (dualit, gomtrie des polydres)

Rfrence
[1, p. 443]

1.11.2 Mthode des points intrieurs


Principe
Cette mthode est l'antithse exacte du simplexe.
Le principe du simplexe est de ne considrer que des solutions basiques qui sont la frontire
du polydre, et d'utiliser de l'algbre linaire pour itrer parmi ces solutions.
Ici au contraire, la mthode ne considre que des solutions strictement l'intrieur du
polydre. L'ide est d'approximer les ingalits du systme linaire, qui forment
fondamentalement des discontinuits, en barrires de potentiel, qui sont elles continues. Du
coup, on peut utiliser les techniques d'optimisation non-linaire continue, comme les
mthodes de gradients.
Avantages

Rivalise avec le simplexe en pratique, suivant le type de problme rencontrs