Académique Documents
Professionnel Documents
Culture Documents
Par
INTRODUCTION
Le concept de graphe, largement utilisé en mathématique, est très utile en pour résoudre les
problèmes de recherche opérationnelle.
Ici, le graphe n’est pas la « représentation graphique » ou la « courbe représentative » lorsqu’il s’agit
de l’étude des fonctions élémentaires d’une variable numérique, mais les graphes, en particulier les
graphes arborescents et les graphes orientés, sont très fréquemment utilisés dans les sciences de
l’information et l’informatique. Les organigrammes par exemple sont des graphes orientés.
On distingue donc, dans la théorie des graphes qui nous concerne, entre « graphes orientés » et «
graphes non orientés » et l’on adopte généralement le mot « graphe » pour désigner l’une ou l’autre
variété des graphes.
De nombreux problème de gestion sont susceptibles d’être formalisés et résolus à travers
l’approche par la théorie des graphes. Il s’agit principalement des problèmes de transport, d’affectation,
de détermination des trajets, de prévision de parts de marché. Après avoir examiné les éléments des
graphes non orientés et orientés, nous présenterons deux applications classiques de la théorie des
graphes : à savoir les problèmes de flot et les problèmes d’ordonnancement.
PLAN DU COURS
1 .1- Définition et représentation d’un graphe non orienté sous forme d’une figure
1.2- Graphe non orienté sous forme d’une matrice
1.3- Degré d’un sommet
1.3.1- Définitions
1.3.2- Propriétés
1.4- Connectivité
1.4.1- Présentation
1.4.2- Définitions
1.5- Types particuliers de graphe non orientés : graphe complet, graphe régulier, graphe
bipartites, graphe planaire,…
1.6- Graphes valués
1.7- Arbres
1.7.1- Présentation
1.7.2- Arbres partiels
1.8- Arborescences
1.8.1- Présentation
1.8.2- Arborescences ordonnées
2.1- Présentation
2.2- Graphe orienté sous forme d’une figure
2.3- Graphe orienté sous forme d’une matrice d’adjacence
2.4- Graphe orienté sous forme d’une matrice d’incidence
2.5- Vocabulaire, terminologies et notion de degré dans un graphe orienté
2.5.1- Vocabulaire
3.1- Introduction
3.1.1- Présentation
3.1.2- Projet de réseau routier
3.2- Flot sur un graphe
3.2.1- Définition d’un flot
3.2.2- Exemple de flot
3.3- Problème de flot maximal
3.3.1- Définition
3.3.2- Principe de l’algorithme de Ford et Fulkerson
3.3.3- Algorithme de Ford et Fulkerson
3.3.4- La notion de coupe
3.3.5- Exemple d’application de l’algorithme de Ford et Fulkerson
3.3.6- Exemple d’application de l’algorithme de Ford et Fulkerson dans un réseau de
transport
3.4- Problème d’affectation
4.1- Présentation
4.2- Les avantages temporels tirés d’un graphe d’ordonnancement de projet
4.3- Chemin extrêmal dans un graphe orienté
4.3.1- Algorithme de recherche de niveau
4.3.2- Recherche du chemin extrêmal (algorithme)
4.4- Application à un problème de transport
4.5- Ordonnancement MPM
4.5.1- Principe de la méthode
4.5.2- Construction d’un graphe MPM
4.5.3- Date au plus tôt, dates au plus tard et chemin critique
4.5.4- Calcul des marges
4.5.5- Optimisation d’un projet à partir des coûts
4.5.6- Un exemple de projet
Éléments de bibliographie
1.1- Définition et représentation d’un graphe non orienté sous forme d’une figure
Un graphe non orienté 𝐺 est un couple de deux ensembles 𝑋 et 𝐸 tels que 𝐸 soit une partie de
l’ensemble des parties avec répétition 𝐷(𝑋) de deux éléments de 𝑋 (𝐸 ⊂ 𝐷(𝑋)). Les éléments de 𝑋
sont appelés sommets du graphe 𝐺 et ceux de 𝐸 arêtes de 𝐺. On écrit 𝐺 = (𝑋, 𝐸) (voir exemple de
la figure 1). Il en résulte de cette définition qu’un même graphe 𝐺 = (𝑋, 𝐸) peut être donné sous
deux formes : il peut être représenté sous forme d’une figure ou sous forme d’une matrice.
Les nombres d’éléments de 𝑋 et de 𝐸 seront notés respectivement : |𝑋| = 𝑛 et |𝐸| = 𝑚
𝑒1 2 𝑒2
𝑒7 𝑒3
𝑒5
6 1 4 5
𝑒6 3 𝑒4
.𝑋 = {1, 2, 3, 4, 5, 6} et 𝐸 = {𝑒1 , 𝑒2 , 𝑒3 , 𝑒4 , 𝑒5 , 𝑒6 , 𝑒7 }
Remarque : un graphe non orienté est simple s’il n’a ni boucle, ni arêtes multiples. Le graphe de la
figure 1 est un graphe simple. Celui de la figure 2 est un multigraphe.
𝑒1 2 𝑒2
𝑒9 𝑒3
1 𝑒5 𝑒6 4 5
6
𝑒7 3 𝑒4
𝑒8
On définit pour les graphes non orientés, 𝐴(𝐺), la matrice d’adjacence et 𝐵(𝐺), la matrice d’incidence
avec :
- 𝐴(𝐺) = (𝑎𝑖𝑗 )1≤𝑖≤𝑛 ,1≤𝑗≤𝑛 où 𝑎𝑖𝑗 est le nombre d’arêtes entre 𝑖 et 𝑗 ;
- 𝐵(𝐺) = (𝑏𝑖𝑗 )1≤𝑖≤𝑛 ,1≤𝑗≤𝑚 où 𝑏𝑖𝑗 est le nombre de fois que 𝑖 est incident à 𝑒𝑗 , donc ici, les
boucles apparaissent.
Proposé par Honoré TEKAM OUMBE-Maître de Conférences /UDs/FSEG/Dept d’EDD Page 5
Cours de Théorie des Graphes et Combinatoire/ISTAG
- Pour ce qui concerne le graphe de la figure 1, les matrices d’adjacence et d’incidence sont
respectivement :
0 1 1 0 0 1 1 0 0 0 0 1 1
1 0 1 1 0 0 1 1 0 0 1 0 0
0 1 0 1 1
𝐴(𝐺) = 1 1 0 0 ; 𝐵(𝐺) = 0 0 1 0
0 1 1 0 1 0 0 1 1 1 0 0 0
0 0 0 1 0 0 0 0 1 1 0 0 0
[1 0 0 0 0 0] [0 0 0 0 0 0 1]
- Pour ce qui concerne le graphe de la figure 2, les matrices d’adjacence et d’incidence sont
respectivement :
0 1 1 0 0 1 1 0 0 0 0 0 0 1 1
1 0 2 1 0 0 1 1 0 0 1 1 0 0 0
0 1 0 1 1 1
𝐴(𝐺) = 1 2 0 0 ; 𝐵(𝐺) = 0 0 1 0 0
0 1 1 0 1 0 0 1 1 1 0 0 0 0 0
0 0 0 1 1 0 0 0 1 0 0 0 0 2 0
[1 0 0 0 0 0] [0 0 0 0 0 0 0 0 1]
1.3.1- Définitions
Définition 1- Deux sommets d’un graphe non orienté 𝐺 = (𝑋, 𝐸) sont dit adjacent si {𝑥, 𝑦} ∈ 𝐸
Définition 2 - Deux arêtes sont dites adjacentes si elles ont une extrémité commune
Définition 3 – Le voisinage d’un sommet 𝑥 est l’ensemble Г(𝑥) des sommets 𝑦 tels que 𝑥 est incident
à l’arête {𝑥, 𝑦} :
Г(𝑥) = {𝑦 ∈ 𝑋 / {𝑥, 𝑦} ∈ 𝐸 }
Définition 4 – Le degré d’un sommet 𝑥, noté 𝑑(𝑥), est le nombre d’arêtes incidentes à 𝑥 (on
remarquera q’une boucle est répétée deux fois):
𝑑(𝑥) = |Г(𝑥)|
1.3.2- Propriétés
Propriété 2- ∑𝑥∈𝑋 𝑑(𝑥) = 2𝑚 : la somme des degrés de tous les sommets d’un graphe non orienté
est égale au double du nombre de ses arêtes.
1.4- Connectivité
1.4.1- Présentation
𝑃1 𝑃2 𝑃3
𝑃4 𝑃5 𝑃6
Théorème : il n’y a de chaîne entre deux sommets distincts que si et seulement s’il en existe une chaîne
élémentaire.
1.4.2- Définitions
Définition 1 : Un graphe est dit connexe si pour toute paire de sommets de ce graphe il existe toujours
une chaîne élémentaire qui les lie.
Définition 2 : Une chaîne eulérienne est une chaîne qui passe une et une seule fois par tous les sommets
d’un graphe.
Définition 3 : Un cycle qui englobe tous les sommets d’un graphe, chacun n’étant pris qu’une seule
fois, est un cycle eulérien.
𝐾1 𝐾2 𝐾3 𝐾4 𝐾5
- Graphes 𝑘 −réguliers
Graphe Graphe
0-régulier 1-régulier Ces trois Graphes sont 2-régulier Graphe 3-régulier
N.B. Un graphe complet est un graphe régulier, mais un graphe régulier n’est pas nécessairement un
graphe complet.
- Un Graphe non orienté G est dit bipartite si l’ensemble 𝑋 de ses sommets peut être partagé en
deux sous-ensembles 𝑀 et 𝑁 tels que chaque arc de 𝐺 relie un sommet de 𝑀 et un sommet de
𝑁. Par graphe complet bipartite nous entendons que chaque sommet de 𝑀 est relié à chaque
Figure 5 : Graphes complet bipartite dans les cas 𝐾2,3 , 𝐾3,3 et 𝐾2,4
N M N M N
M
(a) (𝑏)
Une représentation particulière d’un multigraphe planaire fini est dite carte. Nous disons qu’une
carte est 𝑐𝑜𝑛𝑛𝑒𝑥𝑒 𝑠i le multigraphe donné est connexe. Une carte donnée divise le plan en diverses
régions. Par exemple, la carte de la figure 7 divise le plan en 5 régions. Notons que si 4 d’entre elles
sont bornées, la cinquième ne l’est pas. Dans ces conditions, il n’y a aucune perte de généralité si nous
supposons que notre carte est une partie d’un rectangle assez grand, plutôt qu’elle n’est constituée de
tout le plan.
𝐶 𝑟5
𝑟4
𝐴
𝑟2 𝑟3 𝐹 𝐸
𝐵
𝑟1
𝐷
Euler a donné une expression qui relie le nombre de sommets |𝑋|, le nombre d’arêtes (arcs) |𝐸| et le
nombre de régions |𝑅| d’une carte connexe quelconque.
La formule d’Euler est valide pour des cartes non connexes dans la mesure où la constante 2 est
remplacée par 𝑣 + 1, où 𝑣 est le nombre de composants connexes de la carte.
Un graphe 𝐺 est un graphe valué si ses sommets et/ou ses arêtes (arcs) sont affectées de données de
quelque sorte. En particulier, si chaque arête 𝑒 de 𝐺 est affectée d’un nombre non négatif 𝜑(𝑒). 𝜑(𝑒)
est appelé longgueur ou poids de 𝑒. La figure 8 représente un graphe valué où le poids de chaque arête
est indiqué de manière évidente. Il est souvent important de déterminer le chemin de poids minimum
entre deux sommets donnés d’un graphe valué. Le chemin minimum entre 𝑥0 et 𝑥7 de la figure 8 est
donné par la séquence (𝑥0 , 𝑥1 , 𝑥2 , 𝑥5 , 𝑥3 , 𝑥6 , 𝑥7 ) qui a pour poids 14.
(le lecteur pourra chercher un autre chemin de poids minimum entre 𝑥0 et 𝑥7 ).
𝑥3
𝑥1 3 𝑥2 6
3 4
2 2
7
𝑥0 1 𝑥7
4 2 3 2
6 4
𝑥4 𝑥5 𝑥6
1.7- Arbres
1.7.1- Présentation
Un graphe 𝐺 est dit acyclique s’il ne comporte aucun cycle. Un arbre est un graphe acyclique connexe.
Une forêt est un graphe sans cycle ; il en résulte que les composants connexes d’une forêt sont des
arbres. La figure 9(a) représente tous les arbres possibles à 6 sommets et la figure 9(b) 6 des arbres à
7 sommets.
1.7.2- Théorèmes
Il existe plusieurs manières équivalentes de définir un arbre comme l’indiquent les théorèmes suivants :
Théorème 1 : Soit 𝐺 un graphe à plus d’un sommet. Les propositions suivantes sont équivalentes :
(𝑖) 𝐺 est un arbre.
(𝑖𝑖) Chaque paire de sommets sont reliés par un seul et unuque chemin.
(𝑖𝑖𝑖) 𝐺 est connexe, mais si l’on suprime une arête quelconque, le graphe résultant n’est pas
connexe.
(𝑖𝑣) 𝐺 ne possède pas de cycle, mais si l’on ajoute une arête à ce graphe, le graphe résultant
possède un cycle unique.
Dans les cas où les graphes que nous considérons sont finis, nous pouvons ajouter d’autres
manières de définir un arbre :
Théorème 2 : Soit 𝐺 un graphe fini à 𝑛 sommets (𝑛 > 1). Les propositions suivantes sont
équivalentes :
(𝑖) 𝐺 est un arbre.
(𝑖𝑖) 𝐺 ne possède pas de cycle et possède 𝑛 − 1 arêtes.
(𝑖𝑖𝑖) 𝐺 est connexe et présente 𝑛 − 1 arêtes
En particulier, le théorème 2 nous indique qu’un arbre fini a un sommet de plus que d’arêtes.
(Cela est valable aussi pour le graphe trivial, 𝑛 = 1).
Un sous-graphe 𝐺 ′ d’un graphe 𝐺 est un arbre partiel de 𝐺 si 𝐺 ′ est un arbre et si 𝐺 ′ comporte tout
sommet de 𝐺. La figure 10 représente un graphe 𝐺 et les arbres partiels 𝐺1′ , 𝐺2′ et 𝐺3′ de 𝐺. Si 𝐺 est
un graphe dont les arêtes sont pondérées, un arbre partiel minimum de 𝐺 est un arbre partiel de 𝐺 tel
que la somme des poids de ses arêtes est minimum relativement à tous les arbres partiels de 𝐺.
Figure 10 : représentation d’un graphe 𝐺 et les arbres partiels 𝐺1′ , 𝐺2′ et 𝐺3′ de 𝐺
(G)
Algorithmes de recherche de l’arbre partiel minimum d’un graphe connexe valué fini 𝐺 de 𝑛 sommets.
Algorithme 1 :
(𝑖) Ordonner les arêtes de 𝐺 selon les poids décroissants,
(𝑖𝑖) En procédent de manière séquentielle, supprimer chaque arête qui ne rende pas le graphe
non connexe jusqu’à ce qu’il en reste 𝑛 − 1. Ces arêtes formeront un arbre partiel minimum de 𝐺.
Cet algorithme est subordonné à l’information relative au fait que G est ou n’est pas connexe, ce qui,
en général, n’est pas facilement programmable.
Algorithme 2 :
(𝑖) Ordonner les arêtes de 𝐺 selon les poids croissants,
(𝑖𝑖) En commençant uniquement avec des sommets de 𝐺, additionner arête après arête là où
chaque arête a un poids minimum et ne forme pas un cycle.
(𝑖𝑖𝑖) Après l’addition de 𝑛 − 1 arêtes, nous obtenons un arbre partiel minimum.
3
4 3
5 2
4 4 2 3
3
4
3
2 4
(G) 2
2
4 3
5
2 2
3 2
(𝑀) 4
Il faut insister sur le fait que, puisque certaines arêtes peuvent avoir le même poids, il est possible
d’obtenir différents arbres partiels minimum.
1.8- Arborescences
1.8.1- Présentation
Une 𝑎𝑟𝑏𝑜𝑟𝑒𝑠𝑐𝑒𝑛𝑐𝑒 𝑅 est un arbre possédant un sommet particulier 𝑥0 , dit racine de l’arbre. La
longueur du chemin unique qui va de la racine 𝑥0 à un autre sommet queconque 𝑥𝑖 est appelé niveau
ou profondeur de 𝑥𝑖 . Les exttrêmités de 𝑅 (à l’exception de 𝑥0 si c’est une extrêmité) sont appelées
feuilles de l’arborescence. La figure 12 représente une arborescence où la racine 𝑥0 est placée en haut
du schéma. L’arborecsence comporte 5 feuilles : 𝑥4 , 𝑥6 , 𝑥8 , 𝑥9 et 𝑥10 . Le niveau de 𝑥2 est 1, celui
de 𝑥5 est 2 et celui de 𝑥10 est 3. Tout arbre peut devenir une arborescence, simplement en choisissant
n’importe lequel de ses sommets comme racine.
Le fait qu’il y ait un chemin unique de la racine à n’importe quel sommet de 𝑅 induit une
orientation des arêtes de 𝑅. Un chemin continuement orienté allant d’un sommet à une feuille est une
branche de R. Nous dirons qu’un sommet 𝑥𝑖 précède un autre sommet 𝑥𝑗 , ou que 𝑥𝑗 suit 𝑥𝑖 (𝑥𝑖 et
𝑥𝑗 sont, respectivement appelés un précédent et un suivant) si le chemin de la racine à 𝑥𝑗 inclut 𝑥𝑖 . En
particulier, nous disons que 𝑥𝑗 suit immédiatement 𝑥𝑖 si 𝑥𝑗 suit 𝑥𝑖 et lui est adjacent.
𝑥0
0
𝑥2 𝑥3
𝑥1 1
𝑥5 𝑥6 𝑥7
𝑥4 2
3
𝑥8 𝑥9 𝑥10
Sur la figure 12, le sommet 𝑥10 suit le sommet 𝑥3 , mais il suit immédiatement 𝑥7 . Notons que
chaque sommet autre que la racine 𝑥0 suit immédiatement un sommet unique mais peut être
immédiatement suivi par plus d’un sommet ; par exemple les sommets 𝑥9 et 𝑥10 suivent
immédiatement 𝑥7 .
Une 𝑎𝑟𝑏𝑜𝑟𝑒𝑠𝑐𝑒𝑛𝑐𝑒 𝑅 où les arêtes issues de chaque sommet sont linéairement ordonnées est appelée
arborescence ordonnée. Soient 𝑒 et 𝑒 ′ des arêtes de 𝑅 issues d’un sommet 𝑥 en direction des sommets
𝑦 et 𝑧, respectivement. Si 𝑒 précède 𝑒 ′ dans l’ordre de 𝑅, nous représenterons 𝑒 à gauche de 𝑒 ′ (cf.
figure 13). Nous affectons alors le même ordre aux sommets 𝑦 et 𝑧 ; c’est-à-dire que 𝑦 précèdera 𝑧 .
(Notons que cet ordre sur les sommets 𝑦 et 𝑧 de 𝑅 n’a aucun rapport avec l’ordre nous avons décrit
précédemment sur les branches.)
𝑒 𝑒′
𝑦 𝑧
− +
𝑎 𝑏
𝑦 × 𝑒
𝑐 𝑑
et le fichier des employés de l’entreprise serait la liste des enregistrements des employés.
Bien que, généralement, un fichier soit une liste linéaire d’enregistrements, les données d’un
enregistrement constituent usuellement une arborescence. La raison en est que certaines données
forment des groupes comportant deux ou plusieurs informations. Cf. par exemple la représentation
donnée par la figure 15. Notons qu’Identité est un groupe de données, de même qu’Adresse. Il y a en
tout 10 informations élémentaires : les feuilles de l’arborescence.
Employé
N° S. S.
𝑒 Identité Adresse Age Salaire Ayants-droit
Prénom Région
Nom 𝑦 Rue
L’arborescence précédente peut être également décrite en fonction du niveau des sommets.
. 00 𝐸𝑚𝑝𝑙𝑜𝑦é
. 01 𝑁𝑢𝑚é𝑟𝑜 𝑆. 𝑆.
. 01 𝐼𝑑𝑒𝑛𝑡𝑖𝑡é
. 02 𝑁𝑜𝑚
. 02 𝑃𝑟é𝑛𝑜𝑚
. 01 𝐴𝑑𝑟𝑒𝑠𝑠𝑒
. 02 𝑅𝑢𝑒
. 02 𝑅é𝑔𝑖𝑜𝑛
. 03 𝑉𝑖𝑙𝑙𝑒
. 03 𝐷é𝑝𝑎𝑟𝑡𝑒𝑚𝑒𝑛𝑡
. 03 𝐶𝑜𝑑𝑒 𝑝𝑜𝑠𝑡𝑎𝑙
. 01 𝐴𝑔𝑒
. 01 𝑆𝑎𝑙𝑎𝑖𝑟𝑒
. 01 𝐴𝑦𝑎𝑛𝑡𝑠 − 𝑑𝑟𝑜𝑖𝑡
2.1- Présentation
Nous avons vu dans le chapitre précédent qu’une arborescence présente un sens naturel défini
le long de chaque arête ; ces arborescences peuvent être considérées comme orientées. D’une manière
générale, un graphe orienté, également appelé digraphe, est un multigraphe dont chaque arête a un
sens. Ce sens confère à l’arête le nom d’arc.
Un graphe orienté 𝐺 est un couple de deux ensembles 𝑋 et 𝑈 tels que 𝑈 soit une partie du
produit cartésien 𝑋 × 𝑋 = 𝑋 2 (𝑈 ⊂ 𝑋 2 ). Les éléments de 𝑋 sont appelés sommets du graphe 𝐺 et
ceux de 𝑈 arcs de 𝐺. On écrit 𝐺 = (𝑋, 𝑈).
Il en résulte de cette définition qu’un même graphe 𝐺 = (𝑋, 𝑈) peut être donné sous deux formes : il
peut être représenté sous forme d’une figure ou sous forme d’une matrice.
Un graphe orienté peut être représenté sous forme d’une figure (et c’est ce qui explique l’adoption du
mot « graphe ») dans laquelle chacun des sommets est représenté soit par un point, soit par un rond
numéroté 𝑖, (𝑖 ∈ 𝐼𝑁 ∗ ) ou marqué d’un symbole et dans laquelle chaque arc symbolisé par 𝑖𝑗 ⃗⃗ ou par
(𝑥𝑖 , 𝑥𝑗 ) appartenant à 𝑈, est représenté par une ligne qui part de 𝑖 (ou de 𝑥𝑖 ) et arrive en 𝑗 (ou en 𝑥𝑗 )
sans passer par un autre sommet, et que l’on muni d’une flèche dans le sens de « 𝑖 vers 𝑗 » (ou de
«𝑥𝑖 𝑣𝑒𝑟𝑠 𝑥𝑗 »). On appelle 𝑖 (ou 𝑥𝑖 ) et 𝑗 (ou 𝑥𝑗 ) respectivement l’origine et l’extrêmité de l’arc 𝑖𝑗 ⃗⃗
(respectivement de l’arc (𝑥𝑖 , 𝑥𝑗 )).
𝑎8
𝑎1 2 𝑎2
𝑎3
1 𝑎5 𝑎6 4
𝑎7 3 𝑎4
- Fonctions et notations
Notons :
𝑇 la fonction qui à un arc associe son extrêmité terminale
𝑇 : 𝑈 → 𝑋
⃗⃗ → 𝑗
𝑖𝑗
De façon générale, si 𝑥𝑦
⃗⃗⃗⃗ ∈ 𝑈, 𝑥 est prédécesseur ou précédent de 𝑦, et 𝑦 est successeur ou
suivant de 𝑥.
La matrice d’adjacence du graphe 𝐺, notée 𝐴(𝐺), est la matrice de terme général 𝑎𝑖𝑗 ( 𝑖 variant de
1 à 𝑛 et 𝑗 variant de 1 à 𝑛) où 𝑎𝑖𝑗 représente le nombre d’arcs allant du sommet 𝑖 au sommet 𝑗. C’est
une matrice carrée d’ordre 𝑛.
𝑎2
1
𝑎6 0 1 1 0
𝑎1
𝑎4 𝐴(𝐺) = [1 0 0 0]
𝑎5 3 4 0 1 0 1
0 0 0 1
2 𝑎3
Si 𝐺 ne comporte pas d’arcs parallèles, les termes de 𝐴(𝐺 ) ne seront que des 0 et des 1 comme dans
le cas précédent.
La matrice d’incidence du graphe 𝐺, notée 𝐵(𝐺), est la matrice de terme général 𝑏𝑖𝑗 ( 𝑖 variant de 1 à 𝑛
et 𝑗 variant de 1 à 𝑚) où :
• 𝑏𝑖𝑗 = 1 si 𝑎𝑗 a pour extrêmité initiale 𝑖 c’est-à-dire 𝐼(𝑎𝑗 ) = 𝑖 avec 𝑖 ≠ 𝑗
• 𝑏𝑖𝑗 = −1 si 𝑎𝑗 a pour extrémité terminale 𝑖 c’est-à-dire 𝑇(𝑎𝑗 ) = 𝑖 avec 𝑖 ≠ 𝑗
• 𝑏𝑖𝑗 = 0 dans les autres cas.
0 1 0 1 −1 0
0 0 −1 −1 1 0]
𝐵(𝐺) = [
1 −1 1 0 0 0
−1 0 0 0 0 0
𝑎1
A D
𝑎1 𝑎4
𝑎3
𝑎6
𝑎5
B C
𝑎7
2.5.1- Vocabulaire
La définition d’un graphe orienté à l’aide d’une figure qui représente ses sommets et ses arcs
fournit un vocabulaire assez naturel dont il est utile de retenir les éléments suivants :
On appelle boucle tout arc dont l’origine et l’extrémité coïncident (la figure 3 a une boucle) ;
Lorsque (𝑥, 𝑦) est un arc, on dit que 𝑥 est un antécédent de 𝑦 et que 𝑦 est un conséquent
de 𝑥 ; on dit que 𝑥 et 𝑦 sont adjacents ; un sommet 𝑥 d’un graphe 𝐺 est adjacent à lui-même ou non
suivant que la boucle (𝑥, 𝑥) existe ou non dans 𝐺.
Nous appellerons sommet inaccessible tout sommet qui n’est extrêmité d’aucun arc. Un tel
sommet est appelé source. (la figure 3 n’a pas de sources).
Un cul-de-sac est un sommet qui n’est origine d’aucun arc. Un tel sommet est appelé puits. (la
figure 3 a un puits qui est le sommet 𝐶 ).
Chemins et circuits : étant donné un graphe 𝐺 = (𝑋, 𝑈), on appelle chemin toute suite finie
d’arcs telle que chaque arc de cette suite (à partir du second) ait pour origine l’extrémité de celui qui
précède. Si 𝑥 est l’origine du premier arc et 𝑧 l’extrêmité du dernier, on dit qu’il s’agit d’un chemin
de 𝑥 à 𝑧. Si 𝑧 coïncide avec 𝑥, un chemin de 𝑥 à 𝑥 est appelé circuit. Le même circuit peut être
considéré comme un chemin de 𝑦 à 𝑦, 𝑦 étant origine ou extrêmité de n’importe lequel des arcs
dont il se compose. En particulier, toute boucle est un circuit.
On appelle longueur d’un chemin ou d’un circuit le nombre d’arcs dont il se compose.
On considèrera parfois des chemins de longueur nulle ou « chemins vides » ; un tel chemin pourra être
considéré comme allant d’un sommet quelconque à lui-même. Par contre, la longueur d’un circuit sera
toujours un entier strictement positif.
Dans les définitions ci-dessus, rien n’interdit qu’un même arc n’y figure plus d’une fois dans
un même chemin ou circuit. Si aucun arc n’y figure plus d’une fois, on dit qu’il s’agit d’un chemin
ou d’un circuit simple.
Dans un chemin ou un circuit, même simple, il peut arriver qu’un sommet apparaisse comme
origine (ou comme extrêmité) de plusieurs arcs distincts; si cela n’arrive jamais, on dit que le chemin
ou le circuit est non seulement simple, mais élémentaire. Un chemin élémentaire ne peut, en
particulier, comporter aucune boucle, sauf s’il s’agit d’un « circuit élémentaire » qui se réduit à cette
boucle seule.
Un graphe sans circuit est un graphe dont aucun chemin n’est un circuit.
Dans un graphe sans circuit, il ne peut y avoir aucune boucle. En outre, un graphe sans circuit
est nécessairement antisymétrique : cela signifie qu’il ne peut,
pour deux sommets distincts 𝑥 et 𝑦 quelconques comporter à la fois l’arc (𝑥, 𝑦) et l’arc (𝑦, 𝑥).
Théorème : Dans tout graphe fini et non vide sans circuit, il y a nécessairement au moins un cul-de-
sac et un sommet inaccessible.
Etant donné un graphe orienté 𝐺 = (𝑋, 𝑈), on peut sur toute partie 𝑋 ′ de 𝑋 construire un
graphe 𝐺 ′ = (𝑋 ′ , 𝑈 ′ ) dont l’ensemble d’arcs 𝑈 ′ est formé de ceux des arcs de 𝐺 qui ont leur origine
et leur extrêmité dans 𝑋 ′ ; 𝐺 ′ s’appelle le sous-graphe de 𝐺 construit sur 𝑋 ′ . Par exemple si, à partir
du graphe de la figure 3, on note 𝑋 ′ = {𝐵, 𝐶, 𝐷}, on obtient le graphe de la figure 3a :
𝑎4
𝑎6
𝑎5
B C
𝑎7
La notion de sous-graphe est différente de celle de graphe partiel d’un graphe orienté 𝐺 = (𝑋, 𝑈). On
appelle graphe partiel de 𝐺 un graphe 𝐺 ∗ = (𝑋, 𝑈 ∗ ) construit sur le même ensemble de sommets 𝑋
que 𝐺, mais pour lequel 𝑈 ∗ ⊂ 𝑈. Un exemple de graphe partiel de la figure 3 est donné par la figure
3b :
𝑎1
A D
𝑎4
𝑎6
B C
𝑎7
2.5.3- Terminologies
Les différentes notions de chemin, chemin élémentaire et circuits, sont valables aussi bien dans le cas
de graphes orientés que dans le cas de graphes non orientés, à part que la terminologie n’est pas
exactement la même, à cela près que le sens du chemin doit être en accord avec le sens des arcs dans
les graphes orientés. Plus précisément, un chemin (orienté) 𝑊 dans un graphe orienté 𝐺 est une
séquence alternée de sommets et d’arcs : 𝑊 = 𝑣0 , 𝑎1 , 𝑣1 , 𝑎2 , 𝑣2 , … , 𝑎𝑛−1 , 𝑣𝑛−1 , 𝑎𝑛 , 𝑣𝑛 telle que
chaque arc 𝑎𝑖 commence à 𝑣𝑖−1 et se termine à 𝑣𝑖 . Un semi-chemin est la même chose qu’un chemin,
à cela près que l’arc peut aussi bien commencer en 𝑣𝑖−1 ou en 𝑣𝑖 ; en d’autres termes, un semi-chemin
est la même chose qu’un chemin sur le graphe 𝐺 non orienté. Le tableau suivant donne les
terminologies utilisées dans les deux cas :
Ainsi, un chemin hamiltonien est un chemin qui passe une et une seule fois par tous les sommets
d’un graphe orienté. De même, un circuit qui englobe tous les sommets d’un graphe orienté, chacun
n’étant pris qu’une seule fois, est un circuit hamiltonien.
Le degré externe et le degré interne d’un sommet 𝑥 sont respectivement égaux aux nombre d’arcs
commençant et se terminant en 𝑥. Dans la mesure où chaque arc commence et se termine en un
sommet, nous constations que la somme des degrés internes des sommets est égale à la somme des
degrés externes des sommets, et égale au nombre d’arcs.
2.5.4.1- Définitions
Définition 1- Deux sommets d’un graphe orienté 𝐺 = (𝑋, 𝑈) sont dit adjacent si l’arc (𝑥, 𝑦) ∈ 𝑈 ou
l’arc (𝑦, 𝑥) ∈ 𝑈
Définition 2 - Deux arcs sont dits adjacents s’ils ont une extrêmité commune
Définition 3 – Le voisinage d’un sommet 𝑥 est l’ensemble Г(𝑥) des sommets 𝑦 tels que 𝑥 est
incident à l’arc (𝑥, 𝑦) ou à l’arc (𝑦, 𝑥) :
Г(𝑥) = {𝑦 ∈ 𝑋/ (𝑥, 𝑦) ∈ 𝑈 𝑜𝑢 (𝑦, 𝑥) ∈ 𝑈}
- Le voisinage interne d’un sommet 𝑥 est l’ensemble Г− (𝑥) des sommets 𝑦 tels
l’arc (𝑦, 𝑥) ∈ 𝑈 : c’est l’ensemble des sommets origines des arcs incidents à 𝑥 vers l’intérieur,
c’est-à-dire des arcs qui ont pour extrémité 𝑥.
Г− (𝑥) = {𝑦 ∈ 𝑋/ (𝑦, 𝑥) ∈ 𝑈}
- Le voisinage externe d’un sommet 𝑥 est l’ensemble Г+ (𝑥) des sommets 𝑦 tels
l’arc (𝑥, 𝑦) ∈ 𝑈 : c’est l’ensemble des sommets extrêmités des arcs incidents à 𝑥 vers
l’extérieur, c’est-à-dire des arcs qui ont pour origine 𝑥.
Г+ (𝑥) = {𝑦 ∈ 𝑋/ (𝑥, 𝑦) ∈ 𝑈}
Définition 4 – Le degré d’un sommet 𝑥, noté 𝑑(𝑥), est le nombre d’arcs incidents à 𝑥 (on remarquera
qu’une boucle est répétée deux fois):
𝑑(𝑥) = |Г(𝑥)|
- Le degré interne d’un sommet 𝑥, noté 𝑑 − (𝑥), est le nombre d’arcs incidents à 𝑥 vers
l’intérieur :
𝑑− (𝑥) = |Г− (𝑥)|
- Le degré externe d’un sommet 𝑥, noté 𝑑 + (𝑥), est le nombre d’arcs incidents à 𝑥 vers
l’extérieur :
𝑑+ (𝑥) = |Г+ (𝑥)|
2.5.4.2- Propriétés
Propriété 1- La somme des degrés de tous les sommets d’un graphe orienté est égale au double du
nombre de ses arcs : ∑𝑥∈𝑋 𝑑(𝑥) = 2𝑚
Propriété 2 : La somme des degrés internes des sommets est égale à la somme des degrés externes
des sommets, et égale au nombre d’arcs : ∑𝑥∈𝑋 𝑑 − (𝑥) = ∑𝑥∈𝑋 𝑑 + (𝑥) = 𝑚
Par exemple : vérifier ces propriétés pour ce qui concerne la figure 3 : (Travail à faire par l’étudiant)
Si les arcs et/ou les sommets d’un graphe orienté sont valués, nous avons un graphe orienté
valué. Ce type de graphe est souvent utilisé à la représentation de situations dynamiques. Par exemple,
les organigrammes sont des graphes orientés où les sommets (encore appelés cartouches) sont valués,
ainsi que les arcs issus d’un symbole de décision.
Exemple : 3 garçons, 𝐴, 𝐵 et 𝐶, se jettent un ballon de manière telle que 𝐴 fait une passe à 𝐵
régulièrement, mais que 𝐵 et 𝐶 peuvent aussi bien faire une passe à 𝐴 que de se passer le ballon entre
eux. La figure 4 illustre cette situation dynamique où les arcs sont valués avec leurs probabilités
respectives : 𝐴 passe le ballon à 𝐵 avec la probabilité 1, 𝐵 envoie la passe à 𝐴 et à 𝐶 avec la probabilité
1/2 pour chaque cas, et 𝐶 envoie le ballon à 𝐴 et à 𝐵 avec la probabilité 1/2 pour chaque cas.
A
1
1
1 2
2 1
2
B
1 C
2
Nous avons vu plus haut qu’un graphe orienté peut être représenté sous forme d’une matrice
d’incidence ou sous forme d’une matrice d’adjacence. La matrice d’adjacence permet de trouver le
nombre de chemins ou de circuits de longueur 𝑝 (𝑝 ≥ 1) allant d’un sommet 𝑥𝑖 à un sommet 𝑥𝑗 .
Rappelons que la matrice d’adjacence d’un graphe 𝐺, notée 𝑀 = 𝐴(𝐺), est la matrice carrée
d’ordre 𝑛 de terme général 𝑎𝑖𝑗 où 𝑎𝑖𝑗 représente le nombre d’arcs allant du sommet 𝑖 au sommet 𝑗 ; 𝑛
étant le nombre de sommets du graphe 𝐺.
x2
u1 u4
u2
x1 x3
u3
0 0 0
Le nombre de ces chemins est : 1+1+1+1=4
Notons que la connexion forte implique la connexion unilatérale et que connexion unilatérale
implique la connexion faible. Nous dirons que 𝐺 est strictement unilatéral s’il est unilatéral mais pas
fort, et que 𝐺 est strictement faible s’il est faible mais pas unilatéral. Par exemple, la figure 6 représente
un graphe (𝑎) strictement faible, (𝑏) strictement unilatéral et (𝑐) fort.
En fonction de chemins contenant tous les sommets d’un graphe orienté, la connectivité peut être
définie à travers le théorème suivant :
Nous pouvons considérer un ordinateur comme une machine se trouvant dans un certain « état
interne » à tout moment. L’ordinateur lit un symbole d’entrée, puis imprime un symbole de sortie et
change son état. Le symbole de sortie ne dépend que du symbole d’entrée et de l’état interne de la
machine, et cet état interne ne dépend que de l’état précédent de la machine et du symbole d’entrée
précédent. Les nombres d’états, de symboles d’entrée et de sortie sont supposés finis. Ces idées sont
résumées dans la définition suivante :
Une 𝑚𝑎𝑐ℎ𝑖𝑛𝑒 à é𝑡𝑎𝑡 𝑓𝑖𝑛𝑖𝑠 (𝑜𝑢 𝑚𝑎𝑐ℎ𝑖𝑛𝑒 𝑠é𝑞𝑢𝑒𝑛𝑡𝑖𝑒𝑙𝑙𝑒 𝑡𝑜𝑡𝑎𝑙𝑒) 𝑀 est constituée de cinq
éléments :
La machine 𝑀 est notée 𝑀 = 〈𝐴, 𝑆, 𝑍, 𝑓, 𝑔〉 quand nous souhaitons désigner ses cinq parties. Parfois
un é𝑡𝑎𝑡 𝑖𝑛𝑖𝑡𝑖𝑎𝑙 𝑞0 dans 𝑆 est donné et, dans ce cas, la machine est représentée par le sextuplet 𝑀 =
〈𝐴, 𝑆, 𝑍, 𝑞0 , 𝑓, 𝑔, 〉.
Exemple : L’énoncé suivant définit une machine à états finis avec deux symboles d’entrée, trois états
internes, et trois symboles de sortie :
(1) 𝐴 = {𝑎, 𝑏}
(2) 𝑆 = {𝑞0 , 𝑞1 , 𝑞2 }
(3) 𝑍 = {𝑥, 𝑦, 𝑧}
(4) La fonction 𝑑’é𝑡𝑎𝑡 𝑠𝑢𝑖𝑣𝑎𝑛𝑡 𝑓 : 𝑆 × 𝐴 → 𝑆 est définie par :
𝑓(𝑞0 , 𝑎) = 𝑞1 𝑓(𝑞1 , 𝑎) = 𝑞2 𝑓(𝑞2 , 𝑎) = 𝑞0
𝑓(𝑞0 , 𝑏) = 𝑞2 𝑓(𝑞1 , 𝑏) = 𝑞1 𝑓(𝑞2 , 𝑏) = 𝑞1
(5) La fonction 𝑑𝑒 𝑠𝑜𝑟𝑡𝑖𝑒 𝑔 : 𝑆 × 𝐴 → 𝑍 est définie par :
𝑔(𝑞0 , 𝑎) = 𝑥 𝑔(𝑞1 , 𝑎) = 𝑥 𝑔(𝑞2 , 𝑎) = 𝑧
𝑔(𝑞0 , 𝑏) = 𝑦 𝑔(𝑞1 , 𝑏) = 𝑧 𝑔(𝑞2 , 𝑏) = 𝑦
Il est traditionnel de désigner les états de la machine par 𝑞, 𝑞0 indiquant l’état initial.
Il y a deux manières de représenter une machine à états finis sous forme compacte :
(𝒊) Par un diagramme d’état 𝑫 : Le diagramme d’état 𝐷 d’une machine à états finis,
𝑀 = 〈𝐴, 𝑆, 𝑍, 𝑓, 𝑔〉 , est un graphe orienté valué 𝐷. Les sommets de 𝐷 sont les états 𝑆 de 𝑀 et,
si 𝑓(𝑞𝑖 , 𝑎𝑗 ) = 𝑞𝑘 et 𝑔(𝑞𝑖 , 𝑎𝑗 ) = 𝑧𝑟 alors
il existe un arc de 𝑞𝑖 à 𝑞𝑘 repéré par la paire {𝑞𝑖 , 𝑧𝑟 }. Généralement, nous mettons le symbole 𝑎𝑗 à
la base de la flèche représentant l’arc (au voisinage de 𝑞𝑖 ) et le symbole de sortie 𝑧𝑟 au voisinage du
milieu de la flèche. Dans le cas où un état initial 𝑞0 est donné, nous repérons le sommet 𝑞0 en traçant
une flèche supplémentaire vers 𝑞0 . Par exemple, la figure 7 représente le diagramme d’état de la
machine de l’exemple précédent où l’état initial et 𝑞0 .
𝑧 𝑏
𝑥
𝑞2
𝑎
Proposé par Honoré TEKAM OUMBE-Maître de Conférences /UDs/FSEG/Dept d’EDD Page 26
Cours de Théorie des Graphes et Combinatoire/ISTAG
(𝒊𝒊) Par la table d’états : Alternativement, la machine peut être représentée par une table d’états où,
pour chaque combinaison d’état et d’entrée, l’état suivant et la sortie sont donnes. La table suivante
représente la table d’états de la machine de l’exemple précédent.
𝑎 𝑏
𝑞0 𝑞1 , 𝑥 𝑞2 , 𝑦
𝑞1 𝑞2 , 𝑥 𝑞1 , 𝑧
𝑞2 𝑞0 , 𝑧 𝑞1 , 𝑦
Dans le paragraphe précédent, nous n’avons pas introduit les propriétés dynamiques d’une machine.
Soit une machine 𝑀 possédant une chaîne de symboles d’entrée :
𝑈 = 𝑎1 𝑎2 … 𝑎𝑛
Nous visualisons ces symboles sur une bande d’entrée ; la machine 𝑀 𝑙𝑖𝑡 ces symboles d’entrée, un
par un et, simultanément, passe par une chaîne d’états :
𝑉 = 𝑠0 𝑠1 𝑠2 … 𝑠𝑛
où 𝑠0 est l’état initial, tout en imprimant une chaîne de symboles de sortie :
𝑊 = 𝑧1 𝑧2 … 𝑧𝑛 sur une bande de sortie. Formellement, l’état initial 𝑠0 et la chaîne
d’entrée 𝑈 déterminent les chaînes 𝑉 et 𝑊 par :
𝑠𝑖 = 𝑓(𝑠𝑖−1 , 𝑎𝑖 ) et 𝑧𝑖 = 𝑔(𝑠𝑖−1 , 𝑎𝑖 ) où 𝑖 = 1, 2, . . ., 𝑛.
Exemple : Soient 𝒒𝟎 l’état initial de l’exemple et 𝒂𝒃𝒂𝒂𝒃, la chaîne d’entrée. Nous déterminons la
chaîne des états et la chaîne des symboles de sortie d’après le diagramme d’états commençant au
sommet 𝑞0 en suivant les flèches repérées par les symboles d’entrée :
. 𝑎, 𝑥 𝑏, 𝑧 𝑎, 𝑥 𝑎, 𝑧 𝑏, 𝑦
𝑞0 𝑞1 𝑞1 𝑞2 𝑞0 𝑞2
2.11.1-Définition
Un automate fini est semblable à une machine à états fini à l’exception du fait que l’automate
possède des états d’acceptation et de rejet et non des états de sortie. Plus précisément,
𝑢𝑛 𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒 𝑓𝑖𝑛𝑖 𝑀 est constitué de cinq éléments :
(1) Un ensemble fini 𝐴 de 𝑠𝑦𝑚𝑏𝑜𝑙𝑒𝑠 𝑑’𝑒𝑛𝑡𝑟é𝑒.
(2) Un ensemble fini 𝑆 𝑑’é𝑡𝑎𝑡𝑠 𝑖𝑛𝑡𝑒𝑟𝑛𝑒𝑠.
(3) Un sous-ensemble 𝑇 de 𝑆 (dont les éléments sont appelés états d’acceptation)
L’automate 𝑀 est notée 𝑀 = 〈𝐴, 𝑆, 𝑇, 𝑞0 , 𝑓〉 quand nous souhaitons désigner ses cinq parties.
𝑎 𝑏
𝑞0 𝑞0 𝑞1
𝑞1 𝑞0 𝑞2
𝑞2 𝑞2 𝑞2
Nous pouvons décrire un automate fini 𝑀 de manière abrégée par son diagramme d’états,
comme nous l’avons fait pour des machines à états finis, à cela près que nous utiliserons une paire de
cercle concentriques pour les états d’acceptation et que les arcs ne seront valués que par le symbole
d’entrée. Plus précisément, le diagramme d’états 𝐷 de 𝑀 est un graphe orienté valué où les sommets
sont les états de 𝑆 ; les états d’acceptation sont notés par une paire de cercles concentriques et, si
𝑓(𝑞𝑖 , 𝑎𝑗 ) = 𝑞𝑘 , il existe un arc de 𝑞𝑖 à 𝑞𝑘 valué par 𝑎𝑗 . De plus, l’état initial 𝑞0 est indiqué par une
flèche dirigé vers 𝑞0 . Par exemple, le diagrame d’état de l’automate de l’exemple précédent est
représenté par la figure 8.
𝑎 𝑎
𝑏
𝑞0 𝑏
𝑞1 𝑞2
𝑏
𝑎
Etant donnée une chaîne finie 𝑊 = 𝑎1 𝑎2 … 𝑎𝑛 de symboles d’entrée d’un automate 𝑀, nous
obtenons une séquence 𝑞 = 𝑠0 𝑠1 𝑠2 … 𝑠𝑛 , d’états où 𝑠0 est l’état initial et 𝑠𝑖 = 𝑓(𝑠𝑖−1 , 𝑎𝑖 ), 𝑖 > 0.
Nous disons que 𝑀 reconnaît ou accepte la chaîne 𝑊 si l’état final 𝑠𝑛 est un état d’acceptation, c’est-
à-dire si 𝑠𝑛 ∈ 𝑇. Soit alors 𝐿(𝑀) l’ensemble de toutes les chaînes reconnues par 𝑀. Par exemple, nous
pouvons montrer que l’automate 𝑀 de l’exemple précédent reconnaîtra les chaînes qui ne comportent
pas deux 𝑏 successifs.
En effet, nous savons que 𝑠𝑛 = 𝑓(𝑠𝑛−1 , 𝑎𝑖 ), donc :
Nous pouvons considérer également un automate fini M comme une machine à états finis à deux
symboles de sortie, disons 𝑂𝑈𝐼 et 𝑁𝑂𝑁, où la sortie est 𝑂𝑈𝐼 si 𝑀 passe en un état d’acceptation, et la
sortie est 𝑁𝑂𝑁 si 𝑀 se met en un état de rejet. En d’autres termes, nous transformons 𝑀 en une machine
à états finis en définissant une fonction de sortie 𝑔 de 𝑆 × 𝐴 dans 𝑍 = {𝑂𝑈𝐼, 𝑁𝑂𝑁} de la manière
suivante :
𝑂𝑈𝐼 𝑠𝑖 𝑓(𝑞𝑖 , 𝑎𝑗 ) ∈ 𝑇 (𝑎𝑐𝑐𝑒𝑝𝑡𝑒)
𝑔(𝑞𝑖 , 𝑎𝑗 ) = {
𝑁𝑂𝑁 𝑠𝑖 𝑓(𝑞𝑖 , 𝑎𝑗 ) ∉ T (n′ acceptepas)
Réciproquement, une machine à états finis à deux symboles de sortie peut être considérée, de manière
analogue, comme un automate.
3.1- Introduction
3.1.1-Présentation
De nombreux problèmes de gestion présentent une analogie avec l’écoulement d’un flot dans
des canalisations. C’est le cas notamment de certains problèmes de transport où l’on cherche à
acheminer d’un lieu vers un autre, des flux de marchandises donnés, ou encore le cas de projet de
réseau routier où l’on cherche à trouver le débit horaire maximal de véhicules susceptible de s’écouler
entre deux villes alors que des voies de communication ont des capacités limitées.
On appelle réseau de transport tout graphe 𝐺 = (𝑋, 𝑈) dans lequel à chaque arc 𝑢 = 𝑥𝑦 =
(𝑥, 𝑦) est associé un nombre positif 𝑘(𝑢) = 𝑘(𝑥, 𝑦) que nous appellerons capacité de cet arc (il pourra
être commode de se représenter 𝑘(𝑥, 𝑦) comme une fonction non négative définie sur l’ensemble de
tous les couples (𝑥, 𝑦) sommets de 𝐺, et de convenir que 𝑘(𝑥, 𝑦) = 0 chaque fois qu’il n’y a pas
dans 𝐺 d’arc d’origine 𝑥 et d’extrémité 𝑦; il revient au même de supposer que 𝐺 est un graphe complet
dont certains arcs sont de capacité nulle).
Un réseau de transport est donc un graphe sans boucles, où à chaque arc 𝑢 est associé un
nombre 𝑘(𝑢) ≥ 0, appelé capacité de de l’arc 𝑢 et où :
- il existe un sommet 𝑥0 et un seul tel que Г− (𝑥0 ) ≠ ∅; ce sommet 𝑥0 est appelé l’entrée du
réseau ;
- il existe un sommet 𝑧 et un seul tel que Г+ (𝑧) ≠ ∅; ce sommet 𝑧 est appelé sortie du réseau ;
7
A B
8 10
5
6
10 2 4
M C D N
8 1 6
3
4
E F
Proposé par Honoré TEKAM OUMBE-Maître de Conférences /UDs/FSEG/Dept d’EDD Page 30
Cours de Théorie des Graphes et Combinatoire/ISTAG
Le problème est de trouver le débit horaire total maximal de véhicules susceptibles de s’écouler
entre les villes 𝑀 et 𝑁 , le nombre de véhicules entrant dans une ville devant être égal au nombre de
véhicules qui en sortent.
Par exemple pour la ville 𝐷, il y a 6 + 2 = 8 entrants et 4 + 3 = 7 sortants.
Bien que la capacité d’entrée soit 8, on ne peut en faire rentrer que 7.
Soit 𝐺 = (𝑋, 𝑈) un graphe orienté. Un flot est une application 𝜑 de l’ensemble 𝑈 des arcs vers
l’ensemble 𝐼𝑅 telle que pour tout sommet 𝑥 ∈ 𝑋, on ait :
∑𝑢/𝐼(𝑢)=𝑥
⏟ 𝜑(𝑢) = ∑𝑢/𝑇(𝑢)=𝑥
⏟ 𝜑(𝑢) (loi de Kirchhoff ou loi des noeuds)
+
𝑢∈𝑈𝑥 𝑢∈𝑈−
𝑥
a
a) 𝑦 c) 1
b) 1
b 0 d
1
2 1 2 2 d j 1
b
3 i 1
5 a 0 h 1 1 c 0
t -2 1
0 1
𝑥 3 𝑧 -2 0 g
c -2 e
-2 f 1 e
Remarque :
- Si on prend un circuit dans un graphe et que l’on ajoute à toutes les valeurs d’arc la même
quantité, le graphe vérifie toujours la loi de Kirchhoff. Par exemple dans le graphe de la figure
2c), si nous ajoutons la quantité 2 au circuit (𝑎, 𝑏, 𝑐, 𝑑, 𝑎), le graphe obtenu respecte toujours
la loi de Kirchhoff.
- On peut également remarquer que si l’on n’a pas un circuit mais un cycle, on peut conserver
de même la loi de Kirchhoff. On choisit un sens de rotation dans un cycle et lorsqu’on est sur
un arc « dans le sens de la rotation », on ajoute la valeur et lorsqu’on est sur un arc qui est
« contre sens », on retranche la valeur. C’est ainsi dans le graphe de la figure 2b) et le cycle
(𝑦, 𝑧, 𝑡, 𝑦) de la figure 2a), si nous choisissons le sens de rotation d’une montre, et que nous
ajoutons la quantité 2 aux valeurs des arcs dans le sens de la rotation et soustrayons cette valeur
aux valeurs des arcs de sens inverse, la loi de Kirchhoff est toujours vérifiée.
Le contenu de cette remarque s’observe dans la figure 3 qui présente les graphes de la figure 2 avec
les valeurs des arcs modifiées dans le sens de la remarque.
a
a) 𝑦 c) 1
b) 3
b 2 d
3
0 3 4 4 d j 1
b
3 i 1
5 a 0 h 1 1 c 2
t -4 1
0 1
𝑥 5 𝑧 -4 0 g
c -4 e
-2 f 1 e
Le graphique de la figure 4 donne un exemple de flot. Le vecteur 𝜑 initial représente la valeur pour les
arcs tels qu’ils sont notés sur le schéma.
a
𝑢3
3 𝑢2 𝑢1
2
𝑢5 1
𝑢4
b c
5 3 d
𝑢6 -2
1
2
3
On a donc le vecteur 𝜑 =
5
3
[−2]
On prend la matrice d’incidence 𝐴 du graphe et on la multiplie avec le vecteur 𝜑. Si le vecteur colonne
résultat est nul, alors le graphe est un flot.
1
1 1 −1 0 0 0 2 0
0 0 1 −1 0 −1] 3
𝐴𝜑 = [ = [0]
0 −1 0 1 −1 0 5 0
−1 0 0 0 1 1 3 0
[−2]
3.3.1- Définition
Soit 𝑅 = (𝑋, 𝑈 ′ , 𝑘) le graphe issu de 𝐺 = (𝑋, 𝑈) contenant deux sommets 𝑥0 (source) et 𝑧 (puits)
et tel que 𝑘 ∶ 𝑈 ′ → 𝐼𝑅+ ∪ {+∞}. On note 𝑈 ′ = 𝑈 ∪ {𝑧𝑥
⃗⃗⃗⃗⃗⃗0 }, 𝑢𝑟 l’arc de retour de 𝑧 à 𝑥0 et 𝑘(𝑢𝑟 ) =
+∞. Le nombre d’arc est noté 𝑚. Plus précisément, 𝜑(𝑢𝑟 ) = ∑𝑢/𝑇(𝑢)=𝑧⏟ 𝜑(𝑢).
𝑢∈𝑈−
𝑧
3.3.2.1- Idée
On appelle flot réalisable (ou compatible) un flot tel que : 0 ≤ 𝜑(𝑢) ≤ 𝑘(𝑢)
On part d’un flot réalisable et on cherche un chemin 𝐶 de 𝑥0 à 𝑧. Ce chemin n’a pas d’arc saturé (on
rappelle qu’un arc est saturé si 𝜑(𝑢) = 𝑘(𝑢) .
➢ 𝜑′(𝑢) = 𝜑(𝑢) + 𝛿 si 𝑢 ∈ Г
➢ 𝜑′(𝑢) = 𝜑(𝑢) si 𝑢 ∉ Г
Pour le marquage direct, on part de 𝑥0 et on suppose qu’on marque un sommet 𝑥 ∈ 𝑋 (on lui ajoute
𝛿(𝑥)). S’il existe un arc 𝑥𝑦 = 𝑢 et 𝑦 non marqué et 𝜑(𝑢) < 𝑘(𝑢) alors on marque 𝑦 et 𝛿(𝑦) =
𝑚𝑖𝑛[ 𝛿(𝑥), 𝑘(𝑢) − 𝜑(𝑢)].
Pour le marquage indirect, on suppose que 𝑥 est marqué et que l’on a 𝛿(𝑥). s’il existe un arc 𝑦𝑥 = 𝑢
avec 𝑦 non marqué et 𝜑(𝑢) > 0 alors, 𝛿(𝑦) = 𝑚𝑖𝑛[ 𝛿(𝑥), 𝜑(𝑢)] , 𝐴(𝑦) ← 𝑢 (on mémorise l’arc
qui mène à 𝑥) et 𝑦 devient marqué.
3.3.2.4- Résumé
En résumé, dans le graphe 𝐺′ = 𝐺 ∪ {𝑢𝑟 }, le graphe « réseau » et son arc retour entre le puits 𝑧 et la
source 𝑥0 , nous allons confondre le circuit (ou le cycle) Г au sens de rotation (ou de déplacement).
Ainsi, Г + est le sens de rotation dans le sens des aiguilles d’une montre et Г – le sens contraire.
𝑥0 𝑧
Г
𝑢𝑟 (arc retour)
Selon que le sens de l’arc en partant de 𝑧 (puits), on ajoute ou retranche 𝛿 (le delta trouvé par le calcul
précédent), on a :
Cet algorithme utilise les deux algorithmes précédents. Il consiste, tant que c’est possible (en
fonction des capacités des arcs) en une itération de marquage et de changement de flot. L’arrêt
s’effectue si 𝛿 = 0.
Nous rappelons qu’un flot, dans un graphe orienté 𝐺 = (𝑋, 𝑈), est une application 𝜑 de l’ensemble
𝑈 des arcs vers l’ensemble 𝐼𝑅 des nombres réels telle que pour tout sommet 𝑥 ∈ 𝑋, on ait :
∑𝑥∈𝑇(𝑢) 𝜑(𝑢) = ∑𝑥∈𝐼(𝑢) 𝜑(𝑢)
𝑌 𝑋−𝑌
Proposé par Honoré TEKAM OUMBE-Maître de Conférences /UDs/FSEG/Dept d’EDD Page 35
Cours de Théorie des Graphes et Combinatoire/ISTAG
Soit Y une partie de X. On appelle cocycle Ω(𝒀), l’ensemble des arcs ayant exactement une
extrémité (qu’elle soit initiale ou terminale) dans 𝑌.
Par exemple : les arcs représentés dans le graphe ci-dessous sont dans le cocycle Ω(𝒀).
On note :
➢ 𝛺 + (𝑌) = {𝑢 ∈ 𝑈 / 𝐼(𝑢) ∈ 𝑌 ʌ 𝑇(𝑢) ∉ 𝑌}
➢ 𝛺 − (𝑌) = {𝑢 ∈ 𝑈 / 𝑇(𝑢) ∈ 𝑌 ʌ 𝐼(𝑢) ∉ 𝑌}
De plus, pour 𝑌 = {𝑥}, on a en trait pleins sur le graphique ci-dessous 𝛺 − (𝑌) et en trait pointillés
𝛺 + (𝑌)
𝑌
𝑋−𝑌
On peut remarquer en effet que si Y, un ensemble de sommets est un flot, par contraction, on
a toujours un flot (voir figure 8).
𝑌 𝑌
Contraction
𝑌 𝑋−𝑌
𝑥0 𝑧
Si on peut trouver 𝑌 tel que 𝑌 ⊆ 𝑋 avec 𝑥0 ∈ 𝑌 et 𝑧 ∉ 𝑌, Cest une « coupe qui sépare
𝑧 de 𝑥0 ». Ainsi, on obtient :
C = {𝑢 ∈ 𝑈 / 𝐼(𝑢) ∈ 𝑌 ʌ 𝑇(𝑢) ∉ 𝑌} = 𝛺 + (𝑌)
La capacité de la coupe C séparant 𝑧 de 𝑥0 est :
𝑘(𝐶) = ∑𝑢∈𝐶 𝑘(𝑢)
Théorème : Pour tout flot réalisable 𝜑 sur 𝑅 = (𝑋, 𝑈, 𝑘) avec (𝑘(𝑢𝑟 ) = ∞) et toute coupe C
séparant 𝑧 de 𝑥0 , on a 𝜑(𝑢𝑟 ) ≤ 𝑘(𝐶)
Donc
𝑢 ∈ 𝛺 − (𝑌) ⇒ 𝜑(𝑢) ≤ ∑𝑢∈𝛺−(𝑌) 𝜑(𝑢) = ∑𝑢∈𝛺+(𝑌) 𝜑(𝑢) ≤ ∑𝑢∈𝛺+ (𝑌) 𝑘(𝑢) = 𝑘(𝐶)
Corollaire : Si on termine l’algorithme de Ford et Fulkerson avec un flot 𝜑 réalisable sans qu’on ait
pu marquer 𝑧, 𝜑 est une solution optimale du problème du flot maximal de 𝑥0 à 𝑧.
Preuve : On fait tourner l’algorithme de Ford et Fulkerson. Il se termine sans avoir 𝑧. On a donc Y
l’ensemble des sommets marqués. Si 𝑢 ∈ 𝛺 + (𝑌), on a 𝜑(𝑢) = 𝑘(𝑢). Si 𝑢 ∈ 𝛺 − (𝑌), , on a 𝜑(𝑢) =
0. On prend comme coupe C = 𝛺 + (𝑌) la coupe qui sépare 𝑧 de 𝑥0 . Comme 𝑢𝑟 est dans 𝛺 − (𝑌) et que
𝜑 est un flot réalisable, on obtient :
𝜑(𝑢𝑟 ) = ∑𝑢∈𝛺−(𝑌) 𝜑(𝑢) = ∑𝑢∈𝛺+(𝑌) 𝜑(𝑢) = ∑𝑢∈𝛺+(𝑌) 𝑘(𝑢) = 𝑘(𝐶) qui est donc solution
optimale.
Le débit maximal d’un flot réalisable sur 𝑅 = (𝑋, 𝑈, 𝑘) est égal à la capacité minimale d’une coupe
séparant 𝑧 de 𝑥0 .
Soit le réseau suivant où les valeurs sur les arcs 𝑢 de 𝑈 sont les capacités 𝑘(𝑢) :
2
b e
2
2 2
1
1 1
𝑥0 d 𝑧
3 1 1
1
2
c f
➢ Première itération
2
b e
2
2 0
0
0 0
𝑥0 d 𝑧
0 0 0
0
0
c f
2
➢ Deuxième itération
On recommence le marquage :
2°- De là, on ne peut plus marquer 𝑏 puisque l’arc 𝑥0 𝑏 est saturé (𝜑(𝑥0 𝑏) = 𝑘(𝑥0 𝑏)). On marque
alors 𝑐. On obtient l’arc 𝑢 = 𝑥0 𝑐, 𝑌 = {𝑥0 , 𝑐} et
𝛿(𝑐) = 𝑚𝑖𝑛[𝛿(𝑥0 ), 𝑘(𝑢) − 𝜑(𝑢)] = 𝑚𝑖𝑛[∞, 3 − 0] = 𝑚𝑖𝑛[∞, 3] = 3
On note de plus l’arborescence 𝐴(𝑐) = 𝑥0 𝑐 (i.e. on est arrivé à 𝑐 par l’arc 𝑥0 𝑐)
2
b e
2
2 0
0
0 0
𝑥0 d 𝑧
1 0 0
1
1
c f
2+1=3
➢ Troisième itération
3°- On va ensuite vers 𝑑 car c’est celui dont le flot est le plus faible
(𝜑(𝑐𝑑) = 0 < 𝜑(𝑐𝑓) = 1)
On a donc 𝑌 = {𝑥0 , 𝑐, 𝑑}, 𝐴(𝑑) = 𝑐𝑑 et 𝛿(𝑑) = 𝑚𝑖𝑛[𝛿(𝑐), 𝑘(𝑐𝑑) − 𝜑(𝑐𝑑)]
= 𝑚𝑖𝑛[2, 1 − 0] = 1
Mais, ensuite, on est bloqué. On ne peut plus accéder à 𝑧 car tous les flots sont maximum. L’ensemble
des sommets marqués par cette dernière itération permet d’obtenir 𝑌(encerclé sur la figure 13 en
couleur). 𝐶 = 𝛺 + (𝑌) et 𝑘(𝐶) = 2 + 1 = 3 = 𝜑(𝑢𝑟 ). On a donc obtenu le résultat optimal (le flot
obtenu à la deuxième itération est un flot maximal). 𝐶 est la coupe minimale (voir figure 13).
2
𝑌 b e
2
2 0
0
0 0
𝑥0 d 𝑧
1 0 0
1
1
c f
2+1 =3
Trouver le débit horaire total maximal de véhicules susceptibles de s’écouler entre les villes 𝑀 et 𝑁
de la figure 1. Les valeurs sur les arcs sont les capacités de ces arcs.
Comme précédemment, prenons un flot au jugé nul à tous les arcs au départ (mais, on peut tout
aussi bien faire circuler n’importe quel flot au jugé, en veillant tout simplement à ce qu’il soit
compatible avec les contraintes, qui sont ici les contraintes de capacité et de flux positifs, et qu’il vérifie
les équations de nœud – cf. exercice 8.1).
➢ Première itération
= 𝑚𝑖𝑛[5, 7 − 0)] = 5
5
A B
0 5
5
0
0 C 0 0
𝑀 D 𝑁
0 0 0
0
0
E F
➢ Deuxième itération
5
A B
0 5
5
0
0 0 0
𝑀 C D 𝑁
4 0 4
0
4
E F
5+4 = 9
➢ Troisième itération
5
A B
0 5
5
0
2 C 2 2
𝑀 D 𝑁
4 0 4
0
4
E F
5+4+2 = 11
➢ Quatrième itération
5
A B
5 10
5
0
7 C 2 2
𝑀 D 𝑁
4 0 4
0
4
E F
5+4+2+5 = 16
➢ Cinquième itération
3
A B
7 10
5
2
9 C 2 2
𝑀 D 𝑁
4 0 6
2
4
E F
5+4+2+5+2 = 18
➢ Sixième itération
2
A B
8 10
5
3
10 C 2 3
𝑀 D 𝑁
4 0 6
2
4
E F
5+4+2+5+2+1 = 19
➢ Septième itération
On a fini de marquer et 𝑵 n’est pas marqué. Le flot de la figure 19 est le flot maximal. L’ensemble
des sommets marqués par cette dernière itération permet d’obtenir 𝑌 (encerclé sur la figure 20 en
couleur).
𝐶 = 𝛺 + (𝑌) = {𝑢 ∈ 𝑈 / 𝐼(𝑢) ∈ 𝑌 ʌ 𝑇(𝑢) ∉ 𝑌} = {𝑀𝐴, 𝑀𝐶, 𝐸𝐹} et
𝑘(𝐶) = 10 + 5 + 4 = 19 = 𝜑(𝑢𝑟 ) = 𝜑𝑁 = 𝜑𝑚𝑎𝑥
= ∑𝐼(𝑢)∈𝑌𝑒𝑡 𝑇(𝑢)𝑌 𝑘(𝑢) = 𝑘(𝑀𝐴) + 𝑘(𝑀𝐶) + 𝑘(𝐸𝐹)
= 5 + 10 + 4 = 19
𝐶 est la coupe minimale (voir figure 20).
2
A B
8 10
5
3
10 C 2 3
𝑀 D 𝑁
4 0 6
2
Y 4
E F
5+4+2+5+2+1 = 19 = 𝜑𝑚𝑎𝑥
Le débit horaire total maximal de véhicules susceptibles de s’écouler entre les villes 𝑀 et 𝑁 est de
19.
Un flot dans un réseau de transport est dit complet si tout chemin allant de l’entrée à la sortie contient
au moins un arc saturé.
Nous rappelons qu’un arc 𝑢 est saturé si 𝜑(𝑢) = 𝑘(𝑢). Pour obtenir un flot complet, il suffit de
considérer le graphe restreint aux arcs non saturés. Si le flot n’est pas complet, il existe dans le graphe
restreint un chemin allant de l’entrée à la sortie.
Si nous notons Г ce chemin, on augmente de 𝑞 (où 𝑞 = min(𝑘(𝑢) − 𝜑(𝑢))) le flot de ce chemin et
𝑢∈Г
il y apparaît au moins un arc saturé. On recommence l’opération jusqu’à ce que tous les chemins
contiennent un arc saturé.
Remarque :
➢ Un flot complet est proche de l’optimum. En effet, lorsque le marquage commence à partir
d’un flot complet, le nombre d’itérations est réduit.
➢ Le flot maximal est un flot complet. Par exemple, on peut constater que le flot de la figure 18
est bien un flot complet.
Un tel problème pourrait être traité par les techniques habituelles avec la correction du
problème de dégénérescence qui se produit inévitablement ici. Des méthodes plus rapides sont
disponibles, en particulier l’algorithme de Kuhn ou la méthode hongroise.
En effet, on dresse un tableau des coûts relatifs. On pose pour chaque ligne i , vi = min cij
j
(1)
et on fait : c
ij = cij − vi (𝑣𝑜𝑖𝑟 𝑡𝑎𝑏𝑙𝑒𝑎𝑢 1𝑏). On pose ensuite pour chaque colonne j du tableau des
cij(1) , w j = min c (1) et on fait : cij(2) = cij(1) − w j (𝑣𝑜𝑖𝑟 𝑡𝑎𝑏𝑙𝑒𝑎𝑢 1𝑐).
ij
i
Si un zéro figurait dans chaque ligne et dans chaque colonne, il est clair qu’une affectation à
coût minimum pourrait être définie en ne retenant que des contrats à coût relatif nul. Si tel n’est pas le
cas, la technique consiste à faire apparaître de nouveaux zéros jusqu’à ce qu’une affectation à coût
relatif nul puisse être établie.
Par exemple, dans le 𝑡𝑎𝑏𝑙𝑒𝑎𝑢 1𝑐, on ne trouve pas suffisamment de zéros pour procéder à une
affectation complète à coût relatif nul. Compte tenu de la disposition des zéros, seuls trois contrats
peuvent bénéficier simultanément d’un coût relatif nul. On montre que le nombre maximum de
contrats pouvant en bénéficier est donné par le nombre minimum de lignes et de colonnes
nécessaires pour rayer tous les zéros du tableau des coûts relatifs. Ces lignes apparaissent sur le
𝑡𝑎𝑏𝑙𝑒𝑎𝑢 1𝑐.
Pour pouvoir procéder à une affectation plus complète, nous posons : 1 = min min cij ( cij
(2) (2)
i j
non rayés) qui est le chiffre minimum non rayé de l’ensemble des cases non rayées du tableau des
coûts relatifs. On fait cij = cij (non
(3) (2)
rayé ) − 1 , puis on additionne 1 à l’ensemble des chiffres
se trouvant aux intersections des rangés rayées. Ceci revient à conserver identique les chiffres rayés,
sauf ceux correspondant à une intersection de deux rangés rayées. 𝐿𝑒 𝑡𝑎𝑏𝑙𝑒𝑎𝑢 1𝑑 qui en résulte permet
ainsi une affectation de quatre contrats. La même opération est reconduite avec le chiffre minimum
non rayé de ce nouveau tableau. Une affectation complète est possible : cinq lignes et colonnes sont
nécessaires pour recouvrir tous les zéros.
a) Sous-traitants
b) 1 2 3 4
1 2 3 4 5 5
1 12 8 6 3 9
2 6 5 14 8 7 Vi =min Cij 1 9 5 3 0
j 2 6
Opérations 3 9 3 8 2 10 ⎯⎯⎯⎯⎯⎯ → 3 1 0 9 3
4 12 15 8 9 12 Cij =Cij −Vi
(1)
4 2
5 6 8 2 14 7 5 7 1 6 0
W j 8= min Cij(1)
4 7i 0 1
d) 1 2 3 4 5 Cij 4= Cij − W j
(2) (1)
1 7 4 3 0 3 4 6 0 12
2 0 0 10 4 0 1 =minmin cij(2) C) 1 52 3 4 5
⎯⎯⎯⎯⎯⎯ i j
⎯ 1 8 5 3 0 4
3 5 0 6 0 5 Cij(3) =Cij(2) −1
4 2 6 0 1 1 2 0 0 9 3 0
5 2 5 0 12 2 3 6 1 6 0 6
4 3 7 0 1 2
5 3 6 0 12 3
L’algorithme qui vient d’être défini garantit l’obtention de l’optimum au bout d’un certain
nombre d’itérations. La solution optimale, donnée dans le 1𝑒 , amène au graphe suivant :
3 3 c53 = 2
4 4 c14 = 3
5 5 c12 = 12
26
𝜑 : 𝑈 𝐼𝑅+
𝑢 𝜑(𝑢)
Dans la représentation des graphes orientés valués à l’aide d’une figure, on se contente
d’inscrire au regard de chaque arc 𝑢 du graphe la valeur 𝜑(𝑢). La signification concrète des valeurs
"𝜑(𝑢)" ainsi attribuées aux arcs sera différente suivant l’origine et la nature du problème. Selon le
cas, ce sera la durée, le coût, la capacité, …
Dans certains problèmes (problème de transport par exemple), à partir de ces valeurs, on
cherchera à déterminer, parmi tous les chemins ayant la même origine et la même extrêmité, celui dont
la valeur est optimale.
Une importante autre variété d’applications de la théorie des graphes valués est connue sous
divers noms tels que la méthode MPM (la Méthode des Potentiels Métra), la méthode PERT
(abréviation de « Program Evaluation and Review Technique » et qui signifie « Technique
d’Ordonnancement des Tâches et Contrôle des Programmes), etc.
Toutes ces méthodes ont en commun :
- De concerner la planification d’un certain nombre de tâches élémentaires qui concourent à
la réalisation d’un ensemble complexe, par exemple d’un bâtiment industriel et autre avec
le plus souvent pour objectif essentiel l’obtention d’un délai minimum de réalisation ;
- De rechercher, à titre principal, dans certains graphes, valués à l’aide de nombres non
négatifs, un ou plusieurs chemins dit « chemins critiques » dont la définition précise sera
donnée plus loin.
- Le premier avantage est de pouvoir indiquer avant le début des travaux la durée totale de
l’ouvrage à réaliser ;
- Le second avantage est de faire apparaître sur le réseau le chemin qui, formé par la succession
de plusieurs tâches, nous donne le temps le plus long : c’est le chemin critique ;
- En dehors de ce chemin critique, le troisième avantage est de pouvoir déterminer sur les autres
chemins du réseau les temps disponibles grâces auxquels on engagera des moyens au temps
opportun.
Par ailleurs, nous savons que dans tout graphe orienté fini et non vide sans circuit, il y a
nécessairement au moins un cul-de-sac et un sommet inaccessible.
En ordonnancement, seuls les graphes sans circuit sont utilisés. Ils sont alors ordonnancés en classant
les sommets par niveau.
4.3.2.1 : Présentation
Les graphes sans circuit permettent de déterminer parmi tous les chemins du graphe ayant la
même origine et la même extrêmité, ceux dont la valeur est optimale.
Le chemin optimal est recherché dans les problèmes :
- de circulation et de transport (par exemple le chemin le plus court permettant de réduire le coût
d’un trajet,…) ;
- d’ordonnancement d’un projet (chemin le plus long pour connaître la durée de réalisation d'un
programme d’investissement).
Supposons que, dans un graphe 𝐺 valué par une fonction non négative des arcs, 𝜑(𝑢), nous
associons à tout chemin 𝐶 = 𝑢1 𝑢2 . . . 𝑢𝑛 le nombre
𝜑(𝐶) = 𝜑(𝑢1 ) + (𝑢2 ) + . . . +𝜑(𝑢𝑛 ).
Nous conviendrons d’appeler 𝜑(𝑢) la valeur de l’arc 𝑢 et 𝜑(𝐶) la valeur du chemin 𝐶. Un
problème qu’il est alors naturel de résoudre est le suivant : « parmi tous les chemins joignant un
sommet donné 𝑠 à un autre 𝑠′, trouver celui (ou ceux) dont la valeur est optimale ».
𝑀 : 𝑋 𝐼𝑅+
𝑥 𝑀(𝑥)
Proposé par Honoré TEKAM OUMBE-Maître de Conférences /UDs/FSEG/Dept d’EDD Page 52
Cours de Théorie des Graphes et Combinatoire/ISTAG
5- Ecrire 𝑀(𝑥) = 0 si 𝑥 est un sommet de niveau 0 et pour tout autre sommet quelconque 𝑧
d’un autre niveau, écrire :
• 𝑀(𝑧) = min −
[𝑀(𝑦) + 𝜑(𝑥, 𝑦)] pour un problème de circulation ou de
𝑦∈Г (𝑧)
transport ;
• 𝑀(𝑧) = max −
[𝑀(𝑦) + 𝜑(𝑥, 𝑦)] pour un problème d’ordonnancement de projet.
𝑦∈Г (𝑧)
6- Continuer l’étape 5 jusqu’au dernier sommet d (sommet de niveau le plus élevé) ; 𝑀(𝑑)
donne la valeur du chemin extrêmal ;
7- Le chemin extrêmal correspond au chemin dont la longueur est réalisée par la succession
des sommets ascendants qui ont permis de connaître M (d ) .
Ville d’arrivée
A B C D E F G H I J K
Ville de départ
A 3 4 9
B 5 11 10
C 3
D 3 10 6
E 8 10
F 4 2
G 6
H 10 4
I 13 6
J 7 4 3
K
TPE : Dans le tableau 2, l’étudiant établira le dictionnaire des précédents et les niveaux des villes
d’après l’algorithme de recherche de niveau
11
4 G
B 10 6
3 J
5 7
2
A
9 E
F 3 10
4 4
3 4
8
K
10
D H 10
3
6 6
I 13 C
0 1 2 3 4 5 6 7
On utilise l’algorithme Ford pour la recherche du chemin extrêmal (ici le chemin de coût minimum).
𝑀(𝐴) = 0 et pour tout autre sommet 𝑧 autre que 𝐴,
𝑀(𝑧) = min −
[𝑀(𝑦) + 𝜑(𝑥, 𝑦)] donc, on a :
𝑦∈Г (𝑧)
M ( B) = M ( A) + ( A, B) = 0 + 3 = 3 → A
M ( D) = M ( A) + ( A, D) = 04+ = 4 → A
M ( F ) = Min M ( A) + ( A, F ), M ( B ) + ( B, F ), M ( D ) + ( D, F )
= Min(0 + 9,3 + 5,4 + 3) = 7 → D
M ( I ) = M ( D) + ( D, I ) = 4 + 6 = 10 → D
M ( J ) = Min M ( B) + ( B, F ), M ( F ) + ( F , J ) = Min 3 + 10,7 + 2 = 9 → F
M (G ) = Min M ( B) + ( B, G ), M ( J ) + ( J , G ) = Min 3 + 11,9 + 4 = 13 → J
M ( H ) = Min M ( J ) + ( J , H ), M ( F ) + ( F , H ), M ( D) + ( D, H ), M ( I ) + ( I , H )
= Min(9 + 3,7 + 4,4 + 10,10 + 6) = 11 → F
M ( E ) = Min M (G ) + (G, E ), M ( J ) + ( J , E ), M ( H ) + ( H , E )
= Min(13 + 6,9 + 7,11 + 4) = 15 → H
M (C ) = Min M ( E ) + ( E , C ), M ( H ) + ( H , C ), M ( I ) + ( I , C )
= Min(15 + 8,11 + 10,10 + 13) = 21 → H
M ( K ) = Min M ( E ) + ( E , K ), M (C ) + (C , K ) = Min 15 + 10,21 + 3 = 24 → C
Le chemin de coût minimum correspond au chemin dont la longueur est réalisée par la
succession des sommets ascendants qui ont permis de connaître M ( K ) . Il s’agit du chemin en gras
sur le graphique 2. Le coût minimum est dont
M ( K ) = 24 103 F = 24000 F
Chaque opération est représentée par un sommet ou un rond dans lequel figure le nom de la
tâche ou son code.
𝐴 Tâche 𝐴
Les sommets sont reliés entre eux (sauf le dernier) par des arcs associés à valeur numérique
correspondant au temps minimum qui sépare le début de deux tâches.
12
𝐴 𝐵
La tâche (B) ne peut démarrer que 12 unités de temps après le début de la tache (A). Lorsqu’il
n’y a pas de contrainte de date, la longueur de l’arc est égale à la durée de la tâche qui précède. La fin
du projet est matérialisée par une tâche « Fin » (dernier sommet).
Les tâches et les contraintes étant définies, la construction du graphe repose sur le dictionnaire
des précédents et les niveaux tels qu’ils ont été définis dans la théorie des graphes :
- établir le dictionnaire des précédents (liste des tâches immédiatement
antérieures à chaque tâche) ;
- déterminer le niveau de chaque tâche (rang de chaque tâche) ;
- construire le graphe en plaçant les sommets de gauche à droite en fonction de
leur niveau. Les sommets sont reliés entre eux en fonction des précédents.
(1)|(2)
𝑇𝑜 : 𝑋 𝐼𝑅+
𝑥 𝑇𝑜(𝑥)
On écrira 𝑇𝑜(𝑥) = 0 si 𝑥 est un sommet de niveau 0 et pour tout autre sommet quelconque 𝑧 d’un
autre niveau, on écrira :
𝑇𝑜(𝑧) = max −
[𝑇𝑜(𝑦) + 𝜑(𝑦, 𝑧)]
𝑦∈Г (𝑧)
La date au plus tôt de la tâche « Fin » (𝑇𝑜(𝐹𝑖𝑛)) correspond à la durée de réalisation du projet.
Nous noterons 𝑇𝑎 la fonction définissant les dates au plus tard des différentes tâches. C’est une
fonction définie de l’ensemble des sommets 𝑋 vers un ensemble numérique qui, en général, est celui
des nombres réls non négatifs.
𝑇𝑎 : 𝑋 𝐼𝑅+
𝑥 𝑇𝑎(𝑥)
On écrira 𝑇𝑎(𝐹𝑖𝑛) = 𝑇𝑜(𝐹𝑖𝑛) et pour tout autre tâche "𝑦" autre que "𝐹𝑖𝑛", on écrira :
𝑇𝑎(𝑦) = min +
[𝑇𝑎(𝑧) + 𝜑(𝑦, 𝑧)]
𝑧∈Г (𝑦)
- Chemin critique
Le chemin critique est composé d’une succession de tâches critiques pour lesquelles tout retard
pris dans leur réalisation se traduit par un allongement de la durée du projet. Il correspond au chemin
qui garantit que toutes les tâches antérieures ont bien été réalisées. En définitive, c’est le chemin dont
la succession des tâches donne la plus longue durée d’exécution et fournit le délai d’achèvement le
plus court.
Marge totale :
La marge totale d’une tâche est le retard maximum acceptable sur la date de début de cette
tâche ou sur sa durée d’exécution sans que cela ne modifie le délai de réalisation du projet.
Elle est basée sur l’hypothèse que les dates au plus tard ne seront pas modifiées. La fonction de marge
totale (𝑀𝑇) est définie de l’ensemble des sommets 𝑋 vers l’ensemble des nombres réels non négatifs
de la manière suivante :
𝑀𝑇 : 𝑋 𝐼𝑅+
𝑥 𝑀𝑇(𝑥)
Marge libre :
La marge libre d’une tâche exprime le retard maximum que l’on peut accepter sur la date de
début de cette tâche ou sur sa durée d’exécution sans que cela ne modifie le la date de début de la
tâche suivante.
La fonction de marge totale (𝑀𝐿) est définie de l’ensemble des sommets 𝑋 vers l’ensemble des
nombres réels non négatifs de la manière suivante :
𝑀𝐿 : 𝑋 𝐼𝑅+
𝑥 𝑀𝐿(𝑥)
Règle :
o Les marges totales et les marges libres sont nulles sur le chemin critique ;
o Marge totale Marge libre pour toute.
Intérêt :
Les marges permettent de mesurer l’élasticité d’un projet, c’est-à-dire les marges de
manœuvre dont on dispose pour traiter certaines tâches.
4.5.5.1- Principe
Sans modifier la durée initiale (en ne retenant que les tâches non critiques) ;
Par allongement de la durée de réalisation ;
En réduisant la durée initiale.
4.5.5.2- Méthode
En examinant le tableau des données, il ressort que les tâches 𝐵, 𝐷, 𝐺 𝑒𝑡 𝐽 n’ont qu’une tâche
antérieure. Par contre, la tâche 𝐸 n’a pas de tâche antérieure.
Proposé par Honoré TEKAM OUMBE-Maître de Conférences /UDs/FSEG/Dept d’EDD Page 58
Cours de Théorie des Graphes et Combinatoire/ISTAG
Les tâches 𝐴, 𝐶, 𝐹, 𝐻, 𝐼 ont plusieurs tâches antérieures. Le problème qui se pose est de
déterminer pour ces tâches, la ou les tâches immédiatement antérieures. Il suffit pour cela d’isoler les
tâches qui n’ont qu’une tâche antérieure ou qui n’en n’ont pas. Pour les tâches qui ont plusieurs
tâches antérieures, nous allons déterminer le dictionnaire des précédents à partir des ascendants
en éliminant les contradictions : en effet, deux tâches qui sont immédiatement antérieures à une
même tâche ne peuvent pas être immédiatement antérieures l’une de l’autre. comme l’indique le
tableau ci-dessous.
TPE : L’étudiant établira dans le tableau 4 le dictionnaire des précédents à partir des ascendant,
et dans le tableau 5, il présentera le dictionnaire des précédents et les niveaux des tâches d’après
l’algorithme de recherche de niveau
Ascendants
𝐺 𝑒𝑠𝑡 𝑙𝑎 𝑠𝑒𝑢𝑙𝑒 𝑡â𝑐ℎ𝑒 𝑖𝑚𝑚é𝑑𝑖𝑎𝑡𝑒𝑚𝑒𝑛𝑡 𝑎𝑛𝑡é𝑟𝑖𝑒𝑢𝑟𝑒 à 𝐴 ← 𝐴 𝐸, 𝐺
𝐺 𝐸
4.5.6.3- Graphe MPM, temps minimum de réalisation du projet SIT et chemin critique
Pour construire tout réseau, il est important de savoir par quelles tâches commence et finit le
travail.
Les tâches de début d’un réseau sont celles qui n’ont pas de tâches antérieures. Ainsi, la tâche
𝐸 n’ayant pas de tâche antérieure est la tâche de début du réseau.
Les tâches de fin sont celles qui ne sont pas antérieures à d’autres tâches. Ainsi, les tâches 𝐶,
𝐹, 𝐻 sont des tâches de fin.
On construit le graphe 𝑀𝑃𝑀 en plaçant les sommets de gauche à droite en fonction de leur
niveau. Les sommets sont reliés entre eux en fonction des précédents. Le graphe partiel commençant
par la tâche 𝐸 sera au début du réseau et les tâches 𝐶, 𝐹, 𝐻 seront reliées à la tâche "𝐹𝑖𝑛".
On a : 𝑇𝑜(𝐸) = 0 puisque 𝐸 est un sommet de niveau 0 et pour tout autre sommet quelconque 𝑧
d’un autre niveau, on écrira :
𝑇𝑜(𝑧) = max −
[𝑇𝑜(𝑦) + 𝜑(𝑦, 𝑧)]
𝑦∈Г (𝑧)
TPE : L’étudiant appliquera ensuite l’algorithme de recherche des dates de au plus tard
afin de calculer la marge totale de chaque tâche
On peut dès lors calculer la marge totale de chaque tâche (voir tableau 5). On l’obtient à partir
de la formule : 𝑀𝑇(𝑥) = min +
[𝑇𝑎(𝑦) − 𝑇𝑜(𝑥) − 𝜑(𝑥, 𝑦)]
𝑦∈Г (𝑥)
On a par exemple :
𝑀𝑇(𝐵) = 𝑀𝑖𝑛[𝑇𝑎(𝐶) − 𝑇𝑜(𝐵) − 𝜑(𝐵, 𝐶), 𝑇𝑎(𝐼) − 𝑇𝑜(𝐵) − 𝜑(𝐵, 𝐼)]
= 𝑀𝑖𝑛(30 − 8 − 14, 27 − 8 − 14) = 5
𝑀𝑇(𝐴) = 𝑇𝑎(𝐹) − 𝑇𝑜(𝐴) − 𝜑(𝐴, 𝐹) = 32 − 15 − 15 = 2
4.5.6.5- Le programme optimal sachant que la réduction du proje permet d’économise 1200 F
par jour.
L’hypothèse dit que la réduction du projet permet d’économiser 1200 F par jour.
C’est dire l’amélioration du projet au moindre coût doit se faire ici en réduisant la durée initiale. Or
en réduisant la durée initiale, on agit d’abord sur les tâches critiques réductibles.
Parmi les tâches critiques réductibles, seul F appartient au chemin critique avec un coût
supplémentaire journalier de 1000F (inférieur à 1200 F). Il faut donc jouer sr la réduction de la tâche
F . De combien de jours sans quitter le chemin critique (la réduction totale possible de cette tâche
étant de 5 jours) ?
Un réseau PERT est constitué par deux éléments fondamentaux qui sont les étapes et les tâches
Une « étape » est le commencement ou la fin d’une tâche, ce qui revient à dire qu’une étape
n’a pas de durée.
Une étape est symbolisée par un rond ou par un rectangle ou par un carré dans lequel on inscrit
un numéro.
Les tâches, suivant leur disposition dans un réseau, peuvent être successives, simultanées ou
convergentes.
- Les tâches sont successives lorsqu’elles se déroulent les unes après les autres, séparées par
des étapes.
- Les tâches sont simultanées lorsque plusieurs d’entre elles peuvent commenter en même
temps en partant d’une même étape.
- Les tâches sont convergentes lorsque plusieurs d’entre elles aboutissent à une même étape.
Le graphique 4 est un exemple de représentation graphique des tâches et étapes dans un réseau
PERT.
4 𝐷2
𝐽2
2 5
𝐴4 𝐸3
(a)
𝑃3
𝐾1 8
𝐵2
4 𝐹3
1 3 𝐿3 𝑀2 10
6
𝐺2
𝐶3
𝑁4 9
4 𝐻4
7
- Pour que la tâche 𝐽 par exemple, commence, il faut que les tâches 𝐴, 𝐵, 𝐷, 𝐸.
Remarque : La tâche (a) , matérialisée en trait pointillé, est une tâche fictive qui indique une
dépendance entre les tâches 𝐴 et 𝐵. En effet, on voit par exemple que la tâche 𝐹 ne peut commencer
que si la tâche 𝐵 est terminée. Si nous avons l’intention de ne commencer 𝐹 que si 𝐴 est aussi terminée,
la tâche (𝑎) dans le sens indiqué sur le graphe s’explique.
Reprenons l’exemple du projet industriel de la société SIT tel que présenté au paragraphe
3.5.6.1.
Dans le paragraphe 4.5.6.2., nous avons procédé à la détermination des tâches immédiatement
antérieures à chaque tâche et ranger les tâches par niveau. Au 4.5.6.3., nous avons déterminé les tâches
de début et de fin du projet. Tout cela reste valable ici.
Nous placerons l’étape 1 de laquelle partira le graphe commençant par 𝐸. Nous raccorderons
les autres graphes partiels en osevant les tâches suivantes et les niveaux de ces tâches. Nous obtenons
alors le graphique 5 qui suit : (Travail à faire par l’étudiant)
En commençant par les tâches sans conditions d’antériorité, on calcule pour chaque tâche la
date au plus tôt, c’est-à-dire la première date où nil sera possible de débuter la tâche. Les dates au
plus tôt sont associées aux sommets représentant les débuts des tâches.
Pour la tâche 𝐸, la date au plus tôt est 0, soit 0 jour après le début du projet. Pour la tâche 𝐺
par exemple, elle ne peut commencer avant l’achèvement de la tâche 𝐸 dont la durée est de 8 jours.
Sa date au plus tôt est donc 8 jours. La tâche 𝐺 ne peut donc démarrer avant le 8ième jour. Pour obtenir
la date au plus tôt d’une tâche, il faut comparer pour chaque tâche antérieure la somme :
La date au plus tôt est alors la plus grande de ces sommes. On la porte au-dessus de l’étape 𝑗
où le calcul est effectué en indiquant que cette durée provient de l’étape précédente.
On a donc : 𝑡𝑗 = max t + t
iX j
i ij
La date au plus tôt du dernier sommet est la durée minimale de réalisation du projet.
Ainsi, nous savons maintenant que la réalisation de l’ouvrage demandera 42 jours.
Comme nous l’avons déjà dit, la date au plus tard d’une tâche est la dernière date possible
pour le début de cette tâche sans que cela implique un retard pour le projet.
Ainsi, la date au plus tard du dernier sommet est égale à sa date au plus tôt.
Pour obtenir la date au plus tard d’un sommet 𝑖, il faut comparer pour chaque tâche
postérieure la différence :
𝒅𝒂𝒕𝒆 𝒂𝒖 𝒑𝒍𝒖𝒔 𝒕𝒂𝒓𝒅 𝒅𝒆 𝒍𝒂 𝒕â𝒄𝒉𝒆 − 𝒅𝒖𝒓é𝒆 𝒅𝒆 𝒍𝒂 𝒕â𝒄𝒉𝒆
La date au plus tard est la plus petite de ces différences. Donc si nous appelons 𝑡𝑖′ la date au
plus tard d’un sommet 𝑖, on a :
où 𝑋̇𝑖 est l’ensemble des sommets-extrémités des arcs incidents à 𝑖 vers l’extérieur.
Cette procédure est appliquée à partir de l’événement terminal (dernière étape). Dans notre
exemple, 𝒕′𝟖 = 𝒕𝟖 = 𝟒𝟐.
Ils correspondent au retard permis dans l’atteinte d’une étape sans que la durée totale du projet
en soit affectée. Ces intervalles de flottement de la différence entre les dates de réalisation au plus tard
et au plus tôt :
𝒇𝒊 = 𝒕′𝒊 − 𝒕𝒊
Un événement (ou une étape) sera qualifié de critique s’il ne dispose d’aucun intervalle de
flottement, c’est-à-dire si son intervalle de flottement est nul.
La marge libre de l’opération 𝑖𝑗 située entre l’événement 𝑖 et lévénement 𝑗 est donnée par
la formule :
𝑴𝑳𝒊𝒋 = 𝒕𝒋 − 𝒕𝒊 − 𝒕𝒊𝒋 où 𝑡𝑖𝑗 est la valeur de l’arc 𝑖𝑗, 𝑡𝑖 et 𝑡𝑗 les dates au
plus tôt des sommets 𝑖 et 𝑗 respectivement.
La marge totale de l’opération 𝑖𝑗 située entre l’événement 𝑖 et lévénement 𝑗 est donnée par
la formule :
Elle représente le retard maximum sur le début d’une opération si l’on accepte de repousser
les opérations suivantes sans toutefois allonger la durée du projet.
En définitive, le réseau PERT de notre exemple se présente comme le graphique 8.
Problèmes et exercices
Problème 1
Exercice 1 :
Soit 𝐺 = (𝑋, 𝑈) un graphe non orienté
𝑎 𝑏 𝑐
𝑓
𝑑 𝑒
1-) Après avoir défini ce qu’est une chaîne eulérienne, déterminer toutes les chaînes eulériennes du
sommet 𝑎 au sommet 𝑓.
2-) Après avoir défini la distance du sommet 𝑎 au sommet 𝑓, déterminer cette distance.
3-) Déterminer le diamètre du graphe 𝐺.
Exercice 2 :
1-) Soit 𝐺 = (𝑋, 𝑈) un graphe orienté
a-) Qu’est-ce qu’un sous –graphe de 𝐺 ?
b-) Qu’est-ce qu’un graphe partiel de 𝐺 ?
2-) Quelle est la différence entre un chemin simple et un chemin élémentaire ?
Exercice 3:
Soit le graphe orienté 𝐺 = (𝑋, 𝑈) de la figure suivante :
𝑣1 𝑣2
𝑣3 𝑣4
𝑣5
1-) Déterminer les degrés internes et externes de chaque sommet ; puis, vérifier les relations qui
existent entre le nombre des arcs et les degrés des sommets.
2-) Y a-t-il des sources ou des puits ?
3-) Déterminer la matrice d’adjacence 𝑀 de ce graphe ; puis 𝑀2 et en déduire le nombre de chemins
de longueur 2 ou moins de 𝑣1 à 𝑣2 .
4-) Que dire de la connexité de ce graphe ?
Problème 2
Exercice 1 :
On considère le graphe suivant :
2
3
2 6
15 5
7 7
8
1 3 9
3 3 9
3
7 13
20 5 8
7
4 7
Exercice 2 :
Dans un centre de loisirs, parmi les nombreuses activités proposées figurent plusieurs jeux : la belote,
les dames, les échecs et le tarot notés respectivement 𝐵, 𝐷, 𝐸 et 𝑇. Pour de raisons de disponibilité et
d’affluence, certaines contraintes sont imposées :
- après une partie de belote, on peut jouer uniquement aux dames et aux échecs ;
- après une partie de dames ou d’échecs, on peut jouer uniquement à la belote ou au tarot ;
- après une partie de tarot, on doit changer de jeux.
1-) Dessiner une représentation du graphe orienté 𝐺 correspondant.
2-) Déterminer les degrés internes et externes de chaque sommet ; puis, vérifier les relations qui
existent entre le nombre des arcs et les degrés des sommets.
3-) Déterminer les chemins élémentaires de 𝐵 à 𝐷.
4-) Déterminer la matrice d’adjacence 𝑀 du graphe 𝐺.
5-) Calculer les matrices 𝑀 et 𝑀2 , et en déduire le nombre de circuits de longueur 3. Combien
y a-t-il de chemins d’origine 𝐵 et de longueur 3 ?
6-) Que dire de la connexité de ce graphe ?
7-) Peut-on dire que le graphe 𝐺 que vous avez construit est un graphe planaire et pourquoi ? Sinon
le rendre planaire.
Exercice 3 :
Le diagramme d’état d’une machine à état fini est représenté par le graphe suivant :
Problème 3
Exercice 1 :
1-) Définir, en une phrase, chacune des expressions suivantes en réseau PERT : 𝒂) Etape ;
𝒃) Tâche ; 𝒄) Tâches de début ; 𝒅) Tâches de fin ; 𝒆) Tâches simultanées ; 𝒇) cul-de-sac ; 𝒈)
marge totale ; 𝒉) marge libre.
2-) Définir : 𝒂) Graphe planaire; 𝒃) chemin hamiltonien
Exercice 2 :
On considère le réseau de transport suivant où les arcs sont munis de capacités ( c ( x, y ) ) et
pour lequel une application est donnée.
(8) (4)
1E 6 4 7
(5) (5) 4
5 5
(13)
5 (10) (3) 2 (6) 4 (15)
(6) 6 (2) 10
5
2 (10)
(15) (8) (6)
e 2 5 8 s
6 6 8
15 (3) (12)
(12) 0 8 (7) 0 (10)
(3) 1
8 (2) 2 (4) (6)
4 1 10
(2) (3)
3 6 9
2 2
N.B. les valeurs entre parenthèses sont les capacités des arcs. Par exemple : c ( e,1) = 13 et ( e,1) = 5
1-) Montrer que les valeurs ( x , y ) figurant sur les arcs forment un flot.
2-) Quelle est la valeur de ce flot ?
3-) Ce flot est-il compatible ?
4-) Montrer que ce flot n’est pas complet. Le modifier pour le rendre complet.
5-) Quelle est la valeur de ce nouveau flot ?
Exercice 3 :
On considère la matrice d’adjacence M d’un graphe orienté telle que :
0 1 1 0 0
1 0 1 1 0
M = 0 0 0 0 1
0 0 1 1 0
0 0 1 1 0
1-) Dessiner le graphe correspondant.
2-) Déterminer les degrés internes et externes de chaque sommet ; puis, vérifier les relations qui
Existent entre le nombre des arcs et les degrés des sommets.
3-) Y a-t-il des sources ou des puits ?
Exercice 4:
1-) Proposer deux représentations possibles pouvant permettre de décrire un graphe.
2-) Considérons le graphe ci-dessous.
x2
u1 u4
u2
x1 x3
u3
Exercice 5:
Supposons que l’enregistrement de paie d’un employé soit organisé comme suit : 00
Employé, 01 Numéro, 01 Identité, 02 Nom, 02 Prénom, 01 Heures, 02 Normales,
02 Supplémentaires, 01 Taux.
1-) Tracer l’arborescence ordonnée correspondant.
2-) Quelles sont les données de groupe ? 3-) Quelles sont les données élémentaires ?
Problème 4 :
Exercice 1 :
Soit le projet de réseau routier suivant :
- G = (X, U) le graphe du projet
- Les valeurs sur les arcs représentent un nombre maximal de véhicules à l’heure (capacité).
7
A B
6
5 10
8
10
S 4
C D P
2
1 3 6
8
4
E F
TAF. Trouver le débit horaire total maximal de véhicules susceptible de s’écouler entre les villes 𝑆 et
𝑃.
Exercice 2 :
Une entreprise a besoin de cinq techniciens pour réaliser cinq tâches. Chaque technicien doit réaliser une
seule tâche. La matrice des coûts de réalisation des tâches par les techniciens est donnée dans le tableau
suivant.
Tâche A Tâche B Tâche C Tâche D Tâche E
er
1 technicien 17 15 9 5 12
2eme technicien 16 16 10 5 10
eme
3 technicien 12 15 14 11 5
4eme technicien 4 8 14 17 13
eme
5 technicien 13 9 8 12 17
TAF : En appliquant la méthode hongroise, trouver l’affectation qui minimise le coût total de l’entreprise.
Exercice 3 :
Le projet de rénovation du séjour d’un appartement est donné dans le tableau suivant
Tâches A B C D E F G H I
Durée en jours 1 3 1 1 1 3 2 1 2
Antériorité - A A A B, D B, C B F, G E, H
On vous demande :
Exercice 4:
Une entreprise désire réaliser 5 opérations différentes numérotées (𝑜1 , 𝑜2 , 𝑜3 , 𝑜4 , 𝑜5 ). Elle
dispose pour le faire de 5 techniciens numérotés(𝑡1 , 𝑡2 , 𝑡3 , 𝑡4 , 𝑡5 ) . Elle vous demande de lui
proposer une répartition des contrats qui lui permettrait de minimiser son coût total sachant que les
devis proposés par les techniciens (pour les différentes opérations) sont résumés dans le tableau
suivant :
𝑇𝑒𝑐ℎ𝑛𝑖𝑐𝑖𝑒𝑛𝑠
𝑡1 𝑡2 𝑡3 𝑡4 𝑡5
𝑜1 12 9 8 3 6
𝑜2 6 7 5 8 14
𝑇â𝑐ℎ𝑒𝑠 𝑜3 9 10 3 2 8
𝑜4 12 12 15 9 8
𝑜5 [ 6 7 8 14 2]
Exercice 5 :
Le projet de rénovation du séjour d’un appartement est donné dans le tableau suivant
Tâches A B N H D E M G F K C L R J
Temps (en heures) 3 4 3 2 2 2 4 4 3 2 3 5 2 2
Tâches antérieures E K, C G R, A, M J, - C - L ,G C - G J E
E
On vous demande de :
1. définir : tâches de début et tâches de fin.
2. dire quelles sont les tâches de début et celles de fin de ce projet ?
3. définir une étape et une tâche dans un réseau PERT,
4. construire le réseau PERT
5. calculer en combien de temps minimum le projet pourra être réalisé.
6. déterminer le chemin critique, la marge libre de chacune des tâches H, M et K.