Académique Documents
Professionnel Documents
Culture Documents
Coursgraphe
Coursgraphe
APPLICATIONS
30 mars 2012
Graphes orientés
Exemple
Soit G = (S, A) le graphe orienté défini par : S = {x, y, z} et A = {a, b, c, d} où
a = (x, z), b = (z, x), c = (x, y), d = (z, y) et e = (y, y).
z
d
e
a b y
Etant donné un arc u = (x, y), on dit que le sommet x est l’origine ou l’extrémité
initiale de u ; le sommet y est le but ou l’extrémité finale ou terminale de u. On dit aussi
que y est un successeur de x et que x est un prédécesseur de y. On dit également que les
sommets x et y sont adjacents ou voisins et que l’arc u est incident à x et y.
1
Proposition 1 La somme des degrés des sommets de G est égale à deux fois la taille de
G.
Preuve : Il suffit de remarquer que dans la somme des degrés chaque arc est compté
deux fois : une fois dans le demi-degré extérieur et une autre fois dans le demi-degré
intérieur.
Corollaire 1 Dans un graphe orienté, le nombre de sommets de degrés impairs est pair.
Etant donné X ⊂ S, on définit :
• w+ (X) est l’ensemble des arcs ayant leur extrémité initiale dans X et leur extrémité
terminale dans S − X.
• w− (X) est l’ensemble des arcs ayant leur extrémité initiale dans X − S et leur extrémité
terminale dans X.
• w(X) = w+ (X) + w− (X) est appelé un cocycle du graphe.
Une chaîne élémentaire est une chaîne telle qu’en la parcourant, on ne rencontre pas
deux fois le même sommet. De façon équivalente, on peut la définir comme une chaîne dont
les sommets sont tous de degré 2 sauf ses extrémités.
Un cycle est une chaîne dont les extrémités coïncident. Un cycle élémentaire est un
cycle dont tous les sommets sont de degré 2.
Un chemin élémentaire est un chemin tel qu’en le parcourant, on ne rencontre pas deux
fois le même sommet. Dans un chemin élémentaire tous les sommets sont de degré 2 au plus.
Un circuit est un chemin dont les extrémités coïncident. Un circuit élémentaire est un
circuit dont tous les sommets sont de degré 2.
2
1.2 Représentations d’un graphe
1.2.1 Matrice d’incidence (sommets-arcs)
La matrice d’incidence sommets-arcs d’un graphe orienté G = (S, A) est la matrice
P = (pxu ) à coefficients entiers : 0, -1 et 1 tels que pour tout u = (x, y) ∈ A, tous les
coefficients de la colonne u sont nuls sauf pxu = 1 et pyu = −1.
1.2.2 Exemple
a
1 2
b
c
d
4 3
e
On obtient la matrice d’incidence :
1 1 0 0 0
−1 0 1 1 0
0 −1 −1 0 1
0 0 0 −1 −1
1.2.4 Tableaux α et β
On considère ici que les sommets sont rangés et désignés par leur rang. Ainsi on pose
S = {1, 2, . . . , n}. Les tableaux α() et β() sont respectivement des matrices unilignes de
dimension n + 1 et m. Pour chaque sommet i, la liste des sommets successeurs de i est
contenue dans le tableau β() à partir de la case numéro α(i). Et donc l’ensemble des
successeurs de i est contenu entre les cases α(i) et α(i + 1) − 1 du tableau β().
α(1) = 1
+
α(i + 1) = d (i) + α(i)
3
1.3 Quelques graphes particuliers
Soient G = (S, A) un graphe orienté, S1 une partie de S et A1 une partie de A.
On appelle sous-graphe engendré par S1 , le graphe noté GS1 dont les sommets sont les
éléments de S1 et dont les arcs sont les arcs de G ayant leurs deux extrémités dans S1 .
On appelle graphe partiel engendré par A1 , le graphe noté G[A1 ] ayant le même en-
semble S de sommets que G et dont les arcs sont ceux de A1 .
Le sous-graphe partiel engendré par S1 et A1 est le graphe partiel de GS1 engendré par
A1 .
On dit G est strict si G est sans boucle et deux sommets quelconques sont tous deux
incidents à au plus un arc. Si G est strict alors le graphe complémentaire de G a le même
ensemble de sommets que G et comme arcs les arcs complémentaires à A :
(x, y) ∈ A → (x, y) ∈
/ Ā
(x, y) ∈
/ A → (x, y) ∈ Ā
On dit que G est biparti si l’ensemble des sommets S peut être partitionné en deux
sous ensembles S1 et S2 de tel sorte que, tout arc a une extrémité dans S1 et l’autre dans S2 .
On dit que G est complet si G est strict tel que deux sommets distincts quelconques
sont reliés par un seul arc.
Les sous graphes G1 , . . . , Gp engendrés par les sous ensembles S1 , . . . , Sp sont appelés les
composantes connexes du graphe G. Chaque composante connexe est un graphe connexe.
4
1.4.2 Graphe fortement connexe
Soit G = (S, A) un graphe orienté. On dit que G est fortement connexe si, pour tout
couple de sommets (x, y), il existe un chemin allant de x à y. On associe à cette notion de
forte connexité une relation d’équivalence T définie par :
(
soit x = y,
xT y ⇔
soit il existe un chemin allant de x à y et un chemin allant de y à x.
Les classes d’équivalence induites sur S par cette relation forment une partition de S
en : S1 , . . . , Sq . Le nombre q de classes distinctes est appelé le nombre de forte connexité
du graphe.
Les sous graphes G1 , . . . , Gq engendrés par les sous ensembles S1 , . . . , Sq sont appelés
les composantes fortement connexes du graphe G. Chaque composante fortement connexe
est un graphe fortement connexe.
Proposition 4 G est fortement connexe si et seulement s’il n’a qu’une seule composante
fortement connexe.
Proposition 6 Si G est sans circuit alors il admet un sommet source et un sommet puits.
Proposition 7 Si G est strict tel que pour tout x ∈ S on a : d− (x) = d+ (x) alors G est
fortement connexe si et seulement si G est connexe.
Preuve : Soit G = (S, A) un graphe orienté strict tel que pour tout x ∈ S on a :
d− (x) = d+ (x).
Reciproquement supposons que G est connexe mais n’est pas fortement connexe. Donc
G admet q > 1 composantes fortement connexes, notés G1 , . . . , Gq . D’après la proposition
5
5, le graphe réduit Gr est sans circuit. Il existe, d’après la proposition 6, un sommet Gp
(avec p ∈ {1, . . . , q}) dans Gr tel que d+ (Gp ) = 0. Tout arc de G dont l’extrémité initiale
est dans Gp a aussi son extrémité finale dans Gp . D’après lhypothèse, dans le graphe
Gp = (Sp , Ap ) on a : X X
d− (x) = d+ (x),
x∈Sp x∈Sp
mais comme G est connexe il existe une composante fortement connexe Gi = (Si , Ai ), un
sommet y ∈ Si et un sommet x ∈ Sp tels que (y, x) ∈ A. Ce qui donne dans G :
X X
d− (x) > d+ (x),
x∈Sp x∈Sp
Si G est sans circuit alors d’après la proposition 6, il existe s ∈ S tel que d− (s) = 0 et
comme tout sous graphe d’un graphe sans circuit est un graphe sans circuit on deduit que
pour toute source s le graphe G − {s} est sans circuit.
Réciproquement supposons que s est une source de G et donc le sous graphe G − {s}
est sans circuit. Si G contenait un circuit alors ce circuit contiendrait s et d− (s) > 0 ; ce
qui contredit le fait que s est une source de G.
Proposition 9 Un graphe orienté strict admet un tri topologique si et seulement s’il est
sans circuit.
6
• Il existe s2 ∈ S2 tel que d−
G2 (s2 ) = 0 et posons S3 = S2 − {s2 } et G3 = GS3
...
• Il existe sn−1 ∈ Sn−1 tel que d− Gn−1 (sn−1 ) = 0 et posons Sn = Sn−1 − {sn−1 } et Gn =
GSn−1
• Il existe sn ∈ Sn tel que d−
Gn (sn ) = 0.
Ainsi on construit un tri topologique.
1.6 Arborescence
1.6.1 Définitions
Soient G = (S, A) un graphe orienté et r ∈ S. On dit que r est une racine de G si tout
sommet de G peut être atteint par un chemin d’origne r. Une arborescence est un graphe
orienté a une seule racine et sans cycle.
On dit que G possède la condition des demi-degrés intérieurs lorsque d− (s) = 1 pour
tout sommet s de G sauf pour un sommet qu’on note r, pour lequel d− (r) = 0.
Exemple
r
a b c
d e f g
Les sommets puits a, d, e, h, g sont appelés feuilles. d et e sont frères et fils de b. les
descendants de c sont f, g, h.
7
7. G est sans circuits et possède la condition des demi-degrés intérieurs.
Preuve : Exercice.
L’algorithme détaillé
à-traiter := ∅
Pour tout s de S faire
état(s) := non-atteint
Pour tout s de S faire
Si état(s) := non-atteint Alors
état(s) := atteint
père(s) := ⊥ (*s est une racine*)
à-traiter :=à-traiter ∪{s}
Tant que à-traiter :6= ∅ Faire
y := choix(à-traiter)
à-traiter := à-traiter−{y}
Pour tout z de Succ(y) Faire
Si état(z) = non-atteint Alors
père(z) := y
état(z) := atteint
à-traiter := à-traiter ∪{z}
état(y) := examiné
8
1.8 Exercices
1.8.1 Exercice 1
On considère le graphe G = (X, U ) défini par : X = {1, 2, 3, 4, 5} et U = {a = (1, 2), b =
(2, 4), c = (3, 4), d = (2, 3), e = (5, 2), f = (3, 5)}
1. Donner son codage par sa matrice d’adjacence, puis par sa matrice d’incidence.
2. Ce graphe contient-il des circuits ? Si oui, donnez-les.
3. Est-il fortement connexe ? si oui justifier sinon déterminer son graphe réduit.
1.8.2 Exercice 2
On propose deux méthodes pour coder un graphe G = (S, A) en machine : la matrice
d’adjacence M et la file des successeurs de tableaux ALP HA1, ALP HA2 et BET A. La
file des successeurs BET A est le tableau des successeurs, les successeurs du sommet s se
trouvant entre les adresses ALP HA1(s) et ALP HA2(s) dans le tableau BET A (en cours
on avait un seul tableau ALP HA).
1.8.3 Exercice 3
(Lemme de Koenig) Montrer que de tout chemin on peut extraire un chemin élémen-
taire. Peut-on étendre ce résultat aux chaînes ?
1.8.4 Exercice 4
Ecrire un algorithme glouton (de proche en proche) permettant de dire si un graphe
est connexe ou non. Adapter le pour déterminer les composantes fortement connexes d’un
graphe.
9
1.8.5 Exercice 5
Soient G = (S, A) un graphe oriente d’ordre n , M la matrice d’adjacence associée et I
la matrice identité d’ordre n. On pose N = (I + M )n−1 = (Nij )ij .
1. Montrer que I + M + M 2 + . . . + M n−1 = N .
2. Montrer que Nij = 1 si et seulement s’il existe un chemin allant de i à j de longueur
au plus égale à n − 1. Déduire que G est fortement connexe si et seulement si Nij = 1
pour tous i et j.
3. En utilisant les résultats des questions précédentes, déterminer les composantes for-
tement connexes du graphe de l’exercice 1.8.1 et déterminer son graphe réduit.
1.8.6 Exercice 6
Soit G = (S, A) un graphe oriente d’ordre n et f une application de S dans {1, 2, . . . , n}.
On dit que f est un tri topologique (on dit aussi bonne numérotation ou numérotation
acyclique) si pour tout couple (x, y) de A on a f (x) < f (y).
1. Montrer que G est sans circuits si et seulement si pour toute partie X de S, le
sous-graphe GX engendré par X possède au moins un sommet sans prédécesseurs.
2. Montrer que G est sans circuits si et seulement s’il existe un tri topologique sur G.
1.8.7 Exercice 7
Soit G un graphe orienté sans circuits ayant un unique sommet source r (sans prédé-
cesseurs). On fait observer que tout sommet de G est accessible par un chemin depuis r.
On appelle niveau de sommets dans G, tout ensemble de sommets constitue des sommets
qui sont à une même plus grande longueur (de chemin) de r. En particulier le sommet
r constitue à lui seul un niveau, correspondant à la plus grande longueur 0. Puis, pour
chaque plus grande longueur possible 1, 2, . . . (jusqu’à la plus grande valeur k pour laquelle
il existe dans G un sommet à plus grande longueur k de r), correspond un niveau de som-
mets dans G. Les niveaux, non vides, ainsi définis constituent une partition de l’ensemble
des sommets de G, appelée classement par niveaux. Les niveaux sont par ailleurs ordonnés
dans l’ordre des valeurs des plus grandes longueurs correspondantes.
1. Montrer que deux sommets d’un même niveau ne sont jamais reliés par un arc.
2. Montrer que chaque arc de G va d’un niveau à un niveau supérieur.
3. Montrer qu’en numérotant les sommets de G dans l’ordre croissant des niveaux, et
de façon quelconque à l’intérieur d’un même niveau, on obtient un tri topologique.
4. Déterminer le classement par niveaux des sommets du graphe dont l’ensemble des
sommets est : {r, a, b, c, d} et celui des arcs est : {(r, a); (r, b); (a, c); (b, d); (c, d)}.
5. Trouver dans ce graphe, un tri topologique qui ne peut pas être obtenu à partir d’un
classement par niveaux obtenu comme indiqué à la question 3).
1.8.8 Exercice 8
Soit G=(S, A) le graphe défini par :
10
Sommets Sommets antérieurs
1 2
2 1
3 1,4
4 3,5
5 7
6 4,5,6,8
7 6,8
8 2
1. Donner son codage par sa matrice d’adjacence.
2. Ce graphe contient-il des circuits ? Si oui, donnez-les.
3. Est-il fortement connexe ? justifiez votre réponse.
4. Déterminer son graphe réduit Gr .
5. Montrer que Gr est sans circuit.
6. Donner la matrice Mr d’adjacence du graphe réduit Gr et calculer ses puissances
successives. Que constatez-vous ?
7. Plus généralement, montrer qu’un 1-graphe G (quelconque) est sans circuits si et
seulement si sa matrice M d’adjacence est nilpotente (c’est- à -dire qu’il existe un
entier k > 0 tel que M k = 0).
1.8.9 Exercice 9
Un graphe G est quasi fortement connexe si à tous couples (s, t) de ses sommets on
peut associer un sommet x tel qu’il existe un chemin de x à s et un chemin de x à t.
1. Montrer que G est quasi fortement connexe si et seulement si G admet une racine.
2. Un graphe fortement connexe est-il quasi fortement connexe ? Si oui combien a-t-il
de racines ?
1.8.10 Exercice 10
Soit G = (S, A) un graphe non valué et r un sommet fixé de G.
1. Enoncer un algorithme de calculs des distances de r à tous les autres sommets de G.
On s’appuiera sur celui des parcours en largeur d’un graphe (voir cours).
2. Pour tout entier k ≥ 0, on note Dk l’ensemble des sommets à distance k de r et Mk
l’ensemble des sommets marqués à distance k de r dans l’algorithme (NB : pour éviter
toute confusion au niveau de la distance on dira simplement que Mk est l’ensemble
des sommets marqués k dans l’algorithme). Noter que D0 = M0 = r.
(a) Montrer que les Mk sont deux à deux disjoints. Qu’en est-il des Dk ?
(b) Montrer par récurrence que Mk = Dk pour tout k.
(c) Calculer la complexité de l’algorithme.
11
Chapitre 2
Chemins optimaux
l: A → R
a 7→ l(a)
est appelée une valuation du graphe G, on note G = (S, A, l) et on dit que le graphe est
valué.
12
2.1.3 Plus long chemin et plus grande longueur
Soit G = (S, A, l) un graphe orienté valué. Un chemin σ de s à t, deux sommets de G,
est un plus long chemin de s à t s’il est de longueur maximum.
Proposition 12 Soient s et t deux sommets de G. Pour qu’il existe un plus long chemin
allant de s à t il faut et il suffit que tout chemin allant de s à t ne contienne pas de circuit
de longueur strictement positive.
Preuve : Exercice.
On appelle la plus grande longueur ou encore plus grande distance de s à t le maximum
des longueur de s à t et on note D(s, t).
Algorithme
a) Initialisation
Pour tout sommet s ∈ S
Atteint(s) :=Faux
Fin Pour
13
b) Visite de r (sommet origine unique)
Atteint(r) :=Vrai
Enfiler(F ,r)
d(r, r) = 0
s := r
c)
Tant que file-vide(F )=Faux
Pour tout successeur t de s qui n’est pas encore atteint
d(r, t) = d(r, s) + 1
Atteint(t) :=Vrai
Enfiler(F ,t)
Fin Pour
Défiler(F ,s) s :=tête-file(F )
Fin Tant Que
Noter que Atteint( ) est un tableau indexé sur les sommets du graphe G.
Exemple
2 3 4
1 5 6 7 8
9 10
s 1 2 3 4 5 6 7 8 9 10
d(r, s) 0 1 2 5 1 2 4 6 1 3
Il existe plusieurs arborescences, en voici une.
14
2 3 4
1 5 6 7 8
9 10
3. la plus grande longueur ou distance D(s, t) est bien définie car G est sans circuits.
Donc on peut calculer les plus grandes distances de proche en proche dans G.
(
D(s1 , s1 ) = 0
D(s1 , sj ) = Maxsi ∈Γ−1 (sj ) (D(s1 , si ) + l(si , sj ))
Définition
Soient G = (S, A, l) le graphe potentiel-tâches associé au projet avec S = {α, 1, 2, . . . , n, ω}
où α désigne le début et ω la fin du projet, considérés comme des tâches fictives de durée
nulle. (i, j) ∈ A si la tâche i est antérieure ‘a la tâche j. La longueur ou le poids de l’arc
(i, j) est l(i, j) = di . Il est claire que G est orienté strict et sans circuits.
15
Notions de dates
La date au plus tôt ti d’une tâche i est la date la plus rapprochée (optimiste) à laquelle
i peut commencer. On a : tα = 0 et tω est la durée minimum du projet.
(
tα = 0
ti = Maxj∈Γ−1 (i) (tj + di ) pour i ∈ {1, . . . , n, ω}
La date au plus tard Ti d’une tâche i est la date la plus tardive (pessimiste) à laquelle
i doit commencer pour que la durée minimale de réalisation du projet soit respectée c’est-
à-dire Tω = tω . Les dates au plus tard se calcul par un compte à rebours à partir de Tω
et
Ti = Minj∈Γ(i) (Tj − di ) pour i = n, n − 1, . . . , 2, 1
on également
Ti = D(α, ω) − D(i, ω)
.
La date de fin au plus tard Ti′ d’une tâche i est la date la plus pessimiste de fin d’une
tâche et se calcul par la formule suivant :
Tâches a b c d e f g
Durées 4 3 6 2 8 7 1
Tâches antérieures a,b b c,d,e c
On obtient le graphe potentiel-tâches G = (S, A, l) ci-dessous, où S = {deb, a, b, c, d, e, f, g, f in}
4 6
a c g
3 6 1
3 2 7
deb b d f fin
Les marges
La marge totale est le délai M T (i) = Ti − ti pouvant être accordé à une tâche sans
repousser la durée minimal du projet. On dit qu’une tâche i est critique si M T (i) = 0. La
succession de taches qui imposent la durée minimale du projet est appelée chemin critique.
16
La marge libre d’une tâche i est le délai M L(i) pouvant être accordé au commencement
de la tâche sans modifier la marge totale des tâches qui suivent.
ou encore
M L(i) = Ti′ − ti
. Contrairement à la marge totale, la marge libre peut être consommée sans aucune consé-
quence sur les tâches qui suivent dans le projet. La marge libre d’une tâche est toujours
inférieure ou égale à sa marge totale.
Définitions
Les successives se suivent dans le temps et sont représentées par un chemin. Par exemple
les tâches a, b, c sont successives :
a b c
1 2 3 4
Les tâches simultanées ont le même début d’exécution. Par exemple les tâches a, b sont
simultanées :
a
1 3
Les tâches convergentes aboutissent à la même étape. Par exemple a, b sont conver-
gentes :
a
3 1
17
b c g
1 2 3 4
d e f
5 6 7 8
f ne peut pas commencer avant que c ne soit achevée même si e est terminée. On ne
peut pas avoir le graphe suivant :
b
1 2 6
c g
d e f
3 4 5 7
car cela signifirait que e doit être achevée pour que g commence, ce qui n’est pas né-
cessaire.
les tâches fictives sont introduites pour éviter que deux tâches soient à la fois simulta-
nées et convergentes.
18
L’algorithme considère les sommets dans un ordre qui dépend des valeurs λ(si ) appelées
labels. A la fin on a λ(si ) = d(s1 , si ) pour tout si ∈ S.
7
2 5
1
a 5 e
1 2 3
7
c f
On obtient alors :
Sommets a b c d e f
Initialisation 0 7 1 ∞ ∞ ∞
..
Itération 1 . 6 1 ∞ 3 8
.. ..
Itération 2 . 5 . 8 3 8
.. .. ..
Itération 3 . 5 . 8 . 6
.. .. .. ..
Itération 4 . . . 8 . 6
.. .. .. .. ..
Itération 5 . . . 8 . .
On obtient une arborescence de parcours
b d
2 5
1
a e
1 2
c f
19
λ0 (si ) = ∞ pour tout si 6= s1
k=1
2. A l’itération k
Faire λk (s1 ) = 0
et λk (si ) = Min(λk−1 (si ), Minsj ∈Γ−1 (si ) (λk−1 (sj ) + l(sj , si ))) pour tout si 6= s1
7 1
2
2
a 2 e
8 3
-2
2
c f
On obtient alors :
Sommets a b c d e f
Initialisation 0 ∞ ∞ ∞ ∞ ∞
Itération 1 0 7 8 ∞ ∞ ∞
Itération 2 0 7 8 11 8 9
Itération 3 0 7 6 10 8 9
Itération 4 0 7 6 10 8 8
Itération 5 0 7 6 10 8 8
On obtient une arborescence de parcours
2.6 Exercices
2.6.1 Exercice 1
Déterminer le graphe potentiel-étapes (graphe PERT) et une arborescence de chemins
minimaux du projet suivant :
Tâches a b c d e f g
Durées 4 3 6 2 8 7 1
Tâches Préalables a,b b c,d,e c
20
2.6.2 Exercice 2
Reprendre l’exemple du paragraphe 4.2 du cours. Dérouler l’algorithme de Dijkstra et
déterminer une arborescence de chemins minimaux.
2.6.3 Exercice 3
Reprendre l’exemple du paragraphe 5.2 cours. Dérouler l’algorithme de Bellman et dé-
terminer une arborescence de chemins minimaux.
2.6.4 Exercice 4
Soit G = (S, A, l) un graphe value avec S = {1, . . . , 7, 8, 9}, défini par sa matrice
M = (mij )ij telle que mij = l(i, j).
1. Montrez que ce graphe est sans circuit (on pourra donner simplement un ordre topo-
logique des sommets, sans justification supplémentaire).
2. Résolvez le problème du plus court chemin de 1 à 9. On justifiera le choix de l’algo-
rithme, et on n’oubliera pas de donner à la fin un chemin optimal (pas seulement sa
valeur).
3. On suppose maintenant que la valeur d’un chemin est non plus la somme des lon-
gueurs des arcs mais leur produit. Indiquez comment modifier l’algorithme utilisé
à la question 2 pour trouver un chemin minimum (indiquer simplement la/les mo-
dification(s) ; il n’est pas nécessaire de prouver la validité du nouvel algorithme).
Appliquez votre algorithme modifié sur le graphe donné plus haut, pour trouver un
chemin optimal de 1 à 9.
4. On suppose maintenant que la valeur d’un chemin est non plus la somme des lon-
gueurs des arcs ni leur produit mais la plus petite longueur des arcs. Indiquez com-
ment modifier l’algorithme utilisé à la question 2 pour trouver un chemin maximum.
(Indiquer simplement la/les modification(s) ; il n’est pas nécessaire de prouver la va-
lidité du nouvel algorithme). Appliquez votre algorithme modifié sur le graphe donné
plus haut, pour trouver un chemin optimal de 1 à 9.
2.6.5 Exercice 5
Une entreprise commande la réalisation d’un projet informatique. Un analyste est
chargé de le réaliser et de fournir au plus tôt au client un planning d’exécution du projet.
21
Après avoir recensé les différentes opérations, leurs durées en jours et le matériel ou le
personnel nécessaire à leur réalisation, on dispose du tableau suivant :
22
Chapitre 3
Exemple
[4] [2]
s1 x1 x2 p1
[2]
[1] [5]
3.1.2 Flot
Un flot sur un réseau de transport R = (X, A, c) est une application f : A → N qui
vérifie :
1. 0 ≤ f (a) ≤ c(a) pour tout a ∈ A
P P
2. a∈ω + ({x}) f (a) = a∈ω − ({x}) f (a) pour tout x ∈ X − (S ∪ P )
P P P P
3. a∈ω + ({s}) f (a)− a∈ω − ({s}) f (a) ≥ 0 pour tout s ∈ S et a∈ω − ({p}) f (a)− a∈ω + ({p}) f (a) ≥
0 pour tout p ∈ P .
23
+ et f − (Z) =
P
P on pose d’une mannière générale pour tout Z ⊂ X, f (Z) =
Si a∈ω + (Z) f (a)
a∈ω − (Z) f (a) alors les conditions ci-dessus deviennent
1. 0 ≤ f (a) ≤ c(a) pour tout a ∈ A
2. f + (x) = f − (x) pour tout x ∈ X − (S ∪ P )
3. f + (s) − f − (s) ≥ 0 pour tout s ∈ S et f − (p) − f + (p) ≥ 0 pour tout p ∈ P .
Preuve :
X
+ −
0= x∈X (f (x) − f (x)) (3.1)
X X X
+ − + − + −
= x∈S (f (x) − f (x)) + x∈X−(S∪P ) (f (x) − f (x)) + x∈P (f (x) − f (x))
(3.2)
X X
+
= x∈S (f (x) − f − (x)) + x∈P (f
+
(x) − f − (x)) (3.3)
= (f + (S) − f − (S)) + (f + (P ) − f − (P )). (3.4)
Proposition 14 L’étude d’un flot dans un réseau de transport quelconque peut toujours
se ramener à l’étude d’un flot dans un réseau de transport à entrée et sortie uniques.
et
f ′ ((pj , p)) = f − (pj ) − f + (pj ) pour j = 1, 2, . . . , t
On vérifie (en exercice) facilement que f ′ est bien un flot sur R′ et que v(f ) = v(f ′ ).
Inversement, étant donné un flot sur R′ on en déduit directement un flot sur R de même
valeur en considérant sa restriction sur les arcs de R.
Dans un flot f sur un réseau à une entrée et sortie unique, l’entrée est une source et
la sortie est un puits (au sens usuel définit plus haut) et on a : v(f ) = f + (s) = f − (p) car
f + (p) = f − (s) = 0. En ajoutant au réseau l’arc (p, s) de capacité infinie on obtient un
réseau dans lequel la loi de conservation du flot est vérifiée en tout sommet. Dans toute
la suite du chapitre, on suppose que les réseaux considérés sont à une entrée
et sortie uniques.
Proposition 15 Si R = (X, A, c) un réseau et Z ⊂ X alors f + (Z) = f − (Z)
Preuve : On somme l’égalité de la loi de conservation sur Z. Après des simplifications
appropriées on obtient le résultat.
24
3.2 Flot maximum et coupe minimum
3.2.1 Définitions et propriétés
Soit R = (X, A, c) un réseau. Une coupe de R est un ensemble d’arcs de R de la forme
suivante : K = ω + (Z) où Z ⊂ X tel que s ∈ Z Pet p ∈
/ Z. La capacité d’une coupe K est
la somme des capacités des arcs de K : c(K) = a∈K c(a).
Proposition 16 Pour tout flot f et toute coupe K sur un réseau R on a : v(f ) ≤ c(K)
Preuve : on a :
X
c(K) ≥ f + (Z) ≥ f + (Z) − f − (Z) = (f + (x) − f − (x)) = f + (s) = v(f )
x∈Z
Un flot maximum est un flot de valeur la plus grande possible. De même une coupe
minimum est une coupe de capacité la plus petite possible.
Corollaire 2 Pour tout flot f et toute coupe K sur un réseau R si v(f ) = c(K) alors f
est un flot maximum et K est une coupe minimum.
Proposition 17 S’il existe pour un flot f sur un réseau R une chaîne augmentante alors
il existe un flot f ′ tel que v(f ) < v(f ′ ).
Vérifier (en exercice) que f ′ est bien un flot sur R. On a v(f ′ ) = v(f ) + τ (µ) et comme
τ (µ) > 0, v(f ′ ) > v(f ).
Proposition 18 S’il n’existe pas pour le flot f sur R une chaîne augmentante alors il
existe une coupe K telle que c(K) = v(f ).
Preuve : Il suffit de prendre K = ω + (Z) avec Z est constitué par s et les sommets x
tels qu’il existe une chaîne insaturée allant de s à x. Il est claire que p ∈
/ Z. Vérifier (en
25
exercice) que pour tout a ∈ K = ω + (Z) on a f (a) = c(a) et que f (a) = 0 si a ∈ ω − (Z).
On peut alors écrire :
X
c(K) = f + (Z) = f + (Z) − f − (Z) = (f + (x) − f − (x)) = f + (s) = v(f ).
x∈Z
Les preuves des propositions suivantes qu’on laisse en exercice, sont des conséquences di-
rectes des propositions précédentes.
Proposition 19 Un flot sur un réseau est maximum si et seulement s’il n’existe pas de
chaîne augmentante.
Proposition 20 Dans un réseau la valeur d’un flot maximum est égale à la capacité d’une
coupe minimum.
algorithme
1. Marquer s
2. Soit x un sommet marqué et non encore examiné ;
Marquer y par (+x) si y est un successeur non marqué de x avec f (x, y) < c(x, y)
3. Si p est marqué (on a un chemin augmentant), aller en (4)
Si tous les sommets marqués sont examinés alors le flot est complet ;
sinon aller en (2)
4. Améliorer le flot
Effacer les marques
Aller en (1)
Exemple
En trois dépôts A, B, C, on dispose respectivement de 20, 35 et 10 tonnes de marchan-
dises. On a des demandes de 25, 20 et 20 tonnes de marchandises aux destinations D, E, F .
Il existe des possibilités de transport à l’aide de camoins. Ces possibilités sont rapportées
dans le tableau suivant :
D E F
A 15 10 0
B 15 5 5
C 5 0 10
Déterminer un plan de transport permettant de transporter des dépôts aux destinations
une quantité maximum.
26
Ce problème se modélise aisément par un réseau de transport R :
[15]
A D
[20] [15] [10] [25]
[10]
C F
Chemins τ
sADp 15
sAEp 5
sBDp 10
sBEp 5
sBFp 5
sCFp 10
Le flot obtenu a pour valeur 50 et il est complet (justifier).
algorithme
1. Marquer l’entrée s
2. Soit x un sommet marqué non examiné
Etudier tous les successeurs y de x :
Marquer y par (+x) s’il est non marqué et si f (x, y) < c(x, y).
Etudier tous les prédécesseurs z de x :
Marquer z par (−x) s’il est non marqué et si f (z, x) > 0
3. Si p est marqué (on a une chaîne augmentante), aller en (4)
S’il reste des sommets marqués non examinés aller (2)
sinon le flot est maximum, FIN.
4. Améliorer le flot à l’aide de la chaîne améliorante ayant permis de marquer p.
Effacer les marques et aller en (1)
27
3.4 Exercices
3.4.1 Exercice 1
Prouver que le flot rapporté ci-dessous n’est pas maximal. L’augmenter. Combien y
a-t-il de flots de valeur maximale ? La valuation des arcs represente le flot sur la capacité.
B
10/10 10/10 0/10
10/20 10/10
s A C F
0/10 10/20
10/10
0/10 p
D
10/10
3.4.2 Exercice 2
On considère dans cet exercice un problème de transport de marchandises. Plus pré-
cisément, une entreprise extrait une matière première sur trois sites de production p1 , p2
et p3 . L’entreprise possède trois usines u1 , u2 et u3 . Des camions permettent d’amener la
matière première des sites de productions aux usines. Plus précisément, la matière extraite
en p1 peut être amenée en u1 et u2 , celle extraite en p2 peut être amenée en u1 , u2 et u3 ,
celle extraite en p3 peut être amenée en u2 et u3 . Dans les usines, la matière première est
utilisée pour fabriquer des produits destinés à la vente.
Le but pour l’entreprise est de produire le plus possible, donc d’utiliser le maximum de
matière première. Les trois sites de productions p1 , p2 et p3 peuvent extraire au maximum
respectivement 15, 15 et 25 milliers de tonnes (Mt) de matière. Les capacités des liaisons
entre un site pi et une usine uj sont de 10 Mt de matière première. Enfin, en raison de
capacité de production limitée, l’usine u1 peut utiliser au maximum 30 Mt de matière
première, l’usine u2 au maximum 15 Mt et l’usine u3 au maximum 30 Mt.
1. Modéliser la situation par un réseau de transport.
2. Faites passer un flot où de p1 partent 10 Mt vers u1 et 5 Mt vers u2 , de p2 partent 5
Mt vers u1 , 5 Mt vers u2 et 5 Mt vers u3 , de p3 partent 5 Mt vers u2 et 10 Mt vers
u3 . Ce flot est-il complet ?
3. Appliquez l’algorithme de Ford et Fulkerson pour trouver un flot maximum. Donnez
également une coupe de capacité minimum.
4. On voudrait modéliser les deux nouvelles contraintes suivantes.
(a) En raison de limites sur les engins travaillant sur les sites p1 et p2 , la quantité
totale de matière première extraite sur les sites p1 et p2 ne peut dépasser 25.
(b) En raison de limites sur les personnels travaillant dans les usines p2 et p3 , la
quantité totale de matière utilisée dans les usines u2 et u3 ne peut dépasser 35.
28
3.4.3 Exercice 3
Soit G = (S, A) un graphe orienté, et soient s et t deux sommets particuliers. Un s − t-
chemin est un chemin orienté débutant en s et terminant en t. Deux s − t-chemins sont
dits arc-disjoints s’ils n’ont pas d’arc en commun (mais ils peuvent avoir des sommets en
commun).
0 8
1 6 t
s 5 7 9
29
Chapitre 4
4.1.1 Définition
Un graphe non orienté G est défini par la donnée d’un ensemble S dont les éléments
sont appelés des sommets ou noeuds et d’un ensemble E dont les éléments sont des sous
ensembles à 1 ou 2 éléments de S appelées arêtes. On le note G = (S, E). Le nombre n de
sommets de G est appelé l’ordre de G et le nombre m des arêtes de G est appelée la taille
de G.
Exemple
Soit G = (S, E) le graphe défini par : S = {x, y, z} et E = {a, b, c, d} où b = {z, x},
c = {x, y} et d = {z, y}.
d
b y
Etant donnée une arête u = {x, y}, on dit que les sommets x et y sont les extrémités
de u. On dit également de les sommets x et y sont adjacents et que l’arc u est incident à
x et y.
30
4.1.2 Arêtes et degré
Deux arêtes sont adjacentes si elles sont incidentes à au moins une extrémité commune.
Le degré du sommet x, noté dG (x) ou plus simplement d(x) est le nombre d’arêtes ayant
x pour extréminté.
Les resultats (Proposition et Corollaire) du paragraphe 1.1.2 restent valables.
Etant donné X ⊂ S, on appelle cocycle de G l’ensemble w(X) des arêtes ayant une
extrémité dans X et l’autre extrémité dans S − X.
Une chaîne élémentaire est un chaîne telle qu’en la parcourant, on ne rencontre pas
deux fois le même sommet. De façon équivalente, on peut définir un chaîne comme une
chaîne dont les sommets sont tous de degré 2 sauf ses extrémintés. La proposition 2 est
valable pour les chaînes.
Un cycle élémentaire est un cycle minimal pour l’inclusion i.e ne contenant strictement
aucun autre cycle.
w(x) = {u / pxu = 1}
Exemple
a
1 2
b
c
d
4 3
e
On obtient la matrice d’incidence :
31
1 1 0 0 0
1 0 1 1 0
0 1 1 0 1
0 0 0 1 1
Tableaux α et β
On considère ici que les sommets rangés et sont désignés par leur rang. Ainsi on pose
S = {1, 2, . . . , n}. Les tableaux α() et β() sont respectivement des matrices unilignes de
dimension n + 1 et 2m. Pour chaque sommet i, la liste des sommets successeurs de i est
contenue dans le tableau β() à partir de la case numéro α(i). Et donc l’ensemble des
successeurs de i est contenu entre les cases α(i) et α(i + 1) − 1 du tableau β().
α(1) = 1
α(i + 1) = d(i) + α(i)
On appelle sous-graphe engendré par A, le graphe noté GA dont les sommets sont les
éléments de A et dont les arcs ou arêtes sont les arcs ou arêtes de G ayant leurs deux
extrémités dans A.
On appelle graphe partiel engendré par Y , le graphe noté G[Y ] ayant le même ensemble
X de sommets que G et dont les arcs ou arêtes sont ceux de Y .
On dit G est simple (resp. strict) si G est non orienté (resp. orienté), sans boucle et
deux sommets quelconques sont tous deux incidents à au plus une arête (resp. un arc). Si
G est strict alors le graphe complémentaire de G a le même ensemble de sommets que G
et comme arcs les arcs complémentaires à X :
(x, y) ∈ X → (x, y) ∈
/ X̄
32
(x, y) ∈
/ X → (x, y) ∈ X̄
On dit que G est biparti si l’ensemble des sommets S peut être partitionné en deux
sous ensembles S1 et S2 de tel sorte que, toute arête a une extrémité dans S1 et l’autre
dans S2 .
On dit que G est complet si G est simple (resp. strict) tel que deux sommets distincts
quelconques sont reliés par une seule arête (resp. un seul arc).
Exemples d’arbre
a b d
e c f 1 2 3 4
g h i
Proposition 21 Un arbre tel que n ≥ 2 possède au moins deux sommets pendants (ie de
degré 1).
Preuve : On fait une preuve par récurrence sur n. Il est facile d’établir le résultat pour
n = 1 car un arbre ne peut contenir une boucle. On suppose que n > 1. D’après la
proposition 21, il existe un sommet pendant s. Il est facile de voir que le graphe G′ = G−{s}
est un arbre et donc par hypothèse de récurrence on a : mG′ = nG′ −1. Comme mG′ = mG −1
et nG′ = nG − 1 on obtient mG = nG − 1.
Proposition 23 Dans un arbre, deux sommets quelconque sont reliés par une chaîne élé-
mentaire unique.
33
Preuve : Soient x et y deux sommets d’un arbre. Il existe une chaîne élémentaire qui
relie x et y car le graphe est connexe et supposons qu’il existe une autre chaîne distincte
de la précédente qui les relie. En concaténant les deux chaînes on obtient un cycle ce qui
contredit le fait que le graphe est acyclique.
Preuve : Soit G = (S, E) un graphe connexe (cela suffit). Si e = {s, t} ∈ E n’est pas
un isthme alors il existe dans G − {e} une chaîne µ reliant s et t les extrémités de e et
donc en concaténant µ et e on obtient un cycle contenant e. Donc si e n’appartient à
aucun cycle de G alors e est un isthme. Inversement supposons que e appartient à un cycle
c = (s0 , e, s1 , e2 , s2 , . . . , sk−1 , ek , s0 ) et x et y deux sommets de G − {e}. Comme G est
connexe il existe une chaîne σ = {x = t0 , f1 , t1 , f2 , . . . , tk−1 , fk , tk = y} qui relie x et y.
Si σ est G − {e} alors G − {e} est connexe et e n’est pas un isthme. Sinon e = fi avec
i = 1, . . . , k et posons s0 = ti−1 et s1 = ti . Il suffit de considérer la chaîne obtenu par
la concaténation des trois chaînes suivantes : {x = t0 , f1 , . . . , ti−1 }, {s1 , e2 , . . . , ek , s0 } et
{ti , fi+1 , . . . , fk , tk = y}. Elle est dans G − {e} et donc G − {e} est connexe. Donc si e est
un isthme alors e n’appartient à aucun cycle de G.
34
Preuve : Soit H un graphe partiel d’un graphe connexe G.
Si H est un arbre couvrant de G alors H est connexe et toute arête e de H y est un
isthme donc H − {e} n’est pas connexe. Réciproquement supposons que H est connexe et
minimal par rapport à la suppression d’arêtes. Donc la suppression d’une arête quelconque
e de H augmente le nombre de composante connexe de H et l’arête e est un isthme. Donc
e n’appartient à aucun cycle et par conséquence H est acyclique et donc H est un arbre
couvrant.
Exemple
On considère le graphe connexe suivant :
35
2
c f
5 6 7
10
11 1
a b e h
12 13 4 8
3
d g
5 6 7
1
a b e h
3
d g
Algorithme
Initialisation T = {s0 }, θ = ω(s0 ) et F = ∅ ;
Tant que S − T 6= ∅ Faire
Selectionner e ∈ θ tel que l(e) soit minimum.
Soit si l’extrémité qui n’est pas dans T ;
F = F ∪ {e}, T = T ∪ {si } et θ = (θ ∪ ω(si )) − (θ ∩ ω(si ))
Fin Tant que
4.7 Exercices
4.7.1 Exercice 1
Déterminer tous les arbres ayant six sommets.
4.7.2 Exercice 2
Montrer qu’un arbre qui a exactement deux sommets pendants est une chaîne élémen-
taire.
36
4.7.3 Exercice 3
Montrer qu’un arbre a au moins ∆ sommets pendants (∆ est le degré maximum).
4.7.4 Exercice 4
Montrer qu’une arête e d’un graphe G, connexe appartient à tout arbre couvrant de G
si et seulement si e est un isthme de G.
4.7.5 Exercice 5
Montrer que dans un graphe connexe G, une arête e est une boucle si et seulement si
e n’appartient à aucun arbre couvrant de G.
4.7.6 Exercice 6
Soit G = (X, E), un graphe connexe. On appelle distance de deux sommets x et y de
G la plus petite longueur des chaînes qui relient x et y, et on note d(x, y) cette distance.
On appelle centre du graphe G tout sommet x tel que la quantité M axy∈X d(x, y) soit la
plus petite possible.
Montrer que si G est un arbre alors il a soit un centre soit deux centres qui sont alors
voisins.
4.7.7 Exercice 7
Soit G = (X, E) le graphe valué défini par sa matrice d’adjacence M .
1. En détaillant bien toutes les étapes, appliquez l’algorithme de Kruskal sur le graphe
G. Quel est le poids d’un arbre couvrant de poids minimal ?
2. En utilisant le même graphe que la question précédente, calculer le poids d’un arbre
couvrant de poids maximum. Donner un arbre de poids couvrant maximal.
3. Discuter des différences fondamentales entre l’algorithme de Kruskal et l’algorithme
de Prim. Comment résumer ces différences ?
4. Appliquez l’algorithme de Prim vu en cours pour calculer un arbre couvrant de poids
minimal du graphe G.
37
4.7.8 Exercice 8
La circulation en saison pluvieuse est difficile en zone forestières. Il convient alors de
déterminer les itinéraires les plus praticables entre tout couple de villages d’un canton
considèrée. Pour chaque tronçon routier, on dispose d’une évaluation notée entre 0 et 5
traduisant l’état du tronçon (0 : tronçon totalement praticable, 5 : tronçon totalement
impraticable). On suppose ici que chaque tronçon est à double sens et que l’évaluation est
la même pour chacun des sens.
On considère un graphe G = (X, U ) non orienté, où X est l’ensemble des villages du
canton et U l’ensemble des tronçons ; chaque arête u de U étant munie d’une évaluation
l(u) représentant l’état du tronçon u. La recherche d’itinéraires les plus praticables peut
se formuler comme un problème de recherche des chaînes minimax entre toute paire de
sommets du graphe. Dans ce problème, une chaîne µ a pour valeur l(µ) la plus grande
valuation des arêtes de la chaîne, c’est-à-dire l(µ) = M axu∈µ {l(u)}. On cherche donc à
déterminer, entre deux sommets quelconques du graphe, une chaîne de valeur minimale.
Soit A∗ un arbre couvrant de valeur minimale de G.
Partie 1 On considère le canton représenté par le graphe G1 = (X1 , U1 ) suivant :
4
2 6
2 4 4
5 3
5 5 3 4
1 3 5 7 9
1 3 2 2
4
4
4 8
1. Déterminer A∗1 un arbre couvrant de valeur minimale de G1 .
2. Considérons sur A∗1 la chaîne µ(x, y) joignant deux sommets quelconques x et y et
umax l’arête ou l’une des arêtes de plus forte valuation appartenant à cette chaîne.
Soit S et X1 − S les deux composantes connexes obtenue en supprimant umax dans
A∗1 et w(S) le cocycle de S dans G1 .
(a) Considérant la chaîne µ(2, 9) de A∗1 , déterminer umax et w(S). Vérifier que toute
arête de w(S) est de valeur supérieure ou égale à l(umax ).
(b) Déterminer dans G1 , un itinéraire le plus praticable entre 2 et 9. Cet itinéraire
est-il unique ? justifier.
Partie 2 On se place dans le cas général et on considère que le canton est représenté
par un graphe G = (X, U ).
1. Montrer que la propriété de la question (2a) est vraie dans le cas général.
2. Montrer que toute chaîne µ(x, y) de A∗ est une chaîne minimax de x à y dans G.
(NB : Il s’agit de montrer qu’elle est minimale).
3. Proposer une méthode générale pour déterminer les chaînes minimax reliant toute
paire de sommets. Suggérer une façon de discriminer parmi les éventuelles chaînes
minimax multiples.
38
Bibliographie
39