Vous êtes sur la page 1sur 66

Lecture note : Discrete Optimization

Ecole Normale d’Ingénieur


Abdrahamane Baba Touré
(E.N.I-ABT)
Master

i
ii
TABLE DES MATIÈRES

1 Programmation Linéaire 1
1.1 Programmation linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Programme linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Formulation d’un Programme Linéaire (Modélisation) . . . . . . . . . . . . . 3
1.2.1 Forme canonique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.3 Correspondance Primal/ . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.4 Généralisation de la Forme canonique . . . . . . . . . . . . . . . . . . 11
1.3 Exemple de résolution graphique . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Représentation graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.1 Résolution graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Théorème des écarts complémentaires . . . . . . . . . . . . . . . . . . . . . . 16
1.5.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 La méthode de simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6.1 Variable qui rentre dans la base . . . . . . . . . . . . . . . . . . . . . 18
1.6.2 Variable qui sort de la base . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.3 Variable pivot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.7 Algorithme dual de simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.8 Complexité Algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.8.1 Notion de Complexité . . . . . . . . . . . . . . . . . . . . . . . . . . 20

iii
TABLE DES MATIÈRES

2 Programmation en nombre entier 23


2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.1 Résolution des Problèmes Linéaires en Nombre Entiers PLNE . . . . 25
2.1.2 La procédure de séparation et évaluation progressive (Branch and Bound) 27

3 Théorie des graphes 35


3.1 Concept fondamentaux de la théorie des graphes . . . . . . . . . . . . . . . . 35
3.2 Qu’est ce qu’un graphe ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.1 Exemples de graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.2 L’ensemble des prédécesseurs, successeurs et voisins d’un sommet : . . 38
3.2.3 Le degré d’un sommet : . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3 Structure d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4 Graphes particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.1 Graphe complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.2 Graphe complémentaire . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.3 Graphe planaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4.4 Graphe biparti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5 Algorithme de K-coloration d’un graphe . . . . . . . . . . . . . . . . . . . . 46
3.6 La représentation matricielle d’un graphe . . . . . . . . . . . . . . . . . . . . 48
3.6.1 La matrice d’adjacence . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6.2 La matrice associée . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.6.3 La matrice d’incidence aux arcs . . . . . . . . . . . . . . . . . . . . . 50
3.7 Le dictionnaire de successeurs et de prédécesseurs . . . . . . . . . . . . . . . 52
3.8 La représentation sagittale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.9 Cheminement dans un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.9.1 La chaîne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.9.2 Le chemin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.9.3 Le cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.9.4 Le circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.10 Connexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.10.1 Notion de connexité . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.10.2 Graphe connexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.11 Forte connexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.11.1 Notion de forte connexité . . . . . . . . . . . . . . . . . . . . . . . . 56

iv
TABLE DES MATIÈRES

3.11.2 Composantes fortement connexes . . . . . . . . . . . . . . . . . . . . 56


3.11.3 Recherche des composantes fortement connexes . . . . . . . . . . . . 56
3.12 Mise en ordre d’un graphe connexe ou recherche d’un circuit . . . . . . . . . 59
3.12.1 Mise en ordre d’un graphe connexe (ordonnancement d’un graphe) . . 59

4 Gestion du Problème de Transport 61


4.1 Cheminements remarquables . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2 Arbres et Arborescences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.3 Problème du flot maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4 Problème d’affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.5 Problème d’ordonnancement . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

v
CHAPITRE 1

PROGRAMMATION LINÉAIRE

1.1 Programmation linéaire

1.1.1 Présentation

La programmation linéaire est un outil très puissant de la Recherche Opérationnelle pour


la résolution des problèmes d’optimisation. C’est un outil générique qui peut résoudre un
grand nombre de problème. En effet, une fois un problème modélisé sous la forme d’équations
linéaires, des méthodes assurent la résolution du problème de manière exacte. On distingue
dans la programmation linéaire, la programmation en nombre réel, pour laquelle les variables
des équations sont dans R+ et de la programmation en nombre entier, pour laquelle les
variables sont dans N. Bien entendu, il est possible d’avoir les deux en même temps. Cependant,
la résolution d’un problème avec des variables entières est nettement plus compliquée qu’un
problème en nombres réels.
Une des méthodes les plus connues pour résoudre des programmes linéaires en nombre
réels est la méthode du Simplex. En théorie, elle a une complexité non polynomiale et est
donc supposée peu efficace. Cependant, en pratique, il s’avère au contraire qu’il s’agit d’une
bonne méthode.
De plus, de nombreux logiciels intégrant cette méthode existent. Certains sont utilisés
via une interface graphique alors que d’autres permettent une communication par fichiers ce
qui autorise l’utilisation du programme de manière cachée dans le développement d’un autre

1
Programmation Linéaire. E.N.I

logiciel.

1.1.2 Programme linéaire

La première révolution industrielle avait remplacé la force musculaire de l’homme par celle
des machines. La seconde voyait la machine se commander elle-même. Les ordinateurs se sont
introduits dans les entreprises et les pouvoirs publics firent surgir des problèmes de grande
envergure auxquels les directions n’étaient pas préparées. L’une des caractéristiques essentielles
du raisonnement logique est le recours à la méthode scientifique. Le chercheur construit une
représentation qu’il appelle un "modèle mathématique". Il peut manipuler les modèles et les
étudier plus facilement que le système réel. Les modèles sont parfois très difficiles à construire
et peuvent prendre la forme d’expressions mathématiques fortes compliquées. Lorsqu’ils
mettent leur modèle en formule, les chercheurs doivent énoncer formellement quelles sont les
variables, l’objectif, les paramètres. L’importance de l’optimisation et la nécessité d’un outil
simple pour modéliser des problèmes de décision que soit économique, militaire ou autres
on fait de la Programmation Linéaire (PL) l’un des champs de recherche les plus actifs au
milieu du siècle précédent. La PL est une technique mathématique permettant de déterminer
la meilleure solution d’un problème dont les données et les inconnues satisfont à une série
d’équations et d’inéquations linéaires. Les premiers travaux (1947) sont celle de George B.
Dantzig et ses associés du département des forces de l’air des Etats Unis d’Amérique. La
PL a été formulée par Dantzig en 1947 et connaît un développement rapide par suite de son
application directe à la gestion scientifique des entreprises. Le facteur expliquant l’essor de
la PL est la construction d’ordinateurs puissants qui ont permis de traiter les problèmes
concrets de taille très grande. On l’applique surtout en gestion et en économie appliquée.
On peut citer les domaines d’application de la PL qui sont : les transports, les banques, les
industries lourdes et légères, l’agriculture, les chaînes commerciales, la sidérurgie, et même le
domaine des applications militaires. Les méthodes de résolution sont la méthode du simplexe,
méthode e du simplexe, méthodes des potentiels, méthode lexicographique et des méthodes
récentes appelées méthodes des points intérieurs. Le but de cette partie du recueil n’est pas
de donner les méthodes de résolution de la PL mais de la présenter à l’aide des exemples
concrets et faciles.

2 Dr. Adama A. Koné


océdure utilisée par la recherche Opérationnelle RO peut être schématisée comme
Programmation Linéaire. E.N.I

Problème concret

Modélisation

Résolution par une


méthode de R.O

Interprétation
des résultats

Prise de
décision

Figure 1.1 Schéma de procédure utilisée par la RO


Figure 1.1 – Techniques de la RO pour résoudre un Problème d’optimisation

herche opérationnelle (RO) est utilisée dans les domaines ou la prise de décision fait
à la résolution
1.2 desFormulation
problèmes d’optimisation telle que les
d’un Programme problèmes
Linéaire de :
(Modélisa-
tion)
• Dimensionnement, localisation
1. Les conditions de formulation d’un PL
• Gestion de La
ressources
programmation linéaire comme étant un modèle admet des hypothèses ou des
conditions (la proportionnalité, la non négativité, l’additivité et la linéarité de la fonction
• Rentabilisation des investissements
3 Dr. Adama A. Koné
• Détection de dysfonctionnements : diagnostics, réparation, maintenance.
• Partage des ressources
Programmation Linéaire. E.N.I

objectif) que le décideur doit valider avant de pouvoir les utiliser pour modéliser son
problème. Ces hypothèses sont :

(a) Les variables de décision du problème sont positives ;

(b) Le critère de sélection de la meilleure décision est décrit par une fonction linéaire
de ces variables, c’est à dire, que la fonction ne peut pas contenir par exemple un
produit croisé de deux de ces variables. La fonction qui représente le critère de
sélection est dite Fonction Objectif (FO) (ou fonction économique) ;

(c) Les restrictions relatives aux variables de décision (exemple : limitations des
ressources) peuvent être exprimées par un ensemble d’équations linéaires. Ces
équations forment l’ensemble des contraintes ;

(d) Les paramètres du problème en dehors des variables de décisions ont une valeur
connue avec certitude.

2. Les étapes de formulation d’un PL :


Généralement il y a trois étapes à suivre pour pouvoir construire le modèle d’un
programme linéaire :

(a) Identifier les variables du problème à valeur non connues (variable de décision) et
les représenter sous forme symbolique (par exemple. x1 , y) ;

(b) Identifier les restrictions (les contraintes) du problème et les exprimer par un
système d’équations linéaires ;

(c) Identifier l’objectif ou le critère de sélection et le représenter sous une forme


linéaire en fonction des variables de décision. Spécifier si le critère de sélection est
à maximiser ou à minimiser.

3. Présentation Théorique :
Un programme linéaire consiste à trouver le maximum ou le minimum d’une forme
linéaire dite FO en satisfaisant certaines équations et inégalités dites contraintes. En
langage mathématique, on décrira de tels modèles de la manière suivante :
Soient n variables de décision x1 , x2 , . . . , xn , l’hypothèse que les variables de décision
sont positives implique que : x1 ⩾ 0, x2 ⩾ 0, . . . , xn ⩾ 0.
La FO est une forme linéaire en fonction des variables de décision de type

z = c1 x 1 + c2 x 2 + c3 x 3 + · · · + cn x n .

4 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

où les coefficients c1 , c2 , c3 , · · · , cn doivent avoir une valeur bien déterminée (avec


certitude) et peuvent être positifs, négatifs ou nuls. Par exemple le coefficient peut
représenter un profit unitaire lié à la production d’une unité supplémentaire du bien
xi, ainsi la valeur de ci est le profit total lié à la production des différents biens en
quantités égales à x1 , x2 , x3 , . . . , xn .
Supposons que ces variables de décision doivent vérifier un système d’équations linéaires
définis par M inégalités






a11 x1 +a12 x2 +a13 x3 + · · · + a1n xn ⩾ b1

+ · · · + a2n xn ⩾ b2


 a21 x1 +a22 x2 +a23 x3
.
. .. .. ..
 . . . .





am1 x1 +am2 x2 +am3 x3 + · · · + amn xn ⩾ bm ,

où les coefficients am1 , am2 , am3 , · · · , amn et b1 , b2 , b3 , · · · , bm doivent avoir une


valeur bien déterminée (avec certitude) et peuvent être positifs, négatifs ou nuls. Le
paramètre bj représente la quantité de matière première disponible dont le bien xi
utilise une quantité égale à aij xj .
En suivant les étapes de formulation ci-dessus, on peut représenter le PL comme suit :




 M in z = c1 x1 +c2 x2 +c3 x3 + · · · + cn x n






 s.c


a11 x1 +a12 x2 +a13 x3 +··· +a1n xn ⩾ b1






a21 x1 +a22 x2 +a23 x3 +··· +a2n xn ⩾ b2
.. .. .. .. .. ..



. . . . . .







am1 x1 +am2 x2 +am3 x3 + · · · +amn xn ⩾ bm ,








 x1 ⩾ 0, x2 ⩾ 0, x3 ⩾ 0, . . . , xn ⩾ 0.

