Théorie des graphes et programmation linéaire
Théorie des graphes et programmation linéaire
Informatique 3 :
Théorie des graphes et programmation linéaire
1 Introduction 8
2
TABLE DES MATIÈRES 3
5 Programmation linéaire 47
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2 Notions de bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3 Méthodes de résolutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3.1 Méthode graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3.2 Méthode du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3.3 Cas particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.3.4 Dualité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6 Conclusion 63
Bibliographie 64
Liste des Algorithmes
1 Algorithme de Glouton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Algorithme du parcours en profondeur . . . . . . . . . . . . . . . . . . . . . 23
3 Algorithme du parcours en Largeur . . . . . . . . . . . . . . . . . . . . . . . 24
4 Algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5 Algorithme de Bellman-Ford-Kalaba . . . . . . . . . . . . . . . . . . . . . . 33
6 Algorithme de Floyad-Warshall-Roy . . . . . . . . . . . . . . . . . . . . . . 35
7 Algorithme Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4
Liste des tableaux
2.1 Tableau 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 Tableau 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3 Tableau 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5
Table des figures
6
TABLE DES FIGURES 7
4.12 Chaîne 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.13 Exemple de coupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.14 Exemple de coupe minimale . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.1 Étape 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 Étape 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.3 Étape 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.4 Étape 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.5 Étape 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.6 Étape 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Chapitre 1
Introduction
La complexité des problèmes du monde réel nécessite des outils puissants pour les
modéliser afin de les résoudre. Les mathématiques fournissent quelques outils pour at-
teindre cet objectif, tels que : les fonctions, les structures booléennes, etc. Néanmoins, ces
dispositifs ne s’adaptent pas à tous les problèmes. De ce fait, l’introduction d’un nouveau
type d’objet mathématique : les graphes. La théorie des graphes est l’un des outils
permettant la modélisation et la résolution d’un large nombre de problèmes de différents
domaines académiques et industriels. Parmi lesquels, on cite : problèmes de transport,
problèmes de logistique, problèmes d’énergétique, problèmes de réseaux informatiques,
etc.
L’existence de contraintes dans les problèmes, rend la tâche de modélisation en utilisant
les graphes difficile. Par conséquent, l’introduction de la recherche opérationnelle est plus
adaptée. Elle représente un problème par un modèle mathématique comportant : des
variables, des contraintes à respecter et une fonction objectif à optimiser. Parmi les
branches les plus étudiées dans cette discipline, on note : la programmation linéaire.
Les problèmes de la programmation linéaire ont une fonction objectif et des contraintes
linéaires.
Objectifs du cours
Ce cours couvre les objectifs suivants :
• Développer une compréhension des points communs dans les problèmes et comment
la théorie graphique aide à se concentrer sur les aspects essentiels de problèmes.
Pré-requis du cours
La compréhension de cours nécessite la connaissance des éléments suivants :
8
CHAPITRE 1. INTRODUCTION 9
• Connaitre les notions basiques des mathématiques telles que : les équations, le pivot
de gauss, tracer des droites, etc.
• Maitriser l’algorithmique.
• Coefficient/crédit (semestriel) : 3.
Contenu du module
Ce cours est divisé en quatre chapitres, détaillés comme suit :
• Notions générales sur les graphes : dans ce chapitre on aborde les notions
élémentaires relatives aux graphes telles que : un graphe orienté, un chemin, un
circuit, etc. Ensuite, on présentera les propriétés relatives aux graphes telles que :
les graphes eulériens, le parcours en profondeur et en largeur, etc.
• Problèmes des flots : dans ce chapitre on aborde la notion d’un réseau de trans-
port, d’un flot et les propriétés sur les flots. Ensuite, on présente un algorithme
permettant le calcul du flot maximum. On termine par une présentation sur la
notion de coupe et sa relation avec le flot maximum.
Sommaire
2.1 Exemple de problèmes représentables avec les graphes . . . . 10
2.2 Généralités sur les graphes . . . . . . . . . . . . . . . . . . . . . 12
2.3 Représentation des graphes en machine . . . . . . . . . . . . . 20
2.4 Parcours des graphes : largeur et profondeur . . . . . . . . . . 23
2.5 Arbres et arborescence . . . . . . . . . . . . . . . . . . . . . . . 25
2.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Historique
L’apparition de la théorie des graphes est récente, le premier article considéré comme
fondateur de la théorie des graphes fut présenté par le mathématicien Leonhard Euler en
1735. Soit une ville qui contient sept ponts, la problématique est d’élaborer une promenade
à partir d’un point de départ donné en visitant tous les ponts une et une seule fois, pour
ensuite revenir au point de départ.
10
CHAPITRE 2. NOTIONS ÉLÉMENTAIRES SUR LES GRAPHES 11
• Bordeaux - Nantes : 4h
• Bordeaux - Marseille : 9h
• Nantes - Paris-Montparnasse : 2h
• Nantes - Lyon : 7h
Afin de représenter ces données, il est plus facile d’utiliser un graphes où les sommets
représentent les gares et les arêtes représentent les trajets (avec comme étiquète la durée
du trajet).
Chimie G1 et G2
Électronique G3 et G4
Informatique G3, G5, G6 et G7
Mathématiques G1, G5, G6 et G8
Physique G2, G6, G7 et G8
Dans cet exemple, on cherche à gérer la session d’examens la plus courte. Pour ce faire,
on modélise l’ensemble des enseignants par des sommets, c’est-à-dire, chaque enseignant
est assigné à un sommet. . Les arêtes vont représenter les liens entre les examens qui ne
peuvent pas se dérouler simultanément. Il suffit ensuite de colorer le graphe en utilisant
le moins de couleurs possible et que chaque deux sommets liés par une arête n’ont pas la
même couleur.
• S = {s1 , s2 , ..., sn } : un ensemble où ses éléments sont les sommets (ou nœuds).
L’ordre d’un graphe G est le nombre de sommets n.
• E = {e1 , e2 , ..., em } : un ensemble où ses éléments sont appelés les arêtes. Chaque
arête représente un couple non ordonné S ∗ S = {{s1 , s2 }|s1 ∈ S, s2 ∈ S}. On note
|E| = m.
La Figure 2.2 est un graphe non orienté avec 14 sommets (0,1, 2,...,13) et 30 arêtes.
• S = {s1 , s2 , ..., sn } : un ensemble où ses éléments sont les sommets (ou nœuds).
L’ordre d’un graphe G est le nombre de sommets n.
• A = {a1 , a2 , ..., am } : un ensemble où ses éléments sont appelés les arcs. Chaque
arc représente un couple ordonné S × S = {(s1 , s2 )|s1 , s2 ∈ S}, tels que s1 est
l’extrémité initiale et s2 est l’extrémité terminale de a, s2 est successeur de s1 ) et s1
est le prédécesseur de s2 ). On note |A| = m.
La Figure 2.3 est un graphe orienté de 6 sommets (1, 2, 3,...,6) et 14 arcs (dont 5
boucles).
Quelques notions relatives aux graphes orientés :
• Une boucle dans un graphe orienté est représentée par un arc dont le sommet d’ex-
trémité initiale est le même que le sommet d’extrémité terminale : a = (s, s), ∀s ∈ S.
CHAPITRE 2. NOTIONS ÉLÉMENTAIRES SUR LES GRAPHES 13
• On note par ω + (s) : l’ensemble des arcs ayant s comme extrémité initiale (ensemble
des arcs sortant de s).
• On note par ω − (s) : l’ensemble des arcs ayant s comme extrémité terminale (en-
semble des arcs entrant dans s).
• Un chemin eulérien est un chemin empruntant une fois et une fois seulement
chaque arc de G.
• Remarque : la même définition s’applique sur les graphes non orientés (c’est-à-dire,
chaîne eulérien, cycle eulérien et graphe non orienté eulérien).
La Figure 2.5 comporte deux graphes (orienté à droite et non orienté à gauche) qui
sont des graphes eulériens.
• Un graphe non orienté connexe admet un cycle eulérien si et seulement si tous ses
sommets ont un degré pair.
Théorème 2 Graphe orienté
• Un graphe orienté connexe admet un circuit eulérien si, et seulement si, pour tout
sommet, le degré entrant est égal au degré sortant.
Exercice :
Les graphes suivants sont-ils eulériens ? (voir Figure 2.6)
(
soit si = sj
si R s j ↔ (2.1)
soit il existe une chaîne joignant si et sj
Remarque :
• Si un graphe non orienté est connexe alors il est par définition fortement connexe.
La Figure 2.8 montre deux exemples d’un graphe connexe (le plus à droite) et d’un graphe
non connexe (le plus à gauche).
(
soit si = sj
si R s j ↔ (2.2)
soit il existe à la fois un chemin joignant si et sj et inversement
Remarque :
• Si un graphe non orienté est connexe alors il est par définition fortement connexe.
• Il existe un arc entre deux composantes fortement connexes si et seulement s’il existe
au moins un arc entre un sommet de la première composante et un sommet de la
seconde.
• Le sous graphe partiel d’un graphe G est un le sous graphe d’un graphe partiel de
G.
La Figure 2.11 représente (en partant de la gauche) un graphe G, son graphe partiel, son
sous graphe et son sous graphe partiel.
La Figure 2.12 représente un graphe avec un ensemble de sommets, d’arêtes et des valeurs
pour chaque arête.
• On dit que G est k-chromatique ou bien G admet une k-coloration s’il existe une
partition de S en k ensembles. Ceci revient à dire qu’il est possible de colorer les
sommets de G avec k couleurs différentes.
CHAPITRE 2. NOTIONS ÉLÉMENTAIRES SUR LES GRAPHES 19
L’un des algorithmes les plus simples à utiliser est l’algorithme de Glouton,son principe
est le suivant (voir Algorithme 1) :
L’exemple de la Figure 2.13 montre un graphe coloré, où chaque deux sommets sous
adjacent n’ont pas la même couleur. Il y a 3 couleurs et c’est le nombre chromatique (car
c’est le nombre minimum nécessaire pour colorer ce graphe).
2.2.11 Généralités
• Les arcs ont un sens. l’arc a = (s1 , s2 ) va de s1 vers s2 .
• Deux sommets sont voisins s’ils sont reliés par un arc ou une arête.
′
• N (s) : ensemble des voisins de s, ensemble des sommets s tels qu’il existe une
′
arête/arc contenant s et s .
• Un graphe non orienté est dit simple s’il est sans boucle et s’il n’existe pas plus
d’une arête entre toute parie de sommets.
• Deux arcs (arêtes) sont adjacent(e)s s’ils ont au moins une extrémité communes.
• Ordre d’un graphe : est représenté par le nombre de sommets contenu dans ce
graphe.
• Taille d’un graphe : est le nombre d’arêtes (arcs) contenu dans ce graphe.
• Degré dans un graphe non orienté : est le nombre d’arêtes reliant ce sommet
aux autres.
• Degré dans un graphe orienté : on parle de degré entrant et degré sortant d’un
sommet.
• Longueur d’une chaîne (chemin) : est le nombre des arêtes (arcs) qui la com-
posent.
• Valeur d’une chaîne (chemin)dans un graphe valué : est la somme des valeurs
des arêtes (arcs) qui la composent.
• Distance entre deux sommets : est la longueur de la plus courte chaîne (chemin)
entre eux.
• Diamètre d’un graphe : est le maximum des distances entre ses sommets.
Propriétés :
• La somme des éléments de la ième ligne de U est égale au degré sortant ds (si ) du
sommet si de G.
• La somme des éléments de la ième ligne de U est égale au degré entrant de (si ) du
sommet si de G.
• U est symétrique si, et seulement si, le graphe G est symétrique.
CHAPITRE 2. NOTIONS ÉLÉMENTAIRES SUR LES GRAPHES 22
Pour un graphe non orienté sans boucle G = (S, E), la matrice d’incidence (arêtes)
est définie par :
1 Si si est une extrémité ej
• mij =
0 Sinon
La Figure 2.16 représente un exemple d’une matrice d’incidence d’un graphe orienté.
La taille de la matrice est de 8 × 5 (8 est le nombre d’arcs et 5 est le nombre de sommets).
La matrice comporte trois valeurs : 0, 1 et -1.
La Figure 2.17 représente un exemple d’une matrice d’incidence d’un graphe non
orienté. La taille de la matrice est de 5 × 5 (8 est le nombre d’arêtes et 5 est le nombre
de sommets). La matrice comporte deux valeurs : 0 et 1.
Chaque sommet est visité exactement une seule fois. La Figure 2.18 représente un
exemple de parcours en profondeur d’abord en commençant par le sommet 1 et en choi-
sissant le successeur ayant le plus petit indice. Le résultat du parcours est de : 1, 2, 4, 3, 5.
L’application de l’algorithme sur notre exemple est la suivante :
• Première étape, on choisit le sommet de départ pour faire le parcours, c’est-à-dire
1.
• Deuxième étape, on choisit le successeur du sommet 1 ayant l’indice le plus petit,
c’est-à-dire 2.
• Troisième étape, on choisit le successeur du sommet 2 ayant l’indice le plus petit,
c’est-à-dire 4.
• Quatrième étape, on choisit le successeur du sommet 4 ayant l’indice le plus petit,
c’est-à-dire 3.
• Cinquième étape, on choisit le successeur du sommet 3 ayant l’indice le plus petit,
c’est-à-dire 5.
CHAPITRE 2. NOTIONS ÉLÉMENTAIRES SUR LES GRAPHES 24
• Une fois que tous les sommets sont parcourus, l’algorithme est terminé.
La Figure 2.19 représente le parcours en largeur d’abord d’un graphe orienté en com-
mençant par le sommet 1 et en choisissant le successeur ayant le plus petit indice. Le
résultat du parcours est de : 1, 2, 4, 5, 3. L’application de l’algorithme sur notre exemple
est la suivante :
• Deuxième étape, on choisit les successeurs du sommet 1 ayant l’indice le plus petit,
c’est-à-dire 2.
• Troisième étape, on choisit les successeurs du sommet 2 ayant l’indice le plus petit,
c’est-à-dire 4 et 5 (dans l’ordre).
• Quatrième étape, on choisit les successeurs du sommet 4 ayant l’indice le plus petit,
c’est-à-dire 3, ensuite les successeurs du sommet 5 (dans cet exemple, il y en a pas).
• Une fois que tous les sommets sont parcourus, l’algorithme est terminé.
• G ne contient pas de circuit, car il existe au plus un chemin entre deux sommets.
La Figure 2.20 représente un ensemble graphes qui sont des arbres ou non.
2.5.2 Arborescence
Soit G = (S, E) un graphe orienté. G est une arborescence si :
• G n’a qu’un seul point d’entrée, c’est-à-dire, un sommet qui n’a pas de prédécesseur.
Ce sommet est la racine de l’arborescence.
Propriétés :
• Si on ignore l’orientation des arcs dans une arborescence, alors le graphe devient un
arbre.
• Une forêt est un graphe qui contient plusieurs arbres ou arborescences distinctes.
CHAPITRE 2. NOTIONS ÉLÉMENTAIRES SUR LES GRAPHES 27
2.6 Exercices
Exercice 1
Pour les graphes orientés, il faut considérer des suites de couples d’entiers (le premier
élément d’un couple correspond au degré entrant, le second au degré sortant). Les suites
suivantes sont-elles des suites graphiques ?
Exercice 2
Ce graphe à cinq sommets est tel que deux sommets quelconques sont reliés par un
arc unique, dans un sens ou dans l’autre. Ce type de graphe a comme propriété d’avoir un
nombre impair de chemins hamiltoniens (avec le sommet final différent du sommet initial)
lorsque l’on prend les cinq points de départ possibles à tour de rôle.
• Déterminer tous les chemins hamiltoniens partant de chacun des 5 sommets (0, puis
1, puis 2, puis 3 et enfin 4), et se terminant en un sommet différent du point de
départ. Les dessiner dans chacun de ces 5 cas. Combien y en a-t-il ?
• Vérifier que pour chacun des points de départ, un des chemins hamiltoniens peut être
prolongé pour donner un cycle hamiltonien. Les cinq cycles hamiltoniens obtenus
constituent le même cycle si l’on ne tient pas compte du point de départ.
CHAPITRE 2. NOTIONS ÉLÉMENTAIRES SUR LES GRAPHES 28
Exercice 3
Pour ce graphe non orienté à 14 sommets, les voisins de chaque sommet sont supposés
être dans l’ordre croissant de leurs numéros, ainsi :
Exercice 4
Représenter graphiquement les graphes associés aux matrices suivantes :
0 0 0 0 0 0
-1 -1 0 0 0 0 1 1 -1 0 0 0 1
1 0 0 0 0 0
1 0 -1 1 0 0 0 0 0 1 0 -1 0
0 1 0 0 0 1
0 1 1 0 -1 0 -1 0 0 0 1 0 0
1 0 0 0 0 0
0 0 0 -1 0 1 0 0 0 0 -1 1 -1
0 1 0 1 0 0
0 0 0 0 1 -1 0 -1 1 -1 0 0 0
0 0 0 0 1 0
Table 2.1 – Tableau 1 Table 2.2 – Tableau 2
Table 2.3 – Tableau 3
Chapitre 3
Sommaire
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 Algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . 30
3.3 Algorithme de Bellman-Ford-Kalaba (BFK) . . . . . . . . . . 32
3.4 Algorithme de Floyd-Warshall-Roy (FWR) . . . . . . . . . . . 34
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1 Introduction
Les problèmes de recherche du plus court chemin dans les graphes comptent parmi
les plus classiques de la théorie des graphes. Le principe du plus court chemin est de
trouver un chemin allant d’un sommet de départ vers un sommet d’arrivée en considérant
le chemin le plus court (les arcs du graphe sont valués, et les valeurs peuvent être positives
ou négatives). Certaines conditions sont nécessaires pour pouvoir calculer le plus court
chemin :
• Le graphe doit être connexe et tous les sommets sont atteignables (il suffit d’utiliser
la procédure du parcours du graphe pour vérifier si un sommet est atteignable).
• Algorithme de Dijkstra.
• Algorithme de Floyd-Warshall-Roy.
• Algorithme de Bellman-Ford.
29
CHAPITRE 3. PROBLÈME DU PARCOURS DE GRAPHES 30
• Sommets ouverts : les sommets qui sont accessibles et qui ne sont pas encore
traités.
• Sommets fermés : les sommets qui sont traités et dont on ne peut plus modifier
la valeur.
Dans chaque étape de cet algorithme, on choisit un sommet ouvert qui a la plus petite
distance et on récupère ses successeurs (qui deviendront des sommets ouverts). Ensuite,
on ferme le sommet traité et on refait ce processus jusqu’à ce que tous les sommets soient
fermés.
• Pred : matrice des précédences pour la recherche des chemins une fois le plus court
chemin est calculé.
Le temps d’exécution de l’algorithme Dijkstra est rapide (O(n2 )) mais il ne marche pas
avec des graphes ayant des valuations négatives. Il ne calcule que le plus court chemin et
non pas le plus long chemin. Afin de démontrer le déroulement de l’algorithme de Dijkstra,
nous l’appliquons sur l’exemple de la Figure 3.1.
Dist P red
x D C 1 2 3 4 5 6 1 2 3 4 5 6
0 {} {1; 2; 3; 4; 5; 6} ∞ ∞ ∞ ∞ ∞ 0 0 0 0 0 0 0
6 {6} {1; 2; 3; 4; 5} ∞ 9 11 ∞ 19 0 0 6 6 0 6 0
2 {6; 2} {1; 3; 4; 5} ∞ 9 11 10 19 0 0 6 6 2 6 0
4 {6; 2; 4} {1; 3; 5} 8 9 11 10 12 0 4 6 6 2 4 0
3 {6; 2; 4; 3} {1; 5} 8 9 11 10 12 0 4 6 6 2 4 0
1 {6; 2; 4; 3; 1} {5} 8 9 11 10 12 0 4 6 6 2 4 0
5 {6; 2; 4; 3; 1; 5} {} 8 9 11 10 12 0 4 6 6 2 4 0
La première ligne du tableau 3.1 est l’étape d’initialisation où les distances ont la
valeur ∞ (mise à part celle du sommet de départ), l’ensemble des so mmets fermés D est
vide et l’ensemble des sommets à traiter C comporte tous les sommets. À chaque étape, on
choisit le sommet ayant la plus petite distance, on calcule ses successeurs en considérant
toujours le sommet de départ et on change les valeurs si les anciennes sont plus grandes
(ainsi que les indices pour la matrice de précédence).
• L’algorithme se termine une fois que tous les sommets sont traités, c’est-à-dire,
l’ensemble D est remplit et l’ensemble C est vide. La Figure 3.2 montre les différents
chemins optimaux accessibles à partir du sommet 6.
• Pred : matrice des précédences pour la recherche des chemins une fois le plus court
chemin est calculé.
14 k =k+1
Dist P red
k x 1 2 3 4 5 6 1 2 3 4 5 6
0 0 ∞ 0 ∞ ∞ ∞ ∞ 0 0 0 0 0 0
0 2 ∞ 0 15 1 11 ∞ 0 0 2 2 2 0
1 4 -1 0 15 1 3 ∞ 4 0 2 2 4 0
2 1 -1 0 15 1 3 2 4 0 2 2 4 1
2 6 -1 0 15 1 3 2 4 0 6 2 4 1
• L’étape suivante (représentée par la ligne où k = 1) sera de traiter les trois sommets
3, 4 et 5 en calculant à chaque fois leurs successeurs. Dans le cas où le sommet traité
change les valeurs de la matrice Dist alors la ligne correspondante sera présente. Elle
sera ignorée dans le cas inverse. Dans notre exemple, uniquement la ligne du sommet
4 n’est pas ignorée car c’est la seule qui apporte les modifications nécessaires.
• L’algorithme s’arrête dans le cas où le nombre d’étapes (k) est égal au nombre de
sommets ou l’étape ki et l’étape ki−1 sont les mêmes.
CHAPITRE 3. PROBLÈME DU PARCOURS DE GRAPHES 34
• Pred : matrice des précédences pour la recherche des chemins une fois le plus court
chemin est calculé.
Sommets 1 2 3 4 5 6 Sommets 1 2 3 4 5 6
1 0 ∞ ∞ ∞ ∞ 3 1 0 ∞ ∞ ∞ ∞ 3
2 ∞ 0 15 1 11 ∞ 2 ∞ 0 15 1 11 ∞
3 ∞ ∞ 0 16 ∞ ∞ 3 ∞ ∞ 0 16 ∞ ∞
4 -2 ∞ ∞ 0 2 ∞ 4 -2 ∞ ∞ 0 2 1
5 0 ∞ ∞ ∞ 0 ∞ 5 0 ∞ ∞ ∞ 0 3
6 ∞ 9 11 ∞ 19 0 6 ∞ 9 11 ∞ 19 0
Sommets 1 2 3 4 5 6 Sommets 1 2 3 4 5 6
1 0 ∞ ∞ ∞ ∞ 3 1 0 ∞ ∞ ∞ ∞ 3
2 ∞ 0 15 1 11 ∞ 2 ∞ 0 15 1 11 ∞
3 ∞ ∞ 0 16 ∞ ∞ 3 ∞ ∞ 0 16 ∞ ∞
4 -2 ∞ ∞ 0 2 1 4 -2 ∞ ∞ 0 2 1
5 0 ∞ ∞ ∞ 0 3 5 0 ∞ ∞ ∞ 0 3
6 ∞ 9 11 10 19 0 6 ∞ 9 11 10 19 0
Le premier tableau (3.3) représente la matrice initiale qui comporte les distances di-
rectes entre chaque deux sommets i et j (c’est la représentation matricielle du graphe).
Chaque étape de l’application de l’Algorithme 6 correspond à la valeur de z (c’est-à-dire,
z = 1 à l’étape 1, z = 2 à l’étape 2, etc). Pour chaque étape, la valeur de x change de 1 à
6 (sachant qu’il y a 6 sommets), et pour chaque valeur de x on change la valeur de y de
1 à 6.
Prenant l’exemple de la première itération, c’est-à-dire, le premier tableau (étape 1).
CHAPITRE 3. PROBLÈME DU PARCOURS DE GRAPHES 36
Sommets 1 2 3 4 5 6 Sommets 1 2 3 4 5 6
1 0 ∞ ∞ ∞ ∞ 3 1 0 ∞ ∞ ∞ ∞ 3
2 -1 0 15 1 3 2 2 -1 0 15 1 3 2
3 14 ∞ 0 16 18 17 3 14 ∞ 0 16 18 17
4 -2 ∞ ∞ 0 2 1 4 -2 ∞ ∞ 0 2 1
5 0 ∞ ∞ ∞ 0 3 5 0 ∞ ∞ ∞ 0 3
6 8 9 11 10 12 0 6 8 9 11 10 12 0
Sommets 1 2 3 4 5 6 Sommets 1 2 3 4 5 6
1 0 12 14 13 15 3 1 0 6 6 2 4 1
2 -1 0 13 1 3 2 2 4 0 6 2 4 1
3 14 26 0 16 18 17 3 4 6 0 3 4 1
4 -2 10 12 0 2 1 4 4 6 6 0 4 1
5 0 12 14 13 0 3 5 5 6 6 2 0 1
6 8 9 11 10 12 0 6 4 6 6 2 4 0
• Dans l’étape 1, les seules situations où la formule est réalisée, c’est dans le cas où
x = 4, y = 6 et x = 5, y = 6. L’application de la formule se manifeste par la présence
de deux cases rouges dans la matrice. Cela signifie que les deux valeurs ont changé
car leurs valeurs précédentes étaient plus grandes.
3.5 Exercices
Exercice 1
Calculer le plus court chemin en partant du sommet D vers le sommet A et en utilisant
l’algorithme de Dijkstra du graphe suivant :
CHAPITRE 3. PROBLÈME DU PARCOURS DE GRAPHES 37
Exercice 2
PB B A S I F E
PB 0/15/2 0/5/4
B 15/0/2 8/0/3 22/0/2
A 5/0/4 0/10/3 5/0/3 15/0/4
S 0/5/3 0/15/2 5/0/5
I 15/0/2 8/0/6
F 0/10/2 0/15/4 0/5/5 0/8/6 0/5/6
E 5/0/6
Les sept pays, les Pays-Bas, la Belgique, l’Allemagne, la Suisse, l’Italie, l’Espagne et la
France, produisent, exportent, importent et consomment le beurre. Certains de ces pays
surproduisent et sont obligés d’exporter, d’autres doivent importer. Le gouvernement de
chaque pays décide de créer un organisme dont le rôle est d’aider les échanges. Pour
cela, dans un premier temps, chaque pays passe un accord commercial avec chacun de
ses voisins fixant des aides pour l’exportation vers des pays déficitaires et des taxes pour
l’exportation vers des pays surproducteurs. Les données sont résumées dans le tableau 1.
Les nombres dans chaque case du tableau représentent les taxes, les aides et les coûts de
transport sous forme : Taxe/aide/coût (calcule : taxe-aide+coût).
• Modéliser le problème sous forme d’un problème du plus court chemin dans un
graphe orienté. Que remarque-t-on ?
Sommaire
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3 Recherche du flot maximum . . . . . . . . . . . . . . . . . . . . 40
4.4 Coupe, coupe minimale et flot maximum . . . . . . . . . . . . 44
4.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1 Introduction
L’optimisation des flots dans les réseaux est un axe important de la théorie des graphes.
Cela concerne la circulation de matière sur les arcs comme par exemple :
• Réseau électrique : la source est la centrale électrique, le puits est l’endroit où
l’électricité est consommée, les arcs sont les lignes électriques (l’intensité du courant
électrique supportée par la ligne est la capacité) et le flot est la quantité du courant.
• Réseau routier : la source est l’endroit de départ des voitures, le puits est l’endroit
de destination des voitures, le flot est la quantité de voitures et les arcs sont les
routes (la quantité de voiture qui passe par chaque route est la capacité).
4.2 Définitions
Définition 15 Réseau de transport
Soit R = (N, A) un réseau de transport tel que :
• Un réseau de transport est un graphe orienté, connexe, sans boucle et valué.
38
CHAPITRE 4. PROBLÈME DES FLOTS 39
• Racine : un sommet qui a que des arcs sortants et qui est le départ de notre
réseau.
• Puits : un sommet qui a que des arcs entrants et qui est l’arrivée de notre
réseau.
• À chaque arc e entre deux sommets i et j (i, j ∈ A) est associé un nombre positif
c(e) appelée capacité.
Définition 16 Flot
Un flot F dans un réseau de transport, associe à chaque arc e une quantité f (e) qui
représente la quantité de flux qui passe par cet arc en provenance de la source vers le
puits.
Le flot est sujet à des restrictions (règles) et également des propriétés qui sont les sui-
vantes :
• Flot conservatif : le flot est conservatif s’il obéit à la loi de Kirchoff (la loi des
nœuds) : la somme des quantités de flux sur les arcs entrant dans un sommet doit
être égale à la somme des quantités de flux sur les arcs sortant de ce même sommet.
• Flot compatible : un flot est compatible dans un réseau de transport si pour tout
arc e le flux qui le traverse ne dépasse pas sa capacité :
• Arc saturé : soit e un arc allant du sommet u au sommet v. On dit que l’arc e est
saturé si et seulement si le flux qui le traverse est égal à sa capacité (f (e) = c(e)).
• Flot complet : un flot est complet si pour tout chemin allant de la source au puits
il y a au moins un arc saturé.
• Une chaine : un chemin qui comporte des arcs dans le sens direct et des arcs dans
le sens inverse.
CHAPITRE 4. PROBLÈME DES FLOTS 40
La Figure 4.2 représente un exemple de réseau de transport dont le flot est conservatif,
compatible et qui comporte des flots complets.
• La capacité est la valeur à gauche et le flux est la valeur à droite. Par exemple, l’arc
e entre A et C : c(e) = 4 et f (e) = 2.
• Le réseau de la figure est compatible car pour tout arc le flux est inférieur à la
capacité.
• L’arc e entre B et D est un arc saturé, car sa capacité est égale à son flux.
• Le chemin A, B, D, F est chemin saturé avec un flot complet car il contient un arc
saturé (l’arc entre B et D).
• Pour tout sommet du transport, le flux entrant est égal au flux sortant (le flot
conservatif). Par exemple, le flux entrant du sommet B est 2 et le flux sortant du
sommet B est 2 (1 + 1).
• Les capacités des autoroutes en matière de véhicules sont indiquées sur les arcs.
Les Figures 4.5, 4.6, 4.7, 4.8, 4.9, 4.10, 4.11 et 4.12 représentent la recherche du flot
maximum en appliquant l’algorithme 7. L’application sur l’exemple de la Figure 4.3 est
de la manière suivante :
• Les flots du graphe ainsi que le flot maximum (F lotM ax) avant l’application de
l’algorithme sont initialisés à 0.
• {s, a, c, e, t} : est le chemin sélectionné pour être amélioré et ainsi augmenter le flot
maximum (voir Figure 4.6). La valeur permettant l’amélioration est calculée de la
même manière que précédemment : ε = min(30 − 7, 11 − 0, 8 − 0, 7 − 0) = 7. La
nouvelle valeur du flot maximum est alors F lotM ax = F lotM ax + 7 = 14.
• {s, a, b, c, f, t} : est le chemin sélectionné pour être amélioré et ainsi augmenter le flot
maximum (voir Figure 4.8). La valeur permettant l’amélioration est calculée de la
même manière que précédemment : ε = min(30−16, 8−0, 26−2, 22−2, 27−2) = 8.
La nouvelle valeur du flot maximum est alors F lotM ax = F lotM ax + 8 = 24.
• {s, b, c, f, t} : est le chemin sélectionné pour être amélioré et ainsi augmenter le flot
maximum (voir Figure 4.9). La valeur permettant l’amélioration est calculée de la
même manière que précédemment : ε = min(1 − 0, 26 − 10, 22 − 10, 27 − 10) = 1.
La nouvelle valeur du flot maximum est alors F lotM ax = F lotM ax + 1 = 25.
• {s, f, t} : est le chemin sélectionné pour être amélioré et ainsi augmenter le flot
maximum (voir Figure 4.10). La valeur permettant l’amélioration est calculée de la
même manière que précédemment : ε = min(2 − 0, 27 − 11) = 2. La nouvelle valeur
du flot maximum est alors F lotM ax = F lotM ax + 2 = 27.
• {s, a, c, f, t} : est le chemin sélectionné pour être amélioré et ainsi augmenter le flot
maximum (voir Figure 4.11). La valeur permettant l’amélioration est calculée de la
même manière que précédemment : ε = min(30 − 24, 11 − 7, 22 − 11, 27 − 13) = 4. La
nouvelle valeur du flot maximum est alors F lotM ax = F lotM ax + 4 = 31. C’est le
dernier chemin possible à améliorer dans notre réseau de transport (flot complet).
Il est maintenant nécessaire de chercher une chaîne avec des arcs dans le sens inverse
pour augmenter le flot maximum.
• {s, a, d, e, c, f, t} : est la seule chaine disponible qui nous permet d’améliorer le flot
maximum (voir Figure 4.12). Pour calculer ε le principe est le suivant :
Ajouter la valeur de ε aux arcs parcours dans leur sens et soustraire ε des arcs
parcourus dans leur sens inverse. La valeur permettant l’amélioration est calculée
CHAPITRE 4. PROBLÈME DES FLOTS 44
La Figure 4.4 représente la version finale du réseau de transport, avec en gras les arcs
saturés (par exemple, l’arc entre a et c). Pour vérifier que l’application de l’Algorithme 7
est faite correctement et que le flot maximum est correcte, il est nécessaire de vérifier la
loi de conservation de flux. Le flot maximum est de 32 qui est la somme des flots des arcs
sortant de la source s (ou la somme des flots des arcs entrant dans t).
• L’ensemble S doit contenir au minimum un sommet (la racine) et ne doit pas conte-
nir le puits.
La Figure 4.13 montre un exemple de coupe S = {1, 3, 4} avec δ(S) = {(1, 2), (1, 5), (3
, 2), (4, 5)}.
Théorème La valeur maximum d’un flot réalisable entre s (la source) et t (le puits) est
égale à la capacité minimum d’une coupe séparant s et t.
La Figure 4.14 représente l’exemple d’une coupe minimale δ(S) = {(d, t), (d, e), (a, c), (s, f ), (b, c)}
(S = {s, a, b, d}) avec la capacité c(δ(S)) = F lotM ax = 32.
CHAPITRE 4. PROBLÈME DES FLOTS 45
4.5 Exercices
Exercice 1
Calculer le flot maximum pour le réseau suivant :
Exercice 2
Soit le réseau suivant :
• Le réseau subit des changements indiqués plus bas. Essayez de trouver, dans chaque
cas, le flot maximum sans beaucoup d’efforts, et surtout sans recommencer l’algo-
rithme dès le début (indication : la connaissance de la coupe minimum peut être
utile).
Programmation linéaire
Sommaire
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2 Notions de bases . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3 Méthodes de résolutions . . . . . . . . . . . . . . . . . . . . . . 51
5.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.1 Introduction
La recherche opérationnelle est un ensemble de méthodes (algorithmiques, mathéma-
tiques, modélisation, etc). Elle permet de prendre des décisions optimales (ou proches de
l’optimum) concernant des problèmes complexes qui ont pour objectif la maximisation
d’un profit ou de la minimisation d’un coût. Dans ce qui va suivre, on présente quelques
exemples d’applications de la recherche opérationnelle :
• Comment investir ses 1000 euros d’économie de sorte à maximiser le profit obtenu
après deux ans ?
• Trouver un chemin entre deux villes (plus court chemin dans un graphe).
47
CHAPITRE 5. PROGRAMMATION LINÉAIRE 48
x1 , x2 ...xn
Min/Max F = c1 x1 + c2 x2 + ... + cn xn
La solution est toute affectation des variables qui respecte les contraintes. La solution
optimale est la solution qui optimise (maximise ou minimise) la fonction objectif.
Exemple
Considérons un agriculteur qui possède des terres, de superficie égale à H hectares,
dans lesquelles il peut planter du blé et du maïs. l’agriculteur possède une quantité E
d’engrais et I d’insecticide. Le blé nécessite une quantité Eb d’engrais par hectare et Ib
d’insecticide par hectare. Les quantités correspondantes pour le maïs sont notées Em et
Im. Soit P b le prix de vente du blé et P m celui du maïs. Si l’on note par xb et xm le
nombre d’hectares à planter en blé et en maïs, comment exprimer le fait que l’agriculteur
souhaite maximiser son gain, tout en restant dans les limites de ses ressources.
CHAPITRE 5. PROGRAMMATION LINÉAIRE 49
Solution
L’exemple peut être résolu par la programmation linéaire. C’est un problème de maxi-
misation car l’agriculteur cherche à maximiser son gain par la vente de blé et le maïs. Sa
modélisation est la suivante :
• La fonction objectif
• Les contraintes
xb + x m ≤ H
E x + E x ≤ E
b b m m
(5.2)
Ib xb + Im xm ≤ I
xb , xm ≥ 0
• fonction objectif :
max F = c1 x1 + c2 x2 + ... + cn xn
• des contraintes :
a11 x1 + a12 x2 + ... + a1n xn ≤ b1
a21 x1 + a22 x2 + ... + a2n xn ≤ b2
... (5.3)
am1 x1 + am2 x2 + ... + amn xn ≤ bm
x , x , ..., x ≥ 0
1 2 n
• n variables, m contraintes
• fonction objectif :
max/min F = c1 x1 + c2 x2 + ... + cn xn
CHAPITRE 5. PROGRAMMATION LINÉAIRE 50
• des contraintes :
a11 x1 + a12 x2 + ... + a1n xn = b1
a21 x1 + a22 x2 + ... + a2n xn = b2
... (5.4)
am1 x1 + am2 x2 + ... + amn xn = bm
x , x , ..., x ≥ 0
1 2 n
• n variables, m contraintes
Remarque :
Il est possible d’aller d’une forme canonique à une forme standard et inversement : théo-
rème d’équivalence des formes standard et canonique ("Tout programme linéaire
peut s’écrire sous forme standard et sous forme canonique").
• Une contrainte d’inégalité aT x ≤ b peut être transformée en égalité par l’introduc-
tion d’une variable d’écart s :
(
aT x + s = b
(5.5)
s≥0
Exemple
Une société produit de la peinture d’intérieur et d’extérieur à partir de deux produits
de base M 1 et M 2. La demande maximum en peinture d’intérieur est de 2 tonnes par
jour. La production de peinture d’intérieur ne dépasse que d’une tonne celle d’extérieur
(voir le Tableau 5.1).
Solution
Les variables du problèmes sont :
• x1 : tonnes de peinture d’extérieur produites par jour.
CHAPITRE 5. PROGRAMMATION LINÉAIRE 51
• Résolution graphique
• La méthode su simplexe
• ...
CHAPITRE 5. PROGRAMMATION LINÉAIRE 52
Exemple
Afin d’expliquer le fonctionnement de la méthode graphique, nous allons utiliser le
programme linéaire suivant :
M ax F = 2x1 + x2 (5.11)
x1 + 2x2 ≤ 6
x + x ≤ 4
1 2
(5.12)
x1 ≤ 3
x1 , x2 ≥ 0
Solution
L’ensemble des solutions réalisables est l’ensemble des points de l’espace qui vérifient
les contraintes. Les figures suivantes représentent l’application de la méthode graphique :
• Il y a deux variables dans notre problème, donc on aura besoin de deux axes.
• Dans la Figure 5.1, il y a la représentation de trois contraintes. La première contrainte
est celle de la positivité de x1 (on supprime toutes les valeurs négatives de x1 ). La
seconde contrainte est celle de la positivité de x2 (on supprime toutes les valeurs
négatives de x2 ). La troisième contrainte est celle de x3 ≤ 3, où on trace une droite
(passant par la valeur x1 = 3) et on ignore les valeurs où x1 > 3.
CHAPITRE 5. PROGRAMMATION LINÉAIRE 53
• Afin de trouver la solution optimale, il suffit de remplacer les coordonnées des points
précédentes (première coordonnée représente le x1 et la seconde coordonnée repré-
sente le x2 ) au niveau de la fonction objectif. Le point qui permet d’obtenir la
meilleure valeur pour la fonction objectif sera le point de la solution optimale. Par
exemple, en remplaçant le point A dans la fonction objectif on obtient F = 0.
Exemple
Afin de mieux comprendre son implémentation, nous allons utiliser l’exemple suivant :
2x1 + 3x2 + x3 ≤ 5
4x + x + 2x ≤ 11
1 2 3
(5.14)
3x1 + 4x2 + 2x3 ≤ 8
x1 , x2 , x3 ≥ 0
Solution
La première étape consiste à transformer la forme du PL d’une forme canonique à une
forme standard (c’est-à-dire des inégalités à des égalités). Les variables d’écarts indiquent
les ressources disponibles et les variables initiales fournissent les informations sur le pro-
blème (production, vente, etc). Cette transformation est faite en ajoutant les variables
d’écarts ei :
2x1 + 3x2 + x3 + e1 = 5
4x + x + 2x + e = 11
1 2 3 2
(5.16)
3x1 + 4x2 + 2x3 + e3 = 8
x1 , x2 , x3 , e1 , e2 , e3 ≥ 0
CHAPITRE 5. PROGRAMMATION LINÉAIRE 55
Principe : on part d’une solution de base, par exemple le point 0, et à chaque étape
de l’algorithme on passe à un autre sommet qui améliore la solution et par conséquent la
fonction objectif. Dans notre exemple, si on part du point 0 on aura :
X : (x1 , x2 , x3 , e1 , e2 , e3 ) = (0, 0, 0, 5, 11, 8)
xi : sont les variables hors base (leur valeur est toujours égale à 0).
ei : sont les variables de base (leur valeur est toujours différente de 0).
Le Tableau 5.2 regroupe les variables de base, les variables hors base, et toutes les
informations nécessaires pour le calcul de la méthode du simplexe.
x1 x2 x3 e1 e2 e3 B
e1 2 3 1 0 0 0 5
e2 4 1 2 0 1 0 11
e3 3 4 2 0 0 1 8
F 5 4 3 0 0 0 0
Dans chaque itération, on doit déterminer le pivot qui va nous permettre de calculer
la nouvelle valeur du tableau. Dans ce type d’itération, une variable hors base devient une
variable de base et inversement. Le pivot est l’intersection entre une ligne i et une colonne
j (il est nécessaire de choisir d’abord la colonne avant de choisir la ligne). L’algorithme
s’arrêtera une fois que les valeurs au niveau de la ligne de F soient négatives ou nulles.
Itération 1
On calcule le premier pivot et le tableau correspondant comme suit :
• La colonne j (c’est-à-dire la variable hors base qui va devenir de base) est choisie
selon la valeur de la variable ayant le meilleur coefficient (qui doit être positif).
Dans notre exemple et en regardant la dernière ligne (celle de F ), on remarque que
la meilleure valeur (entre les xi et les ei ) pour augmenter la fonction objectif est
celle de 5 (correspondante à la variable hors base x1 ). Pour cette raison, la colonne
j sera la colonne de la variable x1 .
• La ligne i (c’est-à-dire la variable de base qui va devenir hors base) est choisie selon
la valeur minimale de la division de chaque valeur de B par la valeur correspondante
dans la colonne j (choisie précédemment). Dans notre exemple, on aura les valeurs
suivantes :
• 5/2 = 2.5
• 11/4 = 2.75
• 3/8 = 2.66
En se basant sur ces valeurs, la ligne correspondante à la valeur minimale est celle
de e1 (c’est-à-dire, 2.5). Par conséquent, la ligne i est la ligne de la variable de base
e1 .
CHAPITRE 5. PROGRAMMATION LINÉAIRE 56
Une fois le pivot calculé, les modifications à faire (avant de calculer le nouveau tableau)
sont les suivantes :
x1 x2 x3 e1 e2 e3 B
x1 2/2 3/2 1/2 0/2 0/2 0/2 5/2
e2 0 1 2 0 1 0 11
e3 0 4 2 0 0 1 8
F 0 4 3 0 0 0 0
Pour calculer les valeurs des autres éléments du tableau, il est nécessaire d’utiliser la
formule suivante :
• Les autres valeurs seront calculées de la même manière. Le Tableau 5.5 montrent
plus en détail ce calcul. Le résultat sera utilisé comme tableau de départ pour choisir
le nouveau pivot et calculer le nouveau tableau.
CHAPITRE 5. PROGRAMMATION LINÉAIRE 57
Itération 2
Dans cette itération, on utilisera le dernier tableau calculé (voir Tableau 5.5) pour
choisir le nouveau pivot en choisissant la colonne j et la ligne i (la même méthode que
l’itération précédente sera utilisée). Le pivot est choisi de la même manière que l’étape
précédente (voir Tableau 5.6).
x1 x2 x3 e1 e2 e3 B
x1 1 1.5 0.5 0.5 0 0 2.5
e2 0 -5 0 -2 1 0 1
e3 0 -0.5 0.5 -1.5 0 1 0.5
F 0 -3.5 0.5 -2.5 0 0 -1.25
Une fois le pivot choisi, on applique les modifications avant de calculer le nouveau
tableau de solutions (c’est-à-dire, divisé la ligne du pivot par le pivot et mettre à 0 sa
colonne). Le Tableau 5.7 montre cette application avant le calcul du reste des valeurs.
La suite de l’étape est le calcul des nouvelles valeurs en utilisant la formule de la
première étape. La seule différence avec la première étape est la position du pivot ainsi
que sa valeur. Le Tableau 5.8 montre le résultat du calcul des nouvelles solutions. En
analysant le Tableau 5.8, on remarque qu’il n’y a plus de coefficient positif à la ligne F .
Par conséquent, il n’y a plus de choix à faire et donc le résultat final est le suivant :
CHAPITRE 5. PROGRAMMATION LINÉAIRE 58
x1 x2 x3 e1 e2 e3 B
x1 1 1.5 0 0.5 0 0 2.5
e2 0 -5 0 -2 1 0 1
x3 0 -1 1 -3 0 2 1
F 0 -3.5 0 -2.5 0 0 -1.25
• La valeur de x1 = 2, c’est une variable de base, sa valeur est celle de la même ligne
au niveau de la colonne B.
• La valeur de x2 = 0, c’est une variable hors base, donc par défaut sa valeur est 0.
• La valeur de x3 = 1, c’est une variable de base, sa valeur est celle de la même ligne
au niveau de la colonne B.
• Il reste des ressources pour les contraintes : e2 = 1. Le reste des ressources (c’est-à-
dire, e1 et e3 ) sont saturées.
x1 x2 x3 e1 e2 e3 B
x1 1 2 0 2 0 -1 2
e2 0 -5 0 -2 1 0 1
x3 0 -1 1 -3 0 2 1
F 0 -3 0 -1 0 -1 -13
x + y ≤ 7
2x + y ≤ 9 (5.18)
x, y ≥ 0
CHAPITRE 5. PROGRAMMATION LINÉAIRE 59
x y e1 e2 B R
e1 1 1 1 0 7 7/1 7/1
e2 2 1 0 1 9 9/2 9/1
F 12 12 0 0 0 0
Table 5.9 – Cas particulier 1 : égalité des coefficients lors du choix de la colonne du pivot
Le Tableau 5.9 représente l’étape du choix de la colonne du premier pivot. Dans le cas
où il y a deux coefficients de la même valeur (lors du choix de la colonne du pivot, dans
l’exemple c’est le coefficient 12) il est nécessaire le traitement suivant :
• On suppose que la première colonne du premier coefficient (les valeurs en bleu) est
la colonne du pivot. On divise la colonne B par la colonne du pivot choisi (les valeurs
en bleu dans la colonne R).
• Pour déterminer le pivot, on doit choisir la valeur maximale parmi les valeurs mini-
males de la colonne bleue et la colonne rouge, c’est-à-dire,
ligne du pivot = max(min(7/1, 9/2), min(7/1, 9/1)).
Cas 2 :
On applique la méthode du simplexe sur l’exemple suivant :
M ax z = 8x + 5y (5.19)
x + y ≤ 7
2x + y ≤ 14 (5.20)
x, y ≥ 0
x y e1 e2 B R
e1 1 1 1 0 7 7/1
e2 2 1 0 1 14 14/2
F 8 5 0 0 0 0
Table 5.10 – Cas particulier 2 : égalité des valeurs lors du choix de la ligne du pivot
• On choisit la valeur la plus petite (c’est-à-dire la valeur 3), par conséquent la ligne
choisie est la première.
5.3.4 Dualité
La dualité consiste à associer au programme linéaire initial, appelé primal, un deuxième
programme linéaire, appelé dual, tel que :
• Pour toute solution du dual et toute solution du primal, l’objectif final du dual est
supérieur ou égal à celui du primal.
• Les règles de passage entre le problème primal au dual sont résumées dans le Ta-
bleau 5.11.
Problème primal
maxcT X (5.21)
(
Ax = b
(5.22)
X≥0
Problème dual
minbT y (5.23)
(
AT y = c
(5.24)
y non restreint
Exemple
On montre dans ce qui suit un exemple d’un problème linéaire primal et son dual.
Problème primal :
max z = x1 + x2 (5.25)
2x1 + x2 = 5 (y1 )
3x1 − x2 = 6 (y2 ) (5.26)
x1 , x2 ≥ 0
(
2y1 + 3y2 ≥ 1 (x1 )
(5.28)
y1 − y2 ≥ 1 (x2 )
5.4 Exercices
Exercice 1
Au quatorzième siècle, un Touareg compte gagner un peu d’or en investissant dans
des dromadaires qu’il sait pouvoir revendre à Tombouctou. Comme sa route passe par
Taoudeni, il pense aussi y acheter du sel pour tirer d’avantage de bénéfice de son voyage.
Il sait qu’il pourra obtenir au terme de son voyage 10 po (pièce d’or) de bénéfice par
dromadaire, et 1 pa (pièce d’argent, 1 po = 10 pa) de bénéfice par kg de sel. Avant toute
chose il faut déjà qu’il achète ces dromadaires et ce sel. Chaque dromadaire lui coûte
10 po, et chaque kg de sel 0.2 pa. Il peut investir 65po. Sachant qu’un dromadaire peut
transporter jusqu’à 150 kg de sel, comment ce Touareg doit investir son pécule pour tirer
le bénéfice maximal de son investissement ?
CHAPITRE 5. PROGRAMMATION LINÉAIRE 62
Exercice 2
Une laiterie s’est spécialisé dans deux fromages. Le premier est une AOC qui exige
plus d’heures de travail et un lait en provenance d’une région bien précise. Le second
demande moins de travail, et peut-être fabriqué avec n’importe quel lait. Par contre sa
vente dégage une marge moindre. La laiterie dispose 21000 heures de travail annuel, elle
reçoit 4 millions de litres de lait de la zone AOC, et 6 millions de litres d’autres zones. Le
tableau suivant indique les ressources nécessaires pour produire 1 tonne de fromage.
Sachant qu’un kilo du fromage AOC dégage une marge de 3 euros et qu’un kilo de
l’autre fromage seulement 1 euro, quelle production doit fabriquer cette laiterie pour
optimiser ses bénéfices ?
Exercice 3
Un revendeur d’électricité a promis à sa clientèle qu’un au moins 25% de son électricité
serait d’origine renouvelable. Il a calculé que pour l’année qui arrive il aura un marché de
18 TWh (téra watt heure). Il a aussi présélectionné trois fournisseurs à qui il va acheter
son électricité en gros. Voici les quantités (en TWh), le taux d’électricité renouvelable et
la marge dégagée (en k euro/TWh) que peuvent lui fournir ces trois producteurs.
Chez quels producteurs et en quelle quantité ce revendeur doit-il acheter son électricité
pour avoir le meilleur bénéfice possible ?
Chapitre 6
Conclusion
Nous avons présenté dans ce cours une introduction à la théorie des graphes et la
programmation linéaire. Le début du document comporte les différentes tables de matières
(sections, figures, tableaux et algorithmes). La fin du document comporte les références
bibliographiques dont nous nous sommes inspirés pour élaborer ce cours.
Nous avons abordé dans le Chapitre 2 les notions élémentaires relatives à la théorie
des graphes (graphe, chemin, cycle, représentation matricielle, etc). Ensuite, nous avons
présenté dans le Chapitre 3 trois algorithmes pour le parcours du plus court chemin.
Cette partie était nécessaire pour exploiter les graphes dans la résolution de différents
problèmes académique ou industriel. Nous avons abordé dans le Chapitre 4 les réseaux
de transports, les flots et leurs propriétés. Nous avons également abordé un algorithme
de calcul du flot maximum ainsi qu’un théorème relatif au moyen de trouver une coupe
minimale. Ensuite nous avons présenté dans le Chapitre 5 la notion de modélisation d’un
problème sous forme de programme linéaire et la manière de le résoudre avec la méthode
graphique et la méthode du simplexe.
L’illustration des différentes notions abordées (dans les différents chapitres) est faite
avec des exemples explicatifs. À la fin de chaque chapitre, il y a également des exercices
pour pouvoir s’exercer d’une manière plus profonde.
63
Bibliographie
[Bou ] Mourad Bouzenada. Théorie des graphes. Technical report, Université Frères
Mentouri Constantine-2, -.
[EL13] Jean-Luc Raffy Eric Lallet. Techniques quantitatives de gestion - cahier d’exer-
cices corrigés. Technical report, Telecom école de management, 2013.
[JCR15] Arnaud Malapert Jean-Charles Régin. Théorie des graphes. Technical report, -,
2015.
[RK93] James B.Orlin Ravindra K.Ahuja, Thomas L. Magnanti. Nework flows. Technical
report, Library of congress, 1993.
[Rou09] Ph. Roux. Théorie des graphes. Technical report, DUT Informatique, 2009.
[Rou11] Frédéric Roupin. Algorithmique de graphes l3. Technical report, Université Paris
13, 2011.
64