Zouaki
Zouaki
Zouaki
Hamid Zouaki
ii
Introduction
On peut décrire une étude de recherche opérationnelle par les trois étapes suivantes :
– Modélisation du problème: batir un modèle scientifique (mathématique) repré-
sentant schématiquement la réalité.
– Résolution du problème: résoudre le modèle mathématique construit à travers
la mise en oeuvre de méthodes numériques permettant d’obtenir des réponses ef-
fectives.
– Retour au problème pratique et confrontation des résultats du modèle et de la
réalité.
La RO apparaît comme une discipline carrefour associant les mathématiques, l’écono-
mie et l’informatique. Elle est par nature en prise directe sur l’industrie et joue un rôle-clé
dans le maintien de la compétitivité. Les apports de la RO sont visibles tout autour de
nous et dans les domaines les plus divers.
iii
Recherche opérationnelle Prof. Hamid Zouaki
iv
Recherche opérationnelle Prof. Hamid Zouaki
PARTIE I
1
Recherche opérationnelle Prof. Hamid Zouaki
2
Chapitre 1
1.1 Introduction
La théorie des graphes ou théorie mathématique de l’interconnection, constitue un
domaine des mathématiques qui s’est développé aussi au sein de disciplines diverses telles
que la chimie (modélisation de structures), la biologie (génome), le sciences sociales (mo-
délisation de relations) et dans beaucoup d’applications industrielles. Elle constitue un
outil efficace pour résoudre des problèmes discrets de la recherche opérationnelle.
Un graphe permet de représenter simplement la structure et les cheminements d’un en-
semble comprenant un grand nombre de situations, en exprimant les relations de dé-
pendances entre ses éléments. On peut citer les réseaux de communication, les réseaux
routiers et ferroviaires, les diagrammes de succession de tâches dans la gestion d’un projet
... etc.
Le graphe est aussi une structure de donnée puissante en informatique. Mais, au-delà
de la représentation de données, les graphes servent aussi et surtout pour proposer des
solutions à certains problèmes.
1.1.1 Exemples
1. Problème du voyageur de commerce:
Un voyageur de commerce ayant n villes à visiter souhaite établir une tournée qui lui
permette de passer une fois et une seule dans chaque ville pour finalement revenir à
son point de départ, ceci en minimisant le chemin parcouru. Il s’agit donc en terme
de graphe, étant donné un réseau R = (X, U, d). (X, U) étant un graphe orienté
dont les sommets représentent les villes et d : U → R qui à chaque arc associe un
coût de parcours, de trouver un circuit élémentaire contenant tous les sommets du
graphe dont la longueur, égale à la somme des longueurs des arcs le constituant,
soit minimale.
2. Fiabilité dans les réseaux:
Un réseau est un système de communication dans lequel des sites communiquent
entre eux soit directement, soit par l’intermédiaire d’autres sites, en envoyant des
messages qui circulent le long de lignes de communication. La représentation de tels
réseaux par des graphes est telle que, les sites et les lignes correspondant respecti-
vement aux sommets et aux arcs.
3
Recherche opérationnelle Prof. Hamid Zouaki
Dans un réseau, il peut se produire qu’une ligne de communication soit coupée, ne
transmettant plus aucun message. Il en est de même pour un site dont la panne
peut être assimilée à la coupure de toutes les lignes qui y aboutissent ou qui en
partent. Supposons que, dans un réseau, on achemine des informations d’un som-
met A vers un sommet B, éventuellement via des sites intermédiaires servant de
relais. De telles informations doivent emprunter des chemins allant de A vers B.
Ainsi, une information issue de A parviendra à B si et seulement si au moins un
chemin est valide (c’est à dire la séquence d’arcs qui le constitue ne comporte que
des arcs non détériorés). Le problème posé est alors le suivant : quel est le nombre
maximum de pannes auquel cet acheminement peut résister ? Autrement dit, quel
est le nombre maximum de chemins indépendants existant entre A et B ? (deux
chemins sont indépendants si et seulement si ils sont disjoints au sens des arcs et
des sommets intermédiaires).
3. Problème d’ordonnancement:
Un projet complexe est en général décomposé en tâches élémentaires ayant chacune
une durée donnée. Ces tâches étant reliées les unes aux autres par des contraintes de
précédence. Il s’agit de déterminer un calendrier d’éxecution des tâches qui respecte
les contraintes de précédence et permette l’achèvement du projet dans une durée
optimale.
Un graphe est représenté par un schéma dans le plan où les sommets sont représentés
par des points et les arcs par des branches orientées reliant deux sommets.
E B
D C
4
Recherche opérationnelle Prof. Hamid Zouaki
u1
u2
A B
u3
u4
Dans le cas d’un 1-graphe, tous les éléments de U sont distincts et on peut alors définir
G d’une manière fonctionnelle :
Définition 1.2.2. Un graphe est un doublet G = (X, Γ) constitué par
– X = {x1 , . . . , xn } un ensemble fini de sommets.
– Γ fonction de X dans l’ensemble des parties de X.
Ainsi, à tout sommet x est associé l’ensemble Γ(x) ⊂ X.
Γ(xi ) = {xj ∈ X : (xi , xj ) ∈ U}.
Considérons le 1-graphe G :
x1 x2 x3
x4
5
Recherche opérationnelle Prof. Hamid Zouaki
Vocabulaire :
Soit G = (X, U) un gaphe où X = {x1 , . . . , xn }.
• Si u = (xi , xj ) est un arc de G, on dit que xi est l’extrémité initiale de u et xj l’extrémité
terminale.
• Un sommet xi est voisin d’un sommet xj s’ils appartiennet au même arc. On dit qu’ils
sont adjacents.
• Un sommet x est isolé s’il n’est voisin d’aucun sommet.
• Un sommet x est pendant s’il n’existe qu’un seul arc qui le relie à un autre sommet.
• Un arc u est incident à un sommet x vers l’extérieur, si x est l’extrémité initiale de u
et l’extrémité terminale de u est différente de x.
• Un arc u est incident à un sommet x vers l’intérieur, si x est l’extrémité finale de u et
l’extrémité initiale de u est différente de x.
• On définit le demi-degré extérieur d+ (x) du sommet x comme le nombre d’arcs incidents
vers l’extérieur à x.
• d− (x) le demi-degré intérieur est le nombre d’arcs incidents vers l’intérieur à x.
• On appelle degré du sommet x la quantité d(x) = d+ (x) + d− (x).
Définition 1.2.3. Soit un graphe G = (X, U). On appelle chemin de G toute suite de
sommets x0 , x1 , . . . , xn , telle que chaque couple (xi , xi+1 ) soit un arc de U.
Un chemin formé de n arcs successifs sera dit chemin de taille n.
Si un arc rend compte d’une liaison ou influence directe, un chemin rendra compte
d’une liaison ou influence indirecte ou généralisée.
On peut aussi définir un chemin comme une suite d’arcs consécutifs :
µ = (u1 , u2 , . . . , ui , ui+1, . . . , uq ) de sorte que l’extrémité terminale de ui coincide avec
l’extrémité initiale de ui+1 .
• Un chemin est dit élémentaire s’il n’y a pas répétition d’arcs.
• Un chemin est dit simple s’il n’y a pas répétition de sommets.
• Un circuit σ = (u1, . . . , uq ) = [x1 , x2 , . . . , x1 ] est un chemin tel que l’extrémité finale
de uq coincide avec l’extrémité initiale de u1 .
E C
A B
6
Recherche opérationnelle Prof. Hamid Zouaki
′ ′
où X ⊂ X et U ⊂ U.
• On appelle graphe partiel de G tout graphe G′ = (X, U ′ ) avec U ′ ⊂ U.
Graphes remarquables:
Soit G = (X, U) un graphe dont l’ensemble des sommets est X = {x1 , . . . , xn }.
• G est dit complet si deux sommets différents sont automatiquement adjacents : il
comprend tous les arcs possibles. On appelle clique un sous-graphe complet.
7
Recherche opérationnelle Prof. Hamid Zouaki
xi vers le ommet xj , alors La matrice M = (mij )i,j=1...,n est la matrie d’adjacence associée
à G.
Dans le cas d’un 1-graphe, l’existence d’un arc (xi , xj ) se traduit par la présence d’un 1
à l’intersection de la ligne i et la colonne j et l’absence d’arc se traduit par la présence
d’un 0. On parle alors de matrice booléenne associée au graphe.
Soit donné le graphe
E C
A B
0 1 1 0 0
0 0 1 0 0
Sa matrice d’adjacence est donnée par M =
1 0 0 1 1
0 0 0 0 0
1 0 0 1 0
u3 u4
x4
u5
1 0 0 0 −1
−1 1 1 0 0
sa matrice d’incidence est la matrice 4 × 5 donnée par M =
0 −1 0
1 0
0 0 −1 −1 1
8
Recherche opérationnelle Prof. Hamid Zouaki
On remarque que dans chaque colonne apparaît exactement un 1 et un -1 (chaque
arête étant incidente à deux sommets), les autres éléments sont tous nuls.
La matrice d’incidence est une matrice unimodulaire, i.e toutes ses sous-matrices carrées
ont pour déterminant soit +1, -1 ou 0.
1.2.2.3 Dictionnaire
Tableau à simple entrée dont chaque ligne se référe à un sommet différent et donne
la liste des suivants de ce sommet. C’est tout simplement la description sous forme de
tableau de la multi application Γ.
Pour le graphe précédant, on obtient le dictionnaire :
xi Γxi
x1 x2
x2 x3 , x4
x3 x4
x4 x1
Pour un 1-graphe G = (X, Γ), l’avantage de la représentation par listes d’adjacences est
la gain obtenu en place mémoire.
9
Recherche opérationnelle Prof. Hamid Zouaki
L’inverse de Γ est la relation "précedant de" définie par :
Par composition
Γ−k xi = {ascendants de xi de longueur k}.
Définition 1.2.5. Soit G = (X, U) un graphe et A ⊂ X.
xi ∈ X est un majorant de A ⇔ xj ≤ xi ∀xj ∈ A
xi ∈ X est un minorant de A ⇔ xi ≤ xj ∀xj ∈ A
Un maximum (resp. minimum) est un majorant (resp. minorant) qui appartient à A.
On appelle racine un minimum de X.
Définition 1.2.6 (sous graphe). GA = (A, V ) est un sous graphe de G = (X, U) engendré
par A ⊂ X
V = {(xi , xj ) ∈ U : xi ∈ A, xj ∈ A)}
Si G est un 1-graphe, G = (X, Γ) alors GA = (A, ΓA ) où ΓA xi = Γxi ∩ A.
Définition 1.2.7 ( graphe partiel). le graphe (X, V ) est le graphe pariel de G = (X, U)
engendré par V ⊂ U si dans G on garde les sommets et on élimine les arcs de U \ V .
Définition 1.2.8 (Forte connexité). On dit que xi et xj sont reliés par la relation de
connexité forte qu’on note Rf s’il existe un chemin de xi vers xj et un chemin de xj vers
xi .
xi Rf xj ⇔ xi ≤ xj et xj ≤ xi
La relation Rf est une relation d’équivalence. Elle permet donc de décomposer X
en classes d’équivalences, qu’on appelle composantes fortement connexes de X. On
verra plus loin comment déterminer d’une manière efficace les composantes connexes d’un
graphe.
Un graphe G est dit fortement connexe s’il n’admet qu’une seule composante connexe.
Relation d’ordre
La relation
G1 G2 ⇔ Γ 1 ⊂ Γ 2
et qui se lit G1 est un graphe partiel de G2 est une relation d’ordre sur l’ensemble des
graphes ayant X comme ensemble de sommets.
10
Recherche opérationnelle Prof. Hamid Zouaki
Union
G1 ∪ G2 = (X, Γ1 ∪ Γ2 )
Composition
le graphe G3 = G1 ◦ G2 = (X, Γ3 ) est défini par
G1 G2 ⇔ G1 ◦ G3 G2 ◦ G3 et G3 ◦ G1 G3 ◦ G2
Proposition 1.2.1. Soient G1 = (X, U), G2 = (X, V ) deux graphes ayant le même
ensemble de sommets et soient M = (mij ) et N = (nij ) leurs matrices associées. Alors,
on a
1. La matrice M + N est la matrice associée au graphe réunion G1 ∪ G2
2. La matrice produit M.N est la matrice associée au graphe G1 ◦ G2 .
Démonstration:
1. Le nombre d’arcs de xi à xj dans G1 ∪ G2 = (X, U ∪ V ) est mij + nij .
2. Le nombre de chemins distincts [xi , xk , xj ] tels que (xi , xk ) ∈ U et (xk , xj ) ∈ V est
Xn
mik .nkj . Donc le nombre total de chemins distincts [xi , xk , xj ] est égal à mik .nkj
k=1
qui n’est autre que l’élément ij de la matrice M.N.
G0 = (X, ∆) où ∆ = {(x, x) : x ∈ X}
p ≥ 1 Gp = Gp−1 ◦ G = G ◦ Gp−1
D C
A B
11
Recherche opérationnelle Prof. Hamid Zouaki
sa matrice d’adjacence est donnée par
1 1 1 0 2 1 2 1
0 0 1 0 1 0 0 1
M = 1 0
M2 =
0 1 2 1 1 0
1 0 0 0 1 1 1 0
En consultant le graphe, on voit qu’il y’a 2 chemins de longueur 2 allant de C vers A.
Chose qu’on peut retrouver en consultant la ligne 3 de la matrice M 2 .
Proposition 1.2.2. Soit Gp la puissance d’ordre p du graphe G(X, Γ). Alors (x, y) st un
arc de Gp si, et seulement si, il existe un chemin de longueur p allant de x à y. Autrement
dit G = (X, Γp ) où Γp est la composée de la multi application Γ et qui a été présentée au
paragraphe précédant.
y ∈ Γt (x) ⇔ x ∈ Γ(y)
12
Recherche opérationnelle Prof. Hamid Zouaki
1. k ≤ n − 1
[k k+1
[
j
2. G = Gj
j=1 j=1
3. G+ = G ∪ G2 ∪ . . . ∪ Gk .
1.2.6 Exemples
Graphe d’incompatibilité
Pour le transport de produits chimiques par rail, certains de ces produits ne peuvent
être transportés dans un même wagon (des produits co-combustibles sont placés dans
des wagons distincts). La situation peut être représentée par le graphe d’incompatibilité
de transport (deux sommets adjacents ne peuvent être placés dans le même wagon). On
demande de minimiser le nombre de wagons nécessaires au transport. Ce problème se
ramène donc à un problème de coloriage : déterminer le nombre de couleurs nécessaire et
suffisant pour colorier les sommets d’un multi-graphe donné, de manière telle que deux
sommets adjacents ne reçoivent pas la même couleur.
Ce problème sera traité un peu plus loin dans ce cours.
Arbre couvrant
Une société de téléphonie souhaite câbler entièrement, au moyen de nouvelles fibres
optiques, une ville en minimisant le nombre de connexions à réaliser. Le nouveau cablage
s’appuie sur le réseau électrique existant et il faut que tous les points de la ville soient
déservis. La question posée est de rechercher un sous-graphe (ou un sous-arbre) couvrant
(dont les arêtes couvrent tous les sommets du graphe) de poids minimal dans un graphe
donné.
Routage
On considère le problème de routage de paquets de données devant transiter sur
un réseau (du type internet). Si un utilisateur désire accéder au contenu d’une page
web présente sur un serveur, une connexion entre ce serveur et la machine doit être
´établie. Cette connexion n’est en général pas directe mais doit passer par une série de
machines relais. Pour préserver la bande passante, pour accélérer le transfert ou encore
pour minimiser les coûts, on essaie de minimiser le nombre de machines relais utilisées.
Si chaque ordinateur, routeur, passerelle ou serveur présent sur l’internet représente un
sommet d’un graphe dont les arcs représentent les connexions entre ceux-ci, il s’agit
du problème important de déterminer, dans un graphe donné, le chemin le plus court
permettant de relier deux sommets quelconques.
13
Recherche opérationnelle Prof. Hamid Zouaki
14
Chapitre 2
M ⊕N =N ⊕M
M ⊕ (N ⊕ Q) = (M ⊕ N) ⊕ Q
M ⊗ (N ⊕ Q) = (M ⊗ N) ⊕ (M ⊗ Q).
M [0] = I
M [n] = M [n−1] ⊗ M.
15
Recherche opérationnelle Prof. Hamid Zouaki
Proposition 2.1.1.
∀k ≥ 1 (I ⊕ M)[k] = I ⊕ M ⊕ M [2] ⊕ . . . ⊕ M [k] .
Démonstration par récurrence sur k:
La propriété est vraie pour k = 1.
On suppose l’hypothèse vraie à l’ordre k − 1.
(I ⊕ M)[k] = (I ⊕ M)[k−1] ⊗ (I ⊕ M)
= (I ⊕ M ⊕ M [2] ⊕ . . . ⊕ M [k−1] ) ⊗ (I ⊕ M)
= I ⊕ M ⊕ M [2] ⊕ . . . ⊕ M [k−1]
⊕ M ⊕ M [2] ⊕ . . . ⊕ M [k−1] ⊕ M [k]
= I ⊕ M ⊕ M [2] ⊕ . . . ⊕ M [k−1] ⊕ M [k] (X ⊕ X = X).
Théorème 2.1.1. Soient G1 = (X, Γ1 ) et G2 = (X, Γ2 ) deux 1-graphes, M1 et M2 leurs
marices boolèennes. Alors
1. M1 ⊕ M2 est la matrice booléenne associée au graphe (X, Γ1 ∪ Γ2 )
2. M1 ⊗ M2 est la matrice booléenne associée au graphe (X, Γ1 ◦ Γ2 ) .
Corollaire 2.1.1. Soit M la matrice booléenne associée au 1-graphe G = (X, Γ), alors
la puissance booléenne M [k] est la matrice booléenne associée au graphe G = (X, Γk ) qui
possède un arc (xi , xj ) si, et seulement si, il existe un chemin de xi vers xj de longueur
k.
Remarque :
On a déjà vu que la matrice puissance M k nous donne l’information sur le nombre d’arcs
de longueur k allant d’un sommet du graphe vers un autre. En utilisant la matrice puis-
sance booléenne M [k] on répond juste à la question : est ce qu’il existe un chemin de
longueur k entre deux sommets du graphe.
Corollaire 2.1.2. Soit M la matrice booléenne associée au 1-graphe G = (X, Γ), alors
k
[
la matrice N = (I ⊕ M)[k] est la matrice booléenne associée au graphe G = (X, Γl ) qui
l=0
possède un arc (xi , xj ) si, et seulement si, il existe un chemin de xi vers xj de longueur
≤ k.
Démonstration :
On utilise le fait que (I ⊕ M)[k] = I ⊕ M ⊕ M [2] ⊕ . . . ⊕ M [k] . L’expression de droite,
d’après les derniers résultats, n’est autre que la matrice booléenne associée au 1-graphe
k
[
G = (X, Γl ).
l=0
16
Recherche opérationnelle Prof. Hamid Zouaki
+
Grâce à ce théorème, on peut envisager l’utilisation de M pour caractériser la fer-
meture transitive d’un graphe. Mais ce procédé est assez lourd et demanderait des calculs
énormes pour des graphes de grande taille.
Dk (x) = {y ∈ X : d(x, y) = k}
Algorithme 1 (marquage)
Soit xi un sommet de G. On considère la procédure :
• marquer 0 le sommet xi
• marquer 1 les sommets suivant de xi non marqués
• marquer k + 1 tout sommet non marqué suivant d’un sommet marqué k
• continuer jusqu’à ce qu’il soit impossible de marquer.
Démonstration :
17
Recherche opérationnelle Prof. Hamid Zouaki
1. par récurrence :
D0 (xi ) = {xi } = X0
hypothèse : Xm = Dm ∀m = 0, 1, . . . , k − 1
(a) Xk ⊂ Dk (xi )
Soit xj ∈ Xk ⇒ xj ∈ / Xm = Dm ∀m = 0, 1, . . . , k − 1. On a donc d(xi , xj ) >
k − 1.
xj ∈ Xk ⇒ xj est le suivant d’un xl ∈ Xk−1 = Dk−1 et donc
d(xi , xj ) ≤ d(xi , xl ) + d(xl , xj ) = k − 1 + 1 = k. Finalement, on a
(b) Dk (xi ) ⊂ Xk
xj ∈ Dk (xi ) ⇒ xj ∈
/ Dm (xi ) = Xm pour m = 0, 1, . . . , k − 1.
xj ∈ Dk (xi ) ⇒ xj est le suivant d’un xl ∈ Dk−1 (xi ) = Xk−1 . C’est le principe
d’optimalité de Bellman : si µ[xi , xj ] est un chemin de longueur minimale k
de xi vers xj et si xl est le précédant de xj sur ce chemin, alors µ[xi , xl ]
est un chemin de longueur minimale k − 1. "Une politique optimale est
composée de sous-politiques optimales".
Donc xj est précédé par un sommet marqué k − 1 ⇒ xj ∈ Xk .
2. Il suffit de remarquer que la procédure engendre des chemins élémentaires allant de
xi de longueur minimale k. Comme la longueur d’un chemin élémentaire ne dépasse
pas n − 1, on aura Dk (xi ) = ∅ ∀k ≥ n.
La propriété 2) montre que la procédure de marquage s’arrête après un nombre fini
d’itérations.
18
Recherche opérationnelle Prof. Hamid Zouaki
A\S(A) = ∅ ⇔ ∀a ∈ A, a n’admet pas de précédant dans A
Algorithme S 2 (Décomposition en niveaux) :
Notation Ti = ij=0 Nj , Ri = X \ Ti
Initialisation : T−1 = ∅, R−1 = X, N0 = X \ S(X) : sommets n’ayant pas de précédant.
Itération générale : i = 0, 1, . . .
si Ni = ∅ on arête : G admet un circuit
si Ni 6= ∅ on cosidère le reste Ri
si Ri = ∅ on arête : X est décomposé en niveaux N0 , N1 , . . . , Ni .
si Ri 6= ∅
• On considère le sous-graphe engendré par Ri
• On identifie Ni+1 = Ri \ S(Ri ) : sommets de Ri n’ayant aucun précédant dans Ri .
• On pose i ← i + 1
• On recommence l’itération générale.
Les ensembles Ni sont appelés les niveaux de rang i du graphe G.
Les éléments de Ni sont appelés sommets de rang i.
19
Recherche opérationnelle Prof. Hamid Zouaki
On décompose d’abord la formule en expressions élémentaire :
T1 = a ∗ a T2 = T1 + b T3 = sin(T2 ) T4 = b ∗ c
T5 = T1 + T4 T6 = cos(T5 ) T7 = T3 − T6 T8 = 1 + c
T7
T9 = T8 + T1 T10 = .
T9
On définit le graphe G = (X, U) où X désigne l’ensemble des instructions. l’arc
(x, y) ∈ U si le résultat de x est nécessaire pour l’évaluation de y. S’il existe un chemin de
longueur k pour arriver au sommet x, c’est qu’il faut k cycles pour réaliser l’expression
associée.
G est sans cycle. En utilisant l’algorithme 2, on obtient la décomposition en niveaux :
N1 = {T1 , T4 , T8 }
N2 = {T2 , T5 , T9 }
N3 = {T3 , T6 }
N4 = {T7 }
N5 = {T10 }
On peut schématiser cette décomposition comme suit :
T1 T2 T3
T4 T5 T6 T7
T8 T9 T10
On peut donc évaluer l’expression en 5 cycles. On remarque qu’il y’a au plus 3 ins-
tructions par cycle. On en conclut que 3 processeurs sont suffisants pour le calcul de la
formule donnée.
20
Recherche opérationnelle Prof. Hamid Zouaki
2.3 Composantes connexes
On rappelle qu’un graphe est connexe s’il existe une chaîne entre toute paire de som-
mets. Si le graphe n’est pas connexe (n’est pas un seul bloc), on peut identifier p > 1
sous-graphes connexes maximaux, au sens de l’inclusion, dont la réunion forme le graphe
G. Ces sous-graphes sont les composantes connexes de G. p est appelé le nombre de
connexité de G.
Les composantes connexes peuvent aussi être définies comme étant les classes d’équiva-
lences pour la relation définie précédament :
Les points d’articulation et les isthmes peuvent mesurer la vulnérabilité d’un réseau.
Comme exemple, un réseau téléphonique peut être neutralisé en détruisant un point
d’articulation.
21
Recherche opérationnelle Prof. Hamid Zouaki
On note Cf (xi ) la composante fortement connexe du sommet xi .
Cf (xi ) = {xj ∈ X : xj Rf xi }
Exemple :
Si une municipalité veut introduire ou modifier un système de rues à sens unique, elle
doit (faire) vérifier que l’ensemble des rues ainsi orientées, totalement ou partiellement,
constitue toujours un graphe fortement connexe. Sinon, certains points de la ville devien-
draient inaccessibles, d’autres se transformeraient en pièges...
Si G est un 1-graphe, on a :
22
Recherche opérationnelle Prof. Hamid Zouaki
Le problème du voyageur de commerce consiste à trouver un cycle hamiltonien de
coût total minimum. Ce problème est très célébre et souvent présenté comme celui d’un
représentant de commerce qui doit visiter des clients dans un ensemble de villes. Le
graphe associé a alors pour sommets l’ensemble des villes des clients et le domicile du
représentant. Le coût d’une arête est la distance parcourue entre deux villes. Le but pour
le représentant est de visiter chacun des clients une fois et une seule et revenir à son
domicile tout en minimisant le kilométrage parcouru.
Remarque :
Dans un graphe d’ordre n, un circuit Hamiltonien est un circuit élémentaire de longueur
n.
Il existe plusieurs résultats qui donnent des conditions suffisantes pour qu’un graphe soit
Hamiltonien. Nous donnons ci dessous une caractérisation dans le cas de graphe complet.
Théorème 2.5.1. Soit G = (X, Γ) un 1-graphe complet. Alors G admet un circuit Ha-
miltonien si, et seulement si, il est fortement connexe.
Démonstration:
⇒)
Soient xi , xj deux sommets distincts de G. Il s appartiennent à un même circuit (Hamil-
tonien). Il existe donc un chemin µ[xi , xj ] et un chemin µ[xj , xi ]. Ils appartiennent donc
à la même composante fortement connexe. G est donc fortement connexe.
⇐)
On considère un circuit élémentaire σ = [x1 , x2 , . . . , xk , xk+1 = x1 ] de longueur maximale
k. Supposons que G n’admet pas de circuit Hamiltonien. Il existe donc un sommet xi ∈ σ.
Par la maximalité de σ et parce que G est complet, on obtient en notant par xj−1 , xj , xj+1
23
Recherche opérationnelle Prof. Hamid Zouaki
des sommets successifs de σ les deux alternatives :
xj ∈ Γ(xi ) ⇒ xi ∈
/ Γ(xj−1 ) ⇒ xj−1 ∈ Γ(xi )
ou bien
xi ∈ Γ(xj ) ⇒ xj+1 ∈
/ Γ(xi ) ⇒ xi ∈ Γ(xj+1 )
xj étant un sommet arbitraire de σ on a :
ou bien tout xj ∈ σ est suivant de xi , ou bien tout xj ∈ σ est précédant de xi .
On peut donc partitionner les sommets xi non utilisés par le circuit en deux ensembles :
C 1 = {x1i ∈
/ σ : xj ∈ Γ(x1i ) ∀xj ∈ σ}
C 2 = {x2i ∈
/ σ : xj ∈ Γ−1 (x2i ) ∀xj ∈ σ}
Par hypothèse C 1 ∪ C 2 6= ∅.
G étant fortement connexe, on a aussi C 1 6= ∅ et C 2 6= ∅
G étant fortement connexe, il existe aussi un arc (x2i , x1i ) dirigé de C 2 vers C 1 .
Tout ceci permet de construire un circuit élémentaire [x1 , . . . , xk , x2i , x1i ] de longueur k +2,
d’où la contradiction avec le fait que σ est maximal.
Corollaire 2.5.1. Si le 1-graphe G = (X, Γ) est complet, il admet un chemin Hamilto-
nien.
Ce problème est connu dans l’histoire comme le problème des sept ponts de König-
sberg. Il a été résolu par Euler, en le formulant par un graphe, et est considéré comme
un des problèmes à l’origine de la théorie des graphes.
a1
a2 a0
a3
24
Recherche opérationnelle Prof. Hamid Zouaki
Dans le cas des multi-graphes finis non orientés. Il est évident que pour que G possède
un circuit eulérien, i.e., pour que G soit eulérien, il est nécessaire que G soit connexe et que
le degré de chaque sommet soit pair. Comme le montre le résultat suivant, ces conditions
sont également suffisantes :
Théorème 2.6.1. Pour qu’un multigraphe G admette une chaîne Eulerienne, il faut et
il suffit qu’il soit connexe (à des points isolés près) et que le nombre de sommets de degré
impair soit 0 (cycle) ou 2 (chaîne non fermée).
25
Recherche opérationnelle Prof. Hamid Zouaki
26
Chapitre 3
p:U → R
u = (xi , xj ) 7→ p(u) = pij
Les algorithmes de reherche d’un chemin de poids minimal se distinguent par les objectifs
à atteindre et les contraintes sur la nature du graphe et la valuation.
Nature du problème:
– le problème de la détermination d’un plus court chemin entre deux sommets,
– le problème de la détermination des plus courts chemin d’un sommet vers l’ensemble
des autres sommets du graphe,
– le calcul du plus court chemin pour l’ensemble des couples de sommets du graphe.
Contraintes:
– les longueurs sont toutes positives ou nulles
– le graphe et les longueurs sont quelconques
– le graphe est sans circuit
– le graphe est connexe ou fortement connexe.
27
Recherche opérationnelle Prof. Hamid Zouaki
Exemple d’application :
Les applications des chemins optimaux sont nombreuses, mais le premier qui vient à l’es-
prit est celui des transports.
Les logiciels d’optimisation de tournées de véhicules ont besoin de répondre des milliers
de fois à des requêtes du type : "quelle est la distance en km ou en temps de parcours
pour aller d’un endroit à un autre ?". Dans le graphe G du réseau routier, les sommets
correspondent à des villes, les arcs aux tronçons routiers et les valuations aux distances
ou aux temps de parcours. Les fournisseurs de base de données donnent un distancier ou
matrice contenant la valeur des plus courts chemins entre les différents couples de villes.
Mais parfois les utilisateurs ont besoin de calculer au jour le jour ces distances, pour
pouvoir géréer les différents imprévus qui modifient les distances. Pour celà, on utilise des
algorithme de type Dijkstra ou Bellman.
Définition 3.1.1. Soit G = (X, Γ) un graphe simple. On dit qu’un chemin de G allant
du sommet xr et arrivant à xi est ri-minimal si, parmi tous les chemins partant de xr et
aboutissant à xi , son poids est minimal.
On dira qu’un arc est r-minimal s’il est utilisé par au moins un chemin ri-minimal.
La recherche d’un chemin de coût minimal n’a de sens que si le graphe G ne contient
pas de circuit de coût négatif. En effet, on pourrait diminuer indéfiniment le coût d’un
chemin en tournant dans un tel circuit. Un tel circuit est appelé circuit absorbant.
En l’absence de circuit absorbant, on peut restreindre le recherche des plus courts chemins
aux seuls chemins élémentaires.
⇐⇒
28
Recherche opérationnelle Prof. Hamid Zouaki
pred(i) : précédant de i sur un chemin ri- minimal.
s(i) : poids d’un chemin ri-minimal.
pij est le poids de l’arc (i, j), il est ∞ si (i, j) ∈
/ U.
L’algorithme est basé sur le principe de la programmation dynamique et qui énonce le
fait que les sous-chemins des plus courts chemins sont des plus courts chemins.
Algorithme (Bellman-Kalaba)
• Initialisation: Pour i = 1 à n s(i) ← ∞; pred(i) ← 0, s(r) ← 0.
• k←0
• Répéter
– stable ← vrai
b
– pour tout j ∈ Γ(r)
pour tout i ∈ Γ−1 (j)
si s(j) > s(i) + pij alors
s(j) = s(i) + pij
pred(j) = i
stable ← faux
– k ←k+1
• jusqu’à stable = vrai ou k > n − 1
• si k > n − 1 alors présence d’un circuit de poids négatif (absorbant).
Remarque 3.3.1. Lorsque le graphe est sans circuit il peut être décomposé en niveaux.
On peut donc simplifier le schéma précédant : la longueur du chemin de la racine à tous
les autres sommets est obtenue en considérant les sommets dans l’ordre topologique (rang
croissant) et en calculant
s(i) = min (s(j) + p(j, i))
j∈Γ
−1 (i)
.
Exemple 1 :
On considère le graphe suivant pour lequel on cherche les chemins 1i-minimaux.
x2 2 x3
6
x1 1
5 2
1 x5
4
x4
29
Recherche opérationnelle Prof. Hamid Zouaki
b
Γ(1) = {1, 2, 3, 4, 5}.
Progression de l’algorithme :
Notations :
NM ← sommet non marqué.
TPM ← tout précédant est marqué.
• pred(1) = s(1) = 0, pred(i) = 0, s(i) = ∞ ∀i 6= 1.
• i = 2 : NM; T P M; s(2) = s(1) + p(1, 2) = 6 et pred(2) = 1.
• i = 3 : NM ; TPM : on passe.
• i = 4 : NM; T P M; s(4) = 1 et pred(4) = 1.
• i = 3 : NM; T P M; s(3) = 3 et pred(3) = 4.
• i = 5 : NM; T P M; s(5) = 4 et pred(5) = 3.
• Tout sommet dans Γ(1) b est marqué : stop.
Le théorème suivant, donné sans démonstration, permet, à l’aide du théorème fondamen-
tal, de justifier l’algorithme de Bellman-Kalaba :
Théorème 3.3.1. Supposons que l’algorithme de Bellman-Kalaba, appliqué au graphe
b en partant
G = (X, Γ) où X = {1, 2, . . . , n} est parvenu à marquer tout sommet j ∈ Γr
du sommet r. On a que
b πrj = s(j)
∀j ∈ Γr
30
Recherche opérationnelle Prof. Hamid Zouaki
Remarque 3.4.1. Une petite modification dans le corps de l’algorithme permet de trouver
non seulement le chemin rt-minimal, mais tous les chemins ri-minimaux. Si on note D
l’ensemble des sommets marqués définitivement, le test d’arrêt devient D = X.
L’exemple suivant permet d’illustrer cette démarche.
Algorithme (Floyd) :
Pour k = 1 à n
pour i = 1, . . . , n; i 6= k
31
Recherche opérationnelle Prof. Hamid Zouaki
si pik + pki < 0 Stop (présence d’un circuit absorbant)
si pik 6= ∞ alors
pour j = 1, . . . , n; j 6= i
γ = pik
si γ + pkj < pij
pij ← γ + pkj
predij ← predkj .
Tk : Mn (R) → Mn (R)
P → Tk P
où
(Tk P )ij = min(pij , pik + pkj )
L’application de l’opérateur Tk correspond à l’intercallage du sommet d’extension k dans
les couples de sommets (i, j). k désigne l’index des itérations (sommet d’extension).
P (k) est la matrice résultant de l’itération k : P (k) = Tk P (k−1) , avec P (0) = P la matrice
des poids.
Avec ces notations, on aura
P (n) = Tn Tn−1 . . . T2 T1 P
On va montrer que cette matrice représente la matrice des poids des chemins ij-minimaux.
Tk Tm P = Tm Tk P ∀m, k (3.1)
Tk Tk P = Tk P ∀k. (3.2)
Définitions :
1. Soient P, Q deux matrices n × n
2. On désigne par MinQ la matrice des poids des chemins minimaux d’un graphe
simple dont la matrice des poids est Q.
On a la proposition suivante :
Proposition 3.5.2. la matrice Q est la matrice des poids minimaux si, et seulement si,
l’intercallage d’un sommet ne permet plus d’améliorer aucun poids :
Q = MinQ ⇔ Tk Q = Q ∀k.
Théorème 3.5.1. Soit P la matrice des poids du graphe simple auquel on a appliqué
l’algorithme de Floyd.
Si Q = Tn Tn−1 . . . T2 T1 P alors Q = MinQ.
32
Recherche opérationnelle Prof. Hamid Zouaki
Démonstration :
On a, par la proposition 1,
Tk Q = Tk (Tn Tn−1 . . . T2 T1 P )
= Tn Tn−1 . . . Tk Tk . . . T2 T1 P
= Tn Tn−1 . . . Tk . . . T2 T1 P
= Q.
P ≥ T1 P ≥ T2 T1 P ≥ . . . ≥ Tn Tn−1 . . . T2 T1 P = Q
Exemple 3 :
Illustrons le déroulement de l’algorithme de Floyd à travers l’exemple du graphe ci-dessus :
3
3
x1 x2
2
−2 2 4 2
1
x3 x4
4
33
Recherche opérationnelle Prof. Hamid Zouaki
0 3 ∞ 3 1 1 0 1
2 0 2 2 2 2 2 2
P (0) = −2 ∞
pred(0) =
0 1 3 0 3 3
∞ 4 4 0 0 4 4 4
0 3 ∞ 3 1 1 0 1
2 0 2 2 2 2 2 2
P (1) = −2 1
pred(1) =
0 1 3 1 3 3
∞ 4 4 0 0 4 4 4
0 3 5 3 1 1 2 1
2 0 2 2 2 2 2 2
P (2) =
−2 1
pred(2) =
0 1 3 1 3 3
6 4 4 0 2 4 4 4
0 3 5 3 1 1 2 1
0 0 2 2 3 2 2 2
P (3) =
−2 1
pred(3) =
0 1 3 1 3 3
2 4 4 0 3 4 4 4
0 3 5 3 1 1 2 1
0 0 2 2 3 2 2 2
P (4) =
−2 1
pred(4) = .
0 1 3 1 3 3
2 4 4 0 3 4 4 4
34
Chapitre 4
Ordonnancement de projets
Nous allons voir que, aussi bien pour sa formulation que pour sa résolution, ce pro-
blème utilise la notion de graphe ainsi que les techniques, déjà vues, de calcul du chemin
le plus court.
35
Recherche opérationnelle Prof. Hamid Zouaki
Une méthode d’ordonnancement est un ensemble de méthodes qui permettent au res-
ponsable du projet de prendre des décisions nécessaires dans de meilleures condditions
possibles. Elle doit permettre d’analyser le problème en profondeur, en le décomposant
en tâches, mettre sur pied un plan d’action en respectant les contraintes et contrôler le
bon déroulement du projet.
36
Recherche opérationnelle Prof. Hamid Zouaki
4.2 Formulation potentiels-tâches
4.2.1 Graphe d’ordonnacement
Le graphe G = (X, U) associé au problème est construit comme suit :
– A toute tâche (i) est associé un sommet.
– A toute contrainte d’antériorité (i, j), on associe un arc u = (i, j) de G.
– A chaque arc u = (i, j) est associé un coût d(u) = di durée de la tâche (i).
– On relie le sommet (0) à tous les sommets qui n’ont de précédant.
On relie les sommets qui n’ont pas de successeur au sommet (n + 1).
3 2 4 2 5
4 2 3
0 0 1 5 2 6 10 10 11 5 12
4 5 4
7 3 8 3 9
mi = ηi − πi
– On note par ti la plus longue distance (le coût du chemin le plus long) entre le
sommet (0) et le sommet (n + 1).
– t′i dénote la plus longue distance entre le sommet (i) et le sommet (n + 1).
Théorème 4.2.1. Les dates au plus tôt et plus tard sont données par :
πi = ti (4.1)
ηi = tn+1 − t′i . (4.2)
37
Recherche opérationnelle Prof. Hamid Zouaki
Démonstration :
Pour un sommet (i) de G, soit Ci l’ensemble des chemins d’origine (0) et d’éxtrémité (i).
Si Ck = {(i1 , i2 , . . . , ip ) : i1 = (0), ip = (n + 1)} chemin d’origine (0) et d’éxtrémité (i)
et de longueur
p−1
X
l(Ck ) = d ij
j=1
on a πi ≥ l(Ck ) : car la tâche i ne peut débuter qu’une fois les tâches i1 , i2 , . . . , ip sont
éxécutées. On a donc
πi ≥ max l(Ck ) = ti
Ck ∈Ci
sinon le plus long chemin entre (0) et (j) est de coût supérieur à tj . En effet, le plus long
chemin entre (0) et (i) suivi de l’arc (i, j) définirait un chemin de longueur > à tj .
D’autre part, on a t0 = 0.
La preuve de la deuxième propriété est similaire.
Ce théorème montre que pour trouver le planning optimal, il suffit de calculer, dans
le graphe G, les plus long chemins et plus longues distances entre le sommet (0) et les
autres sommets. Pour celà, on peut appliquer l’algorithme de Bellman-Kalaba, traité au
chapitre 3, dans sa version "plus long chemin".
Comme on l’a énoncé plutôt, le graphe d’ordonnancement est sans circuit. On peut donc
le décomposer en niveaux. Ceci facilitera d’une manière siginficative l’utilisation de l’al-
gorithme de Bellman.
Pour trouver les dates au plus tard, il suffit, pour le calcul des t′i , d’appliquer l’al-
gorithme de Bellman-Kalaba, dans sa version plus long chemin, en inversant le sens des
arcs dans G et en partant du sommet (n + 1).
38
Recherche opérationnelle Prof. Hamid Zouaki
Tâche date au plus tôt date au plus tard la marge
0 0 0 0
1 0 0 0
2 5 5 0
3 9 9 0
4 11 15 4
5 13 17 4
6 11 11 0
7 9 10 1
8 12 13 1
9 16 16 0
10 20 20 0
11 30 30 0
12 35 35 0
A la fin des années cinquante, la marine américaine conçoit une nouvelle technique
d’ordonnancement qui devait conduire à des gains de temps importants dans la réalisation
de ses missiles à ogive nucléaire Polaris : c’est la technique PERT (Programm Evaluation
and Review Technique - technique d’ordonnancement et de contrôle des programmes).
Cette technique a permis de coordonner les travaux de près de 6000 constructeurs dans
les délais imposés par le gouvernement américain.
Le projet POLARIS représentait entre autres : 250 fournisseurs, 9000 sous-traitants, 7
ans de réalisation.
L’utilisation du PERT a permis de ramener la durée globale de réalisation du projet de
7 à 4 ans. Cette méthode s’est ensuite étendue à l’industrie américaine puis à l’industrie
occidentale.
Le PERT est « une méthode consistant à mettre en ordre sous forme de réseau plusieurs
tâches qui grâce à leur dépendance et à leur chronologie concourent toutes à l’obtention
d’un produit fini ».
Elle se distingue de la méthode du potentiel par le fait que les tâches ne sont plus associées
aux noeuds mais bien aux arcs du réseau. L’algorithme de résolution est très semblable à
celui de la méthode du potentiel. La différence majeure réside donc dans la construction
du graphe : le graphe de la méthode PERT est souvent plus difficile à construire que celui
de la méthode du potentiel car on peut être amené à introduire des arcs fictifs qui ne
correspondent à aucune tâche.
39
Recherche opérationnelle Prof. Hamid Zouaki
4.3.1 Graphe d’ordonnancement
– Les sommets d’un graphe PERT, G = (X, U) correspondent aux étapes de l’éxécu-
tion du projet.
Il y’a une étape début et une étape fin.
– Les arcs u du graphe correspondent aux tâches du projet. la valuation d(u) de l’arc
u est alors la durée de la tâche associée.
Parfois, il est nécessaire d’introduire des tâches fictives exprimant les contraintes
d’antériorité. Une tâche fictive a une durée nulle. Elle ne modifie pas le délai final.
– Une étape x est ateinte lorsque toutes les tâches, réelles ou fictives, dont x est
l’éxtrémité terminale sont achevées.
– On ne peut commencer l’éxécution d’une tâche u = (x, y) avant que l’étape x ne
soit atteinte.
On ne peut pas, en général, associer de graphe PERT unique. Cependant, il est possible
de construire un réseau de manière systématique :
2. Les sommets du graphe sont d’une part l’éxtrémité initiale I(u) et finale T (u) des
arcs, d’autre part le sommet D (début du projet) et le sommet F (fin du projet).
3. Si u et v sont les arcs associés respectivement aux tâches (i) et (j), si (i, j) ∈ U ((i)
doit s’exécuter avant le début de (j)), on crée l’arc (T (u), I(v)).
En général, les arcs représentant des tâches réelles sont tracés en traits pleins. Les
arcs dessinés en traits pointillés représentent des tâches fictives.
Le graphe systématique, obtenu après ces étapes, est en général beaucoup trop com-
pliqué pour avoir un intérêt pratique.
On peut réduire ce graphe en identifiant les sommets entre eux. Il faut surtoût prendre
garde que les opérations de réduction préservent toutes les contraintes d’antériorité et
n’en ajoutent pas de nouvelles.
40
Recherche opérationnelle Prof. Hamid Zouaki
1 i 2 k 3
4 j 5 l 6
41
Recherche opérationnelle Prof. Hamid Zouaki
1 A 2 C 4 D 5 E 6 F 7 G 8 H 10 I 12 L 13 M 17
B F1
K J F3 F4 F5
3
9 F2 11 N 14 P F6
15 Q 16
Théorème 4.3.1. Si (i) est une tâche représentée par un arc (x, y) dans G, alors on a
πi = t(x) (4.3)
ηi = π(F ) − ν(y) − d(u) (4.4)
mi = ηi − πi . (4.5)
42
Recherche opérationnelle Prof. Hamid Zouaki
Tâche date au plus tôt date au plus tard marge
A 0 0 0
B 5 5 0
C 5 12 7
D 15 15 0
E 20 20 0
F 25 25 0
G 30 30 0
H 35 35 0
I 38 38 0
J 35 37 2
K 35 39 4
L 42 42 0
M 47 49 2
N 40 45 5
O 47 47 0
P 52 52 0
q 52 52 0
43
Recherche opérationnelle Prof. Hamid Zouaki
PARTIE II
Programmation Linéaire
44
Chapitre 5
La méthode du simplexe
Avant de donner l’écriture générale d’un programme linéaire, nous présentons deux
exemples simples illustrant la notion de programme linéaire :
1. Problème de production :
Une entreprise fabrique 2 produits X et Y . Pour sa conception, chaque produit fini
nécessite 3 produits intermédiaires A, B et C. Pour fabriquer une unité du produit
X, on a besoin de 2 unités du produit A, de 2 unités du produits B et de 1 unité
du produit C. De même, pour fabriquer une unité de Y , on a besoin de 3 unités de
A, 1 unité de B et de 3 unités de C. En outre, l’entreprise dispose d’une quantité
45
Recherche opérationnelle Prof. Hamid Zouaki
limitée de produits A, B et C. Elle a 180 unités de A, 120 de B et 150 de C. Sachant
que le prix de revient d’une unité de X est 3 unités monétaires (um) et que celui
de Y est de 4 um, combien d’unités de X et Y faut-il fabriquer pour maximiser le
profit ?
2x + 3y ≤ 180
2x + y ≤ 120
x + 3y ≤ 150
x, y ≥ 0
Le profit, qu’on tente de maximiser, est le total des bénéfices sur la vente des
produits X et Y :
max 3x + 4y
2. Problème de transport :
Une entreprise de construction automobile possède 3 usines situées respectivement
dans les villes V1 , V2 et V3 . Un certain métal nécessaire à la construction est dispo-
nible aux ports P1 , P2 .
La quantité de métal nécessaire à la construction aux trois usines chaque semaine
est respectivement400, 300 et 200 tonnes.
Les qunatités disponibles dans les deux ports sont de 550 et 350 respectivement.
Les coûts de transports sont supposés varier proportionnellement aux quantités
transportées. Les coûts unitaires sont donnés par :
V1 V2 V3
P1 5 6 3
P2 3 5 4
Le problème consiste à trouver quels sont les poids de métal à envoyer depuis chaque
port vers chaque usine de sorte que :
(a) les demandes soient satisfaites,
(b) les quantités demandées à chaque port n’exèdent pas les quantités disponibles,
(c) le coût total de transport est minimum, compte tenu des contraintes.
Notons xij la quantité de tonnes de métal acheminée chaque semaine du port Pi
vers l’usine Vj .
Le programme linéaire associé s’écrit :
46
Recherche opérationnelle Prof. Hamid Zouaki
(a) satisfaire les demandes :
(b) disponibilité :
Comme la longueur des rouleaux commandés est identique à celle des bobines mères, il
suffit d’assurer la coupe transversale d’un certain nombre de bobines mères.
Quel est l’objectif poursuivi par le papetier ? Comment modéliser un tel problème ?
A : matrice m × n ;
b : vecteur de Rm ,
C : vecteur de Rn .
47
Recherche opérationnelle Prof. Hamid Zouaki
L’application X 7→< C, X > est appelée fonction économique ou objectif.
Les inéquations AX ≤ b, X ≥ 0 sont les contraintes.
Ce même problème peut se mettre sous la forme
Cependant, l’usage prévaut de séparer les contraintes de positivité, qui ont en général une
origine physique, des autres contraintes. Chose qui est très pratique, comme on verra lors
de la résolution de ce genre de problème.
Définition 5.1.2. Deux programmes mathématiques (P1 ) et (P2 ) sont dits équivalents,
si à toute solution réalisable de l’un, on sait faire correspondre une solution réalisable
de l’autre, de telle sorte que les fonctions objectives soient égales pour cette paire de
solutions.
Proposition 5.1.1. Le problème d’optimisation général :
est un programme linéaire. Autrement dit, tout programme linéaire peut être ramené,
d’une manière équivalente, à un programme linéaire sous forme canonique.
Voici quelques exemples illustrant cette proposition :
– Si une variable est négative, on la remplace par une variable positive : x′ = −x.
– Si une variable n’a pas de contrainte de signe, on l’écrit comme différence de deux
variables positives : x = x′1 − x′2 .
48
Recherche opérationnelle Prof. Hamid Zouaki
– Si on a une contrainte de supériorité Ai X ≥ bi , on la remplace par −Ai X ≤ −bi .
– Une contrainte d’égalité Ai X = bi est remplacé par
Ai X ≤ bi
−Ai X ≤ −bi
Définition 5.1.3. On appelle forme standard d’un programme linéaire, la form sui-
vante :
Proposition 5.1.2. Tout programme linéaire sous forme canonique peut être écrit sous
forme standard.
Démonstration :
L’inéquation Ai .x ≤ bi est équivalente à la paire équation-inéquation :
Ai x + ξi = bi
ξi ≥ 0.
Remarque 5.1.2. C’est pour les problèmes sous forme standard que sont mis au point
les principaux algorithmes de calcul. Le plus célébre étant la méthode du simplexe.
Notations et définitions :
A : matrice m × n, (m lignes et n colonnes).
X : vecteur de taille n.
A = (aij )1≤i≤m,1≤j≤n . i indice de ligne, j indice de colonne.
On note Aj le vecteur colonne correspondant à la colonne j de A.
On note Ai le vecteur ligne correspondant à la ligne i de A.
49
Recherche opérationnelle Prof. Hamid Zouaki
A1
Une matrice A peut être vue de 2 manières : A = ... = A1 . . . An
Am
x1
..
Si X = . alors l’opération A.X peut être exprimée suivant l’écriture de A :
xn
A1 .X
A2 .X
1. A.X = .. .
.
Am .X
C’est la vision ligne.
2. A.X = x1 A1 + x2 A2 + . . . + xn An .
C’est la vision colonne : A.X est une combinaison linéaire des colonnes de A.
On peut étendre cette présentation au produit matriciel :
A matrice m × p, B matrice p × n. On définit le produit matriciel C = AB comme la
matrice m × n définie par
p
X
cij = aik bkj
k=1
Exemple :
2 1 1 0 0
A = 1 2 0 1 0 m = 3, n = 5.
0 0 0 0 1
x1
x2 8
X = x3 , b = 7 ,
c= 4 5 0 0 0 ;
x4 3
x5
50
Recherche opérationnelle Prof. Hamid Zouaki
Si on prend K = {1, 2, 5}, alors
2 1 0 x1
AK = {Aj : j ∈ K} = 1 2 0 , XK = x2
0 0 1 x5
K désignera le complémentaire de K.
1 0
x3
AK = 0 1 , XK =
x4
0 0
Le produit AX s’écrit :
AX = x1 A1 + x2 A2 + x3 A3 + x4 A4 + x5 A5
= x1 A1 + x2 A2 + x5 A5 + x3 A3 + x4 A4
= AK XK + AK XK
CX = c1 x1 + c2 x2 + c3 x3 + c4 x4 + c5 x5
= c1 x1 + c2 x2 + c5 x5 + c3 x3 + c4 x4
= C K XK + C K XK .
51
Recherche opérationnelle Prof. Hamid Zouaki
5.2.1 Notion de solution de base
Définition 5.2.1. On appelle base, un ensemble d’indices K ⊂ {1, . . . , n} tel que :
Définition 5.2.2. A une base K d’un programme linéaire (P ), on associe une solution
du système linéaire AX = b par :
XK = (AK )−1 b
XK = 0.
Remarque 5.2.2. Etant donné une base K, tout vecteur Y de Rn pourra se décomposer
en :
YK : variable de base
YK : variable hors base
Exemple :
Définition 5.2.3. Une base K est dite réalisable si la solution de base associée est réa-
lisable. Autrement dit, elle vérifie (AK )−1 b ≥ 0.
52
Recherche opérationnelle Prof. Hamid Zouaki
D’après une remarque précédante, ce théorème nous dit que pour trouver la solution
optimale de notre problème (P ), il suffit de la chercher parmi les solutions réalisables de
base.
Caractérisation :
Soit K une base et soit X ∈ Rn vérifiant la contrainte AX = b.
AX = AK XK + AK XK
AX = b ⇔ AK XK + AK XK = b
⇔ AK XK = b − AK XK
⇔ XK = (AK )−1 b − (AK )−1 AK XK
Notations :
AX = b ⇔ XK = t(K) − T K XK
On exprime les variables de base (XK ) en fonction des variables hors base (XK ).
Ecrivons maintenant la fonction objectif en exprimant les variables de base en fonction
des variables hors base :
K KXK
CX = (C , C ). = C K XK + C K XK
XK
= C K (t(K) − T K XK ) + C K XK
= C K t(K) + (C K − C K T K ).XK
On pose
d(K) = C − C K T
On a
dK (K) = C K − C K T K = 0
dK (K) = C K − C K T K .
53
Recherche opérationnelle Prof. Hamid Zouaki
Ceci permet finalement d’écrire
AX = b ⇔ CX = CK t(K) + dK XK
Or C K t(K) n’est autre que C.X(K), la valeur de la fonction objectif au point X(K) la
solution de base associée à la base K.
Nous avons donc
CX ≤ CX(K) ⇔ dK XK ≤ 0.
Si X est une solution réalisable, elle vérifie en plus X ≥ 0, d’où le résultat :
Proposition 5.2.1. Une condition nécessaire et suffisante pour que K soit une base
optimale (la solution de base associée soit solution de (P )) est que
dK ≤ 0, i.e. di ≤ 0 ∀i ∈ K.
54
Recherche opérationnelle Prof. Hamid Zouaki
5.2.3 Calcul pratique : méthode des tableaux
A chaque base K, on associe un tableau, dit tableau du simplexe, où l’on résume toute
l’information nécessaire à une itération donnée du simplexe.
Le tableau de dimension (m + 1) × (n + 1) est le suivant :
T(K) t(K)
d(K) -CX(K)
Les bases K et K ′ étant adjacentes, il est naturel qu’il existe des relations de passage
entre les valeurs de t, T et d.
Ces relations, que l’on obtient en utilisant les règles de base d’algèbre linéaire, permettent
le passage direct d’un tableau à un autre.
Formules de passage :
1
1. On multiplie la ligne (pivot) r, associée à l’indice qui sort de la base, par .
Trs
Tis
2. On ajoute à la ligne i 6= r, le produit par − de la ligne pivot.
Trs
3. On ajoute à la dernière ligne (calcul de d et la fonction objectif), le produit par
ds
− s de la ligne pivot.
Tr
Exemple d’illustration :
Soit à résoudre le programme linéaire (P ) :
max x1 + 2x2 − x3
2x1 + x2 + x3 ≤ 14
4x1 + 2x2 + 3x3 ≤ 28
2x1 + 5x2 + 5x3 ≤ 30
xi ≥ 0, i = 1, . . . , 3.
D’abord on écrit le programme sous forme standard, en ajoutant les variables d’écart
x4 , x5 et x6 :
max x1 + 2x2 − x3
2x1 + x2 + x3 + x4 = 14
4x1 + 2x2 + 3x3 + x5 = 28
2x1 + 5x2 + 5x3 + x6 = 30
xi ≥ 0, i = 1, . . . , 5.
m = 3, n = 6
2 1 1 1 0 0 14
A = 4 2 3 0 1 0 b = 28
2 5 5 0 0 1 30
55
Recherche opérationnelle Prof. Hamid Zouaki
C = 1 2 −1 0 0 0
K = {4,
5, 6} estune base réalisable :
1 0 0 14
AK = 0 1 0 = I3 et t(K) = (AK )−1 b = b = 28 ≥ 0.
0 0 1 30
C = 0 (coût associé aux variables d’écart) ⇒ d = C − C K T = C.
K
x1 x2 x3 x4 x5 x6 t
x4 2 1 1 1 0 0 14
x5 4 2 3 0 1 0 28
x6 2 5 5 0 0 1 30
1 2 -1 0 0 0 0
2
s = 2indice
entrant (d = 2 > 0) .
1 14
T = 2 , t = 28.
s
5 30
ti 14 28 30
On calcule s pour Tis > 0 : min{ , , } = 6. Ce minimum est atteint pour i = 3
Ti 1 2 5
qui correpond à la variable de base x6 .
Donc, r = 6 et le pivot Trs = 5. La variable x6 sort de la base et x2 entre dans la base.
On note li les lignes du tableau courant et li′ les lignes du nouveau tableau.
Nouvelle base K = {4, 5, 2}, K = {1, 6, 3}.
1
l3′ = l3 (ligne pivot)
5
l1 = l1 − l3′
′
l2′ = l2 − 2l3′
l4′ = l4 − 2l3′
D’où le tableau :
x1 x2 x3 x4 x5 x6 t
x4 8/5 0 0 1 0 -1/5 8
x5 16/5 0 1 0 1 -2/5 16
x2 2/5 1 1 0 0 1/5 6
1/5 0 -3 0 0 -2/5 -12
1
s = 1 indice entrant (d1 = > 0) .
5
8 16 6
min{ , , } = min{5, 5, 15} = 5.
8/5 16/5 2/5
16
r = 5 (indice sortant) et le pivot Trs = .
5
56
Recherche opérationnelle Prof. Hamid Zouaki
Nouvelle base K = {4, 1, 2}, K = {5, 6, 3}.
5
l2′ = l2 (ligne pivot)
16
8
l1′ = l1 − l2′
5
2
l3 = l3 − l2′
′
5
1
l4 = l4 − l2′
′
5
D’où le tableau :
x1 x2 x3 x4 x5 x6 t
x4 0 0 -1/2 1 -1/2 0 0
x1 1 0 5/16 0 5/16 -1/8 5
x2 0 1 7/8 0 -1/8 1/4 4
0 0 -49/16 0 -1/16 -3/8 -13
On remarque que toutes les composantes de la direction réduite d sont ≤ 0 :
d = 0 0 − 49 16
0 − 161
− 83
On est donc à l’optimum. La solution optimale est X ∗ = 5 4 0 0 0 0 .
La valeur optimale est −(−13) = 13.
La base optimale est K ∗ = {1, 2, 4}.
57
Recherche opérationnelle Prof. Hamid Zouaki
5.3.1 Méthode grand M
On peut supposer, sans perte de généralités, que le second membre b ≥ 0.
En effet, si bi ≤ 0, il suffit de multiplier l’équation correspondante par -1.
La méthode big M consiste, lorsque dans un programme linéaire la matrice A ne contient
pas de sous matrice identité, à ajouter des variables artificielles au niveau de chaque
contrainte et à pénaliser ces variables au niveau de la fonction objectif par une valeur
−M, où M est choisi suffisamment grand. Ce choix fait que les variables artificielles vont
sortir de la base à l’optimum.
On considère donc le problème augmenté :
m
X
max CX − Mvi
i=1
n
X
aij xj + vi = bi i = 1, . . . , m
j=1
xi ≥ 0, i = 1, . . . n
vj ≥ 0, j = 1, . . . , m.
Remarque 5.3.1. Nous avons ajouté, dans le problème augmenté, m variables artifi-
cielles, ce qui n’est pas toujours nécessaire. En effet, lorsque la matrice A contient déjà
une partie de la matrice identité, il suffit d’ajouter les variables artificielles qui complètent
cette matrice.
On écrit d’abord le problème sous forme standard (en ajoutant les variables d’écart x5 , x6 ),
et en prenant soin de rendre le second membre non négatif. Ici, on doit multiplier la
première contrainte par -1.
Le problème s’écrit :
58
Recherche opérationnelle Prof. Hamid Zouaki
En écriture matricielle, on a :
x1
x2
−4 −2 1 0 −1 0 5
x3
A= 1 4 0 1 0 0 ,
b= 7 et X =
x4 .
8 −7 0 0 0 −1 10
x5
x6
On remarque que dans la matrice A, il y’a un début de matrice identité correspondant aux
colonnes 3 et 4. Il suffit donc d’ajouter une variable artificielle au niveau de la troisième
contrainte. Le problème augmenté peut s’écrire :
x1 x2 x3 x4 x5 x6 v1 t
x3 -4 -2 1 0 -1 0 0 5
x4 1 4 0 1 0 0 0 7
v1 8 -7 0 0 0 -1 1 10
8M − 14 −7M − 27 0 0 -3 −M 0 10M − 13
59
Recherche opérationnelle Prof. Hamid Zouaki
La valeur optimale est Z = −(4.5) = −4.5.
max − v1 − v2 − . . . − vm
Ai X + vi = bi i = 1, . . . , m
X ≥ 0, V ≥ 0.
Avec
(P A), on dispose d’une base réalisable de départ formée des variables auxilliaires :
e = 0 . On peut donc appliquer la procédure du simplexe à (P A).
X
b
On note K la base optimale obtenue à la fin de la procédure. Deux cas sont alors possibles :
60
Recherche opérationnelle Prof. Hamid Zouaki
Xm
1. vi > 0, (P ) est alors non réalisable.
i=1
2. vi = 0, i = 1, . . . , m. On note J = {1, 2, . . . , n}. Deux situations peuvent se
présenter :
(a) K ⊂ J :
la base K ne contient pas de variables auxilliaires. K est aussi une base réali-
eJ (K) est solution de base de départ.
sable pour le problème d’origine (P ) et X
(b) K ∩ J 6= ∅ :
K contient une ou plusieurs variables artificielles. On les fait sortir de la base :
soit k ∈ K ∩ J et soit r tel que k = col(r)
– Si Trs 6= 0 pour s ∈ J ∩K. On fait entrer s dans la base. K ′ = (K ∪{s})\{k}
est une base de (P A).
– Si ∀s ∈ J ∩ K, Trs = 0, on peut montrer que la ligne r de (P ) est redon-
dante. On supprime dans (P A) l’équation correspondante.
61
Recherche opérationnelle Prof. Hamid Zouaki
62
Chapitre 6
La dualité
où
On utilise la méthode du simplexe pour résoudre notre problème (P ), après l’avoir écrit
sous forme standard en ajoutant les variables d’écarts x4 , x5 , x6 .
Le tableau optimal du simplexe est alors :
63
Recherche opérationnelle Prof. Hamid Zouaki
x1 x2 x3 x4 x5 x6 t
x2 1/3 1 0 1/3 -1/3 0 20/3
x3 5/6 0 1 -1/6 2/3 0 50/3
x6 -5/3 0 0 -2/3 -1/3 1 80/3
-11/6 0 0 -5/6 -2/3 0 -230/3
La lecture du tableau permet de voir que pour optimiser ses gains l’entreprise doit pro-
duire 0 tables (x1 = 0), 20/3 chaises et 50/3 armoires. Pour un gain de 230/3.
On voit aussi que la quantité de bois ainsi les heures d’assemblage doivent être consom-
mées en totalité (x4 = x5 = 0) : les contraintes 2 et 3 sont saturées. Par contre, on ne
consommera pas la totalité des heures de finition (x6 = 80/3).
On considère la variable d’écart x4 qui lui est associé le coût réduit d4 = −5/6.
D’après le développement déjà vu de la méthode du simplexe, le coût s’exprime :
– Objectif de l’acheteur :
Minimiser le prix à payer pour toutes ces resources. Sa fonction objectif est donc
64
Recherche opérationnelle Prof. Hamid Zouaki
– Le vendeur n’acceptera pas n’importe quel prix : il faut que le revenu rapporté par
la vente des resources nécessaires à la prouction d’une unité d’un produit donné
soit au moins égale au revenu engendré à travers la production par l’entreprise de
cette unité.
Par exemple, la production d’une table demande 3m3 de bois, 2 heures d’assemblage
et 1 heures de finition. Sa vente rapporte 2 unités monétaires. En vendant les
resources associées à la production d’une table, celà doit rapporter à l’entreprise
3y1 + 2y2 + y3 . On doit donc avoir
3y1 + 2y2 + y3 ≥ 2
En examinant les autres produits, le problème (D) de l’acheteur s’écrit :
min 60y1 + 40y2 + 80y3
3y1 + 2y2 + y3 ≥ 2
4y1 + y2 + 3y3 ≥ 4
2y1 + 2y2 + 2y3 ≥ 3
yi ≥ 0, i = 1, . . . , 3.
Le problème (D) ainsi modélisé est appelé programme dual du problème (P ).
Après avoir écrit le programme (D) sous forme standard, on peut, pour sa résolution,
lui appliquer la méthode du simplexe. Le tableau optimal est donné par :
y1 y2 y3 y4 y5 y6
y1 1 0 2/3 0 -1/3 1/6 5/6
y4 0 0 5/3 1 -1/3 -5/6 11/6
y2 0 1 1/3 0 1/3 -2/3 2/3
0 0 80/3 0 20/3 50/3 -230/3
La solution optimale est :
y1 = 5/6, y2 = 2/3, y3 = 0, y4 = 11/6, y5 = 0, y6 = 0.
La valeur optimale est 230/3 égale à la valeur optimale du primal ! !
Remarque 6.2.1. La variable de décision yi du dual correspond à la ieme contrainte du
primal et donc à la variable d’écart associée.
En fait, on peut retrouver la solution optimale du dual à partir du tableau optimal du
primal et vice versa :
pour x4 , d4 = −5/6 −→ y1 = 5/6
pour x5 , d5 = −2/3 −→ y2 = 2/3
pour x6 , d6 = 0 −→ y3 = 0.
Résultats qu’on peut vérifieren consultant le tableau optimal de (D).
Remarque 6.2.2. Le primal a décidé de ne pas produire de tables (x1 = 0 à l’optimum).
Ceci peut s’expliquer par le fait que les resources nécessaires à la fabrication d’une table
engendrent un gain :
3y1 + 2y2 + y3 = 20/3
Ce gain est supérieur au profit engendré par la vente d’une table qui est égale à 2.
"Les prix qu’accorderait le dual aux resources du primal amènent celui-ci à
ne pas produire de tables".
65
Recherche opérationnelle Prof. Hamid Zouaki
6.3 Formulation de la dualité
Définition 6.3.1. On appelle dual du programme linéaire (P ) sous forme canonique :
Exemple :
Remarque 6.3.1. Nous avons vu que tout programme linéaire peut être mis sous forme
canonique. Par conséquent, tout programme linéaire admet un dual.
La correspondance entre (P ) et son dual (P ) peut néanmoins être obtenue directement :
– A toute contrainte du primal on associe une variable du dual. A toute variable du
primal on associe une contrainte du dual.
– Si une contrainte est une égalité, la variable duale associée est sans contrainte de
signe.
– Si une variable du primal est sans contrainte de signe, la contrainte qui lui est
associée dans le dual est une égalité.
66
Recherche opérationnelle Prof. Hamid Zouaki
Primal Dual
Fonction objectif à maximiser Fonction objectif à minimiser
contrainte i ≥ variable i ≤ 0
contrainte i ≤ variable i ≥ 0
contrainte i = variable i sans contrainte
variable j ≥ 0 contrainte j ≥
variable j ≤ 0 contrainte j ≤
variable j sans contrainte contrainte j =
La théorie de la dualité repose sur deux résultats essentiels : le théorème de dualité
et le théorème d’équilibre.
67
Recherche opérationnelle Prof. Hamid Zouaki
3. Il se peut que (P ) et (D) soient non réalisables :
son dual
min −y1 − y2
−y1 − y2 ≥ 5
y1 + y2 ≥ 5
y1 , y2 ≥ 0.
P = ∅ et D = ∅.
Définition 6.3.2. Soit X ∈ P . La contrainte i est dite :
– saturée ou serrée si Ai X = bi
– non saturée ou lâche si Ai X < bi .
Le résultat suivant constitue une caractérisation de l’optimalité pour un programme
linéaire :
68
Recherche opérationnelle Prof. Hamid Zouaki
X, Y sont solutions optimales de (P ) et (D) respectivement si, et seulement si :
n
X
Yi .(bi − aij Xj ) = 0 i = 1, . . . , m.
j=1
m
X
( aij Yi − cj ).Xj = 0 j = 1, . . . , n.
i=1
Le théorème des écarts complémentaires est très important et permet de montrer l’op-
timalité ou non d’une solution proposée. Il montre aussi le lien entre les deux programmes
duaux.
69