4. Exemples de formulations (modélisations)


La tâche de formulation demande généralement une certaine expertise et connaissance
du problème pour pouvoir relever facilement les différentes composantes du problème et
ainsi donner un programme qui modélise au mieux la situation réelle. Dans ce qui suit,
on présentera quelques exemples de formulation en programme linéaire liés à différents
problèmes de décision :

5 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Exemple 1 : Problème d’agriculture

Un agriculteur veut allouer 150 hectares de surface irrigable entre culture de tomates
et celles de piments. Il dispose de 480 heures de main d’œuvre et de 440 m3 d’eau. Un
hectare de tomates demande 1 heure de main d’œuvre, 4 m3 d’eau et donne un bénéfice
net de 100000 F CFA. Un hectare de piments demande 4 heures de main d’œuvre, 2 m3
d’eau et donne un bénéfice net de 200000 F CFA. Le bureau du périmètre irrigué veut
protéger le prix des tomates et ne lui permet pas de cultiver plus de 90 hectares de
tomates. Quelle est la meilleure allocation de ses ressources ?

Exemple 2 : Problème de médecine

Un spécialiste en médecine a fabriqué un médicament (des pilules) pour guérir les sujets
atteints d’un rhume. Ces pilules sont fabriquées selon deux formats :
• Petite taille : elle contient 2 grains d’aspirine, 5 grains de bicarbonate et 1 grain
de codéine.
• Grande taille : elle contient 1 grain d’aspirine, 8 grains de bicarbonate et 6 grains
de codéine.
Pour guérir la maladie, le sujet a besoin de 12 grains d’aspirine, 74 grains de bicarbonate
et 24 grains de codéine. Déterminer le nombre de pilules minimales à prescrire au sujet
pour qu’il soit guérit.

Exemple 3 : Problème de production

Pour fabriquer deux produits P1 et P2 on doit effectuer des opérations sur trois machines
M1 , M2 et M3 , successivement mais dans un ordre quelconque. Les temps unitaires
d’exécution sont donnés par le tableau suivant :

M1 M2 M3
P1 11 mn 7 mn 6 mn
P2 9 mn 12 mn 16 mn
On supposera que les machines n’ont pas de temps d’inactivité. La disponibilité pour
chaque machine est : 165 heures (9900 minutes) pour la machine M1 ; 140 heures (8400
minutes) pour la machine M2 ; 160 heures (9600 minutes) pour la machine M3 . Le
produit P1 donne un profit unitaire de 900 F CFA et le produit P2 un profit unitaire de
1000 F CFA. Dans ces conditions, combien doit-on fabriquer mensuellement de produits
P1 et P2 pour avoir un profit total maximum ?

6 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Exemple 4 : Problème d’alimentation

On se propose de réaliser une alimentation économique pour des bestiaux, qui contient
obligatoirement 4 sortes de composants nutritifs, A, B, C et D. L’industrie alimentaire
produit précisément deux aliments M et N qui contiennent ces composants :

• 1 Kg d’aliment M contient 100 g de A, 100 g de C, 200 g de D ;

• 1 Kg d’aliment N contient 100 g de B, 200 g de C, 100 g de D.

Un animal doit consommer par jour au moins : 0.4 Kg de A ; 0.6 Kg de B ; 2 Kg de C ;


1.7 Kg de D. L’aliment M coûte 1000 F CFA le Kg et N coûte 400 F CFA le Kg.
Quelles quantités d’aliments M et N doit-on utiliser par jour et par animal pour réaliser
l’alimentation la moins coûteuse ?

Exemple 5 : Problème de mélange

Un industriel veut produire un alliage Z à 30% de plomb, 30% de zinc et 40% d’étain.
Supposons qu’il puisse se procurer sur le marché des alliages A, B, C, D, E, F, G, H, I
dont les compositions et les prix respectifs sont donnés dans le tableau suivant :

Compositions des alliages Alliage à


(en %) A B C D E F G H I fabriquer
Plomb 10 10 40 60 30 30 30 50 20 30
Zinc 10 30 50 30 30 40 20 40 30 30
Étain 80 60 10 10 40 30 50 10 50 40
Coût au Kilo 4.1 4.3 5.8 6 7.6 7.5 7.3 6.9 7.3

Combien doit-il acheter de chaque alliage A, B, C, D, E, F, G, H et I pour obtenir au


prix de revient minimum un 1 Kg de l’alliage Z ?

Exemple 6 : Sélection de Médias

Une entreprise désire effectuer une campagne publicitaire dans la télévision, la radio et
les journaux pour un produit lancé récemment sur le marché. Le but de la campagne
est d’attirer le maximum possible de clients. Les résultats d’une étude de marché sont
donnés par le tableau suivant :

7 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Télévision Télévision
Locale Par satellite Radio Journaux
Coût d’une publicité (u.m=104 F CFA) 40 75 30 15
Nbre de client potentiel par publicité 400 900 500 200
Nbre de client potentiel femme par publicité 300 400 200 100

Pour la campagne, on prévoit de ne pas payer plus que 8.000.000 F CFA pour toute la
campagne et on demande que ces objectifs soient atteints :

• Au minimum 2000 femmes regardent, entendent ou lisent la publicité ;

• La campagne publicitaire dans la télévision ne doit pas dépasser 5.000.000 F CFA ;

• Au moins 3 spots publicitaires seront assurés par la télévision locale et au moins


de deux spots par la télévision par satellite ;

• Le nombre des publicités dans la radio ou dans les journaux est pour chacun entre
5 et 10.

Exemple 1.2.1. Contraintes linéaires :

5x1 − 2x2 + 4x3 = 8


x1 + 3x2 + 8x3 ≥ 25
9x1 + 6x2 − 3x3 ≥ 17

Contraintes non linéaire


5x21 + 2x2 + 4x3 = 8
x1 x2 + x3 ≥ 25
Objectifs :

max : = 3x2 − 2x2 + 8x3 ( signifie maximiser z)


min : = −3x1 + x2 ( signifie minimiser z)

1.2.1 Forme canonique

Pour résoudre un programme linéaire de manière automatique, il faut qu’il ait une certaine
forme que l’on appelle "canonique ". Dans ce cours, on a choisi la forme canonique suivante :
un programme linéaire n’a que des contraintes d’infériorité et l’on tente de maximiser la
fonction objectif. De plus toutes les variables sont positives.

8 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Exemple 1.2.2. Le programme linéaire suivant est sous forme canonique.






 max : Z = 3x1 − 2x2 + 8x3


sous contrainte :








 5x1 − 2x2 + 4x3 ⩽ 8
(P L)



 x1 + 3x2 + 8x3 ⩽ 25


9x1 + 6x2 − 3x3 ⩽ 17







x1 , x2 , x3 ⩾ 0

1.2.2 Transformations

Tout programme linéaire quelconque peut être ramené à une forme canonique. Voici
quelques exemples de transformations possibles.
Si une variable x3 est négative, on la remplace par une variable positive x′3 = −x3 . Par
exemple :
 



 max : Z = 3x1 − 2x2 + 8x3 


 max : Z = 3x1 − 2x2 − 8x′3

 

s/c : s/c :

 


 


 

2x2 − 4x′3 ⩽
 

 5x1 − 2x2 + 4x3 ⩽ 8 
 5x1 − 8
=⇒



 x1 + 3x2 + 8x3 ⩽ 25 


 x1 + 3x2 − 8x′3 ⩽ 25
 
6x2 + 3x′3 ⩽
 
9x1 + 6x2 − 3x3 ⩽ 17 9x1 + 17

 


 


 

x′3
 
x1 , x2 ⩾ 0; x3 ⩽ 0 x1 , x2 , ⩾ 0

 

Si une variable x n’a pas de contrainte de signe (libre ), on la remplace par deux variables
positives x′ et x′′ telles que x = x′ − x′′ . Par exemple :
 



 max : Z = 3x1 − 2x2 + 8x3 


 max : Z = 3x1 − 2x2 + 8x′3 − 8x′′3

 

s/c : s/c :

 


 


 

+ 4x′3 − 4x′′3 ⩽
 

 5x1 − 2x2 + 4x3 ⩽ 8 
 5x1 − 2x2 8
=⇒ 



 x1 + 3x2 + 8x3 ⩽ 25 

 x1 + 3x2 + 8x′3 − 8x′′3 ⩽ 25
 
6x2 − 3x′3 + 3x′′3 ⩽
 
9x1 + 6x2 − 3x3 ⩽ 17 9x1 + 17

 


 


 

x′3 , x′′3
 
x1 , x2 ⩾ 0 x1 , x2 , ⩾ 0

 

Si le programme linéaire a une contrainte de supériorité, on la remplace par une contrainte


d’infériorité en inversant le signe des constantes. Par exemple :

9 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

 



 max : Z = 3x1 − 2x2 + 8x3 


 max : Z = 3x1 − 2x2 + 8x3

 

s/c : s/c :

 


 


 

 

 5x1 − 2x2 + 4x3 ⩽ 8 
 5x1 − 2x2 + 4x3 ⩽ 8
=⇒



 x1 + 3x2 + 8x3 ⩽ 25 


 x1 + 3x2 + 8x3 ⩽ 25

 

9x1 + 6x2 − 3x3 ⩾ 17 −9x1 − 6x2 + 3x3 ⩽ −17

 


 


 

 
x1 , x2 , x3 ⩾ 0 x1 , x2 , x3 ⩾ 0

 

Si le programme linéaire a une contrainte d’égalité, on la remplace par deux contraintes


équivalentes, l’une d’infériorité, l’autre de supériorité. Les variables du programme doivent
satisfaire ces deux contraintes, ce qui revient alors légalité de départ. Par exemple :


 
 max : Z = 3x1 − 2x2 + 8x3
max : Z = 3x1 − 2x2 + 8x3
 


 






 s/c :
s/c :

 

 
5x1 − 2x2 + 4x3 ⩽ 8

 


 


 5x1 − 2x2 + 4x3 ⩽ 8 

=⇒ x1 + 3x2 + 8x3 ⩽ 25


 x1 + 3x2 + 8x3 ⩽ 25 


9x1 + 6x2 − 3x3 ⩽ 17

 

 
9x1 + 6x2 − 3x3 = 17

 


 






 9x1 + 6x2 − 3x3 ⩾ 17
x1 , x2 , x3 ⩾ 0

 


0

 x1 , x2 , x3 ⩾






max : Z = 3x1 − 2x2 + 8x3





 s/c :


5x1 − 2x2 + 4x3 ⩽ 8






=⇒ x1 + 3x2 + 8x3 ⩽ 25



9x1 + 6x2 − 3x3 ⩽ 17










 −9x1 − 6x2 + 3x3 ⩽ −17


0

 x1 , x2 , x3 ⩾

10 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

1.2.3 Correspondance Primal/


Primal Dual
Maximiser Minimiser
A matrice des contraintes AT matrice des contraintes
Variable Yj ⩾ 0 Contrainte J ⩾
Variable Yj ⩽ 0 Contrainte J ⩽
Variable Yj ∈ R Contrainte J =
Contrainte i ⩽ 0 Variable Xi ⩾
Contrainte i ⩾ 0 Variable Xi ⩽
Contrainte i = Variable Xi ∈ R

Exemple 1.2.3. Soit P le programme linéaire suivant :






 max : Z= 2X + 3Y + Z


s/c :








 5X − 2Y + 3Z ⩾ 4
(P) = 
 
 2X + 3Y − Z ⩽ 2


3X − Y 4Z = 8







X ⩾ 0 Y ⩽ 0, Z ∈R






 min : Z= 4w1 + 2w2 + 8w3


s/c :








 5w1 + 2w2 + 3w3 ⩾ 2
