ACFr
ACFr
ACFr
Recherche
Opérationnelle
Notes de Cours
Ce manuscrit a été rédigé par Dr. Karabadji Nour EL islem maı̂tre de conférences classe B à L’École
Superieure de Technologie Industrial Annaba pour servir comme support de cours aux étudiants de
3e année, Spécialité Energetique et Developpement Durable.
2 Programmation linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1 Formalisation 7
2.2 Résolution de problèmes par voie graphique 9
2.2.1 Problème à deux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.2 Problème à trois variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Résolution de problèmes par méthode du simplexe 13
2.4 Exercices 17
Ces dernières années, une grande attention a été prêtée aux problèmes d’optimisation com-
binatoire, en raison de ces nombreuses applications dans le monde réel. En effet, ces problèmes
interviennent souvent comme des sous-problèmes à résoudre dans plusieurs domaines, où nous avons
toujours un besoin d’optimiser, planifier ou prendre des décisions rapidement et sur tous les plans.
Au niveau des entreprises et des industries, le contexte décisionnel se résume en matière de maxi-
misation de gains et de minimisation de pertes. Pour résoudre ce type de problèmes d’optimisation,
un certain nombre de méthodes ont été proposées. Ces méthodes avaient principalement permis de
décharger l’être humain de la pénible tâche de chercher des solutions optimales parmi l’ensemble
de toutes les configurations possibles. Pour résoudre cette tâche, une solution satisfaisante (ou un
ensemble de solutions) est atteinte généralement en explorant toutes les configurations alternatives
possibles sur un espace de recherche. Ce processus de recherche permet de récupérer soit une, ou
plusieurs solutions, et peut même ne pas renvoyer de solutions, et ce en corrélation avec les critères
de satisfactions exigés.
À titre d’exemple, soit un ensemble de tâches avec des temps d’exécutions connus, nous devons
affecter les tâches à des groupes d’employés. Chaque tâche peut être confiée à un seul employé
ou à un groupe d’employés c.-à-d. un ou plusieurs employés peuvent être affectés à une même
tâche. Chaque employé peut travailler sur plusieurs tâches, mais en revanche, il ne peut pas exécuter
plusieurs tâches simultanément. L’objectif de cette affectation est d’exécuter l’ensemble des tâches
aussi rapidement que possible. Afin de résoudre efficacement ce problème d’ordonnancement, l’idée
est de minimiser le nombre d’employés affectés à plusieurs tâches différentes. Cela est dû au fait
que le temps d’exécution de l’ensemble des tâches est alors égal au temps de travail de l’employé le
plus occupé, étant donné qu’un employé ne peut réaliser qu’une tâche à la fois. Par conséquent, la
meilleure affectation est celle qui permet la restriction d’un nombre important (maximal) d’affecta-
tions d’un même employé à plusieurs tâches. Cependant, atteindre la meilleure affectation revient
à la chercher parmi l’ensemble de toutes les affectations possibles. Ce nombre de combinaisons
nécessite un temps de calcul énorme, et malgré la puissance croissante des machines, l’exploration de
6 Chapitre 1. Introduction à la Recherche Opérationnelle
toutes les combinaisons est toujours un cas délicat et même intraitable en pratique. Prenons comme
exemple un groupe de n employés, le nombre de combinaisons d’employés possibles est 2n . Pour
des données de petite taille, il est possible d’explorer toutes les combinaisons dans le pire des cas,
mais cela est pratiquement impossible pour des données de grande taille.
Avant de présenter le contenu de ce cours faisant un petit tour d’horizon historique, le commence-
ment a été à partir de la Seconde Guerre mondiale, une méthode d’optimisation (une première) a été
développée lors de l’élaboration des radars sous la direction de Watson-Watt. Celui-ci s’intéressait à
l’utilité des radars dans un contexte de défense antiaérienne et d’intervention de la chasse aérienne
à la fin des années 1930. En 1940 aux États unis, des groupes d’Operation Research furent créés
dans les Etats Majors. Le but était d’organiser les convois, de mettre en place un blocus sur les ports
japonais et de répartir les équipages des avions.
Dans les années 70-80, on applique même les principes de la recherche opérationnelle à la
compréhension des phénomènes de trou noir.
Depuis longtemps, la programmation linéaire a été l’une des techniques mathématiques les plus
populaires pour résoudre des problèmes complexes là où les méthodes mathématiques classiques
échouaient. Sa popularité est due à sa simplicité . En effet, on peut la décrire comme étant un en-
semble d’approches de résolution assez facile pour les mettre en oeuvre, où beaucoup de problèmes
pratiques et en particulier ceux liés à la gestion des ressources des entreprises où le gestionnaire face
à différentes possibilités, doit les optimiser pour atteindre un objectif spécifique comme bien sûr
la maximisation des bénéfices ,. Dans ce même sens, on peut mentionner que l’importance de la
programmation linéaire est due au fait que dans la plupart des cas ; les problèmes de l’entreprise
pouvant être formalisée comme étant un ensemble d’équations linéaires et par la suite traitées par
l’une des méthodes de la programmation linéaire. On peut citer à titre d’exemple la disponibilité en
quantité limitée de la main-d’oeuvre, les matières premières, les capitaux, etc qu’on veut répartir
d’une façon optimale entre un certain nombre de processus de fabrication.
Généralement pour résoudre ce type de problèmes on approche sur trois étapes principales :
1. La modélisation du problème sous forme d’équations (inéquations) linéaires ;
2. La formulation d’une fonction objective ;
3. La détermination de l’optimum à l’aide d’une approche propre à la programmation linéaire.
2.1 Formalisation
Comme nous l’avons déjà mentionné, avant de procéder à la résolution d’un problème donné,
d’abord il faut le formaliser afin de l’écrire sous une forme canonique. Formellement, on peut le
définir comme suit :
8 Chapitre 2. Programmation linéaire
et x j ≥ 0, j = 1, ..., n
Où ai j , bi et c j sont des constantes connues et les contraintes x j ≥ 0, j = 1, ..., n sont appelées
contraintes de non négativité.
Exemple 2.1 On considère le cas d’un fabricant d’automobiles qui propose deux modèles à la
vente, des grosses voitures et des petites voitures. Les voitures de ce fabricant sont tellement à la
mode qu’il est certain de vendre tout ce qu’il parvient à produire, au moins au prix catalogue actuel
de 1,6 million de dinars pour les grosses voitures, et 1.0 million de dinars pour les petites voitures.
Son problème vient de l’approvisionnement limité de deux matières premières. La construction
d’une petite voiture nécessite l’emploi d’une unité de caoutchouc et d’une unité d’acier, tandis que
celle d’une grosse voiture nécessite une unité de caoutchouc, mais deux unités d’acier. Sachant que
son stock de caoutchouc est de 400 unités et son stock d’acier de 600 unités, la question est combien
doit-il produire de petites et de grosses voitures au moyen de ces stocks afin de maximiser son chiffre
d’affaires ?
En notant le nombre de grosses voitures produites par x1 ,et par x2 le nombre de petites voitures,
et le chiffre d’affaires résultant par z. Le problème se traduit alors sous la forme canonique suivante :
Exemple 2.2 La direction d’une usine de meubles a constaté qu’il y a des temps morts dans
chacun des départements de l’usine. Pour remédier à cette situation, elle décide d’utiliser ces temps
morts pour fabriquer deux nouveaux modèles de bureaux, x1 et x2 . Les temps de réalisation pour
chacun de ces modèles dans les ateliers de sciage, d’assemblage et de sablage ainsi que les temps
libres dans chacun de ces ateliers sont donnés dans le tableau ci-dessous.
x1 x2 Temps libres
Sciage 1 2 20
Assemblage 2 1 22
Sablage 1 1 12
Ces temps représentent le nombre d’heures nécessaires à un homme pour effectuer le travail. Les
profits que la compagnie peut réaliser pour chacun de ces modèles sont de 3000 DA pour x1 et de
2.2 Résolution de problèmes par voie graphique 9
2000 DA pour x2 . La direction désire déterminer combien de bureaux de chaque modèle elle doit
fabriquer pour maximiser son profit. Le problème se traduit alors sous la forme canonique suivante :
Ensuite, en analysant les contraintes on peut facilement déduire que chaque solution est un point
x = (x1, x2) ∈ R2 , encore en considérant la contrainte de positivité, on peut réduire le domaine des
solutions réalisables à R+2 . Puis en représente chacune des trois contraintes restantes par une droite
en réduisant l’espace des solutions réalisables soit du haut ou du bas (à droite ou à gauche en cas
de droite verticale). Pour notre cas, toutes nos contraintes sont des inéquations, alors on élimine les
Exemple de référence
Schéma général de la modélisation
10 Résolution graphique d’un PL
Chapitre 2. Programmation linéaire
Définition et écriture de PL
Utilisation de solveurs
solutions qui sont positionnées en haut de chacune de nous trois droites. La Figure 2.1 illustre un
Résolution
polygonegraphique d’unde PL
convexe où chacun ses points (chacune de ces solutions) l’usine fera un profit positif.
x2
7
Max f (x) = 2x1 + 3x2 6
s.t. x1 + 6x2 ≤ 30 5
2x1 + 2x2 ≤ 15
4x1 + x2 ≤ 24 4
x1 ≥ 0, x2 ≥ 0 3
2
1
0
x1
0 1 2 3 4 5 6 7 8
Exemple
VincentdeMousseau
référence F IGURE 2.1 –
Modélisation en Programmation Linéaire
Schéma général de la modélisation
Résolution graphique d’un PL
Si l’usine fabrique trois exemplaires du modèle p1 et deux exemplaires du modèle p2 , le profit
Définition et écriture de PL
Utilisation de solveurs
sera : z = 2 ∗ 3 + 3 ∗ 2 = 12. Il n’en est pas question de calculer le profit realisable pour chacun des
Résolution
points dugraphique
polygone convexed’un! ! !. PL
x2
7
Max f (x) = 2x1 + 3x2 6
x ∗ = (3, 4.5)
s.t. x1 + 6x2 ≤ 30 5
2x1 + 2x2 ≤ 15
4x1 + x2 ≤ 24 4
x1 ≥ 0, x2 ≥ 0 3
2x
1
2 +
3x
2 =
19
1 .5
0
x1
0 1 2 3 4 5 6 7 8
Vincent Mousseau
F IGURE 2.2 –
Modélisation en Programmation Linéaire
Graphiquement on constate que la droite respectant ces conditions semble etre la droite de la famille
passant par le point-sommet (3 ;4.5).
P1 P2 p3 Quantité disponible
Les carottes 300 300 200 24000 gr
Les courgettes 100 100 200 12000 gr
Les poireaux 300 100 100 12000 gr
Profit 2 DA 1.5 DA 1 DA
Sachant que le commerçant peut écouler tous les paquets de légumes qu’il peut préparer chaque
semaine, trouver combien il doit en préparer de chaque type de paquets de légumes de telle sorte
qu’il arrive à maximiser son profit.
Rappel : Lorsque l’inéquation comporte trois inconnues, la frontière est un plan. Ainsi la frontière
de l’inéquation a1 x1 + a2 x2 + a3 x3 ≤ b est un plan coupant les axes aux points représentant le triplet :
(b/a1 ; 0; 0) (0; b/a2 ; 0) (0; 0; b/a3 ) comme l’illustre la Figure 2.3.
x1
n con
plan :
ma o
60 2x1 ` 1,5x2 ` x3 “ 60 60
xim miq
50 50
isa ue
x1 x1
50 50
30 30 x3
4
10 10 10 10
x2 x2
10 40 50 100 10 40 50 3100
2
F IGURE sera
Nous constatons que la solution 2.5 – optimale sur le point de
coordonnées p20 ; 60 ; 0q ce qui nous permet alors de conclure1 le
problème :
1
Il s’agira de préparer 20 mélanges M1 , 60 mélanges M2 et 0 mélange
2 1 2 3 4 x2
M3 pour un profit maximum de : 3
2.3 Résolution de problèmes par méthode du simplexe 13
Nous constatons que la solution sera optimale sur le point de coordonnées (20; 60; 0) ce qui
nous permet alors de conclure le problème : Il s’agira de préparer 20 paquets de légumes de type P1 ,
60 paquets de légumes de type P2 et 0 paquet de légumes de type P3 pour un profit maximum de :
z = 2 ∗ 20 + 1, 5 ∗ 60 + 0 = 130DA.
Afin de pouvoir utiliser la méthode du simplexe pour résolution, il est nécessaire que les
contraintes du modèle soient exprimées sous forme d’équations linéaires au lieu d’inéquations
que l’on va note forme standard. La mise sous forme standard d’un problème de programmation
linéaire quelconque consiste à transformer les contraintes d’inégalités (mise à part les contraintes
de positivité) en égalité tout en imposant aux variables d’être positives. Pour ce faire, on procède
comme suit : D’abord, on peut facilement transformer une inéquation linéaire ayant un signe : (a)
14 Chapitre 2. Programmation linéaire
≤ en une équation linéaire en additionnant une variable non négative dite variable d’écart ; (b) ≥
en une équation linéaire en retranchant une variable non négative dite variable d’écart. Ensuite, on
remplacer chaque variable xi sans restriction de signe par la différence de deux variables positives :
xi = xi+ − xi avec xi+ ≥ 0 et xi ≥ 0. Si une variable xi est négative, effectuer le changement de variable
xi = −xi .
En revenant à notre exemple sur entreprise Simco, le problème, après l’introduction des variables
d’écart, était le suivant :
3 4 1 0 0 4200
La représentation en tableau sera : 1 3 0 1 0 2400
2 2 0 0 1 2600
100 120 0 0 0 0
Dès maintenat, toutes les propriétés que nous connaissons sur les calculs à propos des matrices
peuvent être alors utilisées.
N ÉTAPE no 1 : Matrice du programme de base no 1 :
3 4 1 0 0 4200
1 3 0 1 0 2400
2 2 0 0 1 2600
100 120 0 0 0 0
t t
3 4 1 0 0 4200 4200/4 = 1050
1 3 0 1 0 2400 2400/3 = 800
2 2 0 0 1 2600 2600/2 = 1300
100 120 0 0 0 0
Le plus petit de ces rapports est 800 et c’est la plus grande valeur qu’on peut attribuer à x2 .
Nous utiliserons donc l’élément de la deuxième ligne deuxième colonne ; encerclons-le pour
le mettre en évidence. Nous l’appellerons pivot de la 1re étape.
3 4 1 0 0 4200
1
® 0 1 0 2400
2 2 0 0 1 2600
100 120 0 0 0 0
Nous devons maintenant annuler les autres éléments de la deuxième colonne. Pour ce faire,
nous effectuons des opérations sur les lignes. En premier lieu, nous allons rendre le pivot
unitaire en divisant les termes de la deuxième ligne par 3 :
3 4 1 0 0 4200
1 1/3 ¬ 0 1/3 0 800
L2 → L2
2
3 2 0 0 1 2600
100 120 0 0 0 0
En deuxième lieu, on soustrait 4 fois la deuxième ligne à la première, 2 fois la deuxième à la
troisième et finalement 120 fois la deuxième a la dernière :
3 − 4/3 4−4 1 − 0 0 − 4/3 0 − 0 4200 − 3200
1/3
¬ 0 1/3 0 800
2 − 2/3 2−2 0 0 − 2/3 1 − 0 2600 − 1600
100 − 40 120 − 120 0 − 0 0 − 40 0 − 0 0 − 120 ∗ 800
Donc, nous obtenons apres avoir simplifié :
1 −4/3
5/3 0 0 1000
1/3 1 0 1/3 0 800
4/3 0 0 −2/3 1 1000
60 0 0 0 −40 −96000
t t
5/3 0 1 −4/3 0 1000 1000/(5/3) = 600
1/3 1 0 1/3 0 800 800/(1/3) = 2400
4/3 0 0 −2/3 1 1000 1000/(4/3) = 750
60 0 0 −40 0 −96000
16 Chapitre 2. Programmation linéaire
Le plus petit rapport étant sur la première ligne, notre pivot sera l’élément de la première ligne,
première colonne. Rendons-le unitaire en le multipliant par 3/5 :
¬ 0 3/5 −4/5 0
600
3 1/3 1 0 1/3 0 800
L1 → L1 4/3 0 0 −2/3 1
5 1000
60 0 0 −40 0 −96000
Effectuons à nouveau les opérations sur les lignes afin d’annuler les autres éléments de la 1re
colonne :
¬ 0 3/5 −4/5 0
600
0 1 −1/5 3/5 0 600
0 0 −4/5 2/5 1 200
0 0 −36 8 0 −132000
Nous n’avons pas encore atteint la solution optimale puisque le coefficient de la variable x4 ,
dans la fonction économique, est positif. Effectuons le rapport de la dernière colonne avec
celle de x4 .
t t
1 0 3/5 −4/5 0 600 600/(−4/5) = −750
0 1 −1/5 3/5 0 600
600/(3/5) = 1000
0 0 −4/5 2/5 1 200 200/(2/5) = 500
0 0 −36 8 0 −132000
Le pivot se situe en 3e ligne, 4e colonne. Rendons-le unitaire en le multipliant par 5/2 :
1 0 3/5 −4/5 0
600
5 0 1 −1/5 3/5 0 600
L3 → L3
0 0 −2
3 ¬ 5/2 500
0 0 −36 8 0 −132000
Effectuons à nouveau les opérations sur les lignes afin d’annuler les autres éléments de la 4e
colonne :
1 0 −1 0
2 1000
0 1
1 0 −3/2 300
0 0 −2 ¬ 5/2 500
0 0 −20 0 −20 −136000
Il n’y a plus de coefficients positifs sur la dernière ligne de la matrice et il n’est donc plus
possible d’accroı̂tre la valeur de la fonction économique.
´1donc le quintuplet :
La solution optimale est
2.4 Exercices
Exercise 2.1 Représenter l’ensemble-solution des inéquations proposées :
´1 1 2 3 4 5 x1 ´1 1 2 3 4 5 x1
´1 ´1
x1 ` 3x2 ď 9 4x1 ` 6x2 ą 12
1
2 1 2 3 4 x2
3
4
18 Chapitre 2. Programmation linéaire
x1
Exercise 2.2 Representer l’ensemble-solution des équations proposées :
Exercice 2.2: Représenter l’ensemble-solution des équations proposées :
x3 x3
4 4
3 3
2 2
1 1
1 1
2 1 2 3 4 x2 2 1 2 3 4 x2
3 3
4 4
x1 x1
6x1 ` 8x2 ` 12x3 “ 24 2x1 ` 3x2 “ 6
2x1 + x2 ≤ 6 x + 2x2 ≤ 8
1
x + x ≥ 0
1 2
x1 + x2 ≤ 6
c) d)
x1 ≥ −1
x1 ≥ 0
x2 ≥ −2 x2 ≥ 0
Exercise 2.5 La compagnie “Plants géants inc.” produit trois types de fertilisants : du 20-8-8 pour
les pelouses, du 4-8-4 pour les jardins et du 4-4-2 pour usages multiples. Les nombres représentent
les pourcentages respectifs de nitrate, de phosphate et de potasse dans chaque sac de fertilisant. La
compagnie dispose de 6’000 kg de nitrate, de 10’000 kg de phosphate et de 4’000 kg de potasse.
Les profits, sur chaque sac de 100 kg, sont respectivement de 3 DA pour le fertilisant de pelouse,
2.4 Exercices 19
Exercise 2.6 Énoncer le programme de base décrivant la situation suivante : Une compagnie prépare
trois assortiments de fruits frais : une boı̂te de luxe, une boı̂te spéciale et une boite ordinaire. La
boı̂te de luxe contient 0,45 kg de dattes, 0,67 kg d’abricots et 0,34 kg de pêches. La boı̂te spéciale
contient 0,56 kg de dattes, 0,34 kg d’abricots et 0,084 kg de pêches. La boı̂te ordinaire contient 0,45
kg de dattes, 0,22 kg d’abricots. La compagnie dispose de 33,6 kg de dattes, 25,2 kg d’abricots et
10,08 kg de pêches. Les profits sur chaque boı̂te de luxe, spéciale et ordinaire sont respectivement de
3 DA, 2 DA et 1.50 DA.
Exercise 2.7 En utilisant la méthode graphique, déterminer dans chaque cas, la solution (valeurs
des variables et de la fonction économique).
b) Maximiser
a) Maximiser f (x1 , x2 ) = 4x1 + 4x2
f (x1 , x2 ) = 3x1 + 3x2
x1 + x2 ≤ 13
x1 + 4x2 ≤ 12
5x + 2x ≤ 50
1 2
avec les contraintes : 2x1 + x2 ≤ 10 avec les contraintes :
4x1 + 5x2 ≤ 60
où x1 ≥ 0 pour i = 1; 2
où x ≥ 0 pour i = 1; 2
i
c) Maximiser
d) Minimiser
f (x1 , x2 ) = 3x1 + 4x2
f (x1 , x2 ) = 5x1 + 7x2
x1 + 2x2 ≤ 18
x1 + 2x2 ≥ 8
x1 + x2 ≤ 10
2x + x ≥ 8
1 2
avec les contraintes : 3x1 + x2 ≤ 20 avec les contraintes :
x1 + x2≥6
4x1 + x2 ≤ 26
où x ≥ 0 pour i = 1; 2
i
où 3x1 ≥ 0 pour i = 1; 2
Exercise 2.8 Dans un gymnase, un groupe d’élèves se charge de la distribution de pains au chocolat
et de croissants lors de la pause de 10 heures. Pour pouvoir satisfaire la demande, ils doivent disposer
au minimum de 108 pains au chocolat et de 96 croissants. Deux boulangers proposent pour le meme
prix :
— l’un le lot A comprenant 12 pains au chocolat et 8 croissants,
— l’autre le lot B composé de 9 pains au chocolat et 12 croissants.
Déterminer le nombre de lots A et le nombre de lots B qui doivent être achetés pour satisfaire la
demande au moindre coût.
20 Chapitre 2. Programmation linéaire
Exercise 2.9 Un atelier de confection fabrique en série deux modèles de chemises. Une chemise
du premier modèle nécessite 1 mètre de tissu, 4 heures de travail et rapporte 24 DA. Une chemise
du deuxième modèle exige 2 mètres de tissu, 2 heures de travail et rapporte 16 DA. Sachant que
l’atelier dispose quotidiennement de 150 mètres de tissu et de 400 heures de travail, et qu’il peut
vendre toute sa fabrication, combien de lots de 10 chemises de chaque modèle faut-il fabriquer pour
obtenir un bénéfice maximal ?
Exercise 2.10 Résoudre a l’aide de la méthode du simplexe les problèmes linéaires suivants :
b) Maximiser
a) Maximiser f (x1 , x2 ) = 5x1 + 8x2
f (x1 , x2 ) = 3x1 + 3x2
x1 + x2 ≤ 13
x1 + 4x2 ≤ 12
5x + 2x ≤ 50
1 2
avec les contraintes : 2x1 + x2 ≤ 10 avec les contraintes :
4x 1 + 5x2 ≤ 60
où x1 ≥ 0 pour i = 1; 2
où x ≥ 0 pour i = 1; 2
i
d) Maximiser
c) Maximiser
f (x1 , x2 ) = 3x1 + 4x2
f (x1 , x2 ) = 4x1 + 4x2
x1 + 2x2 ≤ 18
x1 + x2 ≤ 13
x1 + x2 ≤ 10
5x + 2x ≤ 50
1 2
avec les contraintes : avec les contraintes : 3x1 + x2 ≤ 20
4x1 + 5x2 ≤ 60
4x1 + x2 ≤ 26
où x ≥ 0 pour i = 1; 2
1
où xi ≥ 0 pour i = 1; 2
e) Maximiser f) Maximiser
f (x1 , x2 , x3 ) = 3x1 + 3x
2 + 3x3 f (x1 , x2 , x3 ) = 4x1 + 2x
2 + 3x3
x1 + x2 + 2x3 ≤ 8
x1 + x2 + 2x3 ≤ 8
x1 + 2x2 + x3 ≤ 8 x1 + 2x2 + x3 ≤ 8
avec les contraintes : 2x1 + x2 + x3 ≤ 8 avec les contraintes : 2x1 + x2 + x3 ≤ 8
x1 + x2 + x3 ≤ 5 x1 + x2 + x3 ≤ 5
où x1 ≥ 0 pour i = 1; 2; 3 où x1 ≥ 0 pour i = 1; 2; 3
Exercise 2.11 Une entreprise fabrique deux types de ceintures A et B. Le type A est de meilleure
qualité que le type B. Le bénéfice net est de 2 DA pour le type A et de 1,50 DA pour le type B. Le
temps de fabrication de A est deux fois plus élevée que le temps de fabrication de B. Si toutes les
ceintures étaient de type B, l’entreprise pourrait en fabriquer 1 000 par jour. L’approvisionnement en
cuir est suffisant pour 800 ceinturespar jour (type A ou B). Enfin, on dispose de 400 boucles de type
A et de 700 boucles de type B chaque jour.
2.4 Exercices 21
Exercise 2.12 Si dans le problème de fabrication de l’entreprise Simco (page 13), le bénéfice pour
le modèle Elec-100 est de 90 DA au lieu de 100 DA :
a) Quel est alors le programme optimal de fabrication ?
b) Et si l’on propose le programme suivant : x1 =1’000 ; x2 = 300 ; x4 = 500 Que pouvez-vous
alors affirmer ?
3. Théories des graphes
L’histoire de la théorie des graphes a débuté avec les travaux d’Euler au XVIIIème siècle avec
l’étude du problème des ponts de Königsberg : les habitants de Königsberg se demandaient s’il était
possible, en partant d’un quartier quelconque de la ville, de traverser tous les ponts sans passer deux
fois par le même et de revenir à leur point de départ. La Figure 3.1 illustre la ville de Königsberg à
gauche et à droite le graphe qui modélise la situation.
La théorie des graphes s’est alors développée dans diverses disciplines telles que la chimie, la
biologie, les sciences sociales. Depuis le début du XXème siècle, elle constitue une branche à part
entière des mathématiques, grâce aux travaux de Konig, Menger, Cayley puis de Berge et d’Erdos.
Nous donnons dans ce chapitre les principales définitions de la théorie des graphes.
Pour avoir les idées plus claires, nous allons considérer la situation suivante :
Exemple 3.1 Une entreprise qui fabrique six sortes de produits chimiques différents (notés P1 ,
P2 , P3 , P4 , P5 , P6 ) doit en assurer le transport par train. Ces produits sont en petite quantité, mais ne
peuvent être tous placés dans le même wagon pour des raisons de sécurité (le contact entre certains
de ces produits peut provoquer des réactions explosives) :
La question qui se pose à ce niveau est : combien de wagons sont-ils nécessaires au transport des
six produits ? En d’autres termes, l’idée ici est de relier par une arête les sommets représentant des
produits incompatibles : le graphe obtenu est appelé graphe d’incompatibilité comme l’illustre la
Figure 3.2.
P1
P2 P6
P3 P5
P4
F IGURE 3.2 –
Par contre la question en termes de propriétés du graphe, se pose maintenant ainsi : combien de
3.1 Notions de base 25
familles de sommets doit-on créer au minimum, si l’on veut que deux sommets liés par une arête
n’appartiennent jamais à la même famille ?
De façon générale, la complexité structurelle des graphes est liée au fait qu’un graphe permet
d’encoder deux informations : l’information représentée par les sommets, ainsi que celle représentée
par les arêtes (arcs). Un graphe G est un couple d’ensembles V (G) = {v1 , v2 , v3 , ...}, et E(G) =
{e1 , e2 , e3 , ...}. Les éléments du premier ensemble sont notés sommets (ils sont aussi appelés points
ou noeuds) et ceux du deuxième ensemble sont notés les arêtes (arcs). Alors nous pouvons définir un
graphe non orienté comme suit :
Définition 3.1.1 — Graphe non orienté. G = (V, E) se compose d’un ensemble de sommets
V et d’un ensemble d’arêtes E ⊆ V ×V reliant deux sommets. De façon équivalente, on dit que
V (G) et E(G) sont des ensembles contenant respectivement les sommets et les arêtes du graphe
G.
Par contre, un graphe est dirigé (orienté), si ses arêtes possèdent un ordre d’orientation entre les
deux sommets de chacune, des arêtes c.-à-d. un sommet initial u et un sommet terminal v, c.-à-d.
(u, v) 6= (v, u).
Définition 3.1.2 — Graphe orienté. Un graphe orienté G = (V, E) se compose d’un ensemble
V dont les éléments sont les sommets du graphe, et d’un ensemble E dont les éléments, les arcs du
graphe, sont des couples d’éléments de V . Un arc (x, y) ∈ E est aussi indifférement noté x −→ y.
Les boucles sont autorisées, mais pas les arcs parallèles.
Graphiquement, les sommets sont généralement représentés par des points, et les arêtes (arcs)
e = (u, v) par une droite (flèche) joignant les deux points u et v. À titre d’exemple, la Figure 3.3
illustre (a) un graphe orienté et (b) un graphe non orienté.
a b a b
c c
e d e d
(a) (b)
Cependant, une arête (arc) e = (u, u) dont les extrémités coı̈ncident est appelé une boucle. Un
26 Chapitre 3. Théories des graphes
tel type de graphe ayant une arête reliant un sommet à lui-même est noté un pseudo-graphe. Par
contre, un graphe dont deux sommets sont reliés par plusieurs arêtes est un multigraphe. La Figure
3.4 illustre des exemples d’un pseudo-graphe (le graphe à gauche) et un multigraphe (le graphe à
droite).
v1 v2 v1 v2
v4 v3 v4 v3
F IGURE 3.4 –
Encore, un graphe qui est ni un multigraphe, ni un pseudo graphe est signé comme un graphe
simple. Avant d’en terminer avec cette section, nous mentionnons qu’un graphe est noté étiqueté
G(V, E, Σ, L) en lui associant un ensemble Σ d’étiquettes et une fonction L : V ∪ E −→ Σ qui assigne
les étiquettes et ∈ Σ aux ensembles d’arêtes (graphe pondéré) et de sommets V et E. Où un graphe
G(V, E) est un graphe à étiquetage d’arêtes (sommets) non redondant si et seulement si l’étiquette de
chaque arête (sommet) survient au plus une fois.
Avant d’enfinir avec cette sous-section, nous évoquons la notion de sous graphes qui va nous
servir pour la suite de ce cours. Un sous graphe est un graphe contenu dans un autre graphe.
Formellement on peut donner la définition suivante :
0 0 0
Définition 3.1.3 — Sous graphe. Soit G = (V, E) un graphe. Le graphe G = (V , E ) est un
0 0 0
sous graphe de G, si V ⊆ V et E ⊆ E. Autrement dit, on obtient G en enlevant une ou plusieurs
sommets et/ou arêtes au graphe G.
Alors qu’un sous graphe est noté partiel s’ il admit le même ensemble de sommets que le graphe
qui le contient.
Définition 3.1.4 — Graphe partiel. Soit G = (V, E) un graphe. Le graphe G = (V, E ) est un
graphe partiel de G, si E est inclus dans E. Autrement dit, on obtient G en enlevant une ou
plusieurs arêtes au graphe G.
Par contre, un sous-graphe induit est un sous-graphe défini par un sous-ensemble de sommets.
0
Définition 3.1.5 — Sous-graphe induit. Soit G = (V, E) un graphe. Le graphe G = (V , E ) est
un graphe sous-graphe induit de G, si V est inclus dans V et pour tout couple (x, y) de sommets
0
de V , x est connecté à y dans G si et seulement si x est connecté à y dans G.
sommet courant. La Figure 3.5 illustre un exemple pour qui le voisinage est désigné ci-contre.
v1 v2 NG (v1 ) = {v2 , v3 }
NG (v2 ) = {v1 , v4 }
NG (v3 ) = {v1 , v4 }
v4 v3 NG (v4 ) = {v2 , v3 }
G
F IGURE 3.5 –
Cependant, pour le cas où le graphe est orienté on définit deux concepts : les prédécesseurs et les
successeurs. Les prédécesseurs d’un sommet sont la liste des sommets depuis lesquels on peut arriver
au sommet courant. Les successeurs du sommet sont les sommets auxquels on peut accéder à partir
du sommet courant. La Figure 3.6 illustre un exemple pour qui le voisinage est désigné ci-contre.
v1 v2 PredG (v1 ) = 0,
/ SuccG (v1 ) = {v2 , v3 }
PredG (v2 ) = {v1 }, SuccG (v2 ) = {v4 }
PredG (v3 ) = {v1 }, SuccG (v3 ) = {v4 }
v4 v3 PredG (v4 ) = {v2 , v3 }, SuccG (v4 ) = 0/
G
F IGURE 3.6 –
v1 v2 dG (v1 ) = 4
dG (v2 ) = 2
dG (v3 ) = 4
v4 v3 dG (v4 ) = 2
G
F IGURE 3.7 –
Pour un graphe orienté, on définit le degré comme étant la somme de deux demi-degrés, le
demi-degré extérieur noter d + et le demi-degré intérieur noter d − . Le demi-degré intérieur est le
cardinal des prédécesseurs du sommet. Par analogie, le demi-degré extérieur est le cardinal des
28 Chapitre 3. Théories des graphes
successeurs du sommet. La Figure 3.8 illustre un graphe orienté pour qui les degrés de sommets sont
désignés ci-contre.
v1 v2 d − G (v1 ) = 0, d + G (v1 ) = 2
d − G (v2 ) = 2, d + G (v2 ) = 2
d − G (v3 ) = 1, d + G (v3 ) = 1
v4 v3 d − G (v4 ) = 2, d + G (v4 ) = 0
G
F IGURE 3.8 –
Théorème 3.1.1 La somme des degrés des sommets d’un graphe est égale à deux fois le nombre
d’arêtes : ∑vi ∈G(V ) d(vi ) = 2 ∗ |G(E)|.
Démonstration. En effet, chaque paire {vi , v j } de G(V ) est comptée deux fois, une fois pour d(vi )
et une seconde fois pour d(v j ). Dans le cas d’une boucle en vi , celle-ci contribue pour 2 dans le
degré du sommet vi .
a b
c d
F IGURE 3.9 –
a b
d c
F IGURE 3.10 –
Pour le cas des graphes orientés, nous procédons de la même manière sauf que nous devons
faire attention à l’orientation. Par conséquent, on mit un “ind” à la position AD[i, j] que lorsqu’on
veut indiquer que le sommet i est adjacent au sommet j avec une orientation de i vers j (i → j) et
le nombre d’arcs est ind. Formellement, on peut définir la matrice d’adjacence en question comme
suit :
Définition 3.1.8 Soit G(V, E) un graphe orienté : avec V = {v1 , v2 , ..., vn }. La matrice d’adjacence
du graphe G est la matrice AD(G) dont les coefficients sont définis par :
(
n, s’il existe n arcs de vi vers v j .
ai, j =
0, autrement.
x2 x4
x1 x3
F IGURE 3.11 –
Listes d’adjacences
On peut aussi représenter un graphe simple en donnant pour chacun de ses sommets la liste
des sommets auxquels il est adjacent. Ce sont les listes d’adjacences. Autrement dit, pour chaque
sommet, on stocke la liste des sommets adjacents à celui-ci. Afin d’avoir une idée bien claire en ce
qui concerne ces listes d’adjacences l’exemple sur la Figure 3.12 illustre un graphe non orienté avec
la liste d’adjacences qui lui correspond.
3.1 Notions de base 31
v1 v5 v1 : {v3 , v4 , v5 }
v2 : {v3 }
v4
v3 : {v1 , v2 , v4 , v5 }
v3
v4 : {v1 , v3 , v5 }
v2 v5 : {v1 , v3 , v4 }
F IGURE 3.12 –
v1
e1
v2
e3
e2 v5
e5
v3
e4
v4
F IGURE 3.13 –
On remarque qu’une chaı̂ne ne change pas en inversant l’ordre des éléments pour le cas de ce
graphe non orienté. Ainsi, les chaı̂nes (v1 , e3 , v3 , e4 , v4 ) et (v4 , e4 , v3 , e3 , v1 ) sont identiques. Alors à
partir de cette observation, on peut dire que pour le cas non orienté, il est clair qu’une chaı̂ne de vi à
v j induit une chaı̂ne de v j à vi , ce qui n’est pas le cas pour les graphes orienté.
Une chaı̂ne est dite fermée si ses deux extrémités coı̈ncident (c.-à-d., vi = v j ). Lorsque c’est
le cas, tout sommet de la chaı̂ne peut être considéré comme son extrémité. Cette chaı̂ne fermée
est connue comme cycle ; en fait un cycle n’a “ni queue ni tête”, la numérotation est une simple
32 Chapitre 3. Théories des graphes
commodité. La longueur d’un cycle est le nombre d’arêtes qui le composent ; où une boucle est un
cycle de longueur 1. Dans le graphe précédent, la chaı̂ne (v1 , e1 , v2 , e2 , v3 , e3 , v1 ) est un cycle.
3.1.5 Connexité
La définition de la connexité diffère d’un graphe non orienté à celle d’un graphe orienté. Nous
allons nous concentrer d’abord au cas non orienté.
Définition 3.1.9 — Connexité (graphe non orienté). Un graphe non orienté est connexe s’il
y a une chaı̂ne entre n’importe quelle paire de sommets distincts du graphe.
a b a b
c c
f d e
g e f e
F IGURE 3.14 –
Cependant, un graphe qui n’est pas connexe est l’union de deux ou de plusieurs sous-graphes
connexes, chaque paire de ceux-ci n’ayant pas de sommet en commun. Les sous-graphes connexes
disjoints sont les composantes connexes du graphe.
Exemple 3.5 Dans l’exemple précédent (i.e., Figure 3.14), le graphe de droite contient deux
composantes connexes : la première est formée des sommets a, b et c et la deuxième est formée des
sommets d, e et f.
Pour le cas des graphes orientés, un graphe est dit connexe si son graphe non orienté associe est
bien connexe. Pour un graphe orienté connexe, on s’intéresse est-ce que ce dernier est fortement ou
faiblement connexe. Pour avoir les idées plus claires, on considère la définition suivante :
Définition 3.1.10 — Connexité (graphe orienté). Un graphe orienté est fortement connexe
s’il existe un chemin du sommet a au sommet b et du sommet b au sommet a, quels que sont les
sommets représentés par a et b dans le graphe. Un graphe orienté est faiblement connexe s’il y
a une chaı̂ne entre n’importe quelle paire de sommets dans le graphe si l’on ne considère plus
l’orientation des arcs.
À titre d’exemple soient les deux graphes présentés sur la Figure 3.15 :
Le graphe non orienté associe au graphe orienté de droite est bien connexe. Donc on peut dire
que notre graphe est faiblement connexe. Encore on peut déduire qu’il est fortement connexe parce
3.2 Quelques graphes remarquables 33
a b a b
c c
e d e d
F IGURE 3.15 –
qu’il existe un chemin entre n’importe quelle paire de sommets dans ce graphe orienté.
Pour le graphe de gauche, nous pouvons vérifier qu’il existe une chaı̂ne entre n’importe quelle
paire de sommets du graphe si l’on ne considère pas l’orientation. Il est donc connexe. Cependant, il
n’est pas fortement connexe, car par exemple, il n’existe pas de chemin orienté de a vers b. Donc, il
est faiblement connexe.
D’abord, nous commençons par l’un des cas les plus remarquables qui ce lui de graphes complets.
Ces derniers peuvent être définis comme suit :
Définition 3.2.1 — graphe complet. Un graphe G(V, E) est complet si chaque sommet du
graphe est relié directement à tous les autres sommets.
Un graphe complet est noté par Ki où le i désignera le nombre de sommets. La Figure 3.16
illustre des exemples de graphes complets ayant de 1 à 5 sommet.
K1 K2 K3 K4 K5
Un autre cas particulier très intéressant est bien le cas de graphes bipartis. Ces derniers peuvent
être définis comme suit :
34 Chapitre 3. Théories des graphes
Définition 3.2.2 — graphe biparti. Un graphe est biparti si ses sommets peuvent être divisés
en deux ensembles X et Y , de sorte que toutes les arêtes du graphe relient un sommet dans X à un
sommet dans Y .
v1 v3 v5
v2 v4
F IGURE 3.17 –
La Figure 3.17 illustre un exemple d’un graphe biparti, où on a X = {v1 , v3 , v5 } et Y = {v2 , v4 },
ou vice versa).
Comme nous l’avons vu pour le cas des graphes complets simples, ceux bipartis complets aussi
serons noté par un Ki, j où i et j désigneront la taille de la partie X et de Y respectivement. La Figure
3.18 illustre deux exemples de graphes bipartis complets.
v1 v3 v5 v1 v3 v5 v7
v2 v4 v2 v4 v6
K2,3 K3,4
F IGURE 3.18 –
Maintenant nous passons à un cas très important qu’on le rencontrera souvent lors de notre vie
quotidienne. Ce type de graphes sont des graphes sans cycles connus comme arbres, et vu leurs
importances, nous allons leurs consacrer en entier la section suivante.
En d’autres termes, les arbres sont les graphes acycliques qui ont suffisamment d’arêtes pour
rester connexes, ou encore, les graphes connexes qui ont suffisamment peu d’arêtes pour rester
acycliques. Le théorème suivant précise ces considérations :
Théorème 3.3.1 Les affirmations suivantes sont equivalentes pour tout arbre A a n sommets.
1. A est sans cycle et connexe,
3.3 Arbre et arborescence 35
G1 G2 G3 G4
F IGURE 3.19 –
Pour le cas de premier graphe G1 il claire que ce n’est pas un arbre vu qu’il possède un cycle,
par contre le G2 il ne possède pas de cycle, mais il n’est pas un arbre vu qu’il n’est pas connexe. Ce
dernier cas est bien connu comme forêt d’arbres vu qu’il est composé de plusieurs composantes
connexes qui sont des arbres. Une forêt d’arbres peut être définie comme suit :
Définition 3.3.2 — forêt. Une forêt est un graphe dont chaque composante connexe est un arbre.
Une autre notion très importante liée aux arbres est celle de l’arbre couvrant. Il consiste du sous
graphe partiel connexe sans cycle de taille maximale (arbre maximal) qu’on peut définir comme
suit :
Définition 3.3.3 — arbre couvrant. Un arbre couvrant (aussi appelé arbre maximal) est un
graphe partiel qui est aussi un arbre.
La Figure 3.20 illustre un exemple d’un graphe non orienté G1 ainsi que son arbre couvrant AC .
Pour le cas de graphes ayant les arêtes étiquetées, et comme tout graphe G non orienté et connexe
admet un arbre couvrant, l’ensemble des poids (valeurs) de ses arbres couvrants est une partie non
vide de N. Il admet donc un element minimum et un maximum. Les arbres couvrants de G dont le
poids realise ce minimum (maximum) sont appeles arbres couvrants minimaux (maximaux) de G.
La Figure 3.21 illustre un graphe non orienté connexe G1 ainsi que ses arbres couvrants minimaux
ACmin et maximal ACmax .
La recherche d’un arbre couvrant minimal (maximal) d’un graphe non orienté connexe et étiqueté
est un problème classique, pour lequel existent plusieurs algorithmes. Nous allons en évoquer les
plus célèbres parmi eux qui sont l’algorithme de Kruskal (Algorithme 1) et l’algorithme de Prim
(Algorithme 2).
Pour avoir les idées plus claires, au niveau de la Figure 3.22, nous donnons un exemple du
36 Chapitre 3. Théories des graphes
v1 v1
v2 v2
v5 v5
v3 v3
v4 v4
G1 AC
F IGURE 3.20 –
v1 v1 v1
6 6
v2 v2 v2
5 5 5
v5 v5 v5
4 4
v3 3 v3 3 v3 3
2 2
1 1
v4 v4 v4
G1 ACmin ACmax
F IGURE 3.21 –
1: F = 0/ ;
2: trier les arêtes de G par ordre croissant (décroissant) de pondération ;
3: for chaque arête a, par ordre de pondération croissante (décroissante) do
4: if F ∪ a est acyclique then
5: F = F ∪a;
6: end if
7: end for
8: return F ;
dérobement de l’algorithme de Kruskal sur le graphe connexe étiqueté (pondéré) G1 afin de récupérer
l’arbre couvrant de poids minimal associe. Les instantanés Ai où i ∈ [0..5] illustre le niveau de
construction à chacune des itérations de l’algorithme. D’abord, on commence par un graphe A0 ayant
tous les sommets de G1 sauf qu’ils sont tous isolés les uns des autres. Ensuite, comme l’instruction
deux de l’algorithme trier les arêtes de G1 selon un ordre croissant des valeurs (poids), on commence
3.3 Arbre et arborescence 37
les assertions des arêtes. Les graphes A1 ..A4 illustrent les instantanées correspondantes à l’ajout des
arêtes 1, 1, 2 et 2. Les arêtes de poids 3 et 5 n’ont pas pu être placées, car elles auraient formé un
cycle. L’algorithme s’est arrêté dès que cinq arêtes ont été placées. L’instantanée A5 illustre l’arbre
couvrant de poids minimal associe au graphe G1 . Toute arête supplémentaire aurait créé un cycle.
5 5
v1 v2 v3 v1 v2 v3 v1 v2 v3
3 2 4 2 1 1
v4 v5 v6 v4 v5 v6 v4 v5 v6
1 3
G1 A0 A1
v1 v2 v3 v1 v2 v3 v1 v2 v3
1 2 1 2 2 1
v4 v5 v6 v4 v5 v6 v4 v5 v6
1 1 1
A2 A3 A4
v1 v2 v3
2 4 2 1
v4 v5 v6
1
A5
F IGURE 3.22 –
Prim est un autre algorithme célèbre pour la découverte d’un arbre couvrant de poids minimum
au sein d’un graphe connexe et pondéré non orienté. Cet algorithme a été développé en 1930 par le
mathématicien tchèque Vojtech Jarnik puis a été redécouvert et republié par Robert C. Prim et Edsger
W. Dijkstra en 1959. L’algorithme consiste à faire croı̂tre un arbre depuis un sommet. On commence
avec un seul sommet puis à chaque étape, on ajoute une arête de poids minimum ayant exactement
une extrémité dans l’arbre en cours de construction. En effet, si ses deux extrémités appartenaient
déjà à l’arbre, l’ajout de cette arête créerait un deuxième chemin entre les deux sommets dans l’arbre
38 Chapitre 3. Théories des graphes
Afin de construire à la fin l’arbre couvrant de poids minimum, l’algorithme de Prim (Algorithme
2) suit le processus suivant : Il commence par un arbre couvrant ACmin équivalant au plus petit (poids
de l’arête) sous graphe connexe de taille deux , l’idée consiste réellement à gérer deux ensembles
de sommets le premier contiendra les sommets déjà ajoutés à l’arbre V (ACmin ) et le second ceux qui
n’ont pas encore été traités V (ACmin ). Donc, par répétition un sommet de l’ensemble deux est basculé
vers l’ensemble un jusqu’à ce que tous les sommets seront affectés au premier ensemble V (ACmin ). À
chaque itération toutes les arêtes connectent (noté cut) deux sommets des deux ensembles V (ACmin )
et V (ACmin ) sont récupérées, ensuite l’arête de taille minimale sera sélectionnée et le sommet de son
extrémité qu’est dans V (ACmin ) sera déplacé vers l’ensemble V (ACmin ). Ce procédé sera répété jusqu’à
ce que tous les sommets seront déplacés de V (ACmin ) vers V (ACmin ).
En appliquant l’algorithme de Prim sur le Graphe G1 de la Figure 3.22, la Figure 3.23 illustre
un exemple du déroulement de cet algorithme. Afin de récupérer l’arbre couvrant de poids mi-
nimal associe. Les instances Ai où i ∈ [0..4] illustre le niveau de construction à chacune des
itérations de l’algorithme. D’abord, on commence par un graphe A0 ayant deux sommets de G1
avec V (ACmin ) = {v3 , v6 } et V (ACmin ) = {v1 , v2 , v4 , v5 }. Pour le A1 le cut a ce niveau est composé de
{(v2 , 5, v3 ), (v3 , 2, v5 ), (v5 , 3, v6 )}, par conséquent la mise à jour des deux ensemble sera comme suit
V (ACmin ) = {v3 , v6 , v5 } et V (ACmin ) = {v1 , v2 , v4 }. Ensuite, au niveau du A2 , V (ACmin ) = {v3 , v6 , v5 , v4 }
et V (ACmin ) = {v1 , v2 }. Encore par rapport au A3 , V (ACmin ) = {v3 , v6 , v5 , v4 , v1 } et V (ACmin ) = {v2 }.
Enfin, V (ACmin ) = {v3 , v6 , v5 , v4 , v1 , v2 } et V (ACmin ) = 0.
/ L’arbre couvrant de poids minimal ACmin
associe au graphe G1 est celui obtenu à l’itération A4 .
3.3 Arbre et arborescence 39
5 5
v1 v2 v3 v3 v3
3 2 4 2 1 1 2 1
v4 v5 v6 v6 v5 v6
1 3
G1 A0 A1
v3 v1 v3 v1 v2 v3
2 1 2 2 1 2 4 2 1
v4 v5 v6 v4 v5 v6 v4 v5 v6
1 1 1
A2 A3 A4
F IGURE 3.23 –
Comme nous venons de le constater jusqu’à maintenant on n’a pas parlé d’orientation au niveau
des arbres. À ce niveau si on tente de transcrire une définition des arbres dans le cadre orienté par :
“graphes orientés fortement connexes et sans circuit” est vouee à l’échec puisque de tels graphes
n’existent pas. Par conséquent, pour définir une telle notion d’arbre orienté, on doit plutôt parler
d’arborescence. Cette notion d’arborescence peut être définie comme suit :
Définition 3.3.4 — Arborescence. Une arborescence est un couple (G, r) constitué d’un graphe
orienté et d’un sommet de ce graphe, tel que pour tout x ∈ V (G), il existe un unique chemin de r
à x.
En d’autres termes, si notre arbre possède un sommet particulier r qui peut nous mener vers
tous les autres sommets, donc cet arbre est qualifié d’arborescence. Le théorème suivant donne deux
caractérisations des arborescences :
Théorème 3.3.2 Soient G un graphe orienté et r un sommet de G. Les affirmations suivantes
sont equivalentes :
1. G est une arborescence de racine r,
2. G est connexe et d − (r) = 0 et ∀ x 6= r, d − (x) = 1,
3. G est sans circuit et d − (r) = 0 et ∀x 6= r, d − (x) = 1.
À titre d’exemple la Figure 3.24 illustre deux graphes orientés G1 et G2 , on constate que le
premier est bien un cas d’arborescence où sa racine est r = c. Par contre le second il ne l’est pas
parce qu’ aucun de ses sommets ne peut être designer comme racine r et qui en commençant à partir
de lui on peut atteindre tous les autres.
40 Chapitre 3. Théories des graphes
a b
e c f g a d e
b c
G1 G2
F IGURE 3.24 –
Techniquement, un graphe est dit eulérien s’il possède un cycle eulérien. Un graphe est dit
hamiltonien s’il possède un cycle hamiltonien.
Définition 3.4.1 Un chemin eulérien est un chemin dans le graphe qui passe par toutes les arêtes
juste une seule fois. Si ce chemin est fermé, on parlera de cycle eulérien.
Définition 3.4.2 Un chemin hamiltonien est un chemin dans le graphe qui passe par tous les
sommets une et une seule fois. Si ce chemin est fermé (c.-à-d., il existe une arête reliant le sommet
de départ au sommet d’arrivée), on parlera de cycle hamiltonien.
Il existe un critère de base qui permet de déterminer si un multigraphe contient un cycle eulérien.
Ce critère peut être donné comme suit : Si tous les sommets d’un graphe sont de degré pair, alors ce
graphe contient un cycle eulérien. Par conséquent, on peut donner le théorème suivant :
3.5 Coloration 41
Par contre, un multigraphe connexe admet un chemin eulérien et non un cycle eulérien si et
seulement s’il a exactement deux sommets de degré impair. Alors le graphe est semi-eulérien.
Contrairement au cas eulérien, il n’existe pas de critères pour démontrer l’existence de chemins
ou de cycles hamiltoniens, on possède uniquement une implication pour une classe donnée de
graphes simples. Alors un graphe simple G admet un cycle est hamiltonien si |G(V )| ≥ 3 sommets
et pour chacun des sommets d(v) ≥ n/2.
a b a b a g f e
e e
d c d c b c d
G1 G2 G3
Exemple 3.6 Soit les trois graphes sur le Figure 3.4, le tableau ci-dessus présente les ca-
ractéristiques de ces derniers.
3.5 Coloration
La coloration d’un graphe (c.-à-d. coloration des sommets) consiste généralement à affecter à
tous les sommets de ce graphe une couleur de telle sorte que deux sommets adjacents n’aient jamais
la même couleur. Le nombre minimum de couleurs nécessaires à la coloration d’un graphe G est
noté le nombre chromatique χ(G). Ce nombre est le plus petit nombre de couleurs permettant de
colorier tous les sommets du graphe sans que deux sommets adjacents soient de la même couleur.
On peut aussi voir une coloration avec k couleurs comme une partition de l’ensemble des sommets
en k stables. Un sous-ensemble S d’un graphe non orienté G est stable s’il ne comprend que des
sommets non adjacents deux à deux.
Comme il n’existe pas de formule donnant le nombre chromatique d’un graphe. Le plus souvent
on déterminera ce nombre par encadrement (il est plus petit que... et plus grand que...), et en exhibant
une coloration utilisant un nombre de couleurs egal au minorant (borne inferieure de l’encadrement).
42 Chapitre 3. Théories des graphes
Par rapport à la majoration, si S1 ,..., Sk est une partition stable d’un graphe simple G alors
χ(G) ≤ k. Encore, χ(G) ≤ n + 1 − |max(Si )| où max(Si ) est le plus grand stable au sein de G. Enfin,
χ(G) ≤ r + 1, où r est le plus grand degré des sommets de G.
Par rapport à la minoration, le nombre chromatique d’un graphe est supérieur ou égal à celui
de chacun de ses sous-graphes. Encore, le nombre chromatique du graphe sera supérieur ou égal à
l’ordre de sa plus grande clique que l’on note ω(G), alors ω(G) ≤ χ(G).
v1 v6
v2 v7 v5
v3 v4
F IGURE 3.25 –
Exemple 3.7 Soit le graphe illustré au niveau de le Figure 3.25, ce graphe G contient plusieurs
cliques d’ordre 3, donc χ(G) ≥ 3.
La partition des sommets de G en sous-ensembles stables : S1 = {v1 , v4 }, S2 = {v2 , v6 , v7 }, S3 =
{v3 , v5 }. Donc χ(G) ≤ 3, car pour chacun des stables correspondra une couleur. On en déduit que
χ(G) = 3.
Étape 1 : Classer les sommets du graphe dans l’ordre décroissant de leur degré, et attribuer à chacun des
sommets son numéro d’ordre dans la liste obtenue. On obtient une liste ordonnée de sommets
X1 , X2 , ..Xn tel que : d(X1 ) ≥ d(X2 )... ≥ d(Xn ).
Étape 2 : En parcourant la liste dans l’ordre, attribuer une couleur non encore utilisée au premier sommet
non encore coloré, et attribuer cette même couleur à chaque sommet non encore coloré et non
adjacent à un sommet de cette couleur.
Étape 3 : S’il reste des sommets non colorés dans le graphe, revenir à l’étape 2. Sinon, la coloration est
terminée.
3.6 Plus courts chemins 43
a b
c d
e f
F IGURE 3.26 –
Exemple 3.8 En appliquant l’algorithme de Welch et Powell au graphe G de la Figure 3.26, nous
obtenons les résultats suivants :
— Liste ordonnée :{b, c, d, e, a, f }
1ère couleur : pour les sommets b et e.
En plus de cette coloration des sommets, la coloration des arêtes d’un graphe consiste à affecter
à toutes les arêtes de ce graphe une couleur de telle sorte que deux arêtes adjacentes ne portent pas la
même couleur. L’indice chromatique χ du graphe G est le plus petit entier k pour lequel il existe une
coloration des arêtes.
Alors pour pouvoir chercher un tel chemin il faut modéliser la carte routière comme un graphe
pondéré qui sera exploré pour enfin le récupérer. Edgser Wybe Dijkstra (1930-2002) a proposé en
1959 un algorithme qui permet de calculer le plus court chemin entre un sommet particulier et tous
les autres.
44 Chapitre 3. Théories des graphes
Où L(xi ) est le poids du plus court chemin allant de 1 au sommet xi , ∂ (xi , x j ) est le poids de
l’arête entre xi et x j , et p(x j ) désigne le prédécesseur de x j pour lequel on a calculé L(x j ).
2
A C
3 3
3
E 1 1 S
1 1
B D
5
F IGURE 3.27 –
Exemple 3.9 Soit le graphe présenté au niveau de la Figure 3.27, en appliquant l’algorithme de
3.6 Plus courts chemins 45
Dijkstra pour determiner le plus court chemin entre E et S, on peut proposer la resolution à l’aide du
tableau suivant :
E A B C D S
0 ∞ ∞ ∞ ∞ ∞ E
3/E 1/E ∞ ∞ ∞ EB
2/B 4/B 6/B ∞ EBA
4/B,A 6/B ∞ EBAC
5/C 7/C EBACD
6/D EBACDS
On peut détecter la présence d’un cycle de poids négatif de la façon suivante : il y a un cycle de
poids négatif si et seulement si un nouveau tour de boucle ferait diminuer une distance.
2
B D
4
4
A 3 1 −5
3
2
C E
5
F IGURE 3.28 –
Exemple 3.10 Soit le graphe présenté au niveau de la Figure 3.28, en appliquant l’algorithme de
Bellman-Ford pour determiner les plus courts chemins à partir de A, on peut proposer la resolution à
l’aide du tableau suivant :
itr=1 A B C D E itr=3 A B C D E
int 0 ∞ ∞ ∞ ∞ int 0 3 2 1 6
A 0 4 2 ∞ ∞ A 0 3 2 1 6
B 0 4 2 6 7 B 0 3 2 1 6
C 0 3 2 6 7 C 0 3 2 1 6
D 0 3 2 6 7 D 0 3 2 1 6
E 0 3 2 2 7 E 0 3 2 1 6
itr=2 A B C D E itr=4 A B C D E
int 0 3 2 2 7 int 0 3 2 1 6
A 0 3 2 2 7 A 0 3 2 1 6
B 0 3 2 2 6 B 0 3 2 1 6
C 0 3 2 2 6 C 0 3 2 1 6
D 0 3 2 2 6 D 0 3 2 1 6
E 0 3 2 1 6 E 0 3 2 1 6
Parmi les problèmes les plus classiques liés aux réseaux, on peut citer celui de la recherche d’un
flot maximal qui va être dévoilé au niveau de cette section. On se donne une capacité maximale sur
3.7 Flots et réseaux de transport 47
chaque arc qui sera une borne supérieure du flot autorisé sur cet arc. Le problème du flot maximal
consiste à déterminer un flot dont la valeur en un certain lieu est maximale. On peut, de plus, se
donner un coût de transport d’une unité de flot sur chaque arc et chercher le flot maximum de coût
minimum. Afin de déterminer ce flot maximal, nous allons d’abord définir deux notions importantes,
la coupe du réseau ainsi que le flot.
Définition 3.7.2 Une coupe d’un réseau R(V, E) est la donnée d’une partition X ∪ X de V telle
que s ∈ X et p ∈ X. On notera la coupe simplement (X, X). La capacité de la coupe (X, X), notée
c(X, X) est la somme des capacités des arcs e(u, v) ∈ E allant de X à X :
c(X, X) = ∑ c(e)
e∈E
u ∈ X et v ∈ X
Cependant, une coupe (X, X) est appelée coupe minimum si sa capacité est minimum : pour toute
0
coupe (X, X ) de R, on a
0 0
c(X, X) ≤ c(X , X )
La seconde notion que nous allons définir et celle du flot qui peut être désigné comme étant
l’affectation d’une valeur réelle à chaque arc de G, représentant une quantité transportée sur cet arc,
de telle sorte que, en chaque sommet, la somme des flots entrants soit égale à la somme des flots
sortants. Formellement, on définit un flot comme suit :
Définition 3.7.3 Une application f : E → R est un flot dans le réseau R si elle satisfait aux
propriétés suivantes :
a) pour tout e ∈ E,
0 ≤ f (e) ≤ c(e).
∑ f (e) = ∑ f (e).
e(u, v) ∈ E e(u, v) ∈ E
v=x u=x
Un exemple très parlant est celui d’un réseau routier : les carrefours sont représentés par les
sommets du réseau, chaque route entre deux carrefours étant représentée par une arête orientée ; si la
route est à double sens, on met un arc dans chaque sens ; la capacité peut signifier, par exemple, le
nombre maximum de véhicules dont la circulation peut être absorbée par le tronçon routier sur une
période d’une heure. Dans ce cas, on s’intéresse plus précisément à la circulation des véhicules sur
les différents itinéraires permettant d’aller du point s vers le point p.
Exemple 3.11 On a représenté un flot dans un réseau en Figure 3.29. La valeur sur chaque arc
représente le flot ; le nombre entre parenthèses représente la capacité de chaque arc. La valeur
totale du flot est ω( f ) = 14 + 10 + 2 + 41 + 5 = 34. On a une coupe X = {s, x1, x2, x3, x4, x5, x6} et
X = {x7 , x8 , x9 , x10 , p}. La capacité de cette coupe est c(X, X) = 17 + 13 + 4 + 4 + 6 = 44.
Comme la valeur totale du flot est toujours inférieure ou égale à la plus petite capacité possible
d’une coupe, et d’après le théorème de Ford et Fulkerson, il existe toujours un flot maximum qui
48 Chapitre 3. Théories des graphes
x7
{(17), 14} {(13), 10}
{(5), 2}
{(14), 14} {(8), 2}
x2 {(7), 6}
s {(5), 1}
{(7), 2} {(4), 4} x9
x5
{(9), 8} {(3), 1} {(5), 5}
{(5), 3} {(3), 1}
x3
x10
{(3), 3}
x6 {(6), 5}
F IGURE 3.29 –
atteint cette borne. L’algorithme 5 ci-dessous est une version simplifiée de celui proposé par Ford et
Fulkerson. Il fournit à partir d’un réseau un flot f maximum et une coupe (X, X) minimum.
Où G f représente le réseau résiduel et f (e(v, u)) les flots inverses. Autrement dit, l’algorithme
fonctionne sur deux étapes qui sont elles-mêmes composées d’une succession d’étapes. La première
succession d’étapes consiste à saturer un à un les chemins mentent de la source vers le puits. Où
un chemin est défini comme une succession d’arcs adjcents bien orientés. Dans ce même sens un
arc direct ne sera saturé que si le flux qui y circule est égal la capacité (c.-à-d., on ne peut rien
ajouter). Par conséquent, cette opération nous mènera d’un flot nul vers un flot complet. La deuxième
succession d’étapes consiste à saturer une à une les chaı̂nes montent de la source vers le puits. Où
une chaı̂ne est une succession d’arcs adjacents avec un ou plusieurs arcs mal orientés (inverse). Dans
ce même sens, un arc inverse ne sera pas saturé que si le flux qui y circule est égal à 0 (c.-à-d., on ne
peut rien soustraire). Par conséquent, cette étape nous mènera d’un flot complet vers un flot maximal.
En applicant la première phase (c.-à-d., les instructions 5-11 de l’algorithme 5) nous obtiendra le
flot complet illustré sur la Figure 3.31.
Enfin, en appliquant la seconde succession d’étapes en saturant les chaı̂nes de s vers le noeud
p. Par conséquent on remarque la chaı̂ne s → 4← 3 → 5 → 7 → 8 → p où l’arc 4 ← 3 est bien un
arc inverse alors en saturant cette chaı̂ne nous obtiendrons un flot maximal de 16 comme illustre la
3.7 Flots et réseaux de transport 49
5 5
2 6 9
6 4 2 3 8
8 6 5 p
s 4 7
4 2
7 3 7
3 5 8
5 4
F IGURE 3.30 –
5/5 3/5
5/6 2 0/4 6 2/2 3/3 9 6/8
3/8 6/6 5/5
s 4 7 p
0/2
3/3 0/4
7/7 4/7
3 5 8
4/5 4/4
F IGURE 3.31 –
50 Chapitre 3. Théories des graphes
Figure 3.32.
5/5 3/5
5/6 2 0/4 6 2/2 3/3 9 6/8
4/8 6/6 5/5
s 4 7 p
1/2
2/3 1/4
7/7 5/7
3 5 8
5/5 4/4
F IGURE 3.32 –
En supposant la formulation générale d’un problème d’affectation comme suit, l’exemple le plus
classique est l’affectation de n tâches à m machines. On suppose qu’on connaı̂t le coût de production
Ci, j d’une tâche i sur une machine j (ce coût est infini ∞ s’il n’est pas possible d’effectuer cette
tâche sur cette machine). Le but est d’affecter toutes les tâches de sorte à minimiser le coût total
de production (défini comme la somme des coûts). On peut modéliser ce problème par un graphe
biparti pondéré G(X ∪Y, E,C) dans lequel X est l’ensemble des tâches, Y l’ensemble des machines,
et les arêtes (i, j) ∈ E sont pondérées par le coût de production de la tâche i sur la machine j.
Phase 1 : Obtention des zéros : On retranche de chaque ligne l’élément minimum puis, dans la nouvelle
matrice, de chaque colonne l’élément minimum.
Phase 2 : On recherche un ensemble de cardinalité maximale de zéros indépendants (ce qui revient à
chercher un couplage maximal dans un graphe biparti). Si l’affectation est complète, on a une
solution optimale. Sinon on passe à la phase 3.
Phase 3 : On cherche le nombre minimal de lignes et de colonnes contenant tous les zéros (il est égal à
la cardinalité de l’ensemble calculé à la phase 2). Pour cela, il faut suivre ces étapes :
(a) Marquer les lignes ne contenant pas de 0 encadrés (les 0 encadrés sont ceux obtenus à la
phase 2).
(b) Marquer les colonnes ayant un 0 sur une ou plusieurs lignes marquées
(c) Marquer toute ligne ayant un 0 encadré dans une colonne marquée
(d) Répéter b. et c. jusqu’à ce que plus aucune ligne ni colonne ne puisse être marquée
3.8 Problèmes d’affectations 51
23/08/20
(e) Rayer les lignes non marquées et les colonnes marquées.
Phase 4 : Ajout ou déplacement de zéros : On retranche le plus petit nombre non rayé (forcément
strictement positif) aux éléments non rayés et on l’ajoute aux éléments rayés 2 fois, puis on
retourne à la phase 2.
Exemple 3.12 Soit le problème d’affectation donné avec la matrice suivante :
M1 M2 M3 M4 P1 M1
P1 0 110
8
8
P2 M2
P2 0 70 0
8
P3 0 50 20 P3 M3
8
P4 30 0 0
8
P4 M4
Le plus simple pour bien comprendre cet algorithme est de suivre un exemple détaillé :
1). Phase 1 : Création d’un zéro par ligne
23/08/2018 23(24
M1 M2 M3 M4 M1 M2 M3 M4
3. Phase 2: Recherche d'ensemble de 0 indépendants
P1 60 170 60 P1 0 110
8
8
8
8
Prec Suiv
8
P3 50 170 180 50 P3 0 120 130
8
8
P4 120 90 200 90 P4 30 0 110
8
M1 M2 M3 M4 M1 M2 M3 M4
P1 0 110 P1 0 110
8
8
8
P2 0 70 70 P2 0 70 0
8
P3 0 120 130 P3 0 50 20
8
https://www.pairform.fr/doc/1/32/180/web/res/exempleHongrois.eWeb/index.html Pa
P4 30 0 110 P4 30 0 0
8
0 0 70 110
3). Phase 2 : Recherche d’ensemble de 0 indépendants
52 Chapitre 3. Théories des graphes
23/08/2018 23(27
M1 M2 M3 M4 P1 M1
P1 0 110
8
8
P2 M2
P2 0 70 0
8
P3 0 50 20 P3 M3
8
P4 30 0 0
8 P4 M4
23/08/2018 23(29
P1 M1 M1 M2 M3 M4
P1 0 110
8
8
P2 M2
P2 0 70 0
8
P3 M3 P3 0 50 20
8
P4 30 0 0
P4 M4 8
23/08/2018 23(56
M1 M2 M3 M4 M1 M2 M3 M4
P1 0 110 P1 0 110
8
8
8
P2 0 70 0 P2 0 70 0
8
P3 0 50 20
https://www.pairform.fr/doc/1/32/180/web/res/exempleHongrois.eWeb/img/algoHongrois2.svg
P3 0 50 20 Page 1 of 1
8
P4 30 0 0 P4 30 0 0
8
6). Phase 3 : b. Marquer les col. avec un 0 sur une ligne marquée
3.8 Problèmes d’affectations 53
23/08/2018 23(58
M1 M2 M3 M4 M1 M2 M3 M4
P1 0 110 P1 0 110
8
8
8
P2 0 70 0 P2 0 70 0
8
P3 0 50 20 P3 0 50 20
8
8
P4 30 0 0 P4 30 0 0
8
8
7). Phase 3 : c. Marquer ligne avec un 0 encadré dans une col. marquée
23/08/2018 23(59
M1 M2 M3 M4 M1 M2 M3 M4
P1 0 110 P1 0 110
8
8
8
8
P2 0 70 0 P2 0 70 0
8
8
P3 0 50 20 P3 0 50 20
8
8
P4 30 0 0 P4 30 0 0
8
8
8). Phase 3 : d. rien à faire ici
24/08/2018 00(00
M1 M2 M3 M4 M1 M2 M3 M4
P1 0 110 P1 0 110
8
8
8
P2 0 70 0 P2 0 70 0
8
P3 0 50 20 P3 0 50 20
8
https://www.pairform.fr/doc/1/32/180/web/res/exempleHongrois.eWeb/img/algoHongrois5.svg Page 1 of 1
P4 30 0 0 P4 30 0 0
8
9). Phase 3 : e. Rayer les lignes non marquées et les colonnes marquées
54 Chapitre 3. Théories des25/08/2018
graphes 00(08
M1 M2 M3 M4 M1 M2 M3 M4
P1 0 110 P1 0 110
8
8
8
P2 0 70 0 P2 0 70 0
8
P3 0 50 20 P3 0 50 20
8
8
P4 30 0 0 P4 30 0 0
8
8
10). Phase 4 : Ajout ou déplacement de zéros
25/08/2018 00(09
M1 M2 M3 M4 M1 M2 M3 M4
P1 0 110 P1 0 90
8
8
8
8
P2 0 70 0 P2 20 70 0
8
8
k=20
P3 0 50 20 P3 0 30 0
8
8
P4 30 0 0 P4 50 0 0
8
8
11). Phase 2 : Recherche d’ensemble de 0 indépendants
25/08/2018 00(10
M1 M2 M3 M4 P1 M1
P1 0 90
8
8
P2 M2
P2 20 70 0
8
P3 0 30 0 P3 M3
8
https://www.pairform.fr/doc/1/32/180/web/res/exempleHongrois.eWeb/img/algoHongrois8.svg Page 1 of 1
P4 50 0 0
8
P4 M4
M1 M2 M3 M4 P1 M1
P1 0 90
8
8
P2 M2
P2 20 70 0
8
P3 0 30 0 P3 M3
8
P4 50 0 0
8 P4 M4
P1 M1 M1 M2 M3 M4
P1 0 90
8
8
P2 M2
P2 20 70 0
8
P3 M3 P3 0 30 0
8
P4 50 0 0
8
P4 M4
https://www.pairform.fr/doc/1/32/180/web/res/exempleHongrois.eWeb/img/algoHongrois10.svg Page 1 of 1
56 Chapitre 3. Théories des graphes
3.9 Exercices :
Exercise 3.1 Des études comportementales démontrent que certaines personnes peuvent influencer
le comportement des autres. Un graphe appelé graphe d’influence sert à modéliser cette situation :
a) Représenter le graphe d’influence de : Déborah influence Bastien, Frédéric et Linda, mais que
personne n’influence Déborah elle-même. De la même façon, Yvonne et Bastien s’influencent
mutuellement.
b) De quel type de graphe s’agit-il ?
Exercise 3.2 Dans un tournoi de football, les Tigers ont battu les Blue Jays, les Cardinals et les
Orioles ; les Blues Jays ont battu les Cardinals et les Orioles ; et les Cardinals ont battu les Orioles.
a) Représenter le graphe du tournoi.
b) De quel type de graphe s’agit-il ?
Exercise 3.3 Construire un graphe dont les sommets sont les entiers compris entre 1 et 8 et dont les
arcs représentent la relation ”être diviseur de”. De quel type de graphe s’agit-il ?
Exercise 3.4 Combien y a-t-il de sommets, d’arêtes qui composent les graphes suivants :
a) Kn b) Kn,m c) Cn
a a b
f b g c
e c f
d e d
G H
F IGURE 3.33 –
Exercise 3.6 Le conseil municipal d’une ville comprend 7 commissions, qui obéissent aux 2 règles
suivantes :
— tout conseiller municipal fait partie de 2 commissions exactement ;
— deux commissions quelconques ont exactement un conseiller en communs.
3.9 Exercices : 57
Exercise 3.7 Sur la table sont disposés deux tas de trois allumettes. Deux joueurs vont à tour de
rôle enlever une ou deux allumettes de l’un des tas. Le joueur qui retire la dernière allumette perd la
partie.
a) Modéliser ce jeu a l’aide d’un graphe.
b) Que doit jouer le premier joueur pour gagner la partie à coup sûr ?
a b c a b
d
i h g e e d c
G H
F IGURE 3.34 –
Exercise 3.9 Combien d’arêtes un graphe contient-il s’il a des sommets de degré 4, 3, 3, 2, 2 ?
Tracer un tel graphe.
Exercise 3.10 Une ligue de football comporte 5 équipes. Le bureau de la ligue désire organiser un
tournoi d’avant saison permettant à chaque équipe de jouer 3 matchs contre 3 équipes. Comment
l’organiser ?
Exercise 3.11 Montrer que dans un groupe de personnes, il y a toujours deux personnes ayant le
même nombre d’amis présents.
∑ d −(xi)= ∑ d +(xi)=|E|
xi ∈V xi ∈V
Exercise 3.13 Déterminer les matrices d’adjacence des deux graphes G et H sur la Figure 3.35.
a b c a b c
d e d e
G H
F IGURE 3.35 –
Exercise 3.14
Exercise 3.15 Les listes de sommets suivants forment-elles des chaines dans le graphe présenté sur
la Figure 3.36 ? Quelles sont les longueurs de celles qui sont des chaı̂nes :
a) a,e,b,c,b
b) e,b,a,d,b,e
a b c
d e
F IGURE 3.36 –
Exercise 3.16 Les listes de sommets suivants forment-elles des chemins dans le graphe orienté sur
la Figure 3.37 ? Quelles sont les longueurs de celles qui sont des chemins :
a) a,b,e,c,b
b) a,d,a,d,a
c) a,d,b,e,a
a b c
d e
F IGURE 3.37 –
v5 v5
v1 v2 v1 v2
v6
v4 v3 v4 v3
v7 v7
G H
F IGURE 3.38 –
d) Énumérer toutes les arêtes (vi , v j ) en respectant la condition suivante : la suppression de l’arête
en question résultera un graphe non connexe ?
Exercise 3.18 a) Le graphe orienté G sur la Figure 3.39 est-il fortement connexe ?
F IGURE 3.39 –
Exercise 3.19 Un facteur désire faire sa tournée sans passer deux fois dans la même rue. Est-ce
possible si sa tournée a les profils suivants (où chaque rue est représentée par une arête) :
Exercise 3.20 Quels sont les graphes complets Kn qui admettent un cycle eulérien ?
Exercise 3.21 Un message de diagnostic doit être envoyé sur un réseau informatique afin d’effectuer
les tests de tous les terminaux par le biais d’un réseau intranet. Quelle sorte de graphe doit représenter
le réseau pour tester tous les liens intranet ? Et pour tester tous les terminaux ?
3.9 Exercices : 61
G H
F IGURE 3.40 –
Exercise 3.22 Étant données 13 villes reliées par des routes comme l’illustre la Figure 3.41, un
voyageur de commerce habitant la ville X peut-il passer par chaque ville une fois et une seule, en
rentrant chez lui à la fin de son circuit ?
F IGURE 3.41 –
Exercise 3.23 Donner un exemple de graphe comportant au moins six sommets tel que :
a) il est hamiltonien mais pas eulérien ;
b) il est eulérien mais pas hamiltonien.
Exercise 3.24 L’école supérieure de technologie industriel (ESTI ANNABA) doit organiser les
examens des enseignements optionnels de ses élèves de quatrième année. Les différentes options
sont : français (F) ; anglais (A) ; mécanique (M) ; sport (S) ; Internet (I) et dessin industriel (D).
Certains étudiants ont choisi plusieurs options, et les regroupements existants sont : (F,A,M) ; (D,S) ;
(I,S) ; (I,M).
Combien de demi-journees seront-elles nécessaires à cette organisation sachant que la durée de
62 Chapitre 3. Théories des graphes
Exercise 3.26 Tout graphe contenant un triangle (K3 ) ne peut être colorié en moins de trois couleurs.
a) Construire un graphe sans triangle qui nécessite également trois couleurs.
b) Comment, à partir du graphe précédent, construire un graphe sans une clique K4 nécessitant 4
couleurs ?
c) Un graphe sans une clique K5 nécessitant 5 couleurs ?
Exercise 3.27 Appliquer l’algorithme de Dijkstra pour déterminer le plus court chemin entre A et I
et proposer la résolution à l’aide du tableau.
D
9 3
B 4 G
7 5 2 9
A 3 E 8 I
8
6 6 3
C 8 H
7 9
F
F IGURE 3.42 –
Dans chaque cas, proposer un chemin minimum et indiquer le nombre de chemins minimums
possible.
Exercise 3.28 Dans le graphe ci-dessous contenant un poids négatif, montrer que l’algorithme de
Dijkstra ne peut pas être appliqué.
3.9 Exercices : 63
B
2 1
A C
4 −2
D
F IGURE 3.43 –
A
4
10 4 10
C D
10
B 12
5 16
E 21 F
4
3
17 10
3
G H
3
5
I J
8
G
F IGURE 3.44 –
Exercise 3.30 On veut affecter 5 étudiants (A, B, C, D, E, F) à 5 postes libres x, y, z, t, u. Pour cela
on leur demande de noter (sur 20), les postes selon leurs préférences. Plus la note est élevée et plus
l’étudiant veut accéder à ce poste. Les résultats sont consignés dans le tableau suivant. Par exemple
l’étudiant A préfère les postes X et Y et les notes 18/20 mais a moins de préférence pour le poste Z
et le note 9/20.
Question : En utilisant la méthode hongroise, affecter ces 5 étudiants à ces 5 postes de telles manières
à satisfaire leurs préférences de manières optimales. Il est demandé de donner les matrices de chaque
étape, le coût optimal et les affectations optimales.
de noter (sur 20), les postes selon leurs préférences. Plus la note est élevée et plus l’étudiant veut accéder
à ce Université
poste. Les d’Orléans
résultats sont consignés
– Licence dans et
économie le gestion
tableau 2007-8
suivant. Par exemple l’étudiant A préfère
1 les
postes X et Y et les notes 18/20 mais a moins de préférence pour le poste Z et le note 9/20.
Question : En utilisant la méthode hongroise, affecter ces 5 étudiants à ces 5 postes de telles manières
TD Licence
à satisfaire 3 – Optimisation
leurs préférences et aide
de manières optimales. à la décision
Il est demandé de donner les matrices de chaque
étape, le coût optimal et les affectations optimales. Chapitre 3. Théories des graphes
64
Série 6 - A↵ectation de coût minimal
Exercice 1 X Y Z T U
A hongroise
Déterminer par la méthode 18 18 une9a↵ectation
11 de 11coût minimal associée au tableau
des coûts suivant:
B 18 17 11 10 17
7 2 1 9 4 C 16 10 15 17 14
9 6 9 5 5
D 18 13 15 17 15
8 8 3 1 8
7 9 4 2 2 E 15 19 11 18 10
4 3 7 4 8
F IGURE 3.45 –
Exercice 2
Exercise
On 3.31
veut On veut affecter
a↵ecter 5 tâches
5 tâches à 5 machines.
à 5 machines. LesLescoûts
coûts des
des affectations
a↵ectationssont donnés
sont par par
donnés le le
tableau suivantsuivant:
tableau :
2 2 11 9 9
2 3 9 10 3
4 10 5 3 6
2 7 5 3 5
5 1 9 2 10
Bibliographie