(D) =



 −2w1 + 3w2 − w3 ⩽ 3


3w1 X − w2 + 4w3 = 1







w1 ⩽ 0 w2 ⩾ 0, w3 = 0

1.2.4 Généralisation de la Forme canonique


Formes canoniques pour la maximisation

 m
CT
X
max : Z(X) = ·X = ci x i





i=1





(P) =  s/c :
AX ⩽ b
 




A ∈ Mn,m (R), X ∈ Rm m b ∈ Rn

+, C ∈ R ,

11 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Formes canoniques pour la minimisation

 m
bT
X
min : W (Y ) = ·Y = bi yi





i=1





(D) =  s/c :
AT Y ⩾ C
 




AT ∈ Mm,n (R), Y ∈ Rn+ , b ∈ Rn , C ∈ Rm


Formes standard pour la maximisation

Soit In ∈ Mn (R), la matrice carrée d’identité d’ordre n.


A partir de la forme canonique pour la maximisation, on obtient la forme standard comme
suit :  m
CT
X
max : Z(X) = ·X = ci x i





i=1





(P) = s/c :

AX + In E = b






A ∈ Mn,m (R), X ∈ Rm E ∈ Rn+ C ∈ Rm , b ∈ Rn

+,

Formes standard pour la minimisation

Soit Im ∈ Mm (R), la matrice carrée d’identité d’ordre m.


A partir de la forme canonique pour la minimisation, on obtient la forme standard comme
suit :
 m
bT · Y
X
min : W (Y ) = = bi y i





i=1





(P) = s/c :

AT Y + Im E = C






AT ∈ Mm,n (R), Y ∈ Rn+ , E ∈ Rm b ∈ Rn , C ∈ Rm



+

1.3 Exemple de résolution graphique


Modéliser et résoudre graphiquement le problème ci-après :

Énoncé

Une entreprise fabrique 2 produit x et y. Pour sa conception, chaque produit fini nécessite
3 produits intermédiaires A, B et C. Pour fabriquer un produit x, on a besoin de 2 produits

12 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

A, de 2 produits B et un produit C. De même, pour fabriquer un produit y, on a besoin


de 3 produits A, de 1 produit B et de 3 produits C. En outre, l’entreprise dispose d’une
quantité limitée de produit A, B et C. Elle a 180 produits A, 120 produits B et 150 produits
C. Sachant que le prix de revient de x est 300000 francs et que celui de y est de 400000
francs, combien de produis x et y faut-il fabriquer pour maximiser le profit ?
On modélise ce problème par un programme linéaire. Soit x et y les quantités de produits
x et y fabriqués.
La quantité totale de produits A utiliseée est 2x + 3y. Cette quantité ne doit pas dépasser
180, d’où la première contrainte.
2x + 3y ⩽ 180.

De même, pour les produits B et C, on obtient :

2x + y ⩽ 120

x + 3y ⩽ 150

Bien entendu, les quantités x et y sont positives.

x, y ⩾ 0

Enfin, on tente de maximiser le profit qui est le total des bénéfices sur la vente des produits
x plus celui des produits y.
max : z = 3x + 4y

Le programme linéaire est donc le suivant.






 max : Z = 3x + 4y


s/c :








 2x + 3y ⩽ 180 (A)



 2x + y ⩽ 120 (B)


x + 3y ⩽ 150 (C)







x, y⩾ 0

1.4 Représentation graphique


On peut représenter le problème dans un espace à deux dimensions.

13 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Les solutions admissibles sont représentées par la zone grisée (a,b,c,d,e). Ce sont les
solutions qui satisfont les contraintes. Considérons maintenant la fonction z = 3x + 4y. Pour
z = 120, on a une droite D1, 3x + 4y = 120, qui représente les solutions pour lesquelles le
profit vaut 120. Si z = 180, on a une autre droite D2, 3x + 4y = 180, qui représente les
solutions pour lesquelles le profit vaut 180. On remarque que D2 est parallèle à D1 et on
s’aperçoit facilement qu’en déplaçant la droite vers le haut on augmente le profit z. Donc
pour résoudre graphiquement le problème, on va faire "glisser" la droite vers le haut jusqu’à
Les solutions ce qu’elle ait un minimum
admissibles de points communs
sont représentées paraveclalazone
surfacegrisée
grisée. Le
(a,point
b, ,restant
c, d,icie).
est Ce sont les
d. Il représente la solution pour laquelle le profit est maximum. En effet, si on prend un profit
solutions qui plussatisfont les contraintes.
important, représenté par exempleConsidérons maintenant
par D4, on s’aperçoit la solutions
que toutes les fonction = 300000x +
sontz en
dehors de la surface grisée. Donc la solution du problème est de produire 45 produits X et 30
400000y. Pour z = 120, on a une droite D1 , 3x + 4y = 120, qui représente les solutions pour
produits Y pour obtenir le profit maximum de z = 3x + 4y = 255 francs.
lesquelles le profit vaut 120. Si z = 180, on a une autre droite D2 , 3x + 4y = 180, qui représente
les solutions pour lesquelles le profit vaut 180. On remarque que D2 est parallèle à D1 et on
s’apperçoit facilement qu’en déplaçant la droite vers le haut on augmente le profit z. Donc
pour résoudre graphiquement le problème, on va faire "glisser" la droite vers le haut jusqu’à
ce qu’elle ait un minimum de point communs avec la surface grisée. Le point restant ici est d.
Il représente la solution pour laquelle le profit est maximum. En effet, si on prend un profit
plus important, représenté par exemple par D4 , on s’apperçoit que toutes les solutions sont
en dehors de la surface grisée. Donc la solution du problème est de produire 45 produits x et
30 produits y pour obtenir le profit maximum de z = 300000x + 400000y = 25500000 francs.

14 Dr. Adama A. Koné


Informatique / Recherche operationnelle / Programmation lineaire (French) 6 de 8
Programmation Linéaire. E.N.I

LA METHODE DU SIMPLEX
1.4.1 Résolution graphique
Globalement, la méthode du Simplex va se déplacer le long de la forme (a,b,c,d,e), de
Si la ou les solutions
sommet en sommetoptimales existent,
jusqu’à trouver ellespoint.
le meilleur peuvent être parmi
Pour essayer lescomprendre
de mieux points extrêmes du
comment
polèydre formé par fonctionne cette méthode,
les contraintes. considérons
Cette situationle problème de production
est illustrée par leprécédent.
tableauDans
ci-dessous
un premier temps, les contraintes sont ramenées à des égalités en introduisant de nouvelles
variables de la manière suivante.

max: z = 3x + 4yP (x, y) Optimum Z


P (0, 0) Optimum Z = 0
sous:
2x + 3y = 180 - Pu (0,(A)50) Optimum Z = 20000000
2x + y = 120 - v (B)
P (30, 40) Optimum Z = 25000000
x + 3y = 150 - w (C)
x , y , u , v , w P0(45, 30) Optimum Z = 25500000
P (60,
Ensuite, on va se placer sur le0)
point aOptimum = 18000000
= (0;0) qui estZ une solution admissible du problème.
Dans un cas plus général, il faut noter que trouver une solution admissible pour démarrer la
Table 1.1 –duTable
méthode desn’est
Simplex points extrêmesévident.
pas forcément et la valeur de la fonction objectif correspondant.
On a alors:

u = 180
x=0
v = 120
y=0
w = 150
15 Dr. Adama A. Koné
En regardant z = 3x + 4y, on s’aperçoit que la moindre augmentation de x ou de y augmente
Programmation Linéaire. E.N.I

Recommandation

La solution recherchée est alors représentée par d le point courant. On aboutit bien à la
même conclusion que par la représentation graphique. Il faut produire 45 produits x et 30
produits y pour obtenir un profit maximum de 25500000 francs.

1.5 Théorème des écarts complémentaires

1.5.1 Principe

Soient les deux modèles ci-après :

Formes canoniques pour la maximisation

 m
CT · X
X
max : Z(X) = = ci x i





i=1





(P) = s/c :

AX ⩽ b






A ∈ Mn,m (R), X ∈ Rm m b ∈ Rn

+, C ∈ R ,

Formes canoniques pour la minimisation

 m
bT · Y
X
min : W (Y ) = = bi y i





i=1





(D) = s/c :

AT Y ⩾ C






AT ∈ Mm,n (R), Y ∈ Rn+ , b ∈ Rn , C ∈ Rm


La solution du dual (D) peut être obtenue à partir de la solution optimale du primal (P ) à
l’aide de la propriété ci-après :

Propriété 1.5.1. Soit X ∗ une solution réalisable de (P ) c’est-à-dire X ∗ vérifie les contraintes
de (P ) et Y ∗ une solution réalisable de (D) c’est-à-dire Y ∗ vérifie les contraintes de (D).
X ∗ et Y ∗ sont solutions optimales de (P ) et (D) respectivement si et seulement si

(b − AX ∗ )T · Y ∗ = 0Rn et (AT Y ∗ − C)T · X ∗ = 0Rm .

16 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Autrement dit

∀i ∈ {1, . . . , n}, yi∗ (eP )∗i = 0 et ∀j ∈ {1, . . . , m}, x∗j (eD )∗j = 0

Avec e∗D écart optimal du dual et e∗P écart optimal du primal.

1.6 La méthode de simplex


Globalement, la méthode du simplex va se déplacer le long de la forme (a, b, c, d, e) de
sommet en sommet jusqu’à trouver le meilleur point. Pour essayer de mieux comprendre
comment fonctionne cette méthode, considérons le probleème de production préceédente.
Dans un premier temps, les contraintes sont ramenées à des égalités en introduisant de
nouvelles variables de la manière suivante.

Exemple de résolution par la méthode simplexe

Soit le modèle obtenu à partir de l’exemple précédent, résoudre le par la méthode de


simplexe : 



 max : Z ′ = 3x + 4y avec Z = 105 × Z ′


s/c :








 2x + 3y + e1 = 180 (A)



 2x + y + e2 = 120 (B)


x + 3y + e3 = 150 (C)







x, y, e1 e2 e3 ⩾ 0

Ainsi on remplit le tableau de la façon suivante :

Base x y e1 e2 e3 b
e1 2 3 1 0 0 180
e2 2 1 0 1 0 120
e3 1 3 0 0 1 150
−Z ′ 3 4 0 0 0 0

Table 1.2 – Tableau N◦ 1 de simplex.

17 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

1.6.1 Variable qui rentre dans la base

Sur la ligne de −Z ′ , on cherche max{cj , j = 1, . . . , 5} pour les cj > 0. La variable de la


ligne Base correspondante à la colonne j obtenue est la variable qui rentre dans la base. On
peut la notée xr .

1.6.2 Variable qui sort de la base

Dans la colonne b, on cherche le min abiri pour les air strictement positifs. La variable de la
colonne Base correspondante à la ligne i obtenue est la variable qui sort de la base. On peut
la notée xs

1.6.3 Variable pivot

La variable qui se trouve à l’intersection de la linge s et de la colonne r notée xsr est la


variable pivot.
Ainsi, on obtient les itérations suivantes pour les futures valeurs des coefficients du tableau
de simplex
aksj
ak+1 k k
ij = aij − air ×
aksr
jusqu’à ce que tous les cj ⩽ 0.

Base x y e1 e2 e3 b
e1 2 3 1 0 0 180
e2 2 1 0 1 0 120
e3 1 3 0 0 1 150
−Z ′ 3 4 0 0 0 0

Table 1.3 – Tableau N◦ 1 de simplex.

Exemple 1.6.1.

18 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Base x y e1 e2 e3 b
e1 1 0 1 0 −1 30
5
e2 3 0 0 1 − 31 70
1 1
y 3 1 0 0 3 50
−Z ′ 5
3 0 0 0 − 34 −200

Table 1.4 – Tableau N◦ 2 de simplex.

Base x y e1 e2 e3 b
x 1 0 1 0 −1 30
e2 0 0 − 53 1 4
3 20
y 0 1 − 13 0 2
3 40
−Z ′ 0 0 − 53 0 1
3 −250

Table 1.5 – Tableau N◦ 3 de simplex.

Base x y e1 e2 e3 b
x 1 0 − 14 3
4 0 45
e3 0 0 − 54 3
4 1 15
1
y 0 1 2 − 12 0 30
−Z ′ 0 0 − 54 − 14 0 −255

Table 1.6 – Tableau N◦ 4 de simplex.

Recommandation

On constate que tous les cj ⩽ 0 alors ce dernier tableau est optimal et la solution recherchée
est peut interprétée de la façon suivante : Il faut produire 45 produits x et 30 produits y
pour obtenir un profit maximum de 25500000 francs.

1.7 Algorithme dual de simplexe


Principe de l’algorithme dual du simplexe :

Etape(0) : Mettre le PL sous forme standard et trouver une solution de base optimale
non réalisable de départ et poser k = 1 ;
Etape(1) : Si ∀i ∈ JB , bki ⩾ 0 alors : xk est la solution optimale et aller à (7), sinon aller à

19 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

(2) ;
Etape(2) : Sélectionner la variable sortante xs tel que bks = min{bki , bi < 0, i ∈ JB } ;
Etape(3) : Si ∀j ∈ JN , on a aksj ⩾ 0 alors ce modèle est non réalisable et aller à (7) ;
ckr ck
Etape(4) : Sélectionner la variable entrante xr tel que aksr
= min{ akj , aksj < 0, j ∈ JN } ;
sj
Etape(5) : Utiliser la formule de changement de base pour passer à une nouvelle base ;
Etape(6) : Poser k = k + 1 ;
Etape(7) : Fin ;
xs désigne la variable sortante ;
xr désigne la variable rentrante ;
bki : est la iiem composante du vecteur b à l’itération k ;
bks : est la valeur minimale des {bki < 0} et l’indice s correspond à l’indice de la variable
sortante ;
aks,j : est la composante de la matrice A correspondant à la variable sortante à l’itération k ;
ckr : est le coût de la variable rentrante à l’itération k.

Exemple de résolution par l’algorithme dual de simplexe

Résoudre Exemple 2 : Problème de médecine par l’algorithme dual de simplexe.

1.8 Complexité Algorithmique

1.8.1 Notion de Complexité

La complexité algorithmique est une notion qui concerne l’évaluation des performances
des algorithmes réalisant les mêmes procédés ou les mêmes fonctionnalités et permettant de
comparer et de déterminer si un algorithme "a" est meilleur qu’un algorithme "b" et s’il est
optimal ou s’il ne doit pas être utilisé. Le but principal pour tout algorithme d’optimisation
globalement convergent est de trouver une valeur très proche de la solution optimale au bout
d’un certain nombre fini d’itérations. Mais ce nombre peut être extrêmement grand. Dans ce
contexte, l’étude de la complexité algorithmique prend en considération le nombre d’opérations,
plus précisément le temps d’exécution nécessaire sur ordinateur et l’encombrement mémoire,
en fonction de la taille du problème à traiter à savoir le nombre de variables et le nombre de
contraintes du problème.

20 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

Considérons l’exemple -1 suivant :

Début
S := 0 ; I : =1 ; N :=10 {”1”}
while I <= N do {”2”}

S = S +K[I] {”3”}

I= I+1 {”4”}

end do ; End
Le temps d’exécution nécessaire pour cet algorithme t(n), composé de plusieurs temps de
chaque instruction. Nous supposons que :
• t1 est le temps d’exécution entre le début et la lecture des différentes variables d’initia-
tion {”1”}

• t2 représente le temps d’exécution de la comparaison {”2”}

• t3 est le temps d’exécution de l’action {”3”}

• t4 est le temps d’exécution de l’action {”4”}


Sachant que le temps t2 , t3 , t4 sont bien définis et inchangés durant l’exécution de
cette ligne. Par ailleurs ces temps représentent une boucle qui se répète n fois. Donc le
temps nécessaire pour l’exécution de la boucle est donné par :

n × tb avec tb = t2 + t3 + t4

De ce fait, le temps d’exécution t(n) de cet algorithme s’écrit :

t(n) = t1 + n × tb

Ce qui signifie que le temps d’exécution dépend linéairement de la taille n.

Évaluation temporelle

L’évaluation temporelle d’un algorithme peut avoir plusieurs possibilités parmi elles
lorsqu’il s’agit d’une :

21 Dr. Adama A. Koné


Programmation Linéaire. E.N.I

• Somme des temps exp : l’exécution de trois actions l’une après l’autre ou chaque
action demande un temps de traitement relatif,

Action 1 : Traitement 1 (t1 ) 




Action 2 : Traitement 2 (t2 )  temps d’exécution : t(n) = t1 + t2 + t3


Action 3 : Traitement 3 (t3 ) 

• Maximum de temps exp : c’est dans le cas d’une boucle avec la condition si
si ≪ condition est vérifiée ≫ alors on effectue

Action 1 : avec un temps de Traitement 1 (t1 ) 




sinon 
temps d’exécution : t(n) = M ax(t1 , t2 )


Action 2 : avec un temps de Traitement 2 (t2 )

• Somme des temps de passages successifs exp :


tant que ≪ condition est vérifiée ≫ faire Traitement (t1 )
Le temps d’exécution : t(n) = n × t1 avec n le nombre de tests à effectuer
Note : d’une manière générale, les performances asymptotiques des algorithmes dé-
pendent principalement du nombre de variables, n, et la taille du problème, en négligeant
les termes de degré inférieur par exemple :

y(n) = n3 + 3n2 + 4n + 10 est une complexité d’ordre O(n3 )

y(n) = nlog(n) + 12n + 17 est une complexité d’ordre O(nlog(n))

22 Dr. Adama A. Koné


CHAPITRE 2

PROGRAMMATION EN NOMBRE ENTIER

2.1 Introduction

Pour résoudre un programme linéaire de manière efficace, on utilise généralement l’algo-


rithme du simplexe. Il en résulte que les solutions obtenues sont des résultats exacts (valeurs
réelles). Cependant, elles pourraient être des valeurs entières ou des valeurs fractionnaires.
Or, pour un problème linéaire discret, la réalisation se fait à l’unité : (production d’un
certain nombre de tables, gestion de l’utilisation des blocs opératoires, nombre de bouteilles
d’eau...etc.). La solution optimale de ce problème doit appartenir à N. puis qu’il est im-
possible de fabriquer 2.5 tables. Dans ce cas soit, on fabrique 2 tables, soit on fabrique 3
tables. On pourrait penser que, pour avoir des valeurs entières à ce problème, il suffit de faire
un arrondi de la solution réelle obtenue. Ainsi et le problème serait réglé. Cette technique
d’arrondissement peut fournir directement la solution optimale pour certains cas. Toutefois,
pour d’autres cas, cette combine par arrondissement serait loin d’être la solution optimale ou
serait même très éloignée, voire désastreuse par rapport à la solution optimale apportée par
la résolution d’un programme linéaire en variables entières PLNE.

Exemple 2.1.1. Soit le programme lineaire suivant :

23
Programmation Linéaire. Programmation en nombre entier E.N.I


32



 M ax Z = 2x1 + 25 x2


sc






(P LE) 100x1 + 62x2 ⩽ 500



6x1 − 4x2 ⩾ −8








 x1 , x 2 ∈ N
• Solution optimale du Programme Linéaire (PL) est :

SP L = (1.95 , 4.92) et ZP L = 5.098

• Solution arrondie du Programme Linéaire (PL) est :

SAR = (2 , 4) et ZAR = 4.56

• Solution optimale du Programme Linéaire en Nombre entier (PLNE) est :

SP LN E = (5 , 0) et Z P LN E =5

Néanmoins, une propriété importante est mise en évidence. On note par :


• ZP L : valeur de la fonction objectif de la solution optimale d’un Programme Linéaire
(PL).
• ZAr : valeur de la fonction objectif de la solution arrondie d’un Programme Linéaire
(PL).
• ZP LN E : valeur de la fonction objectif de la solution optimale d’un Programme Linéaire
en Nombre Entier (PLNE).
À travers ces solutions, nous pouvons situer l’intervalle de la solution d’un Programme linéaire
en nombre entier qui est déterminé comme suit :

Pour un probleme de minimisation Min ZP L ⩽ ZP LN E ⩽ ZAR

Pour un probleme de maximisation Max ZAR ⩽ ZP LN E ⩽ ZP L

Ainsi la solution optimale réelle ZP L représente une borne inférieure dans le cas Min et une
borne supérieure dans le cas Max.

Rémarque 2.1.2. Pour la maximisation, on arrondit souvent les valeurs des variables à
l’entier inférieur, sinon la solution devient non réalisable. Pour la minimisation, l’arrondi se
fait à l’entier supérieur. On peut parfois emmené aussi à combiner les deux types d’arrondi
pour obtenir une solution réalisable au PLNE.

24 Dr. Adama A. Koné


Programmation Linéaire. Programmation en nombre entier E.N.I

2.1.1 Résolution des Problèmes Linéaires en Nombre Entiers PLNE

En programmation en nombres entiers, on ne dispose pas d’un algorithme général qui


permette de résoudre efficacement tous les problèmes en nombres entiers. Cependant, il existe
plusieurs méthodes telle que la technique d’énumération pour l’exploration de toutes les
solutions possibles ou encore l’algorithme de ≪ branch and bound ≫ appelée méthode de ≪
séparation et évaluation ≫.

Approche par énumération purement binaire

Le principe de cette méthode est d’attribuer des valeurs binaires (0 et 1) pour chaque
variable du système puis de déterminer toutes les combinaison possibles. Pour chaque
combinaison, nous calculons la valeur du critère à optimiser puis nous choisissons la meilleure
valeur qui donne la solution optimale.

Exemple 2.1.3. Soit le programme lineaire suivant :






M ax Z = 9x1 + 5x2 + 6x3 + 4x4





 sc


6x1 + 3x2 + 5x3 + 2x4 ⩽ 10






(P LE) x1 + x2 ⩽ 1



x1 ⩽ x3










 x1 ⩽ x4


x1 , x 2 , x 3 , x 4 ∈ N

Énumérons toutes les solutions du modèle :

25 Dr. Adama A. Koné


x1 , x2 , x3 , x4 ≥0 et entiers

Énumérons toutes les solutions


Programmation Linéaire.
du modèle :
Programmation en nombre entier E.N.I

Figure 2.1 – Schéma représentatif de l’approche par énumération


Figure. 3.1 – Schéma représentatif de l'approche par énumération

Nous commencerons par résoudre le problème par la méthode du simplexe ou la solution


obtenue
Nous et donnée parpar(x1,résoudre
commencerons x2, x3, lex4)=(5/6,
problème1,par 0, 1)laetméthode
la valeurduoptimale correspondante
simplexe ou la solution
obtenue et donnée par (x1 , x2 , x3 , x4 ) = ( 56 , 1, 0, 1) et la valeur optimale correspondante est
est M = 16.5.
Z = 16.5.
Nous constatons que x1 est fractionnaire, nous commençons à étudier les premières
Nous constatons que x1 est fractionnaire, nous commençons à étudier les premières
branche pour x1 et pour deux valeurs : 0 et 1
branche pour x1 et pour deux valeurs : 0 et 1
• pour x1 = 0, la solution optimale est de (x1 , x2 , x3 , x4 ) = (0, 1, 0, 1) et Z = 9 ;

pour x1=0, la solution optimale est de (x1, x2, x3, x4)=(0, 1, 0, 1) et M=9;
• pour x1 = 1, la solution optimale est de (x1 , x2 , x3 , x4 ) = (1, 0.8, 0, 0.8) et Z = 16.2,

pour x1=1, la solution optimale est de (x1,x2, x3, x4)=(1, 0.8, 0, 0.8 ) et M=16.2,
Nous remarquons bien que x2 et x4 sont fractionnaires. Donc nous reprenons le même
principe pour x2 et nous appliquons le même procédé.

Nous
• xremarquons
1 = 1 et x2 =bien que x2 du
0, Solution et x4 sont fractionnaires.
problème : (x1 , x2 , x3 , x4Donc
) = (1,nous reprenons
0, 0.8 le 13.8
, 0) et Z = même
principe
• x1 =pour
1 et x2
x2 et
= nous appliquons
1, Solution le même: procédé.
du problème (x1 , x2 , x3 , x4 ) = (1, 1, 0, 0.5) et Z = 16
Après cette itération nous brancherons à nouveau, sur la variable suivante x3 pour les
x1=1 et x2=0, Solution du problème : (x1, x2, x3, x4)= (1, 0,0.8 ,0) et M=13.8
deux valeurs possibles : 0 et 1

• x1x1=1
= 1, xet2 =
x2=1,
1, x3Solution du problème
= 0 Solution : (x1,: (xx2,1, x3,
du problème x2 , x4)=
x3 , x(1, 1, (1,
4) = 0, 0.5)
1, 0,et0.5)
M=16et Z = 16

• x1 = 1, x2 = 1, x3 = 1 Solution du problème impossible


Après cette itération nous brancherons à nouveau, sur la variable suivante x3 pour les
26 Dr. Adama A. Koné
deux valeurs possibles : 0 et 1
Programmation Linéaire. Programmation en nombre entier E.N.I

2.1.2 La procédure de séparation et évaluation progressive (Branch


and Bound)
Définition 2.1.4. La méthode de “branch and bound”, encore appelée méthode de séparation
et évaluation qui est destinée à résoudre les problèmes linéaires en nombre entier. Cette
méthode consiste donc à appliquer une énumération intelligente de l’espace des solutions,
en adoptant le principe de "Diviser pour régner" qui délimite l’exploration de toutes les
branches, et qui élimine des solutions partielles ne menant pas à la solution optimale. Il s’agit
essentiellement d’effectuer une décomposition du problème en sous problèmes plus simples.
Puis on combine la résolution de tous les sous problèmes pour obtenir la solution du problème
original.

Exemple 2.1.5. Soit le PL suivant :






 M ax Z = 8x1 + 5x2


sc






(P LE) x1 + x2 ⩽ 6 (2.1.1)



9x1 + 5x2 ⩽ 45








 x1 , x 2 ∈ N

Dans un premier temps, nous résoudrons le problème par une méthode de résolution par
exemple, la méthode du simplexe. Si les solutions des variables sont entières. On s’arrête, on
a trouvé l’optimum. Dans l’exemple précédant les résultats obtenus sont donnés comme suit :
165 15 9
Z= = 41.25 ; x1 = = 3.75 et x2 = = 2.25 (2.1.2)
4 4 4
On remarque bien que les résultats sont fractionnaires. Donc il faudra trouver une solution
entière et la valeur z obtenue est une borne supérieure pour la solution optimale de la
programmation linéaire en variable entière appliquée à cet exemple.

Démarche de résolution

La démarche de résolution consiste à concevoir un arbre (une arborescence) qui, a comme


racine, la solution optimale du problème relaxé. Puis, on construit au fur et à mesure, toutes
les branches à exploiter en passant d’un sommet a un autre. À partir des premiers résultats
trouvés par la résolution du problème 2.1.1, on démarre la construction d’un arbre, ou
la solution trouvée (z = 41.25, x1 = 3.75 , x2 = 2.25) représente la racine (le sommet de
démarrage) de notre arborescence.

27 Dr. Adama A. Koné


Programmation Linéaire. Programmation en nombre entier E.N.I

Pour construire la première branche, on prend arbitrairement une variable qui est frac-
tionnaire dans la solution optimale 2.1.2.
Dans cet exemple, les deux variables du système sont fractionnaires. Donc, on choisit une
variable et une seule variable à la fois parmi toutes les variables fractionnaires. Le choix de
telle variable n’influence pas sur la solution final. Par ailleurs, le nombre de branches et le
nombre de sommets pour l’arbre définitif varie différemment pour chaque variable choisie.
1. Séparation 1
Dans cet exemple nous avons opté pour la variable x1 . À partir de cette variable, nous
démarrons la conception de notre arbre par la création de deux branches à partir de la
racine. Ensuite, nous définirons le sommet de chaque branche. Pour la création d’un
sommet, nous analysons, d’abord, la valeur de la variable x1 , afin d’en déduire l’entier
15
supérieur et l’entier inférieur. Dans notre exemple x1 = 4 = 3.75 avec (3 ⩽ 3.75 ⩽ 4).
Ce qui revient à séparer le problème en deux sous problèmes qui correspondent à la
création des deux premiers sommets ou :
▶ Le premier sommet est composé du problème initial plus la contrainte d’intériorité.
Dans ce cas, x1 ⩾ 4 (sous-problème 2)




 M ax Z = 8x1 + 5x2


sc







x1

 + x2 ⩽ 6
(P LE)  (2.1.3)
 9x1 + 5x2 ⩽ 45




x1 ⩾ 4







x1 , x 2 ∈ N

▶ Le second sommet est composé du problème initial plus la contrainte de supériorité.


Dans ce cas, x1 ⩽ 3 (sous-problème 3)




 M ax Z = 8x1 + 5x2


sc








 x1 + x2 ⩽ 6
(P LE) (2.1.4)



 9x1 + 5x2 ⩽ 45


x1 ⩽ 3







x1 , x 2 ∈ N

Le principe de la décomposition du problème en deux sous problème est appelé "


phase de séparation".

28 Dr. Adama A. Koné


Le principe de la décomposition du problème en deux sous problème est appelé " phase
de séparation".

b) Évaluation 1
Programmation Linéaire. Programmation en nombre entier E.N.I
Une fois la détermination des sommets dans une phase, on passe à la résolution des sou
problèmes résultant ou le choix du sous problème parmi les non-résolus est arbitraire. O
2. Évaluation
applique ensuite
Une foisune méthode de
la détermination des résolution,
sommets dans par exemple
une phase, la méthode
on passe du des
à la résolution simplexe.
sous-
problèmes résultant ou le choix du sous problème parmi les non-résolus est arbitraire.
Pour notre exemple, nous avons choisi le sous-problème 2 ou la solution (PL) est :
On applique ensuite une méthode de résolution, par exemple la méthode du simplexe.
Pour notre exemple, nous avonszchoisi
= 41,le sous-problème 2 ou la solution (PL) est :
x1 = 4, 9 3.
Z = 41, x1 = 4 et x2 = (2.1.5)
x2 = 9/5 . 4
À ce stade, la première branche d’arbre des solutions est donnée par la figure ci-dessous :
À ce stade, la première branche d'arbre des solutions est donnée par la figure 3.2.

Problème 1
Z=41.25
X1=3.75
X2= 2.25

x1 4 x1 3

Sous Sous
Problème 2 Problème 3
Z = 41
X1 = 4
X2= 1.8

Figure. 3.22.2
Figure –Première séparation /évaluation
– Première séparation-évaluation

D’après la solution obtenue pour le sous-problème 2, on remarque que la valeur de


la variable x1 est entière, par contre, celle de x2 est toujours fractionnaire. Donc, on
décide de séparer à nouveau sur cette variable, en utilisant la même procédure décrite
auparavant.

Rémarque 2.1.6. à ce niveau, on a deux possibilités de branchement : soit on sépare


la variable x2 ou on traite le sous-problème 3. Nous avons choisi de continuer sur la
variable x2 du sous-problème 2 et, nous reviendrons après sur le sous-problème 3.

3. Séparation 2
À partir du sous-problème 2 on crée deux nouvelles branches, sachant que la valeur de

29 Dr. Adama A. Koné


Programmation Linéaire. Programmation en nombre entier E.N.I

x2 est égale à : 1.8 (x2 = 1.8). Donc, l’entier inférieur est de 1 et l’entier supérieur
est de 2. A ce moment, on sépare le sous-problème 2 pour x2 ⩽ 1 et pour x2 ⩽ 2. On
obtient à nouveau deux sommets (sous-problème 4 et sous problème 5) avec :
Sous-problème 4






M ax Z = 8x1 + 5x2





 sc


x1 + x2 ⩽ 6






Avec 9x1 + 5x2 ⩽ 45 (2.1.6)



x1 ⩽ 3










 x2 ⩽ 1


x1 , x 2 ∈ N

Sous-problème 5






M ax Z = 8x1 + 5x2





 sc


x1 + x2 ⩽ 6






Avec  9x1 + 5x2 ⩽ 45 (2.1.7)


x ⩽ 3

 1








 x2 ⩾ 2


x1 , x 2 ∈ N

4. Évaluation 2
En résolvant le sous-problème 4 on constate qu’il n’est pas réalisable.
Pour le sous-problème 5, on trouve la solution optimale comme suit :

365
z= 9 = 40.555
x1 = 40
9 = 4.444
(2.1.8)
x2 = 1

On schématise les nouveaux résultats obtenus. La configuration globale de l’arbre à ce


stade est donnée par la figure ci-dessous

30 Dr. Adama A. Koné


Programmation Linéaire. Chapitre
Programmation en 3 Problèmes
nombre entier E.N.I linéaires en variables entiè

Problème 1
Z=41.25
X1=3.75
X2= 2.25

x1 4 x1 3

SP2 SP3
Z = 41
X1 = 4
X2= 1.8

x2 1 x2 2
SP4 SP5
Non Z = 40.5
réalisable X1 = 4.4
X2= 1
x1 4
SP6
Z = 37
X1 = 4
X2= 1

Figure.2.3
Figure 3.4–: Sous problème
Sous problème 6 de la6troisième
de la troisième
séparation /séparation
évaluation /évaluation

Il reste maintenant à évaluer le sous-problème 7. Après résolution, on trouve la solut


suivante :
Il reste maintenant à évaluer le sous-problème 7. Après résolution, on trouve la solution
suivante : z = 40
x1 = 5 3.1
x2z== 040
x1 = 5
La solution du sous-problème 7 estx2réalisable =0 et toutes les variables du système s
entières. Cette solution est également candidate. En comparant cette solution avec c
La solution du sous-problème 7 est réalisable et toutes les variables du système sont
du sous-problème 6, on constate que le sous-problème 7 fournit un meilleur résu
entières. Cette solution est également candidate. En comparant cette solution avec celle
puisque la valeur du z pour le sous-problème 7 est plus grande que la valeur du z pou
du sous-problème 6, on constate que le sous-problème 7 fournit un meilleur résultat
sous-problème 6. Ce qui implique que la solution 6 n’est donc pas optimale.
31 Dr. Adama A. Koné
Programmation Linéaire. Programmation en nombre entier E.N.I

puisque la valeur du z pour le sous-problème 7 est plus grande que la valeur du z pour
le sous-problème 6. Ce qui implique que la solution 6 n’est donc pas optimale.

Chapitre 3 Problèmes linéaires en variables entières

Problème 1
Z=41.25
X1=3.75
X2= 2.25

x1 4 x1 3

SP2 SP3
Z = 41
X1 = 4
X2= 1.8

x2 1 x2 2
SP4 SP5
Non Z = 40.5
réalisable X1 = 4.4
X2= 1
x1 5 x1 4
SP7
SP6
Z = 37
Z = 40
X1 = 4
X1 = 5
X2= 1
X2= 0

Figure. 3.5 : Sous problème 7de la troisième séparation /évaluation


g) Évaluation 4

Une fois que tous les sommets dans une branche ont été traités, on passe à l'exploration
de la deuxième tige du premier branchement. Cela dit, il n'existe pas de bonne méthode
pour l'exploration des sommets. On peut la faire selon plusieurs stratégies, soit en
profondeur ou en largeur ou tout simplement le meilleur d’abord. Le plus important est
de traiter tous les cas possibles sur cette arborescence.
Figure 2.4 – Sous problème 7 de la troisième séparation /évaluation
Pour notre exemple, il nous reste à vérifier la piste du sous-problème 3 ou la solution
obtenue est donnée par :

z = 39
x1 = 3 3.15
x2 = 3
5. Évaluation 4
Une fois que tous les sommets dans une branche ont été traités, on passe à l’exploration
de la deuxième tige du premier branchement. Cela dit, il n’existe pas de bonne méthode 49

pour l’exploration des sommets. On peut la faire selon plusieurs stratégies, soit en
profondeur ou en largeur ou tout simplement le meilleur d’abord. Le plus important
est de traiter tous les cas possibles sur cette arborescence. Pour notre exemple, il nous

32 Dr. Adama A. Koné


Programmation Linéaire. Programmation en nombre entier E.N.I

reste à vérifier la piste du sous-problème 3 ou la solution obtenue est donnée par :

z = 39
x1 = 3
x2 = 3

La valeur optimale du sous-problème 3 (z = 39) est inférieure à la valeur optimale


donnée par le sous-problème 7 (z = 40), donc cette branche de l’arbre ne peut pas
produire un meilleur résultat.

Chapitre 3 Problèmes linéaires en variables entières

La valeur optimale du sous-problème 3 (z =39) est inférieure à la valeur optimale donnée


par le sous-problème 7 (z=40), donc cette branche de l’arbre ne peut pas produire un
meilleur résultat.

Problème 1
Z=41.25
X1=3.75
X2= 2.25

x1 4 x1 3

SP2 SP3
Z = 41 Z = 39
X1 = 4 X1 = 3
X2= 1.8 X2= 3

x2 1 x2 2
SP4
SP5
Non
Z = 40.5
réalisable
X1 = 4.4
X2= 1

x1 5 x1 4
SP7
SP6
Z = 37
Z = 40
X1 = 4
X1 = 5
X2= 1
X2= 0

Figure. 3.6 : Arborescence globale du problème 3.3

La solution optimale en nombre entier du problème 3.3 :


Max z = 8 x1 + 5 x2

avec x1 + x2 6
9x1 + 5x2 45
Figure 2.5 – Arborescence
x1 globale
, x2 duIN
problème 2.1.1

est réalisable pour 5 produits de x1, 0 produit de x2 et rapporte un bénéfice de 40 unités


monétaires.

33 Dr. Adama A. Koné


50
Programmation Linéaire. Programmation en nombre entier E.N.I

La solution optimale en nombre entier du problème 2.1.1 :






 M ax Z = 8x1 + 5x2


sc






Avec  x1 + x2 ⩽ 6


9x1 + 5x2 ⩽ 45








 x1 , x 2 ∈ N

est réalisable pour 5 produits de x1 , 0 produit de x2 et rapporte un bénéfice de 40 unités


monétaires.

34 Dr. Adama A. Koné


CHAPITRE 3

THÉORIE DES GRAPHES

3.1 Concept fondamentaux de la théorie des graphes


La théorie des graphes est un outil puissant de modélisation et de résolution de problèmes
concrets. A l’origine, la théorie des graphes était présentée comme une curiosité mathématique ;
Euler lors d’une de ses promenades nocturnes a voulu tracer un itinéraire circulaire dans la
ville de Koeinsberg. Partant d’un point donné, il voulut visiter les sept ponts de cette ville
(disposé selon le schéma ci-dessous) une et une seule fois seulement, puis retourner à son
point de départ.

Figure 3.1 – Ville de Koeinsberg avec ses sept ponts

35
Théorie des graphes

3.2 Qu’est ce qu’un graphe ?


Le mot ≪ graphe ≫ est introduit par J. J. Sylvester en 1822 et un siècle plus tard ie en
1936 apparait le premier livre sur la théorie des graphes, écrit par D. Knig.

Définition 3.2.1. Un graphe est un dessin géométrique définit par la donnée d’un ensemble
de points (appelés sommets ou nœuds ). Chaque arête a pour extrémité deux points,
éventuellement confondus.

Les graphes peuvent servir à représenter un grand nombre de situations courantes comme :

• Les liens routiers

• Les réseaux de télécommunication

• Les circuits électriques

• Les liens entre diverses personnes ou entités administratives

Exemple 3.2.2. La figure suivante représente un plan de circulation à sens unique d’une
ville où chaque localité est représentée par un point appelé sommet et chaque route par un arc
orienté indiquant le sens de la circulation.

Figure 3.2 – Graphe représentant la circulation en sens unique d’une ville

Ainsi les notions qu’on peut définir sur un graphe, vont servir à résoudre certains problèmes
liés à différents domaines

36 Dr. Adama A. Koné


Théorie des graphes

3.2.1 Exemples de graphes


Graphe orienté

Le graphe ci-dessus un exemple de graphe orienté (Graphe vu en exemple 3.2.2).


Mathématiquement, un graphe orienté est représenté par le couple G = (X, U )

▶ X est l’ensemble des sommets.
▶ U est l’ensemble des arcs.
On note par u = (x, y) un arc reliant un sommet x au sommet y dans un graphe G.
Si le graphe G contient n sommets, on dit alors que G est d’ordre n.
Chaque arc du graphe G relie respectivement deux sommets éventuellement confondus, le
sommet de départ représente l’extrémité initiale de l’arc et le sommet d’arrivé représente
l’extrémité. terminale.

Graphe non orienté

Si on définit une relation sur un ensemble où la notion d’ordre n’est pas important, on
représente ainsi la relation entre deux sommets par un arc non orienté appelé arête. On
obtient alors un graphe non orienté, noté G = (X, E). Une illustration parfaite est le graphe
ci-dessous :

Figure 3.3 – Ville de Koeinsberg avec ses sept ponts

Rémarque 3.2.3. ▶ Une arête dont les extrémités sont confondues est une boucle.

37 Dr. Adama A. Koné


Théorie des graphes

▶ Une arête peut être transformée en deux arcs de sens contraire .

3.2.2 L’ensemble des prédécesseurs, successeurs et voisins d’un


sommet :
Considérons le graphe suivant :

Figure 3.4 – Prédécesseurs, successeurs et voisins

• 1 et 2 sont les prédécesseurs du sommet 3.

• 4 est le successeur du sommet 3.

• 1, 2 et 4 sont les voisins du sommet 3.

Notation :
Soit G = (x, U ) un graphe orienté :

▶ L’ensemble des prédécesseurs d’un sommet x se définit par :

Γ− (x) = {y ∈ X/∃u ∈ U où I(u) = y et T (u) = x}

▶ L’ensemble des successeurs d’un sommet x se définit par :

Γ+ (x) = {y ∈ X/∃u ∈ U où I(u) = x et T (u) = y}

▶ L’ensemble des voisins d’un sommet x se définit par :

Γ(x) = Γ− (x) ∪ Γ+ (x)

38 Dr. Adama A. Koné


Théorie des graphes

Exercice 3.2.4. Déterminer l’ensemble des prédécesseurs, successeurs et voisins de tous les
sommets de ce graphe ci-dessous :

Figure 3.5 – Graphe orienté

3.2.3 Le degré d’un sommet :


Soit le graphe de l’exercice 3.2.4, considérons le sommet A :
Une route mène vers la localité A et 3 autres en partent, on peut définir ainsi la notion
de degré d’un sommet dans un graphe comme suit :

▶ Le sommet A est l’extrémité initiale de 3 arcs, on dit alors que le demi-degré extérieur
de A est 3 on le note d+
G (A) = 3.

d+
G (A) = {u ∈ U, I(u) = x}

▶ De même le sommet A est l’extrémité terminale d’un seul arc. On dit dans ce cas que
le demi-degré intérieur de A est 1 on le note d−
G (A) = 1.

d−
G (A) = {u ∈ U, T (u) = x}

▶ La somme du demi-degré intérieur et du demi-degré extérieur du sommet A définit le


degré du sommet A que l’on note dG (A) = 4.


dG (A) = d+
G (A) + dG (A)

39 Dr. Adama A. Koné


Théorie des graphes

Rémarque 3.2.5. Si un sommet possède une ou plusieurs boucles, chacune apporte une
contribution de 2 dans le calcul du degré de ce sommet.

Propriété 3.2.6.

1. Dans un graphe orienté G = (X, U ), la somme des demi-degrés intérieurs des sommets
de G est égale a la somme des demi-degrés extérieurs des sommets de G.
d+ d−
X X
Autrement dit : G= G
x∈X x∈X
2. Dans tout graphe, la somme des degrés est un nombre pair.

3. La somme des degrés d’un graphe non orienté est égale à deux fois le nombres d’arêtes.

Exemple 3.2.7. Le tableau suivant détermine les demi-degrés extérieurs et intérieurs des
sommets du graphe de l’exercice 3.2.4.

A B C D E Total
d+ (x) 3 2 3 1 0 9
d− (x) 1 2 1 1 4 9
d(x) 4 4 4 2 4 18

Table 3.1 –

d+ d−
X X
On voit bien que : G (x) = G (x) est vérifiée et
X x∈X x∈X
dG (x) est un nombre pair.
x∈X

Rémarque 3.2.8.

• si dG (x) = 1 alors le sommet x est un sommet pendant.

• si dG (x) = 0 alors le sommet x est un sommet isolé.

3.3 Structure d’un graphe


Considérons le réseau routier du Mali G = (X, U ) tel que :
X représente l’ensemble des villes du Mali et U représente l’ensemble des routes nationales
et départementales maliennes.

40 Dr. Adama A. Koné


Théorie des graphes

a) Soit A ⊂ X, l’ensemble des villes de la région de Ségou et UA l’ensemble des routes


reliant les villes de Ségou. On définit ainsi le graphe GA = (A, UA ), dit sous-graphe
de G, représentant l’ensemble du réseau routier de la ville de Ségou.

b) Soit W ⊂ U , l’ensemble des routes départementales maliennes. On définit ainsi le


graphe G = (X, W ), dit graphe partiel de G, représentant les routes départementales
maliennes.

c) Soient UA l’ensemble des routes reliant les villes de la région de Ségou (nationales et
départementales) et W l’ensemble des routes départementales maliennes. On définit
ainsi le graphe GA W = (A , W ∩ UA ), dit sous-graphe partiel de G représentant
l’ensemble des routes départementales de la région de Ségou.

Exemple 3.3.1. Soit le graphe d’Euler G = (X, U ) :

Figure 3.6 – graphe d’Euler G = (X, U )

Soient A = {A, B, C} et {e1 , e2 , e5 }

a) Le sous-graphe engendré par A est le graphe GA (A , EA ), avec EA = {e2 , e3 , e5 , e7 }

41 Dr. Adama A. Koné


Théorie des graphes

Figure 3.7 – Sous-graphe GA (A , EA )

b) Le graphe partiel engendré par W est le graphe

Figure 3.8 – Graphe partiel GW (X, W )

c) Le sous graphe engendré par A et W appelé sous-graphe partiel est :

42 Dr. Adama A. Koné


Théorie des graphes

Figure 3.9 – Sous-graphe partiel GA ,W (A , W ∩ EA )

3.4 Graphes particuliers

3.4.1 Graphe complet

On appelle graphe complet un graphe dont tous les sommets sont adjacents.

Exemple 3.4.1.

3.4.2 Graphe complémentaire

A un graphe simple G = (X, U ), on peut définir un graphe complémentaire G = (X, U )


comme suit : u ∈ U ⇔ u ∈
/U
C’est-à-dire : une arrête (arc) appartient au graphe complémentaire (G) si elle n’appartient
pas au graphe initial G

Exemple 3.4.2.
Quatre 4 composantes électroniques doivent être alimenter par sept 7 sources. Chaque source
peut alimenter plusieurs composantes comme l’indique le tableau suivant :

43 Dr. Adama A. Koné


Théorie des graphes

Sources Composantes electroniques


S1 C1 , C 2 , C 3
S2 C2 , C 4
S3 C2 , C 4
S4 C1 , C 2
S5 C1 , C 3
S6 C1 , C 3
S7 C2 , C 4

Sachant que chaque source peut participer à l’alimentation périodique d’une composante,
proposer un plan optimal d’alimentation pour le bon fonctionnement de ces composantes.

Solution 3.4.3.
On associe à cette situation le graphe non orienté G = (X, A) tel que :
▶ X : l’ensemble des sommets représentant les composantes électroniques

X = {Ci , /i = 1, . . . , 4}

▶ A l’ensemble des arêtes : deux sommets sont reliés par une arête si ils sont alimentées
par la même source.

Figure 3.10 – Les composantes C1 , C2 et C3 ne peuvent pas être alimenter en même temps

Le graphe complémentaire (G) du graphe G détermine les composantes qui peuvent être
alimenter en même temps.

44 Dr. Adama A. Koné


Théorie des graphes

Figure 3.11 – La composante C1 peut être alimenter en même temps que la composante C4 , mais ne
peut pas être alimenter avec la composante C3

3.4.3 Graphe planaire


Un graphe est dit planaire si on peut le dessiner sur un plan de telle fao̧n que les arêtes
ne se coupent pas, un dehors de leurs extrémités.
Ce type de graphe est particulièrement utilisé dans les problèmes de circuits imprimés
(ces circuits, construits sur des surfaces planes, constituent actuellement l’une des limitations
des développements de l’informatique).

Définition 3.4.4.

• Une face d’un graphe planaire est par définition une région du plan limité par des arêtes
de telle sorte que deux points arbitraires, dans cette région, reliées par une arête ne
rencontrent ni sommet ni arête.
• La frontière d’une face est l’ensemble des arêtes qui l’entourent.
• Une face infinie est une face illimitée, elle n’admet pas de contour et elle unique. Les
autres faces sont finies.
• Deux faces sont dites adjacentes si leurs frontières ont une arête commune.

Rémarque 3.4.5.
Les graphes planaires vérifient la formule |X| + F = |A| + 2 tel que : F est le nombre de faces
(ou régions), |X| est le nombre de sommets et |A| est le nombre d’arêtes.

45 Dr. Adama A. Koné


Théorie des graphes

Exemple 3.4.6.

3.4.4 Graphe biparti


Un graphe est biparti si l’ensemble de ses sommets peut être reparti en deux classes X1
et X2 telles que, deux sommets de la même classe ne soient pas adjacents. On le note parfois
G = (X1 , X2 , U ).

Exemple 3.4.7.

Rémarque 3.4.8.

• Un graphe G est biparti complet, si tout sommet de X1 = {x1 , . . . , xp } est adjacent à


tout sommet de X2 = {xp+1 , . . . , xq }.

• Si de plus le graphe G est simple, alors G est un graphe simple biparti-complet, on le


note Kp,q avec |X1 | = p et |X2 | = q

Exemple 3.4.9. Dans un atelier comportant quatre ouvriers où chacun peut effectuer de 1 à
3 tâches, représenter les possibilités d’affectation des ouvriers aux différentes taches par un
graphe biparti G.

3.5 Algorithme de K-coloration d’un graphe


Le principe :

On appelle ≪ K-coloration≫ d’un graphe G = (X, A) une partition de l’ensemble des


sommets X de G en K-classes (X1 , X2 , . . . , Xk ), de telle sorte que deux sommets d’une
même classe ne soient pas adjacents, et les sommets d’une classe sont coloriés de la même
couleur. Autrement dit, deux sommets adjacents n’ont pas la même couleur.
Le procédé

On commence par établir une liste ordonnée des sommets (ordonner les sommets suivant
l’ordre décroissant de leur degré)
Tant qu’il reste des sommets à colorier, exécuter les actions suivantes :

1. Choisir une nouvelle couleur appelée couleur d’usage ;

46 Dr. Adama A. Koné


Théorie des graphes

2. Chercher dans la liste des sommets, le premier sommet non coloré et le colorer avec la
couleur d’usage ;

3. Examiner tour à tour, dans l’ordre de la liste, tous les sommets non coloriés et ; colorier
chaque sommet non adjacent à un sommet déjà coloré avec la couleur d’usage.

Rémarque 3.5.1.
On appelle nombre chromatique d’un graphe G, le nombre minimum pour lequel le graphe
G est K-coloriable. On le note par δ(G). Si δ(G) = 2, le graphe est biparti.

Exercices

Exercice 3.5.2. Dans une partie d’échec, le joueur a effectué les déplacements suivants pour
son cavalier : b1 − a3 − b5 − c3 − a4 − c3 − d5
Représenter les déplacements du cavalier par un graphe orienté.

Exercice 3.5.3.
Les liaisons internes décrites dans le tableau ci-dessous sont assurées par les différentes
compagnies aériennes au Mali le 31 décembre 2018.

Bamako Kayes Mopti Gao Toumbouctou Menaka


Bamako OK OK OK
Kayes OK
Mopti OK OK OK OK
Gao OK OK
Toumbouctou OK
Manaka OK OK

1. Représenter les liaisons par un graphe.

2. Quelles sont les destinations des vols partant de Mopti.

• Indication :
Le mot ≪ OK ≫ signifie qu’il y’ a un vol entre les deux villes.

• Notation
Pour le besoin de la représentation du graphe, donner le chiffre 1 à Bamako, 2 à Kayes,
3 à Mopti, 4 à Gao, 5 à Toumbouctou, 6 à Menaka,

47 Dr. Adama A. Koné


Théorie des graphes

Exercice 3.5.4.
Le tableau ci-dessous représente un réseau de distribution d’électricité de 5 centrales hybrides
entre 6 grands quartiers du district de Bamako.

Centrales C1 C2 C3 C4 C5
Quartiers Q1 , Q2 Q3 , Q4 , Q2 Q5 , Q4 , Q6 Q1 , Q3 Q6 , Q5

Sachant qu’un centrale ne peut alimenter qu’un seul quartier par heure,

1. Déterminer le nombre minimum d’heure afin d’alimenter tous les quartiers.

2. Proposer une programmation réalisable pour l’alimentation en électricité des différents


quartiers.

3.6 La représentation matricielle d’un graphe


À un graphe G = (X, U ) contenant n sommets et m arcs ; c’est-à-dire |X| = n et |U | = m,
on associera trois types de matrices :

3.6.1 La matrice d’adjacence


La matrice d’adjacence du graphe G = (X, U ) est une n×n matrice ; ses éléments prennent
deux valeurs 1 ou 0. Chaque ligne et chaque colonne correspondent à un sommet du graphe.
Ainsi chaque élément de la matrice indique la relation qui existe entre deux sommets :

▶ 1 signifie que les deux sommets sont reliés par un arc orienté.

▶ 0 signifie que les deux sommets ne sont pas reliés par un arc.

Exemple 3.6.1.

La matrice d’adjacence de G est la suivante :

x1 x2 x3 x4
x1 0 1 0 0
x2 1 0 1 1
x3 1 0 0 0
x4 0 0 1 0

48 Dr. Adama A. Koné


Théorie des graphes

Figure 3.12 – Graphe G = (X, U ) d’ordre 4

u = (x1 , x2 ) est un arc du graphe G ; c’est-à-dire x1 est une extrémité initiale de l’arc u et x2
son extrémité terminale, dont l’élément a12 (l’élément de la 1ère ligne et de la 2ième colonne)
de la matrice d’adjacence du graphe G sera égale à 1. Par contre il n’existe pas d’arc ayant
x1 comme extrémité initiale et x3 comme extrémité terminale ainsi l’élément a13 , élément de
la l’élément de la 1ère ligne et de la 3ième colonne de la matrice sera égal à 0.

Notation
Les éléments de la matrice d’adjacence sont définis par :





1 s’il existe un arc orienté de la forme (xi , xj ); c’est-à-dire



 xi est son extrémité initiale et xj , son extrémité terminale.
aij =






0 sinon

3.6.2 La matrice associée


La matrice associée du graphe G = (X, U ) est une n × n matrice, où chaque ligne et
chaque colonne correspondent à un sommet du graphe, ainsi chaque élément indique le nombre
de relations entre deux sommets, c’est à dire le nombre d’arcs orientés dans le même sens
reliant deux sommets.

Exemple 3.6.2.

La matrice associée au graphe G est la suivante

49 Dr. Adama A. Koné


Théorie des graphes

Figure 3.13 – Graphe G = (X, U ) d’ordre 4

x1 x2 x3 x4
x1 0 1 0 0
x2 1 0 1 2
x3 1 0 0 0
x4 0 0 1 0

À parti du graphe on 2 arcs de la forme (xi , xj ) ; c’est à dire ayant x2 comme extrémité
initiale et x4 comme extrémité terminale, alors l’élément a24 sera égal à 2.

Notation
Les éléments de la matrice associée d’un graphe G sont définis par :
aij = k ; si on a k arcs orientés de la forme (xi , xj ).

Rémarque 3.6.3. À partir de la matrice associée, on a :

• La somme des valeurs d’une ligne détermine le demi-degré extérieure d+


G (x) du sommet
x correspondant

• La somme des valeurs d’une colonne détermine le demi-degré intérieur d−


G (x) du sommet
x correspondant.

3.6.3 La matrice d’incidence aux arcs

La matrice d’incidence aux arcs d’un graphe G = (X, U ) est à n ligne et m colonnes,
ses éléments prennent les valeurs 1, 0 ou −1. Chaque ligne de la matrice est associée à un
sommet et chaque colonne à un arc, ainsi chaque élément de la matrice indique la relation
entre un sommet et un arc comme suit :

50 Dr. Adama A. Koné


Théorie des graphes

• 1 signifie que le sommet est l’extrémité initiale de l’arc.

• −1 signifie que le sommet est l’extrémité terminale

• 0 signifie qu’il n’existe pas de relation entre le sommet et l’arc.

Exemple 3.6.4.

Figure 3.14 – Graphe G = (X, U ) d’ordre 4, composé de 7 arcs.

La matrice d’incidence aux arcs de G est :

u1 u2 u3 u4 u5 u6 u6
x1 +1 −1 −1 0 0 0 0
x2 −1 +1 0 +1 +1 +1 0
x3 0 0 +1 −1 0 0 −1
x4 0 0 0 0 −1 −1 +1

Rémarque 3.6.5. Cette matrice ne convient pas pour les graphes avec boucles.

Notation
Les éléments de la matrice d’incidence aux arcs d’un graphe sont définis comme suit :




 +1 si xi est l’extrémité initiale de l’arc ui

aij =  −1 si xi est l’extrémité terminale de l’arc ui


 0 dans les autres cas

Rémarque 3.6.6. Dans la matrice d’incidence on a :

51 Dr. Adama A. Koné


Théorie des graphes

• Le nombre de valeurs égales à (+1) d’une ligne donne le degré extérieur (d+
G (x)) du
sommet x correspondant

• Le nombre de valeurs égales à (−1) d’une ligne donne le degré intérieur (d−
G (x)) du
sommet x correspondant

3.7 Le dictionnaire de successeurs et de prédécesseurs

Le dictionnaire d’un graphe consiste à énumérer pour chaque sommet de X l’ensemble de


ses successeurs et l’ensemble de ses prédécesseurs :

Sommets dictionnaire des successeurs dictionnaire des prédécesseurs


x Γ+ (x) Γ− (x)
x1
x2
..
.
xn

3.8 La représentation sagittale

Dans la représentation sagittale, on examine tous les arcs de G puis on détermine pour
chaque arc son extrémité initiale et son extrémité terminale comme suit :

u1 u2 · · um
I(ui ) I(u1 ) I(u2 ) · · I(um )
T (ui ) T (u1 ) T (u2 ) · · T (um )

3.9 Cheminement dans un graphe

Les cheminements dans la théorie des graphes sont de quatre types : la chaîne, le cycle, le
chemin et le circuit.
On définira ces notions dans le graphe G.

52 Dr. Adama A. Koné


Théorie des graphes

Figure 3.15 – Graphe G = (X, U )

3.9.1 La chaîne
Soit G = (X, U ) un graphe,
Une chaîne joignant deux sommets xi et xj dans un graphe G est une suite de sommets
reliés par arêtes tels que, deux sommets successifs ont une arête commune.

Exemple 3.9.1.
Dans le graphe G = (x, U ) de la section 3.12.1, la suite de sommets suivante (s1 , s2 , s3 , s4 )
est une chaîne joignant s1 à s4 . C’est une chaîne simple.
Par contre la chaîne forme par (s1 , s5 , s2 , s1 , s5 ) n’est pas simple car l’arc (s1 , s5 ) est
parcouru deux fois.

Figure 3.16 – Graphe représentant une chaîne

Une chaîne est dite simple si on passe une seule fois par ses arcs (arête)

3.9.2 Le chemin
Soit G = (X, U ) un graphe
Un chemin du sommet x0 à xk dans un graphe G, est une suite de sommets reliés
successivement par des arcs orientés dans le même sens à partir du sommet x0 jusqu’au
sommet xk et noté par (x0 , x1 , . . . , xk ).

53 Dr. Adama A. Koné


Théorie des graphes

Autrement dit, deux sommets successifs d’un chemin sont respectivement extrémité initiale
et terminale du même arc, exceptés le premier sommet x0 et le dernier sommet xk .

Exemple 3.9.2. Dans le graphe G = (x, U ) de la section 3.12.1, (s2 , s5 , s3 , s4 ) est un


chemin simple.
Par contre (s2 , s1 , s5 , s3 , s5 , s3 ) n’est pas un chemin simple car l’arc (s5 − s3 ) est
parcouru deux fois.

Rémarque 3.9.3. Dans un chemin (chaîne) simple tous (tes) les arcs (arêtes) sont différents
(tes)

3.9.3 Le cycle
Un cycle est une chaîne simple dont les deux extrémités coïncident (x0 coincide avec xk ),
on le note par (x0 , x1 , x2 , . . . , xk = x0 ).

Exemple 3.9.4. Dans le graphe G = (X, U ) de la section 3.12.1, la suite de sommets


suivants (s1 , s2 , s3 , s5 , s1 ) est un cycle.

Rémarque 3.9.5. Une boucle est un cycle.

3.9.4 Le circuit
Un circuit est un chemin dont les deux extrémités sont confondues ; on le note par
(x0 , x1 , x2 , . . . , xk = x0 ).
On donne le graphe orienté suivant :

Figure 3.17 – Graphe G = (X, U )

54 Dr. Adama A. Koné


Théorie des graphes

Exemple 3.9.6.
Soit le graphe G = (X, U ) ci-dessus, la suite de sommets suivants (S1 , S2 , S3 , S4 , S5 , S1 )
est un circuit.

Rémarque 3.9.7. Une chaîne (un cycle-un chemin-un circuit) est dite élémentaire si on
passe une seule fois par ses sommets (tous les sommets sont différents).

Exemple 3.9.8. • (S1 , S2 , S3 , S4 , S5 ) est un chemin élémentaire ;

• (S1 , S2 , S3 , S4 , S5 , S1 ) est un circuit élémentaire ;

• (S1 , S5 , S4 , S3 , S2 ) est un chaîne élémentaire ;

• par contre (S4 , S3 , S4 , S5 , S3 ) ce chemin n’est pas élémentaire car on passe deux fois
par le sommet S4 ;

▶ Un chemin eulérien est un chemin simple qui passe une et une seule fois par chaque
arc du graphe.

▶ Un chemin hamiltonien est un chemin qui passe une et une seule fois par chaque
sommet du graphe.

Rémarque 3.9.9. La notion de chaîne et de cycle ne respect pas l’orientation des arcs, par
contre celle de chemin et circuit la respect.

3.10 Connexité

3.10.1 Notion de connexité


La notion de connexité dans un graphe est définie par la relation entre deux sommets de
la manière suivante :
Deux sommets x et y ont une relation de connexité ⇔ s’il existe un chaîne entre x et y.
Ou bien x = y.

3.10.2 Graphe connexe


Un graphe G = (x, U ) est dit graphe connexe si tous ses sommets ont deux à deux la
relation de connexité ; autrement dit, si G contient un seul composante connexe.
Un graphe est connexe si et seulement s’il possède une seule composante connexe.

55 Dr. Adama A. Koné


Théorie des graphes

3.11 Forte connexité

3.11.1 Notion de forte connexité

On définit la notion de forte connexité dans un graphe par la relation entre deux sommets
de la manière suivante :
Deux sommets x et y ont une relation de connexité ⇔ s’il existe un chemin entre x à y ;
ou de y à x.

3.11.2 Composantes fortement connexes

On appelle composante fortement connexe un ensemble de sommets qui ont deux à deux
la relation de forte connexité ; de plus, tout sommet en dehors de la composante n’a pas de
relation de forte connexité avec aucun élément de la composante.

3.11.3 Recherche des composantes fortement connexes

Soit G un graphe orienté, un moyen de vérifier si ce graphe est fortement connexe est
d’appliquer l’algorithme de marquage suivant, qui permet de déterminer toutes ses compo-
santes fortement connexes.

Le principe

L’idée de cet algorithme est de parcourir le graphe à partir d’un sommet x dans le sens
direct (en suivant les flèches des arcs) et de créer l’ensemble des sommets parcourus. La même
procédure est effectuée dans le sens opposé (en suivant les flèches en sens inverse) pour créer
un deuxième ensemble de sommets parcourus. Le premier ensemble regroupe les sommets
accessibles à partir de sommet x, le deuxième regroupe les sommets qui peuvent atteindre x.
L’intersection de ces deux ensembles donne les sommets qui à la fois peuvent atteindre x et
sont accessibles à partir de x. Cette intersection forme la composante fortement connexe qui
contient le sommet x.
Énoncé
Données : un graphe orienté G = (X, U )
Résultat : le nombre k de composantes fortement connexe de (G) ainsi que la liste {C1 , C2 , . . . , Ck }
de ces composantes fortement connexes.

56 Dr. Adama A. Koné


Théorie des graphes

(0) Initiation : k = 0; W = X
(1)
(1.1) Choisir un sommet de W et le marquer d’un signe (+) et (−).
(1.2) Marquer tous les successeurs directs et indirects de x avec (+)
(1.3) Marquer tous les prédécesseurs directs et indirects de x avec (−)
(1.4) Poser k = k + 1 et Ck l’ensemble des sommets marqués avec (+) et (−)
(1.5) Retirer de W les sommets de Ck et effacer toutes marques ; W = W − Ck
(1.6) On teste si W = ∅
Si oui, terminer aller à (2).
Sinon, aller à (1)
(2) Le nombre de composante fortement connexes de (G) est k. Chaque ensemble
Ci , i = 1, . . . , k, correspond aux sommets d’une composante fortement connexe de (G).
Application
Soit le graphe G = (x, U ) suivant :

Figure 3.18 – Graphe G = (X, U )

A partir de ce graphe (G), on remarque qu’il y a un chemin reliant le sommet S5 à S2 , mais


on n’a pas de chemin reliant le sommet S2 au sommet S5 , alors S5 et S2 n’ont pas une relation

57 Dr. Adama A. Koné


Théorie des graphes

de forte connexité, donc il existe plus d’une composante fortement connexe, on conclut que le
graphe G n’est pas fortement connexe.
On applique l’algorithme de marquage précédent pour déterminer les composantes forte-
ment connexes

• Initialisation :
k = 0. W = {S1 , S2 , S3 , S4 , S5 , S6 }

• Itération 1 :

On choisit dans W le sommet S1 et on le marque d’un signe (+) et (−), on marque


ensuite :

▶ Suivant l’orientation des arcs les sommets S2 et S4 (successeurs directs du sommet


S1 ) avec le signe (+), ensuite les sommets S3 , S6 (successeurs indirects du sommet
S1 ) avec le signe (+).

▶ Suivant l’orientation des arcs en sens inverse, le sommets S3 (prédécesseur direct du


sommet S1 ) avec le signe (−), ensuite les sommets S2 , S4 , S5 , S6 (prédécesseurs
indirects du sommet S1 ) avec le signe (−).

Soit C1 = {S1 , S2 , S3 , S4 , S6 } l’ensemble des sommets marqués à la fois par (+) et


(−).
On retire de W , les sommets de C1 , on obtient : W = {S5 } ̸= ∅
Effacer toutes les marques

• Itération 2 :

On marque le sommet S5 d’un signe (+) et (−), on constate qu’il n’y a pas d’autres
sommets à marquer.
Alors C2 = {S5 } l’ensemble des sommets marqués à la fois par (+) et (−).
On retire de W , les sommets de C2 , on obtient : W = ∅, terminer.
Le nombre de composante fortement connexes de (G) est 2, elles sont C1 = {S1 , S2 , S3 , S4 , S6 }
et C2 = {S5 }.

Au graphe (G), on fait correspondre un graphe réduit noté (Gr ) représenté comme suit :

58 Dr. Adama A. Koné


Théorie des graphes

Figure 3.19 – Graphe réduit Gr = (Xr , Ur )

3.12 Mise en ordre d’un graphe connexe ou recherche


d’un circuit

3.12.1 Mise en ordre d’un graphe connexe (ordonnancement d’un


graphe)
Principe
Ordonner un graphe revient à disposer dans un certain ordre ses sommets, tel que les arcs
soient dans le même sens. On définit pour cela les différents niveaux des sommets du graphe.

Exemple

Figure 3.20 – Graphe réduit G = (X, U )

Les niveau des sommets du graphe sont définis comme suit :

• Le niveau Nul, noté N0 détermine les sommets du graphe n’ayant pas de prédécesseurs
(Γ−
G (s) = ∅).

59 Dr. Adama A. Koné


Théorie des graphes

• Le premier niveau noté N1 définit les sommets du graphe dont tous les prédécesseurs
appartiennent à N0 .
Dans le graphe G le sommet s2 admet un prédécesseur le sommet s1 qui appartient au
niveau N0 d’où N1 = {s2 }

• Le deuxième niveau noté N2 définit les sommets du graphe dont tous les prédécesseurs
appartiennent à N0 ∪ N1 .
Dans le graphe G le sommet s4 admet comme prédécesseur le sommet s2 qui appartient
à N0 ∪ N1 d’où N2 = {s4 }

• Le troisième niveau noté N3 définit les sommets du graphe dont tous les prédécesseurs
appartiennent à N0 ∪ N1 ∪ N2 .
Le sommet s3 admet comme prédécesseur le sommet s1 , s2 et s4 qui appartiennent à
N0 ∪ N1 ∪ N2 d’où N3 = {s3 }

60 Dr. Adama A. Koné


CHAPITRE 4

GESTION DU PROBLÈME DE
TRANSPORT

4.1 Cheminements remarquables

4.2 Arbres et Arborescences

4.3 Problème du flot maximum

4.4 Problème d’affectation

4.5 Problème d’ordonnancement

61

Vous aimerez peut-être aussi