Vous êtes sur la page 1sur 84

ENSEIGNEMENT SUPERIEUR ET UNIVERSITAIRE

UNIVERSITE PEDAGOGIQUE NATIONALE

(UPN)

FACULTE DES SCIENCES


DEPARTEMENT DE MATHEMATIQUE ET INFORMATIQUE

Pour les étudiants de deuxième année de licence


Option : Math-Informatique

Par :

Dr Israël DISASHI KABADI


Professeur associé

Année académique : 2022 – 2023.


Table de matières.
Objectif et contenu du cours. ............................................................................ 4

Introduction. .................................................................................................... 5

Chapitre I. Définitions et premiers exemples. ..................................................... 6

I.1. Graphes non orientés. ...................................................................... 6

1.2. Graphes orientés. ............................................................................ 8

1.3. Exercices. ....................................................................................... 9

Chapitre II. Eléments de la théorie des graphes. ................................................. 10

II.1. Modes de représentation d’un graphe. .............................................. 10

II.2. Etude de la connexité. ..................................................................... 13

II.3. Problèmes eulériens et hamiltoniens. ................................................ 19

II.4. Diamètre et coloration d’un graphe. .................................................. 25

II.5. Exercices. ....................................................................................... 31

Chapitre III. Graphes valués, et, Méthodes de recherche des chemins et arbres. .. 34

III.1. Graphes valués. ............................................................................. 34

III.2. Problèmes du plus court chemin. .................................................... 35

III.3. Problèmes d’arbre couvrant à coût minimum. .................................. 37

III.4. Quelques façons de parcourir un graphe. ........................................ 42

III.5. Exercices. ..................................................................................... 49

Chapitre IV. Problèmes de flot dans un réseau. ................................................... 51

IV.1. Réseaux, et réseaux de transport. ................................................... 51

IV.2. Flot dans un réseau. ....................................................................... 51

IV.3. Problème de flot. ........................................................................... 52

IV.4. Problème de couplages. .................................................................. 61

IV.5. Exercices. ...................................................................................... 64

Chapitre V. Problèmes d’ordonnancement. .......................................................... 68

V.1. Problème de mise en ordre d’un graphe connexe. .............................. 68

2|Page
V.2. TD1 : « Décrire les problèmes d’ordonnancement ». ........................ 74

V.3. TD2 : « Choisir ou définir un projet, et en faire une étude descriptive


selon le modèle international de présentation et de gestion
d’un projet ». .................................................................... 75
V.4. Exercices. ....................................................................................... 75

Chapitre VI. Problèmes d’affectation. ................................................................. 78

VI.1. Formulation générale d’un problème d’affectation. ........................... 78

VI.2. Algorithme Hongrois : Méthode de résolution. .................................. 78

VI.3. Exercices........................................................................................ 83

Références ....................................................................................................... 84

3|Page
Objectif et contenu du cours.

La représentation d’un problème par un dessin, un plan, une esquisse


contribue souvent à sa compréhension. Le langage des graphes est construit, à
l’origine, sur ce principe. La théorie des graphes constitue aujourd’hui un
corpus de connaissances très important.

Ce cours ne constituera donc qu’une introduction à cette théorie, dans le sens


que nous n’aborderons pas toutes les notions de cette discipline. L’objectif de
ce cours est donc d’exposer quelques algorithmes de base (recherche de
chemin, d’arbre, de flots, ...) permettant de résoudre les problèmes y relatifs
de manière à ce que les étudiants soient à mesure de traiter des problèmes par
une approche graphique.

Pour atteindre notre objectif, nous allons développer ce cours en six chapitres,
hormis l’introduction, chaque chapitre terminant par une série d’exercices
d’application, de la manière ci-après :

Introduction.

Chapitre I. Définitions et premiers exemples.

Chapitre II. Eléments de la théorie des graphes.

Chapitre III. Graphes valués ; et, Méthodes de recherche des chemins et arbres.

Chapitre IV. Problèmes de flots dans un réseau.

Chapitre V. Problèmes d’ordonnancement : Gestion des projets.

Chapitre VI. Problèmes d’affectation.

4|Page
INTRODUCTION.

L’histoire de la théorie des graphes a débuté, tout le monde s’accordant là-


dessus, avec les travaux d’Euler *1703-1783] au XVIIIème siècle et trouve son
origine dans l’étude de certains problèmes, tels que celui des ponts de
Königsberg (i.e. les habitants de Königsberg se demandaient s’il était possible,
en partant d’un quartier quelconque de la ville, de traverser tous les ponts sans
passer deux fois par le même et de revenir à leur point de départ) [fig. 0.1]
résolu par Euler (1736), la marche du cavalier sur l’échiquier ou le problème de
coloriage de cartes.

S’étant développée dans diverses disciplines telles que la chimie, la biologie, les
sciences sociales, la théorie des graphes constitue, depuis le début du XXème
siècle, une branche à part entière des mathématiques, grâce aux travaux de
König, Menger, Cayley puis de Berger et d’Erdös.

Un graphe permet généralement de représenter la structure, les connexions


d’un ensemble complexe en exprimant les relations entre ses éléments : réseau
de communication, réseaux routiers, interaction de diverses espèces animales,
circuits électriques,... Les graphes constituent donc, une méthode de pensée
qui permet de modéliser une grande variété de problèmes en se ramenant à
l’étude de sommets et d’arcs.

Les derniers travaux en théorie des graphes sont souvent effectués par des
informaticiens, du fait de l’importance qu’y revêt l’aspect algorithmique.

Fig. 0.1 La rivière de Pregel et l’ile de Kneiphof.

5|Page
Chapitre I : Définitions et premiers exemples

I.1. Graphes non orientés

A. Définition 1

Un graphe simple G, est un couple formé de deux ensembles :

-Un ensemble X={x1, x2,..., xn} dont les éléments sont appelés sommets, et

-Un ensemble A={a1, a2,..., am} dont les éléments sont appelés arêtes car
A Ƥ2(X) ensemble des parties à deux éléments de X.

On notera G = (X,A).

Lorsque a = {x,y}ϵA, on dit que a est l’arête de G d’extrémité x et y, ou que a est


incidente (passe) en (par) x et y. Les sommets x et y sont alors dit adjacents
dans G.

Exemple

x z t

a1 a2 a4 a3 fig. 1.1

y a5 s

On a : G=(X, A) tq. X={x, y, z, t, s} et A= {a1, a2, a3 ,a4 ,a5} un graphe simple.

N.B: -L’ordre d’un graphe est le nombre de ses sommets.

-La taille d’un graphe est le nombre de ses arêtes (arcs).

B. Définition 2

Un multigraphe G=(X, A, f) est déterminé par :

-Un ensemble X de sommets ;

-Un ensemble A (cette fois abstrait) ;

-Une application f : A→Ƥ2(X) ou f : A→Ƥ2(x) U Ƥ1(X)

Présence des arêtes multiples Présence non seulement des arêtes


entre 2 sommets. multiples mais également des boucles
multiples en un sommet.

6|Page
Exemples

x a4 y x a3 y

a1 a5 a1 a2 a4

a2 z

a3 Fig. 1.3

t a6 z

Fig. 1.2

On a : On a :

G= (X, A, f) t.q. X={x, y, t, z}, G=(X, A, f) t.q. X={x, y, z},

A={a1 ,a2 ,a3 ,a4 ,a5 ,a6} A={a1 ,a2 ,a3 ,a4 ,a5}

et f: A→Ƥ2(X) et f: A→Ƥ 2 (X) U Ƥ1(X)

Avec f (a1)= f (a2)= f(a3)={x, t} avec f (a1)=f(a2)={x, z}

f (a4)={x, y} f (a3)={x, y}

f (a5)={x, z} et f (a6)={t, z} f (a4)={z, y} et f(a5)={y}

C .Définition 3.

Soit G= (X, A) un graphe simple et x un sommet de ce sommet ; Le degré de x,


noté deg(x), est le nombre d’arêtes incidentes à x. On a deg(x)= 0 => x est isolé
et deg(x) = 1 => x est pendant.

Exemples

(1) Soit le cycle Cn où X= {1, 2,..., n} et A= {{1,2}, {2 3},..., {n-1, n}, {n, 1}}

Si on a x ϵ Cn alors deg(x)=2.

(2) Soit le graphe complet d’ordre n, Kn, où X= {1, 2, 3,...,n} et A=Ƥ2(X).

Si on a xϵKn alors deg(x)=n-1.

7|Page
D .Définition 4

Un graphe simple est dit régulier de degré r, lorsque tous ses sommets sont de
ce degré.

E .Lemme des poignées de mains.

Soit G=(X ,A) un graphe simple, alors ∑ ( ) | |.

N.B : Ce Lemme reste valable pour les multigraphes, même en cas de boucles
tout en convenant que la boucle contribue pour 2 dans le calcul du degré d’un
sommet.

I.2. Graphes orientés

A. Définition 5.

Un graphe orienté G est formé de deux ensembles :

-Un ensemble X= {x1, x2 ,x3 ,..., xn} dont les éléments sont appelés sommets, et

-Un ensemble A= {a1, a2,..., am} X2 (produit cartésien de X par X) dont les
éléments sont appelés arcs. On notera G=(X,A)

Si a= (x, y) est un arc du graphe G, x est l’extrémité initiale de a et y l’extrémité


finale de a.

Exemple

Fig.1.4

N.B : A tout graphe orienté G= (X,A), on associe le graphe simple (X, B) où

{x, y} ϵ B { (x ,y) ϵ A ou (y, x) ϵ A}.

B .Définition 6.

Soit x un sommet d’un graphe orienté. On note deg+(x) le nombre d’arcs ayant
x comme extrémité initiale, et deg-(x) le nombre d’arcs ayant x comme
extrémité finale. Ainsi deg(x) = deg+(x)+deg-(x).

8|Page
I.3. Exercices.

1. Le graphe d’un tournoi, T= (X, A) où X est l’ensemble des participants au


quart de finale de CHAN 2016, et A est l’ensemble des pairs de participants au
quart de finale y relatif.

-Trouver le graphe, et son ordre.

- Déterminer la taille de ce graphe, et les degrés de ses sommets.

2. La carte routière de Kinshasa, K= (X, A) où X est l’ensemble des communes de


Kinshasa, et A= {{x, y}/ il y a au moins une route directe reliant les communes
x et y}.

-Trouver le graphe, et son ordre.

- Déterminer sa taille, ainsi que les degrés de ses sommets.

3. Le graphe discret d’ordre n, Dn= (X, )

-Trouver le graphe pour n=5.

- Déterminer sa taille, ainsi que les degrés de ses sommets.

4. Montrer qu’un graphe simple a un nombre pair de sommets de degré


impair.

5. Est-il possible de relier 15 ordinateurs, de sorte que chaque appareil soit


relié avec exactement trois autres ?

6. Soit G= (X, A) un graphe orienté, montrer que ∑ +


(x) = ∑ -
(x).

7. Combien y a-t-il de sommets dans un graphe régulier de degré 4 ayant 10


arêtes.

8. Existe-t-il un graphe simple d’ordre 5 dont les sommets ont les degrés
suivants ? Si oui, tracer un tel graphe.

a) 3, 3, 3, 3, 2.

b) 1, 2, 3, 4, 5.

9|Page
Chapitre II. Eléments de la théorie des graphes.

II.1. Modes de représentation d’un graphe.

Il est légitime de s’intéresser à la manière de représenter les graphes au sein


d’un ordinateur, puisque l’essor de la théorie des graphes est dû
essentiellement à l’avènement de puissants calculateurs.

Plusieurs modes de représentation peuvent être envisagés selon la nature des


traitements que l’on souhaite appliquer au graphe considéré.

A. Définition 7 (Listes de succession)


Un graphe peut être représenté par un dictionnaire (= une table à simple
entrée où chaque ligne correspond à un sommet et comporte la ligne des
successeurs ou des prédécesseurs de ce sommet).

Considérons le graphe de la figure 2.1.

a7 a6 ⑤

① a5 a8

a3 ④ fig. 2.1 – Un graphe élémentaire.

a1 a4

② a2

Ce graphe peut être représenté par les deux tables suivantes :

Sommet Successeurs Sommet Prédécesseurs


1 2, 3, 4, 5 1 5
2 3 2 1
3 4 3 1, 2
4 1, 3, 5
4 -
5 1, 4 5 1

10 | P a g e
B. Définition 8 (Matrice d’adjacence).
Considérons un graphe G = (X,A) comportant n sommets.

La matrice d’adjacence de G est égale à la matrice U = (uij) de dimension nxn


telle que :

( )
uij = {

Par exemple, la matrice d’adjacence du graphe de la figure 2.1 est :

U=

( )
N.B. :

 La somme des éléments de la colonne j est le degré de(xj) entrant du


sommet xj.
 La somme des éléments de la ligne i est le degré ds(xi) sortant du
sommet xi.
 La trace de la matrice U est égale au nombre de boucles du graphe G.

C. Définition 9 (Matrice d’incidence).


Soit G = (X,A) un graphe orienté sans boucle avec n sommets x1, x2, ... , xn et m
arêtes a1, a2, ... , am.

On appelle matrice d’incidence (aux arcs) de G la matrice M = (mij)


et 1 J m, de dimension nxm telle que :

mij = {

N.B. : Pour un graphe non orienté sans boucle la matrice d’incidence (aux
arêtes) est définie par la matrice M = (mij) telle que :

mij = {

11 | P a g e
Exemple 1. La matrice d’incidence du graphe de la figure 2.1 est :

a1 a2 a3 a4 a5 a6 a7 a8

M = (mij ) =

( )
Exemple 2. Soit le graphe G ci-après :

A a1 B

a2 a3 a4 E

a5

C D

Fig. 2.2.

La matrice d’incidence de G est :

M = (mij) =

( )

D. Définition 10 (Listes d’adjacences).


Soit G = (X,A) un graphe orienté d’ordre n et de taille m dont les sommets x1, x2,
... , xn sont ordonnés. Le graphe G peut être représenté par des listes
d’adjacence (LS,TS) qui sont définies par :

LS = liste de longueur m appelée « liste des successeurs », elle contient les


successeurs du sommet 1 (rangé dans l’ordre croissant) puis du sommet 2, ... et
si un sommet n’a pas de successeur on passe au sommet suivant.
TS = liste de longueur n+1 appelée « liste des têtes successeurs » qui indique la
position du premier successeur de chaque sommet dans LS.
La liste TS est définie comme suit :

12 | P a g e
TS(1) = 1
Pour x X :
Si x a des successeurs alors TS(x) = numéro de la case de LS du premier
successeur de x.
Sinon, TS(x) = TS(x+1)
TS(n+1) = m+1.
Par exemple, le graphe de la figure 2.1 peut être représenté par des listes
d’adjacence (LS,TS) comme ci-après :

LS = 2 3 4 5 3 4 1 4

TS = 1 5 6 0 7 9
1 2 3 4 5

N.B. :

 Les listes d’adjacences occupent une place mémoire de taille m+n+1,


c’est le minimum d’information pour représenter un graphe en
comparaison avec la matrice d’adjacence qui occupe une place n2 et la
liste des arcs une place 2m.
 On peut également représenté un graphe par des listes d’adjacence
(LP,TP) utilisant les prédécesseurs.
II.2. Etude de la connexité.

A. Chaines et cycles : élémentaires et simples.


A.1. Définition 11.

- Une chaine est une séquence finie et alternée de sommets et arêtes,


débutant et terminant par des sommets, telle que chaque arête est incidente
avec les sommets qui l’encadrent.

- un cycle est une chaine dont les extrémités coïncident.

- Une chaine élémentaire est une chaine telle que qu’aucun des sommets
composant la séquence n’apparait plus d’une fois.

13 | P a g e
- une chaine simple est une chaine telle qu’aucune des arêtes composant la
séquence n’apparait plus d’une fois.

- Un cycle élémentaire est un cycle minimal pour l’inclusion (i.e. ne contenant


aucun autre cycle). Autrement dit, c’est une chaine élémentaire dont les
extrémités coïncident.

-Un cycle simple est une chaine simple dont les extrémités coïncident.

A.2. Exemples.

Voir le graphe G de la figure 2.2 pour y identifier les chaines élémentaires et


simples ; ainsi que les cycles élémentaires et simples.

B. Chemins et circuits : élémentaires et simples.


B.1. Définition 12.

- Un chemin est une séquence finie et alternée de sommets et d’arcs, débutant


et finissant par des sommets, telle que chaque arc est sortant d’un sommet et
incident au sommet suivant dans la séquence.

- Un circuit est chemin dont les extrémités coïncident.

- Un chemin élémentaire est chemin tel qu’aucun des sommets composant la


séquence n’apparait plus d’une fois.

- Un chemin simple est un chemin tel qu’aucun des arcs composant la séquence
n’apparait plus d’une fois

- Un circuit élémentaire est celui tel qu’en le parcourant on ne rencontre pas


deux fois le même sommet.

- Un circuit simple est celui tel qu’en le parcourant on ne rencontre pas deux
fois le même arc.

B.2. Exemples.

Voir le graphe G de la figure 2.1. pour y identifier les chemins élémentaires et


simples ; ainsi que des circuits élémentaires et simples.

C. Graphes et sous-graphes connexes.


C.1. Définition 13.

14 | P a g e
Un graphe G =(X,A) est connexe s’il existe au moins une chaine entre une paire
quelconque de sommets de G.

(a). Remarque.

La relation R défini dans X par

xi R xj {

Est une relation d’équivalence. Les classes d’équivalences induites sur X par
cette relation forment une partition de X en X1, X2, ..., Xp.

D’où :

Le nombre p de classes d’équivalences distinctes est appelé nombre de


connexité du graphe. Ainsi, un graphe est connexe si son nombre de connexité
est égal à 1.
Les sous-graphes G1, G2, ..., Gp engendrés par les sous-ensembles X1, X2, ..., Xp
sont appelés les composantes connexes du graphe.
(b)Exemple.

A partir du graphe de la figure 2.2, nous avons la représentation de la relation


R ci-après :

A B

C D

Fig. 2.2.(i) Relation R dans X.

C.2.Définition 14.

15 | P a g e
- Un point d’articulation d’un graphe est un sommet dont la suppression
augmente le nombre de composantes connexes.

- Un isthme est une arête dont la suppression a le même effet.

- Un ensemble d’articulation E X d’un graphe connexe G est un ensemble de


sommets tel que le sous-ensemble G’ déduit de G par suppression des
sommets de E, ne soit plus connexe.

Exemple :

Le graphe de la figure 2.2 a pour point d’articulation les sommets B et C ; et il a


pour isthme les arêtes a3 et a5.

D. Graphes et sous-graphes fortement connexes.


D.1. Définition 15.

Un graphe orienté est dit fortement connexe s’il existe un chemin joignant
deux sommets quelconques.

Remarque :
La relation R définie sur X par :

xi R xj {

est une relation d’équivalence et les classes d’équivalence induites sur X par
cette relation forment une partition de X en X1, X2, ..., Xq.

D’où les sous-graphes G1, G2, ..., Gq engendrés par les sous-ensembles X1, X2, ...,
Xq sont appelés les composantes fortement connexes du graphe.

Exemple.
Soit le graphe G = (X,A) ci-contre.

Fig. 2.3

16 | P a g e
La relation de forte connexité définie sur le graphe G induit sur X les classes
d’équivalences ci-après :

C1 = * + ; C2 = * + et C3 = * +.

Les sous-graphes induits sur G par la relation de forte connexité sont :

G1 = (X1,A1) tel que X1 =* + et


A1 =*( ) ( ) ( )( )( )( )( )( )+ ;

G2 = (X2,A2) tel que X2 = * + et A2 = *( ) ( )+ ;


G3 = (X3,A3) tel que X3 = * + et A3 = .
Ce sont donc les composantes fortement connexes de G.

D.2. Définition 16.

On appelle graphe réduit Gr le quotient du graphe G par la relation de forte


connexité R, i.e. Gr = G/ R ; les sommets de Gr sont donc les composantes
fortement connexes et il existe un arc entre une classe Ci et une classe Cj si, et
seulement si, il existe au moins un arc entre un sommet de Ci et un sommet de
Cj dans le graphe G.

N.B. :
- On vérifie que Gr est sans circuit.

- La recherche des composantes fortement connexes et la détermination du


graphe réduit revêtent une grande importance pour l’analyse structurale d’un
système.

Exemple.
Le graphe G de la figure 2.3 a pour graphe réduit le graphe Gr = (Xr,Ar) tel que
Xr = * + et Ar =*( )( )( )+.

D.3. Définition 17.

Soit G un graphe et µ un cycle de G.

On désigne par µ+ = l’ensemble des arcs du cycle µ orientés dans le sens de


parcours et µ- = l’ensemble des arcs du cycle µ orientés dans le sens contraire
au parcours.

17 | P a g e
Si le graphe possède m arcs désignés par a1, a2, ..., am, on peut faire
correspondre à tout cycle µ un vecteur µ = (µ1, µ2, ..., µm) tel que :

1 Si +

-
µi = -1
+ -
0 si

Par exemple, à partir du graphe G de la figure 2.1, nous avons les cycles ci-
après avec leurs vecteurs associés :

(1). µ1 = (1, 2, 3, 4, 1) µ1 =( 1, 1, 0, 1, -1, 0, 0, 0) selon les arêtes de a1 à a8.

(2). µ2 = (2, 1, 5, 4, 3, 2) µ2 = (-1, -1, 0, -1, 0, 1, 0, 1) idem de a1 à a8.

D.4. Définition 18.

Soit G = (X,A) un graphe.

On dit que p cycles 1, 2, ..., p sont dépendants s’il existe entre leurs vecteurs
associés une relation vectorielle de la forme :

1 1+ 2 2 + ... + p p =0

Avec le i non tous nuls.

N.B. : Si 1 1 + 2 2 + ... + p p = 0 i =0 i (1 i p) alors les p cycles I


sont dits (linéairement) indépendants.

Une base de cycles est un ensemble minimal de cycles indépendants tel que
tout vecteur représentatif d’un cycle puisse s’exprimer comme combinaison
linéaire des leurs vecteurs représentatifs.

On appelle nombre cyclomatique d’un graphe G la dimension de la base de


cycles. On le note ( ) et on prononce « nu de G ».

N.B. : Pour un graphe G à n sommets, m arcs et p composantes connexes, on a :

( ) = m – n + p.

18 | P a g e
Exemple : Trouver le nombre cyclomatique du graphe G de la figure 2.1.

Solution

On a n = 5, m = 8. Il nous reste à trouver d’abord le nombre de connexité p de


G. En nous servant de la relation R de forte connexité sur le graphe G, nous
obtenons le schéma ci-dessous :

1 5 2 3 4

Relation R

Les classes d’équivalence sont : C1 = {1, 5}, C2 = {2}, C3 = {3}, C4 = {4}.

Le nombre de connexité p est donc égal à 4, car nous avons 4 composantes


connexes ; d’où le nombre cyclomatique ( ) = m – n + p = 8 – 5 + 4 = 7.

II.3. Problèmes eulériens et hamiltoniens.

A. Problèmes eulériens.
Il s’agit d’une généralisation du jeu consistant à dessiner toutes les arêtes d’un
graphe avec un crayon sans jamais le soulever, ni passer deux fois sur la même
arête.

A.1. Parcours eulériens.

1. Définition 19.

Soit G = (X,A) un graphe orienté.

Une chaine eulérienne est une chaine empruntant une et une seule fois
seulement chaque arête de G.

Un cycle eulérien est une chaine eulérienne dont les extrémités coïncident.

Un chemin eulérien est un chemin empruntant une et une seule fois chaque
arc de G.

Un circuit eulérien est un chemin eulérien dont les extrémités coïncident.

19 | P a g e
2. Théorème 1.

Un graphe non orienté G = (X,A) connexe possède une chaine eulérienne si, et
seulement si, le nombre de sommets de degré impair est égal à 0 ou 2. Il admet
un cycle eulérien si, et seulement si, tous ses sommets ont un degré pair.

3. Théorème 2.

Un graphe orienté G = (X,A) connexe admet un chemin eulérien (mais pas de


circuit eulérien) si, et seulement si, pour tout sommet, sauf deux (a et b), le
degré entrant est égal au degré sortant et

dege(a) = degs(a) – 1 et dege(b) = degs(b) + 1.

Un graphe orienté G = (X,A) connexe admet un circuit eulérien si, et seulement


si, pour tout sommet , le degré entrant est égal au degré sortant.

4. Exemples.

1. Le graphe G1 de la figure 2.4 n’admet pas de cycle eulérien car les degrés des
sommets suivants ne sont pas pairs : 1, 4, 5 et 6.

1 a2 2 a8 3 a11 4

a1 a3 a4 a9 a5 a10 a7 a12

5 a6 6

Fig. 2.4. Le graphe G1 = (X1, A1)

2. Le graphe G2 de la figure 2.5 admet un cycle eulérien qui est :

a-b-c-d-c-e-d-b-e-a-e-a

a a4 b

a3 a5 a9

a2 a8 Fig. 2.5 Le graphe G2 = (X2, A2)

a1 a6 d a10
e a1 c
a
20 | P a g e
3. Le graphe G3 de la figure 2.6 admet un chemin eulérien et non un circuit
eulérien qui est :

(c2, c1, c3, c5, c4, c2, c2) car dege(c3) = degs(c3) + 1 et dege(c2) = degs(c2) – 1.

c1 a1 c2

a2 a3

a4

c5

c3 a5 a6 c4

Fig. 2.6. Le graphe G3 = (X3, A3)

A.2. Graphes eulériens.

1. Définition 20.

Un graphe orienté (non orienté) est dit eulérien s’il possède un circuit (cycle)
eulérien.

Un graphe est semi-eulérien s’il admet un(e) chemin (chaine) eulérien(ne).

2. Exemples.

 Le graphe G1 de la figure 2.4 n’est pas eulérien.


 Le graphe G2 de la figure 2.5 est eulérien.
 Le graphe G3 de la figure 2.6 est semi-eulérien.
A.3. Remarques.

1. Les problèmes eulériens ont un grand intérêt aujourd’hui grâce à ses


applications nombreuses dans de nombreux problèmes : tournées de
distribution, tracé automatique sur ordinateur, problèmes d’ordonnancement
d’atelier, etc.

2. Un des problèmes prototypes est celui du « postier chinois » (non orienté)


qui consiste à :

« Parcourir les rues d’une ville en passant au moins une fois dans chaque
rue ».

21 | P a g e
Le graphe n’étant pas nécessairement eulérien, on cherche bien sûr à
minimiser la longueur totale du parcours.

Cas d’application de ce problème : Organisations des tournées de distributions


de courriers, de ramassage d’ordures, d’inspections des réseaux de
distribution.

Dans le cas d’un graphe orienté, le problème se ramène à la recherche d’un flot
à coût minimum.

La résolution du problème chinois réside dans la recherche d’un « parcours


chinois », qui permettra d’utiliser les méthodes de recherche de parcours
eulériens.

D’où :

3. Théorème 3.

Un graphe (orienté) non orienté admet un (circuit chinois) cycle chinois si, et
seulement si, il est (fortement) connexe.

B. Problème hamiltoniens.
Il s’agit ici de la généralisation du jeu inventé par Hamilton, Sir (1805-1865) en
1959. Ce jeu a consisté en un dodécaèdre régulier (Fig. 2.7) où trois arêtes sont
donc issues de chaque sommet et un clou est fiché sur chaque sommet marqué
d’un nom des vingt-quatre grandes villes mondiales. Le casse-tête a consisté à
enrôler une ficelle passant une et une seule fois chacune des villes (sommets).

Fig. 2.7

22 | P a g e
B.1. Parcours hamiltoniens.

1. Définition 21.

Soit G = (X,A) un graphe connexe d’ordre n.

Un chemin (une chaine) hamiltonien(ne) est un chemin (une chaine) passant


une et une seule fois seulement par chacun des sommets de G. Un chemin (une
chaine) hamiltonien(ne) est donc un chemin élémentaire de longueur n-1.

Un circuit (un cycle) hamiltonien est un chemin (une chaine) hamiltonien(ne)


dont les extrémités coïncident.

2. Exemples.

 Le graphe de la figure 2.6 a un chemin hamiltonien (c1, c3, c5, c4, c2) et un
circuit hamiltonien (c1, c3, c5, c4, c2, c1), mais le circuit (c2, c1, c5, c4, c2)
n’est pas hamiltonien.
 Le graphe de la figure 1.1 n’a pas de chaine hamiltonienne, ni de cycle
hamiltonien.
3. Définition 22.

Soit G = (X,A) un graphe connexe d’ordre n.

On appelle cycle (circuit) préhamiltonien de G, un cycle (un circuit) passant au


moins une fois par chaque sommet de G.

B.2. Graphes hamiltoniens.

1. Définition 23.

Soit G = (X,A) un graphe connexe d’ordre n.

On dit que G est hamiltonien s’il contient un cycle hamiltonien (cas non
orienté) ou un circuit hamiltonien (cas orienté). Il est sémi-hamiltonien
lorsqu’il admet une chaine (un chemin) hamiltonienne (hamiltonien).

On dit que G est préhamiltonien s’il admet un cycle (un circuit) préhamiltonien.

2. Propriétés.

Contrairement aux graphes eulériens, il n’existe pas de caractérisation simple


des graphes hamiltoniens ou semi-hamiltoniens.
23 | P a g e
Nous présentons du moins quelques propriétés et conditions suffisantes ci-
après :

P.1. Un graphe possédant un sommet de degré 1 ne peut être hamiltonien.

P.2. Si un sommet dans un graphe est de degré 2, alors les deux arêtes
incidentes à ce sommet doivent faire partie du cycle hamiltonien.

P.3. Les graphes Kn sont hamiltonien.

P.4. Théorème 4 (Ore).

Soit G = (X,A) un graphe simple d’ordre n 3.

Si pour toute paire de sommets non adjacents, on a : d(x) + d(y) n, alors G est
hamiltonien.

P.5. Corollaire au théorème 4 (Dirac).

Soit G = (X,A) un graphe simple d’ordre n 3.

Si pour tout sommet x de G on a : d(x) , alors G est hamiltonien.

3. Exemples.

 Le graphe de la figure 2.6 est hamiltonien car il admet un circuit


hamiltonien (c1, c3, c5, c4, c2, c1). Cependant, on voit que la condition du
corollaire de Dirac n’est pas nécessaire car on a : d(c1) = d(c4) = d(c5) = 2
avec 2 et 5 = |X|.
 Le graphe de la figure 1.1 n’est pas hamiltonien car il n’admet pas de
cycle hamiltonien. En effet, le graphe a un sommet (par exemple x) de
degré égal à 1. Cependant, il est préhamiltonien car il admet un cycle
préhamiltonien, par exemple x-y-z-s-y-t-y-x.
B. Remarques.

De nombreux problèmes concrets peuvent être formulés en termes de


recherche de parcours hamiltoniens.

Exemple 1. Problème de voyageur de commerce.

« Un représentant de commerce doit rendre visite à n clients x1, x2, ..., xn en


partant d’une ville x0 et revenir à son point de départ. Il connait les distances x0j
24 | P a g e
qui séparent le dépôt x0 de chacun de ses clients xj , ainsi que la distance dij
entre deux clients xi et xj. Dans quel ordre doit-il rendre visite à ses clients pour
que la distance totale parcourue soit minimale ? »

Ce problème revient à chercher un cycle hamiltonien de longueur totale


minimale dans le graphe complet G construit sur l’ensemble des sommets
X=* + , les arêtes étant munies des longueurs dij. Lorsque le point
d’arrivée est différent du point de départ, le problème revient à rechercher une
chaine hamiltonienne de longueur totale minimale.

Exemple 2. Problème d’ordonnancement de tâches.

« On cherche un ordre dans lequel on peut effectuer n tâches données (deux


tâches quelconques ne pouvant être effectuées simultanément) tout en
respectant un certain nombre de contraintes d’antériorité. »

Si l’on construit le graphe G dont l’ensemble des sommets correspond à


l’ensemble des tâches, et où il existe un arc (i,j) si la tâche i peut être effectué
avant la tâche j, le problème revient à déterminer un chemin hamiltonien de
G ».

N.B. : De nombreux problèmes du type « voyageur de commerce » sont en


réalité des problèmes préhamiltoniens et, pour les résoudre on commencera
par calculer la matrice des plus courts chemins (des plus courtes chaines).

II.4. Diamètre et coloration d’un graphe.

A. Diamètre d’un graphe.


A.1. Définition 24.

Soit G = (X,A) un graphe orienté soit (x,y) ϵ X2.

 La distance entre le sommet x et y est le nombre d(x,y) défini par :


d(x,y) = {
* ( )| +

 Le diamètre de G est le nombre réel diam(G) défini par :


diam(G) =max* ( )| ( ) ( ) +.

25 | P a g e
 La matrice des distances du graphe G est la matrice D définie par :
D = (dij) = (d(xi,xj)).

A.2. Exemple.

Soit G = (X,A) le graphe ci-contre. 1

Fig. 2.8 2

La matrice des distances de G est :

D=( )

Le diamètre de G est :

diam(G) = max * ( )| ( ) ( ) +.

= max* +.

= 1.

A.3. Algorithme de Moore.

1°/ Algorithme : définition.

Soit x et y deux sommets d’un graphe G = (X,A).

L’algorithme suivant calcule la distance d(x,y) :

On étiquette les sommets de G en observant les règles suivants :

- Le sommet x reçoit l’étiquette 0.


- Si (u,v) ϵ A et u est étiqueté k :
(i) Si v n’est pas étiqueté, alors v reçoit l’étiquette k+1.
(ii) Si v est étiqueté , alors l’étiquette de v est remplacée par
min( ,k+1).
Si à la fin, y a une étiquette k, alors d(x,y) = k, sinon d(x,y) = .

2°/ Exemple.
26 | P a g e
Soit G = (X,A) le graphe ci-dessous. Calculons d(x,y) avec x et y deux sommets
donnés de G, en appliquant l’algorithme de Moore.

On a d(x,y) = 3.

0 1 2 y

Fig. 2.9. 1 2 2 3

3 3

3°/ Remarque.

Lorsque d(x,y) = k ϵ , l’algorithme permet d’exhiber de façon récursive les


chemins de longueur k de x à y : on part de y et on détermine les sommets z
tels que (z,y) ϵ avec d(y,z) = k-1 et ainsi de suite jusqu‘en x.

B. Coloriage d’un graphe.


Le coloriage d’un graphe permet de résoudre des problèmes d’incompatibilité.
Il repose sur soit la coloration des sommets soit celle des arêtes (arcs).

B.1. Définitions 25.

Soit G = (X,A) un graphe.

(a). La coloration des sommets de G consiste à affecter tous les sommets de ce


graphe d’une couleur de telle sorte que deux sommets adjacents ne portent
pas la même couleur. Le nombre chromatique, noté (G), du graphe G est le
plus petit nombre entier k de couleurs permettant de colorer tous les sommets
de G.

(b). La coloration des arêtes (arcs) de G consiste à affecter toutes les arêtes
(tous les arcs) de ce graphe d’une couleur de telle sorte que deux arêtes (arcs)
adjacentes (adjacents) ne portent pas la même couleur. L’indice chromatique,
noté (G), est le plus petit nombre entier k de couleurs permettant de colorer
toutes les arêtes (tous les arcs) de G.

27 | P a g e
B.2. Algorithme de coloriage.

Fonction C = coloriage (G)

Couleur courante = 1

Pour tout x sommet de G faire

V = listes des voisins de x

Couleur = plus petite couleur non encore utilisée dans V

Si couleur couleur courante alors colorier x avec cette couleur

Sinon incrémenter la couleur courante et colorier x avec

Fin

Fin faire.

B.3. Encadrement du nombre chromatique.

(a). Définition 26.

Soit G = (X,A) un graphe orienté.

Un sous-ensemble S de X (resp. de A) est stable s’il ne comprend que des


sommets non adjacents deux à deux.

Le cardinal de la plus grande partie stable de G est le nombre de stabilité de G ;


on le note ( ).

Le nombre chromatique de G est donc le plus petit entier k pour lequel il existe
une partition de X en k sous-ensembles stables.

(b). Proposition 1.

Soit G = (X,A) un graphe simple d’ordre n et de taille m. On a l’encadrement


suivant :

⌈ ⌉ ( ) ( ( ) ⌈ ⌉ +1)
( ) ( )

Où r est le degré maximal des sommets du graphe G [et ( ) le nombre


maximal des cardinaux des parties stables de A].

28 | P a g e
Preuve : en exercice.

(c). Proposition 2.

Soit G = (X,A) un graphe simple d’ordre n.

Alors ( )+ ( ) n + 1.

Preuve : en exercice.

(d). Exemples.

1. ( ) = 2.

2. ( ) = 3 pour n 1.

3. ( ) = 1.

4. ( ) = n.

5. Déterminer le nombre et l’indice chromatique du graphe G = (X,A) suivant,


sachant que X = * + et A = * +

a 3 b

1 2 7 9 11

4 c 5 d 10

e 6 f

Fig. 2.10.

Solution : on a ( ) = 3 et ( )= 4.

B.4. Applications.

1. Problème d’aquariophilie.

A, B, C, D, E, F, G et H désignent huit poissons ; dans le tableau ci-dessous, une


croix signifie que les poissons ne peuvent cohabiter dans un même aquarium.
Le problème est de répondre à la question suivante en assurant la survie des
poissons :

Quel nombre minimum d’aquariums faut-il ?

29 | P a g e
A B C D E F G H
A X X X X X
B X X X X
C X X X X X
D X X X X
E X X X X
F X X X
G X X X X
H X X X
Fig. 2.11.

Solution : en exercice.

2. Problème d’emploi du temps.

Une université doit organiser les horaires des examens. On suppose qu’il y a 7
épreuves à planifier, correspondant aux cours numérotés de 1 à 7 et que les
paires de cours suivants ont des étudiants communs : 1 et 2 ; 1 et 3 ; 1 et 4 ; 1
et 7 ; 2 et 3 ; 2 et 4 ; 2 et 5 ; 2 et 7 ; 3 et 4 ; 3 et 6 ; 3 et 7 ; 4 et 5 ; 4 et 6 ; 5 et 6 ;
5 et 7 ; et , 6 et 7.

Comment organiser ces épreuves de façon qu’aucun étudiant n’ait à passer


deux épreuves en même temps et cela sur une durée minimale ?

Solution : en exercice.

30 | P a g e
II. 5. Exercices.

1. Calculer le diamètre de graphe dans chacun des cas suivants : Kn, Cn et


Kp,q.
2. Pour traverser une chaine de montagnes, il faut passer par plusieurs
sommets, reliés entre eux par des voies ne pouvant être franchies que
dans un seul sens. On donne ci-dessous le graphe associé à cette
situation (E est le point d’entrée et S le point de sortie). L’office de
tourisme cherche toutes les traversées qui partent de E et arrivent en S
en 4, 5 et 8 étapes (une étape est le passage d’un sommet à un autre, ou
du départ à un sommet ou d’un sommet à l’arrivée).
A D

G S
E B

C F

Les sommets étant classés dans l’ordre E, A, B, C, G, D, F, S, la matrice


d’adjacence du graphe est :

M=

( )

Après calcul des puissances successives de la matrice M, on a :

31 | P a g e
M4 =

( )

- La 1ère ligne de M3 est : 0 1 0 0 2 2 2 2


- La 1ère ligne de M5 est : 0 0 0 0 3 2 3 5
- La 1ère ligne de M6 est : 0 0 0 0 2 3 3 5
- La 1ère ligne de M7est : 0 0 0 0 3 3 2 6
- La 1ère ligne de M8est : 0 0 0 0 3 2 3 5
a) Combien de traversées peut-on faire en 4 (resp. 5) étapes ?
b) Trouver toutes les traversées en 8 étapes.
3. Soit le graphe G = (X, A) ci-après :

b c d

a
g f e
Alors :

a. Déterminer le nombre de chaines de longueur 4 dans ce graphe.


b. Le graphe G est-il hamiltonien ? Pourquoi ?
c. Le graphe G est-il semi-hamiltonien ? Pourquoi ?
d. Le graphe G est-il préhamiltonien ? Pourquoi ?
e. Le graphe G est-il eulérien ? Pourquoi ?
f. Le graphe G est-il semi-eulérien ? Pourquoi ?
4. soit le graphe G = (X, A) ci-après :
x1 x2

x5 x3

x4

Alors :

32 | P a g e
a. Déterminer le nombre de circuits de longueur 4 dans ce graphe.
b. Le graphe G est-il hamiltonien ? Pourquoi ?
c. Le graphe G est-il semi-hamiltonien ? Pourquoi ?
d. Le graphe G est-il préhamiltonien ? Pourquoi ?
e. Le graphe G est-il eulérien ? Pourquoi ?
f. Le graphe G est-il semi-eulérien ? Pourquoi ?
5. un individu vit dans un milieu où il est susceptible d’attraper une maladie
par piqûre d’insecte. Il peut être dans l’un des trois états suivants :
immunisé (I), malade (M), non malade et non immunisé (S). D’un mois à
l’autre, son état peut changer selon les règles suivantes :
- étant immunisé, il peut le rester avec une probabilité 0,9 ou passer à
l’état S avec une probabilité 0,1 ;
- étant dans l’état S, il peut le rester avec une probabilité 0,5 ou passer à
l’état M avec une probabilité 0,5 ;
- étant malade, il peut le rester avec une probabilité 0,2 ou passer à l’état I
avec une probabilité 0,8.
a). Tracer un graphe probabiliste pour décrire cette situation et écrire la
matrice de transition.

b). Représenter ce graphe par des listes d’adjacence.

6. trois pays envoient chacun à une conférence deux espions, chaque


espion doit espionner tous les espions des autres pays.
a. Représenter cette situation par un graphe.
b. Donner l’ordre et la taille de ce graphe.
c. Ce graphe est-il complet ? connexe ? Justifier votre réponse.
d. Quel est le degré de chaque sommet de ce graphe ?
7. Existe-t-il un graphe d’ordre 5 dont les sommets ont pour degrés
respectifs : 1, 2, 2, 3, 4 ? Si oui, donnez-en un exemple. Si non pourquoi ?
8. Montrer que dans un graphe simple et complet d’ordre n (n 2), le
nombre d’arêtes An est égal à :
( )
.

33 | P a g e
Chap. III Graphes valués, et méthodes de recherche des chemins et arbres.

III.1. Graphes valués.

A. Définition 27.

Un graphe valué est un graphe orienté G= (X, A), muni d’une fonction :A , appelée
fonction de coût.

NB. : On peut également définir la notion de graphe valué non orienté.

Exemple. 15 2
Soit le graphe ci-contre 3
1 10
3
G= (x, a, ) est un 4 4
5
2
graphe valué. 5 Fig.3.1
7
3

B. Définitions 28.

Soit G= (X, A, ) un graphe valué.

Le coût d’un chemin c est la somme des coûts des arcs de ce chemin. On le note ( ).

La matrice des coûts du graphe G= (X, A, ) est par définition, la matrice

C= (ci,j) où :
o si i= j
ci,j= ∞ si i ≠ j et (xi, xj) A
𝛾(xi, xj) si i ≠ j et (xi, xj) A.

 Exemple

La matrice des coûts du graphe 0 15 ∞ ∞ 4

G= (X,A ) (cfr. fig.3.1) est C=


∞ 0 ∞ ∞ ∞

∞ 3 0 2 ∞
10 3 ∞ 0 ∞
III.2. Problème du court chemin.
∞ ∞ 7 5 0
Le problème de la recherche du plus court chemin dans un graphe se rencontre dans de
nombreuses applications. On peut citer entre autres :

 Les problèmes de tournées.


 Certains problèmes d’investissement et de gestion de stocks.
 Les problèmes de programmation dynamique à états discrets et temps discret.

34 | P a g e
 Les problèmes d’optimisation de réseaux (routiers, télécommunications).
 Certaines méthodes de traitement numérique du signal, de codage et de décodage
de l’information.
 Les problèmes de labyrinthe et de récréations mathématiques.

Le problème considéré se formule ainsi :

« Etant donné un graphe orienté G=(X,A), on associe à chaque arc a A un nombre (a)
ϵ appelé ‘’longueur ‘’ de l’arc. On dit alors que G est valué par les longueurs (a). Si a =
(i,j), on utilisera également la notation ij pour la longueur de l’arc a.

Le problème du plus court chemin entre deux sommets i et j sera de trouver un chemin
µ(i,j) reliant i et j dont la longueur totale

(µ)= ∑ ( )
( )

soit minimum. »

Nb : (a) peut s’interpréter comme un coût de transport sur l’arc a, comme les dépenses de
construction de l’arc a, comme le temps nécessaire pour parcourir l’arc a, etc. Ce qui donne
lieu a plusieurs applications.

A. Définition 29.

Soit G=(X,A, ) un graphe valué, si x et y deux éléments de X.

Un chemin c dans G de x à y est dit minimum lorsque pour tout chemin c’ dans G allant de
x à y on a : (c’) (c).

La matrice de coût minimum de G est par définition la matrice M = (mi,j) telle que :

o si i= j
mi,j= ∞ s’il n’existe pas de chemin de x à y
Min { 𝛾 (c ) /c est un chemin de x à y }

Exemple

(Cfr fig.3.1) 1 12 11 4

La matrice de coûts minimums de G est : M=


∞ 0 ∞ ∞ ∞

3 0 2 16

10 3 0
B. Méthodes de recherche de chemins
7 5 0
Nous décrivons deux algorithmes de recherche de chemin dans cette partie comme ci-après.

35 | P a g e
B.1. Algorithme de Dijkstra (1959)

Soit G= (X, A, ) un graphe valué tel que | | = n.

Numérotons les sommets du graphe de 1 à n.

Cet algorithme calcule les plus courts chemins du sommet 1 à tous les sommets du graphe
(il donnera donc la 1ère ligne de la matrice de coût minimum).

on construit un vecteur = ( (1), (2), … (n)) ayant n composantes tel que (i) soit
égal à la longueur du plus court chemin allant de 1 au sommet i. On initialise ce vecteur à
(c1,i ) c’est-à-dire à la première des coûts du graphe.

On considère ensuite deux ensembles de sommets, S initialisé à {1} et ̅ son


complémentaire dans X, ensemble des sommets du graphe G. A chaque pas (itération) de
l’algorithme, on ajoute à S des sommets jusqu’à ce que S= X de telle sorte que le vecteur
donne à chaque étape le coût minimal des chemins de 1 aux sommets de S.

1. Description de l’algorithme

Initialisations

= (c1,i) pour i {1,2…, n}


= {1}, ̅ = {2, 3…,n}

Itérations

Tant que ̅ ≠

Choisir i dans ̅ tel que (i) est minimum

Retirer i de ̅ et l’ajouter à S.

Pour chaque successeur j de i dans ̅

(j) min ( (j), (i) + (i,j))

2. Exemple

Appliquons l’algorithme de Dijkstra au graphe de la fig. 3.1.

15 2
3
1
10 3 4
4 5
2
5 7
Initialisation 3

S = {1}, ̅ = {2,3,4,5}, = (0,15 , ,4)

36 | P a g e
1ère itération i= 5 car (5) = min (0, 15 , ,4) = 4 pour i dans ̅

S = {1,5}, ̅ = {2,3,4} ; les successeurs de 5 dans ̅ sont 3 et 4,

(3) min ( , (5) + (5,3)) = min ( ,4+7)=11.

(4) min ( , (5) + (5,4))= min ( ,4+5)=9.

D’où le nouveau vecteur = (0, 15, 11, 9,4)

2ème itération: i =4, (4) =9.

S={1,5,4}, ̅={2,3}, =(0,12,11,9,4)

3ème itération: i =3, (3) =11.

S={1,5,4,3}, ̅ ={2}, =(0,12,11,9,4)

4ème itération: i =2, (2) =12.

S={1,5,4,3,2}, ̅ = , =(0,12,11,9,4).

Le chemin minimal de 1 à 4 par exemple est de coût 9, c’est le chemin (1,5,4).

B.2. algorithme de Floyd.

Cet algorithme permet de trouver la matrice des plus cours chemins dans un graphe à
longueurs positives

1. Description de l’algorithme
Pour k de 1 à n
Pour tout i et j de 1 à n faire
ij = min ( ij, ik + ik)

2. N.B. :
Comme pour l’algorithme précédent, si l’on souhaite, en plus de la longueur des
chemins, exhiber explicitement le chemin, on mettra à jour, au fur et à mesure de
l’introduction d’un nouveau sommet k, une matrice de prédécesseurs.

III.3. Problème d’arbre couvrant de poids minimum.

Les arbres sont des graphes particuliers, très populaires en algorithmiques et en


informatique.

A. Arbres et arborescences
A.1. Définitions 30.

Un arbre est un graphe connexe sans cycles.

Une forêt est un graphe sans cycle qui n’est pas connexe. (Chaque composante connexe
est un arbre).

37 | P a g e
Une arborescence est un graphe G=(X,A) pour lequel il existe un sommet R appelé racine
de G tel que, sommet S de G, il exisste un chemin et un seul de R vers S (R≠S).

Une racine s du graphe G=(X,A) est un sommet tel que x X\* + il existe un chemin de s
vers x.

N.B. :

 Par sa définition même, un arbre est donc un graphe simple.


 Une arborescence est un arbre, mais la réciproque n’est pas vraie.

Etant donné un graphe quelconque G = (X,A), un arbre de G est un graphe partiel connexe
et sans cycles.

Un arbre de recouvrement G (i.e. arbre maximum ou arbre couvrant) est un graphe


partiel connexe et sans cycles incluant tous les sommets de G.

Exemples.

Fig. 3.2 Le graphe G = (X,A).


Fig 3.3 Le graphe G’ = (X’,A’).

G et G’ sont des :

 Arborescences
 Arbres
A.2. Algorithme de construction d’un arbre de recouvrement.

1. description de l’algorithme

Soit G= (X,A) un graphe.

On choisit un sommet arbitraire de G. Puis, on construit à partir de ce sommet une chaine


(respectivement un chemin) simple en ajoutant des arêtes (resp. arcs) de G tant que c’est
possible.

Si la chaine (chemin) ainsi construite (construit) contient tous les sommes du graphe, la
chaine (le chemin) est un arbre de recouvrement. Sinon, on retourne à l’avant–dernier
sommet de la chaine (du chemin) et à partir de celle-ci (celui-ci), et si c’est possible, on
construit une nouvelle chaine (un nouveau chemin) simple aussi longue que possible et ne
contenant aucun sommet de la première chaine construite (du premier chemin construit). Si
ce n’est pas possible, il faut remonter à l’antépénultième sommet et recommencer.

Si le graphe est connexe, on peut réitérer ce processus jusqu’à l’épuisement des sommets
pour obtenir un arbre de recouvrement.

38 | P a g e
2. Exemple.

Soit G= (x.A) le graphe connexe défini ci-dessous.

Trouvons un arbre de recouvrement de ce graphe.

h
a i
b e j

g
c d k

l
f

Fig.3.4

Solution

En partant par exemple du sommet a, on a : l

(1) a b c d e g h i j k f

est un arbre de recouvrement de G.

(2)
h
a e i
b
j

g
c k
d

l
f
est aussi un arbre de recouvrement de G.

A.3. Propriétés.

Propriété 1.

Soit n le nombre de sommets d’un graphe G = (X,U), et m le nombre de ses arcs.

 Si G est connexe alors m n-1.


 Si G est sans cycles alors m n -1.

Propriété 2 (caractérisation d’un arbre).

Soit G=X, U) un graphe sur n=|X| 2 sommets.

39 | P a g e
Les assertions suivantes sont équivalentes et caractérisent un arbre :

(i) G est connexe et sans cycle.


(ii) G est connexe et, est minimal pour cette condition (si on supprime un arc de G,
il ne sera plus connexe).
(iii) G est connexe et possède (n-1) arcs.
(iv) G est sans cycle et, est maximal pour cette propriété (si on ajoute un arc à G, il
possèdera un cycle).
(v) G est sans cycle et possède (n-1) arcs.
(vi) Entre chaque couple de sommets, il existe une et une seule chaine les reliant.

Preuve : En exercice.

A.4. Définitions 31 (feuille et hauteur).

Pour un arbre T de racine r :

 Le père d’un sommet x est l’unique voisin de x sur le chemin de la racine r à x. La


racine r est le seul sommet sans père.
 Les fils d’un sommet x sont les voisins de x autres que son père.
 Une feuille est un sommet sans fils. Les feuilles correspondent aux sommets de
degré 1.
 La hauteur h(T) de l’arbre T est la longueur du plus long chemin de la racine r à
une feuille.
 Une branche de l’arbre T est un chemin de la racine r à une feuille.

B. Méthode de recherche d’arbre.

B.1. Exemple introductif.

On considère le réseau routier représenté par le graphe ci-dessous. Les sommets sont les
villages et les liens sont les routes.

Fig.3.5

Ces routes sont souvent enneigées en hiver et l’équipement décide de déneiger un


nombre minimal de routes de telle sorte que deux villages quelconques du réseau soient
toujours reliés par une route.

Le problème consiste à trouver un graphe partiel connexe, comprenant un nombre minimal


d’arêtes.

Le graphe contient 6 sommets, le sous-graphe cherché doit contenir donc 5 arêtes. Il s’agit
donc de construire un arbre de recouvrement du graphe.

40 | P a g e
Par exemple l’arbre suivant

Fig.3.6

B.2. algorithme de Sollin-Calestagne.

Cet algorithme concerne la recherche d’arbre couvrant de poids (coût) minimum lorsque le
graphe est simple, connexe et valué.

1. Description de l’algorithme

Soit G= (X,A, ) un graphe simple connexe valué.

 (1) a1= {x1, y1) est une arête de coût minimum.


On pose S= {x1, y1) et T = {a1} avec ̅= X\S.
Passer à (2)
 (2) Si S= X, alors l’arbre (S,T) est l’arbre cherché, sinon passer en (3).
 (3) on choisit une arête a= {x,y} de coût minimum ayant un sommet dans S et
l’autre dans ̅ = X/S.
On remplace S par S {x, y} et T par T {a}
(i.e. S S {x,y} et T T {a})
Passer en (2).

2. Exemple d’application

Soit G=(X, U) un graphe connexe représentant le projet d’installation de lignes


téléphoniques. Les poids représentent le coût d’installations des lignes.

On veut donner un plan d’installation minimisant le coût total de l’installation.

1
a4 2 a3
2 3
3 1
a2
1 2
Fig.3.7
2 5
a1 1
Solution. 4

- (1) soit a1 = {4,5} une arête de poids minimum. On pose S = {4,5}, T= {a1}, et ̅=
{1,2,3}. Et on va à (2).
- (2) on a S = {4,5) ≠ X et on passe donc à (3).
- (3) on prend a2 = {5,3} une arête de poids minimum.

On obtient S= S *5,3} = {4,5,3}, T={a1, a2} et ̅= {1,2}. Et on va à (2).

41 | P a g e
- (2) S= {3,4,5} ≠ X et on va donc à (3).
- (3) on choisit a3= {3,2} une arête de poids minimum
On obtient S = S {3,2}={3,4,5,2}, T = {a1,a2,a3} et ̅={1}. Et on va à (2).
- (2) S={2,3,4,5} ≠ X et on va donc à (3).
- (3) on choisit a4 ={2,1} une arête de poids minimum.
On obtient S = S {2,1}={3,4,5,2,1}, T = {a1,a2,a3,a4} et ̅={}. Et on va à (2).
- (2) S={1,2,3,4,5} X. Donc A = (X,T) est l’arbre cherché i.e
l’arbre couvrant de poids minimum.

En effet A=(X,T) est l’arbre ci-après :

2 1
2 a4 a3 3
1
1
a2
a1 5
1
4
Et le coût de cet arbre est 1+1+1+2=5.

B.3. REMARQUE

La solution du problème de recherche de l’arbre de poids maximum s’obtient en utilisant le


même algorithme de l’arbre de poids minimum après avoir multiplié les arcs par (-1).

III.4. Quelques façons de parcourir un graphe.

A. Introduction.

A.1. Remarque.

Parcourir un graphe G=(X, A) donné revient à traiter ses sommets en tenant compte des
liens entre eux. Nous allons voir comment peut-on parcourir un graphe quelconque à partir
d’un de ses sommets.

A.2. Algorithme de parcours d’un graphe.

a) Définition 32.

Procédure parcours (G, x)


L= liste des sommets à traiter (vide au départ)
mettre x dans L (début de traitement de x)
Tant que L ≠ Ø faire
sortir le 1er sommet y de L (y en cours de traitement)
V= successeurs non traités de y.
Pour tout z dans V faire
mettre z dans L(début du traitement de z)
Fin faire

42 | P a g e
Fin du traitement de y.
Fin faire

b) Exemple
Soit le graphe G=(X, A) ci-après

4 3
Fig. 3.8
5
1 2

Le parcours du graphe G à partir du sommet 4, nous donne les arbres de parcours ci-après :
d’après l’ordre croissant des sommets.

1 2 2) 4 1 2 5
1)
4

3 5 3
1

3) 4 3 2 5
Détails des l’algorithme

X Traités Г+ (x) L

4 4 1,3 [1,3]
1 4,1 2 [3,2]
3 4,1,3 2,5 [2,5]
2 4,1,3,2 4,5 [5]
5 4,1,3,2,5 1 [ ]

Tableau 3.1.

L’ordre de parcours des sommets du graphe est donné par la liste des sommets traités
[4,1,3,2,5].

C) Remarque

Cet algorithme de recherche, par ses variantes différentes, permet de résoudre tous les
problèmes que nous pouvons nous poser : recherche des composantes connexes, recherche
d’un arbre couvrant, détermination des plus courts chemins,….

43 | P a g e
B. Types de parcours de graphe.

Nous allons étudier deux types de parcours de graphe dont chacun permet de résoudre des
problèmes particuliers et différents.

B.1. Parcours en largeur d’un graphe.

a) Définition 33.

Soit G=(X, A) un graphe et x e X un sommet.

Un parcours en largeur du graphe G à partir de x est un parcours dans lequel un sommet


y est marqué avant le début de traitement des ses successeurs.

b) Algorithme de parcours en largeur.

Fonction P= parcours_largeur (G,x)


L= file des sommets à traiter
P= listes des prédécesseurs de l’arbre de parcours.
marquer le sommet x et le mettre dans L.
Tant que L = Ø faire
Sortir le 1er sommet y de L
V= successeurs non traités de y
Pour tout z V faire
Marque z ; P(z)=y
Mettre z à la fin de L
Fin faire
Fin faire

C) Remarques.

Dans le parcours en largeur d’un graphe :

1. il y a la possibilité de récupérer la liste des prédécesseurs P qui permet de


retrouver l’arbre de parcours en largeur depuis le sommet x.
2. il y a la possibilité d’obtenir les distances de x aux autres sommets en termes
de niveaux de ces sommets à partir de x (x étant de niveau 0).
3. la liste des sommets à traiter est l’exemple type d’une file de FIFO (First In,
First Out) car on ajoute les éléments par le bas et on retire les éléments par le
haut de la file.

d) Exemple.

Soit le graphe G = (X, A) ci-après et x = 8 X un sommet de G.

Parcourir en largeur le graphe G à partir de 8.

44 | P a g e
5 3
8
4
6 1 Fig.3.9
2

1 9 7

En appliquant l’algorithme de parcours en largeur de G à partir de 8, l’ordre de parcours des


sommets du graphe est donné par la liste des sommets marqués [8, 10, 2, 9, 4, 7, 5, 1, 3, 6]
l’ordre que l’on retrouve facilement sur l’arbre.

4(5) 5(6)
2(3)

8(1) 10(2
1(8)
)
7(6)
9(4)
3(9)

6(10)

① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩
P= 7 10 7 2 4 7 9 0 10 8 Prédécesseurs à partir de la
racine 8.

D= 4 2 4 3 4 4 3 0 2 1 Distances à partir de la
racine 8 (en termes de
niveau).

Voici les détails de l’algorithme de parcours en largeur de G par ordre croissant des sommets
à partir des sommets 8.

Marquer 8 et mettre 8 dans L, i.e. L= {8}.

On a : L = {8} ≠ Ø.

D’où on obtient le tableau suivant:

45 | P a g e
X Г+ (x) Marqués L

8 {10} [8,10] [10]


10 {2,9} [8,10,2,9] [2,9]
2 {4,8,9} [8,10,2,9,4] [9,4]
9 {7} [8,10,2,9,4,7] [4,7]
4 {5,8} [8,10,2,9,4,7,5] [7,5]
7 {1,2,3,4,6} [8,10,2,9,4,7,5,1,3,6] [5,1,3,6]
5 {8} [8,10,2,9,4,7,5,1,3,6] [1,3,6]
1 {3} [8,10,2,9,4,7,5,1,3,6] [3,6]
3 {5,6} [8,10,2,9,4,7,5,1,3,6] [6]
6 {1,4,5} [8,10,2,9,4,7,5,1,3,6] [ ]

Tableau 3.2

B.2. Parcours en profondeur d’un graphe.

a. Définition 34.

Soit G=(X, A) un graphe et x ϵ X un sommet de G.

Un parcours en profondeur du graphe G à partir de x est un parcours dans lequel un


sommet y n’est marqué qu’après le début de traitement de ses successeurs.

b. Algorithme de parcours en profondeur.

Fonction P = parcours_profondeur (G, X)

L = [x] (pile des sommets à traiter)


P= liste des prédécesseurs de l’arbre de parcours.
Tant que L = Ø faire
Sortir le 1er sommet y de L
V= successeurs non traités de y
Pour tout z ϵ V faire
P(z)=y
Mettre z au début de L
Fin faire
Marquer le sommet y
Fin faire.

c. Remarques

Dans le parcours en profondeur d’un graphe :

1. Il y a la possibilité de récupérer la liste des prédécesseurs P qui permet de


retrouver l’arbre de parcours en profondeur depuis le sommet x .

46 | P a g e
2. Il y a la possibilité de construire les chemins les plus longs possibles depuis
un sommet donné.
3. La liste L des sommets à traiter est l’exemple type d’une pile de type LIFO
(Last In, First Out) car on ajoute tous les éléments par le haut et on retire les
éléments par le haut de la pile.

d. Exemple.

Soit le graphe G=(X,A) de la figure 3.9.

Le parcours du graphe G en profondeur, par ordre décroissant des sommets, depuis le


sommet 8 donne l’arbre de parcours suivant :

8 1 9 7 6 4

2 1 3

P= 6 7 1 6 6 7 9 0 10 8

(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
à à à à à à à à
e. Définitions 35.

Soit G=(X,A) un graphe et x ϵ X un sommet de G.

 On donne une formulation récursive de l’algorithme du parcours en profondeur de G


par :

Fonction P = parcours_profondeur (G ,x)


Marquer x (début du traitement de x)
V= successeurs non traités de x
Pour tout y ϵ V faire
P(y)=x
P=parcours_profondeur (G,y)
Fin faire.
Fin du traitement de x

 On appelle numérotation préfixe et numérotation suffixe les numérotations de


sommets du graphe, correspondants à l’ordre de traitement des sommets du graphe lors
du parcours en profondeur suivant qu’on numérote un sommet avant ou après le
traitement de ses successeurs :

47 | P a g e
Fonction P = parcours_ profondeur (G,x)
Marquer x
Numérotation préfixe de x
V= successeurs non traités de x
Pour tout y ϵ V faire
P(y)=x
P = parcours_profondeur (G,y)
Fin faire
Numérotation suffixe de x

 Le parcours en profondeur d’un graphe G depuis un sommet x permet de définir


quatre types d’arcs comme ci- après :
(1) Arcs couvrants : les arcs retenus pour le parcours en profondeur.
(2) Arcs directs : les arcs n’appartenant pas au parcours en profondeur mais reliant un
sommet à un descendant.
(3) Arcs rétrogrades : les arcs n’appartenant pas au parcours en profondeur mais reliant
un sommet à un ascendant (ou à lui-même).
(4) Arcs traversiers : les arcs n’appartenant pas au parcours en profondeur mais reliant
deux branches distinctes de l’arbre.

f. Exemple.

En parcourant en profondeur le graphe G de la figure 3.9, on obtient ceci comme


numérotation des sommets :

Numérotation préfixe = 8 10 9 7 6 5 4 1 3 2

8( 10( 9( 7( 6( 5(

4(

1( 3(
2(

Numérotation suffixe = 4 6 3 2 1 5 7 10 8 9

8(1 10( 9( 7( 6( 5(

4(

1( 1( 3(

48 | P a g e
III. 5. EXERCICES.

1. La matrice qui suit donne en heures des vols entre certaines villes V1 ,V2, …., V6.

0 3 ∞ ∞ ∞

0 ∞

∞ 4 0 ∞ 3

6 2 ∞ 0 4

Le terme (i,j) de cette ∞


matrice est4égal5à ∞ 0 2 le vol au départ de la ville Vi à
lorsque
destination de Vj n’existe pas.
∞ ∞ 5 4 3 0
(a). Quel est l’itinéraire le plus rapide de V1 à V6 ?

(b). S’il y a une escale obligatoire de respectivement 2, 3, 1, 1, 4, 5 heures aux villes V1, V2,
…, v6, quel est alors l’itinéraire le plus rapide de V1 à V6 ?

2. Soit le graphe G= (X, A, ) valué ci-après


8
2
1 3
8
1 13 3
5
6 4
4 5
6 2

5 7 3

(a). Trouver le plus court chemin du sommet 1 à tous les sommets du graphe.

(b). Trouver un arbre couvrant de poids minimum.

3. Trouver quelques applications de la notion d’arborescence.


4. Définir un algorithme permettant de calculer la longueur de tous de plus cours
chemins depuis un sommet s ? (se servir de la recherche en largeur).
5. Soit le G= (X,A) suivant :

A D
G
S B H
E

C F
I

49 | P a g e
a) Donnez dans l’ordre les sommets visités au moyen de la recherche en profondeur
depuis S, ainsi que l’arbre de parcours.
b) Donnez dans l’ordre les sommets visités au moyen de la recherche en largeur
depuis S, ainsi que l’arbre de parcours.
6. Deux joueurs disposent de deux tas de trois allumettes, à tour de rôle chaque joueur
peut enlever une ou deux allumettes dans un des tas. Le joueur qui retire la dernière
allumette perd la partie.
a) Modéliser le jeu à l’aide d’un graphe.
b) Que doit jouer le premier joueur pour gagner à coup ?
c) Trouver un arbre de parcours en profondeur du graphe à partir d’un sommet au
choix convenablement fait.
d) Trouver un arbre de parcours en largeur du graphe à partir d’un sommet au choix
convenablement fait.
7. Trouvez les arbres couvrants de poids minimum, dans chacun des cas ci-après, du
graphe G = (X,A,C) ( les chiffres sur les arêtes représentant leurs poids) :

3
V
V 2
1 5
2
2 V5
a) V
2 V
2 1 1
2
V4
V 3

1 5 5
b) 2 3

3 2 4 2 1

4 5 6
1 3

50 | P a g e
Chapitre IV. Problèmes de flot dans un réseau.

IV.1. Réseaux, et réseaux de transport.

1.1. Définitions 36

On appelle réseau un graphe fortement connexe, sans boucle et ayant plus d’un sommet.

On appelle nœud d’un réseau un sommet qui a plus de deux arcs incidents. Les autres
sommets sont appelés antinœuds.

On appelle boucle tout chemin pour lequel seuls les premiers et derniers sommets des
nœuds.

 On appelle réseau de transport un graphe orienté G= (X,A,C) antisymétrique


valué sans boucle et dans lequel il existe :
- Un sommet x1 sans prédécesseurs (i.e. Г- (x1) = ) nommé entrée ou source du
réseau.
- Un sommet xn sans successeurs (i.e. Г (xn) = ) nommé sortie ou puits du réseau
et tel qu’au moins un chemin unisse x1 à xn dans G.

La fonction de pondération C est supposée positive et l’on nomme capacité de l’arc a le


nombre C(a).
La capacité de
l’arc (s, X1)
1.2. Exemple
3
X X La sortie du
6 réseau.
2 3
1 3
S P
L’entrée du 4 X
réseau X2 7
2 4
Fig-41

C’est un réseau de transport.

IV.2. Flot dans un réseau.

2.1. Définitions

Soit G= (X, A,C ) un réseau de transport.

Soit l’ensemble des arcs sortants du somme x, et l’ensemble des arcs entrants du
sommet x.

On appelle un flot pour le réseau de transport (X, A,C ) une fonction définie par :

:A telle que:
a ( )

1. a A: (a) o ( est défini positif).

51 | P a g e
2. x ϵ X tel que x ≠ x1 et x≠ n on a :

∑ ( ) ∑ ( )

( vérifie la loi des nœuds de Kirchhoff. i.e. est conservatif de la quantité de flux de la
réseau.)

3. a A : (a) C (a)
( ne dépasse pas la capacité des arcs i.e. le flot est compatible dans le réseau).
2.2. Remarques :
Si est un flot sur un réseau de transport G, alors on a :
1. x X, x ≠ x1 et x ≠ xn : = ∑ ( ) ∑ ( ).
2. = et cette quantité est appelée la valeur du flot.
3. La notation ci-après pour chaque arc de G :

a =(x,y)
x y
C (a); 𝝋 (a)

La capacité de Le flux qui


l’arc (x, y)=a traverse l’arc a

2.3. Exemple

Soit le réseau R = (X, A,C ) de la figure Fig. 4.1.

1;1
x x 6;1
2;2
1 3,1 3

S P
4;2 x
x2 2;2 7;3
4
Fig-4.1
On a un flot dans le réseau R.

IV.3. Problème de flot.

La principale question qui se pose pour un réseau de transport donné est de déterminer un
flot de valeur maximale ainsi que les flots le long de chaque arc. Il arrive fréquemment
également que l’on doive considérer des réseaux avec des capacités localisées non
seulement sur les arêtes mais également sur les sommets.

C’est notamment le cas pour les réseaux téléphoniques dans lesquels la limite de capacité
est autant due aux lignes qu’aux centraux. On peut ramener facilement ce problème au

52 | P a g e
précédent : il suffit de dédoubler chaque sommet en une entrée et une sortie liées par un
arc ayant pour capacité celle qu’on attribuait précédemment au sommet. On peut, de plus,
se donner un coût de transport d’une unité de flot sur chaque arc et chercher le flot
maximal de coût minimal.

3.1. Recherche d’un flot complet.

1. Définition 38.

Soit un flot dans un réseau G (X, A,C )


Un arc a de G est saturé si, et seulement si on a ( ) (a).
Le flot est complet si tout chemin allant de x1 à xn contiens au moins un arc
saturé.

2. Exemple.
Dans la figure de l’exemple précédent, on a 3 chemins qui mènent de S à P pour
lesquels on a au moins un arc saturé. Le flot est donc complet car :

Arc saturé
Le premier chemin 4;2 2;2 7;3
S x2 x4 P

Arcs saturés
2;2 1;1
6;1
Le deuxième chemin
S x1 x3 P

Arc saturé
2;2 3;1 7;3
Le troisième chemin S x1 x4 P

3. Amélioration du flot.

a) Définition 39.

Soit un flot complet.

Une procédure itérative pour identifier et marquer tous les sommets du graphe où il est
possible de faire transiter une unité de flot supplémentaire avec pour objectif la détection
d’une chaine µ marquée de x1, à xn est définie comme suite :

Processus d’étiquetage de certains sommets du graphe.

En x1 on place une étiquette + .. Soit x un sommet déjà marqué :

53 | P a g e
 On marque avec une étiquette +x tout successeur y non marqué de x pour
lequel le flot n’est pas à son maximum [(x,y) A et (x,y)< C (x,y)].

 On marque avec une étiquette -x tout prédécesseur y non marqué de x pour


lequel le flot n’est pas nul [(x,y) A et (x,y)>0)].

N.b. : Si l’on parvient jusqu’au marquage du sommet xn avec cette procédure, il existe
certainement une chaine µ de x1 à xn dont tous les sommets sont marqués, et le rôle de
l’étiquette reste celui de donner le nom d’un successeur ou d’un prédécesseur d’un
sommet donné en indiquant si le flot peut être augmenté dans le sens de parcours
(étiquette ) ou diminué dans le sens contraire (étiquette ).
+x -x
Toute chaine µ ainsi trouvée est appelée chaine augmentante, et le nouveau flot y
associé sera défini ainsi :

𝜑 (a)= 𝜑 (a) si a µ.
𝜑 (a)= 𝜑 (a) +1 si a µ et a est orienté dans le sens de µ.
𝜑 (a)= 𝜑 (a) - 1 si a µ et a est orienté dans le sens contraire de µ.

b) Exemple

Voici une chaine µ reliant les sommets S et P d’un réseau de transport dont le flot peut être
augmenté :

3;1 4;2 3;1 4;1


S x1 x2 x3 P

+ +S +x1 -x2 -x3

Dans la chaine on a :

- Les arcs dans le sens direct µ = { (s, ), (x1, x2), (x3,p)} qui n’ont pas atteint
leur limite i.e (a) <C (a).
- Les arcs dans le sens indirect µ- = {(x3, x2)} qui a un flux non nul i.e. (a) >0.

D’où la chaine µ est augmentante, et le flot sur cette chaine peut être augmenté de la
valeur suivante :

= Min {{(C (a) - (a) / a µ };{ (a) / a µ }}

= Min {3-1, 4-2, 4-1, 1}.

= Min {2, 2, 3, 1} = 1.

On augmentera donc le flot de cette chaine de 1, ce qui signifie:

54 | P a g e
 Augmenter de 1 le flux entre s et x1.
 Augmenter de 1 le flux entre x1 et x2.
 Diminuer de 1 le flux entre x3 et x2.
 Augmenter de 1 le flux entre x3 et p.

On obtient alors le nouveau flot sur la chaine :

3;2 4;3 3;0 4;2

S x1 x2 x3 P

On remarque que pour les arcs en sens inverse, améliorer le flot signifie réduire le flux les
traversant. Entre x3 et x2, le flux est réduit d’une unité pour permettre l’arrivée d’une unité
de flux sur x2 par x1 en augmentant le flux entre x1 et x2 d’une unité et ceci conservant la
loi de Kirchhoff au sommet x2 .

c). Graphe d’écarts ou réseau résiduel.

On systématise l’idée précédente en introduisant la notion de graphe d’écart ou réseau


résiduel.

(c.1). Définition 40.

Soit un réseau de transport G= (X, A,C ) possédant un flot complet . On appelle graphe
d’écart ou réseau résiduel le réseau ̅ ( ) = (X, ̅, ̅ ) tel que :

- Si a A et (a) < C (a) alors a ̅ et ̅ (a) = (a)- (a).


- Si a = (x,y) A et (a) > 0 alors =(y,x) ̅ et ̅ ( ) (a).
- Si a A et (a) = C (a) alors a ̅.

Le réseau résiduel indique le long de quels arcs on peut augmenter ou diminuer le flot, et
son intérêt apparait dans le théorème suivant :

(c.2). Théorème 5. (Caractérisation d’un flot maximal)

Soit un flot de G (de x1 à xn ) et ̅ ( ) le réseau résiduel associé à .

Une condition nécessaire et suffisante pour que le flot soit maximal est qu’il n’existe pas
de chemin de x1 et xn dans ̅ ( ).

La démonstration de ce théorème se base sur le lemme des arcs colorés de Minty.

3.2. Recherche d’un flot maximal : Algorithme de Ford et Fulkerson.

A partir des résultats précédents, on peut s’intéresser maintenant à une méthode


constructive de recherche d’un flot maximal.

1. Algorithme (Ford et Fulkerson).

Recherche d’un flot maximum.

55 | P a g e
a) Itération k=0.
Partir d’un flot initial 0 (compatible avec les contraintes de capacité)
par exemple 0 = (0,0,….,0).
b) A l’itération k, soit k le flot courant.
Rechercher un chemin µk de x1 à xn dans le graphe d’écart ̅ ( K).
S’il n’en existe pas. FIN : le flot K est maximal.
c) Soit k la capacité résiduelle du chemin µk
(Minimum des capacités résiduelles des arcs du chemin)
Définir le flot k+1 par :
k+1 k K
(a) = (a) + si a µ et si a est orienté dans le sens de µ.
k+1 k K
(a) = (a) - si a µ et si a est orienté dans le sens contraire de µ.

Faire k k+1 et retourner en (b).

2. Exemple (application).

Une usine à gaz alimente une ville V par l’intermédiaire du réseau de distribution ci-dessous.
Les nombres associés aux arcs représentent les capacités de transport.

3
x x 8
5
3
1
7 4
g V
6 x
x2 4
5 4

Fig : 4.2 Graphe orienté élémentaire


et valué G= (X, A,C ).

On voudrait connaitre la quantité maximale que peut écouler l’usine. Ce qui revient à
chercher un flot maximum sur le réseau.

Nous allons appliquer l’algorithme de Ford et Fulkerson, pour trouver un flot maximal entre
les sommets g et V. On a ce qui suit en mettant en pointillé chaque chemin µk choisi à
chaque itération k dans le graphe d’écart ̅ ( k) :

(a) Itération k=0

Soit 0 = (0,0,…,0) toutes les composantes du flot initial sont considérées nulles (cfr. fig.
4.3a) et le graphe d’écart ̅ ( 0) est représenté par la figure 4.3b.

56 | P a g e
0 3
X
X 0 X X
1
1
0 3 5 3
8
0 V
0
g g 7 4 V
0 0
6
X2 X
0 4
4 X2 X
5
4

Fig. 4.3 - Flot initial 0


et graphe d’écart ̅ ( 0
).

On a : 𝜇° = (g, x1, x3, V) dans 𝐺̅ (𝜑0) et 𝜀 0 = min {5,3, 8}=3.


𝜑1 (g, x1) = 3, 𝜑1 (x1, x3)= 3, 𝜑1(x3,V) = 3.

(b). Itération k=1.

Soit 1
et le graphe d’écart ̅ ( 1
) ci –dessous

3
X X
3 1 3
3

g 0 0 P x
3
0
0
2 3
g x
X2 X
3
7 5
0 4
6 4 V

5
x2 x 4
4

Fig. 4.4 – Flot à l’itération numéro 1 et graphe d’écart ̅ ( 1


).

On a : 1
= (g, x2, x3, V) dans ̅ ( 1
) et 1
= Min {(6-0), (7-0), (8-3)} = 5.
2 2 2
(g, x2) = 0+5 = 5, (x2,x3) = 0+5 = 5 et (x3,V) = 3+5 = 8.

57 | P a g e
(c). Itération k=2.

Soit 2
et le graphe d’écart ̅ ( 2
) ci-dessous.

3 X
X X X
3 3
8
1 1
3 3
g 5 0 2 5
V
4 V
5 5 2
0 g
X2 X
0 4
4 5
1 X2
X
4

Fig. 4.5- Flot à l’itération numéro 2 et graphe d’écart ̅ ( 2


).

On a : 2
= (g, x2, x3, x4 , V) dans ̅ ( 2
) , et 2
= Min {(6-5), (7-5), (4-0), (4-0)} = 1.
3 2 2 3
(g,x2)=5+1=6, (x2,x3) = 5+1=6 et (x3,x4)= 0+1=1, (x4,V)= 0+1=1.

(d). Itération k=3.

Soit 3
et le graphe d’écart ̅ ( 3
) ci-dessous.

3
X X X
3 1 3
X
8 3
1 6 1
6 3 1 V
g 1
2 3
V 1
6 3
X
X 1
X2 g X2 5
4
0 4

Fig. 4.6 Flot à l’itération numéro 3 et graphe d’écart ̅ ( 3


).

On a comme résultat : « Pas de chemin allant de la source g à la sortie V dans le graphe


d’écart ̅ ( 3). D’où la fin des itérations, et le flot 3 est maximal.

Donc, le flot maximum sur le réseau de distribution par l’usine à gaz en tenant compte des
capacités de transport est :

3;3 X
X 8,8
5;3 3
1
7;6 Fig.4.7- Flot maximum sur
4;1
g V le graphe G=(X, A,C ).
6;6
X2 X 4;1
5;0 58 | P a g e
4
La valeur de flot 3 est 9 ; donc, la quantité maximale que l’usine peut écouler pour
alimenter une ville V par l’intermédiaire du réseau de distribution G=(X, A,C ) donné est 9.

3. Remarque.

(1) Pour accélérer le processus de résolution de problème de flot maximum, on


démarre avec un flot au jugé, et on essaie de le rendre complet.
Un flot au jugé, consiste à envoyer une matière à partir du somme s (i.e. x1) et
de la distribuer sur le réseau tout en respectant la conservation de la matière en
chaque sommet. On applique ensuite l’algorithme de Ford et Fulkerson avec
comme flot de départ, le flot complet obtenu.
(2) Lors de l’application de l’algorithme de Ford Fulkerson, on peut déterminer dans
un premier temps un flot complet, c’est-à-dire déterminer toutes les chaines
augmentantes qui sont des chemins, puis dans un second temps, chercher toutes
celles qui permettront de rendre le flot complet maximum, car un flot complet
n’est pas forcément maximum.

3.3. Recherche d’un flot maximal à cout minimal

La recherche d’un flot maximal à cout minimal peut être résolue à l’aide de l’algorithme de
Busacker-Gowen qui permet de déterminer la famille complète de tous les flots de coût
minimal d’un sommet x1 à un sommet xn et de valeur =1,2,…, v. Nous prenons ici cet
algorithme itératif sous forme littérale et laissons le soin au lecteur d’en effectuer une
description plus « informatique ».

A l’itération k, le flot courant k est supposé être un flot de valeur et de coût minimal
parmi l’ensemble de tous les flots de valeur .

Soit ̅ ( k) le graphe d’écart relatif à k


, on attribue aux arcs de ̅ ( k
) le coût ̅ et les
capacités ̅ suivantes :

- Si a=(xi, xj) A et (a) c (a), l’arc a+ = (xi, xj) a un coût ̅̅̅(a) = w(a) et une
capacité ̅(a)= c (a) - (a) > 0.
- Si a=(xi, xj) A et (a) > 0, l’arc a- = (xj, xi) a un coût ̅ (a) = - w(a) et une
capacité ̅(a) = (a)>0.

Soit alors k un chemin de coût minimal relativement aux coûts ̅ entre x1 et xn sur le
graphe d’écart ̅ ( k) ; on note k la capacité résiduelle de ce chemin. On définit alors le flot
k+1
comme dans l’algorithme de Ford et Fulkerson. Si µ est le vecteur associé au chemin µk
(i.e. tel que µa = 1 si a+ µk et µa = -1 si a- µk), on a k+1 = k+ kµ et le flot k+1 est un
flot de coût minimal de valeur + k.

N.B : A chaque itération on doit rechercher le plus court chemin (au sens du chemin de
coût minimal) de x1 à xn dans un graphe où la longueur (le coût) des arcs peut être
négative ; il conviendra donc d’employer un algorithme adapté à cette situation (l’algorithme
de Dijkstra ne convient pas). Il existe cependant une amélioration de cet algorithme
proposée par Edmonds et karp et basée sur une technique de modification des coûts

59 | P a g e
permettant de les rendre tous positifs en conservant cependant la même hiérarchie de
chemin sur le graphe d’écart, dans cette situation l’algorithme de Dijkstra peut être utilisé.

3.4. Coupe dans un réseau

Dans les problèmes de réseau de transport les flots entrants et sortants d’un ensemble de
sommets jouent un rôle très important, ce qui amène à définir la notion de coupe.

1) Définition 41.

Soit G = (X, A,C ) un réseau de transport.

Une coupe est un ensemble W de sommets contenant la source :

W , x1 ϵ W (avec x1 la source du réseau).

On appelle capacité de la coupe W la quantité :

CW ∑( ) ( )

avec W+ = {(x,y) A / x W et y W } et W- = {(x,y) A/x w et y W }.

2) Remarque.

Une coupe est donc un ensemble qui « coupe » en deux le graphe avec d’un coté la
source et de l’autre le puits.

Le coupe permet de définir la valeur du flot, c’est –à-dire la quantité qui a été transportée
de la source jusqu’au puits. La capacité des différentes coupes impose une limite maximale
au flot dans un réseau de transport.

3) Lemme de la coupe

Soit G = (X, A,C ) un réseau de transport et un flot sur ce réseau.

Alors pour toute coupe W on a :


+ -
(x1) = (∑( ) ( )) – (∑( ) ( )) = (xn).

Cette valeur est appelée valeur du flot, et est notée V ( ), et pour toute coupe on a :

V( ) CW .

N.B. : On peut donc définir la valeur du flot comme étant :


+ -
V( )= (x1)= (xn).

4) Théorème (flot –max/coupe –min).

Soit G= (X, A, C) un réseau de transport.

Alors il existe un flot sur ce réseau tel que : V ( )=

60 | P a g e
5) Autre formulation de l’algorithme de Ford et Fulkerson.

Dans un réseau de transport G= (X, A, C), on obtient un flot maximum en partant de


n’importe quel flot , l’augmentant de µ pour chaque chaine augmentante du réseau. Ce
qui donne l’algorithme ci-après:

Fonction Ford_Fulkerson (G, x1, xn, C, )

= flot de départ (éventuellement nul)

Tant que µ chaine augmentante faire

augmenter de µ le long de µ

fin faire

N.B :

- µ = le minimum des capacités résiduelles des arcs.

- L’augmentation se fait positivement ou négativement selon le sens direct ou indirect de


l’arc par rapport au sens du parcours de la chaine (i.e. de x1 à xn).

IV.4. Problème de couplages.

Les problèmes de couplage dans les graphes quelconques (ou dans les graphes bipartis)
ont un double intérêt. Le premier, le plus évident, vient de leurs applications : ils
généralisent directement les problèmes d’affectations et ils interviennent dans certains
problèmes importants de la théorie des graphes : problèmes des tournées, détermination de
plus courtes chaines dans un graphe non orienté, etc. Le second, d’ordre théorique, vient de
ce qu’ils se rattachent à une classe de problèmes de programmation linéaire en nombres
entiers.

4.1. Définition 42.

Etant donné un graphe simple non orienté G= (X, A), un couplage est un sous-ensemble
d’arêtes K A tel que deux arêtes quelconques de K ne sont pas adjacentes.

Un sommet i X est dit saturé par le couplage K A s’il existe une arête de K incidente à
i, sinon il est insaturé.

Un couplage K qui sature tous les sommets du graphe est appelé couplage parfait.

Un couplage maximal est un couplage de cardinalité maximale. (i.e. un couplage


maximum est celui contenant le plus grand nombre possible d’arêtes).

Exemple (1) 1
2 5

3
4

Fig. 4,8
61 | P a g e
En gras, un couplage maximum de G. Les sommets 1, 3, 4 et 5 sont saturés par le couplage
{{3,1}, {4,5}}.

N.B. : Un graphe peut avoir plusieurs couplages maximum.

1 2 1 2

Fig. 4.9 4 Fig. 4.10


3 4 3

5 6 5 6

Un couplage K={{3,4}, Couplage K’={{3,6},


{5,2}} du graphe G qui {1,4}, {5,2}}, qui est
n’est pas maximal. maximum et parfait.

4.2. Calcul d’un couplage maximum.

1. Définition 43.

Soit K est un couplage de G

On appelle chaine alternée une chaine élémentaire de G dont les arêtes sont
alternativement dans K et hors de K.

On appelle Chaine augmentante une chaine alternée qui relie deux sommets insaturés.

Par exemple (ci-dessus à gauche cfr. Fig. 4.9), la chaine 1-4-3-6 est une chaine
augmentante car elle est alternée et relie deux sommets insaturés 1 et 6 par le couplage K.
En « invertissant les épaisseurs » des arêtes le long de cette chaine, on obtient un meilleur
couplage (ci-dessus à droite cfr. Fig. 4.10)

2. théorème (berge, 1957).

un couplage K est maximum si et seulement s’il n’existe pas de chaine alternée


augmentante relativement à K.

3. Remarque :

Couplage maximal et flot maximal

Pour déterminer un couplage maximal sur un graphe biparti G=(X,Y,Г), on peut recourir à
l’artifice suivant.

On construit un réseau de transport en ajoutant au graphe une origine S liée à tous les
sommets de X et une destination P liée à tous les sommets de Y (voir figure 4.11). On fixe à
1 les capacités de tous les arcs de ce réseau.
62 | P a g e
Un couplage permet de sélectionner un certain nombre d’arêtes du graphe biparti. Si l’on
fait passer une unité de flot par ces arêtes et sur les arêtes correspondantes vers S et P (en
faisant passer un flot nul sur les autres arêtes) , on obtient bien un flot sur le réseau.

En effet, la loi de Kirchhoff en un sommet quelconque de X ou de Y exprime ici qu’il y a au


plus une arête du couplage y parvenant. Réciproquement, un flot sur ce réseau ne peut
transporter au plus qu’une unité de flot sur chaque arête et l’ensemble des arêtes
transportant une unité de flot entre X et Y détermine un couplage sur G.

Il s’avère que, si deux arêtes retenues étaient adjacentes en x X, la loi de Kirchhoff en x


imposerait un flot de deux unités au moins sur l’arc entre S et x, ce qui dépasse la capacité
imposée. La valeur du flot est donc égale au nombre d’arêtes constituant le couplage.

Le problème du couplage maximal se ramène ainsi à un problème de flot maximal dans un


réseau de transport qui peut-être résolu à l’aide de l’algorithme de Ford FULKERSON. La
figure 4.11 montre un flot complet et non maximal (Partie gauche) qui peut être amélioré en
un flot maximal (partie droite).

X Y X Y

X Y X Y

S P S X Y P
X Y

X Y X Y

X Y X Y

Fig. 4.11 Flot complet et maximal

4.3. Couplage de poids maximal.

A chaque arête a A du graphe G= (X,A), on associe maintenant un nombre réel (a)


appelé poids de l’arête a. Le poids d’un couplage K A est la somme des poids des arêtes
qui le constituent, soit (K) = ∑ ( ).

Le problème du couplage de poids maximal est la recherche d’un couplage tel que son
poids soit maximal sur l’ensemble de tous les couplages de G. On remarquera qu’un
couplage de poids maximal n’est pas nécessairement un couplage maximal (couplage de
cardinalité maximale).

1. Définition 44.

On rappelle qu’une chaine alternée augmentante est une chaine alternée joignant deux
sommets insaturés.

63 | P a g e
Une chaine alternée réductrice est une alternée impaire dont les arêtes extrêmes sont
dans K.

Une chaine alternée conservative est une chaine alternée paire dont une extrémité est un
sommet isolé.

On remarquera de manière évidente que le transfert le long d’une chaine alternée


augmentante augmente la cardinalité du couplage d’une unité, le long d’une chaine
réductrice, il la réduit d’une unité et le long d’une chaine conservative, il ne la change pas.

2. Définition 45.

Le coût réduit d’une chaine alternée L (augmentante, réductrice ou conservative) relative


au couplage K vaut :

(L)= (L ̅) – (L K).

Un cycle alterné pair est une chaine alternée paire dont les extrémités coïncident.

Un transfert le long d’un cycle alterné pair conserve la cardinalité du couplage.

Le coût réduit du cycle est : ( ) = ( ̅) - ( K).

3. Théorème 7 (caractérisation).

Un couplage K est de poids maximal si, et seulement si, il n’existe pas de chaine alternée,
ni de cycle alterné pair de coût réduit strictement positif relativement à K.

4. Construction des couplages.


a) Remarque.

Le théorème ci-dessous montre que l’on peut construire de proche en proche des couplages
K1,K2,…, KP cardinalité 1,2,…, p et de poids maximal par des transferts successifs le long de
chaines alternées augmentantes et de coût réduit maximal. On a généralisé ainsi le résultat
de Busacker-Gowen sur la recherche de flot maximal de coût minimal.

b) Théorème 8.

Soit K un couplage de cardinalité p de poids maximal (sur l’ensemble des couplages de


cardinalité p) et soit L une chaine alternée augmentante (relativement à K) de coût reduit
maximal. Le transfert le long de L est de poids maximal parmi touts les couplages de
cardinalité p+1.

IV.5. Exercices.

1. Une assemblée est formée de personnes parlant plusieurs langues différentes (voir
tableau ci-après). On veut former des binômes de personnes qui pourront dialoguer
entre elles. Comment maximiser le nombre de binômes ?

64 | P a g e
Allemand Anglais Arabe Chinois Français Espagnol Russe

Alfred X X

Bernard X X

Claude X X

Denis X

Ernest X

Fabien X X X

Georges X X

Henri X X X

Isidore X X

Joseph X X

Kurt X X

Louis X

2. Une entremetteuse essaie de former le plus de couples possibles avec 6 filles et 6


garçons en fonction de critères esthétiques et de compatibilité d’humeur. Elle a
dressé le tableau d’incompatibilité ci-après, où une croix indique que deux personnes
sont incompatibles. Combien des couples pourra-t-elle former au maximum ?

Anne Béatrice Carine Drew Eléonore Florine

Alfred X X X X

Bernard X

Claude X X X X

Denis X X X

Ernest X X

Fabien X X X X

3. Démontrer qu’un arbre a au plus un couplage parfait. Quelle est la condition


nécessaire et suffisante pour qu’un arbre T ait un couplage parfait ?
4. Démontrez le théorème suivant :

65 | P a g e
« Tout arbre fini avec au moins deux sommets comporte au moins deux sommets
pendants ».

5. Soit le graphe G = (X, A,C ) ci-après :

5 5
1 2 3

3 2 4 2 1

4 5 6
1 3

(a). Trouver l’arbre couvrant de poids minimum pour le graphe G.

(b). Trouver un couplage maximum.

(c). Trouver un couplage de poids maximal.

6. Soit le graphe G = (X, A,C ) ci-après :

3
V V
1
2 5 2
V2 2
V V
2
2
2 1 1
V V
3

(a). Trouver les arbres couvrants de poids minimum du graphe G. (les chiffres sur les arêtes
représentent leurs poids).

(b). Trouver un couplage parfait de poids maximal de G.

(b). Trouver un couplage maximum de G.

7. Trouver le flot maximum ainsi que la coupe maximale et celle minimale de ce réseau
R=(X,A,C ).

a d
3,2
3,2
1,1 5,1
2,2 1,1
s b 1,1 4,1
1,1 t
1,0 e
2,2
c 3,2

66 | P a g e
8. Trouver le flot maximum et la coupe minimale du réseau R = (X, A,C ) ci-dessous :

4 30;18
26;16
15;2
2
1 8;0 3 7 14;10
10;8
10;10 11;2 12;8
30;10
6
5
20;10

9. Le protocole de montage IP appelé RIP (Routing Information Protocol) de type


« distance vector » est basé sur quel algorithme ? Chaque routeur communique aux
autres la distance avec un réseau donné en comptant le nombre de sauts et diffuse
toute sa table de routage. Ce protocole, assez ancien, est limité à 15 sauts et ne
prend pas en compte la qualité des transmissions.

10. Déterminer le flot maximal entre le sommet 1 et le sommet 7 dans le graphe ci-
dessous où les nombres associés aux arcs représentent les capacités. Trouver
également la coupe minimale.

2 4 4
7
2
5
5
3 7
1
5 3
8

3 2 6

67 | P a g e
Chap. V. Problèmes d’ordonnancement : Gestion de projets.

V.1. Problème de mise en ordre d’un graphe connexe ou la recherche d’un


circuit.

A. La mise en ordre d’un graphe connexe (l’ordonnancement d’un graphe).

1) Le principe

Ordonner un graphe revient à disposer dans un certain ordre ses sommets tels que les arcs
soient dans des le même sens. On définit ainsi les différents niveaux des sommets du
graphe.

2) Exemple
Soit le graphe G = (X,A) suivant

x2

x4 x1 Fig. 5.1

x3

Les niveaux des sommets de ce graphe sont définis comme ci-après :

- Le niveau nul noté N0 détermine les sommets du graphe n’ayant pas de


prédécesseurs ( (x) = Ø). Dans le graphe G le sommet x1 n’a pas de
prédécesseurs, d’où N0 = {x1}.
- Le premier niveau, noté N1 définit les sommets du graphe dont tous les
prédécesseurs appartiennent à N0. Dans le graphe G, le sommet x2 admet
comme prédécesseur le sommet x1 qui appartient au niveau N0, d’où N1 = {x2}.
- Le deuxième niveau, note N2 définit les sommets du graphe dont tous les
prédécesseurs appartiennent à N0 N1. Dans le graphe G, le sommet x4 admet
comme prédécesseur le sommet x2 qui appartient à N0 N1. D’où N2 = {x4}.
- Le troisième, note N3 définit les sommets du graphe dont tous les prédécesseurs
appartiennent à N0 N1 N2. Dans le graphe G le sommet x3 admet comme
prédécesseurs les sommets x1, x2 et x4 qui appartiennent à N0 N1 N2. D’où
N3={x3}.

Le graphe ordonné de G est :

N0 N1 N2 N3

x1 x2 x3
x4

68 | P a g e
3) Le procédé.

La mise en ordre d’un graphe connexe G = (X,A) ou l’ordonnancement d’un graphe se


traduit par l’algorithme suivant :

Données : un graphe G = (X,A).

Résultat : les différents niveaux de sommets du graphe ainsi que le graphe ordonné.

(0) On détermine le dictionnaire des prédécesseurs du graphe G formé par le couple


(W, (x)).
(1) On repère dans le dictionnaire des prédécesseurs du graphe les sommets n’ayant
pas de prédécesseurs ( (x) = Ø).
1.1. On pose N0 l’ensemble des sommets du graphe n’ayant pas de
prédécesseurs. On l’appelle niveau nul.
1.2. On barre dans la colonne de (x) tous les sommets de niveau nul N0, on
obtient une nouvelle colonne (x), avec G1 le sous-graphe engendré par
X\N0.
(2) On repère dans la nouvelle colonne (x) les sommets n’ayant pas de
prédécesseurs ( (x) = Ø ).

(2.1) On pose N1 l’ensemble des sommets du graphe n’ayant pas de prédécesseurs.

(2.2) On barre dans la colonne (x) tous les sommets de niveau N1, on obtient une
nouvelle colonne (x) avec le sous-graphe engendré par X\ N0 N1.

On contient le même procédé jusqu’à ce qu’on termine le graphe et on représente ainsi le


graphe ordonné par niveaux de G.

4. Exemple

Soit le graphe G = (X,A) représentant le processus de transformation d’une matière


première a dans un atelier.

b
c
d
e Fig. 5.2

1) Soit le dictionnaire des prédécesseurs du graphe G :

Le sommet a n’a pas des prédécesseurs, il est donc de niveau nul N0 = {a}.

69 | P a g e
X (x)

a Ø

b a
Fig. 5.3
c a-b

C c-b

e d

On barre le sommet a de la colonne (x), on obtient la nouvelle colonne (x).

2) Le sommet b n’a plus de prédécesseurs, il est donc de niveau N1 = {b}.

X (x)

a _

Fig. 5.4 b Ø

c b

c c-b

e d

On barre le sommet b de la colonne (x), on obtient la nouvelle colonne (x).

3) Le sommet c n’a plus de prédécesseurs, il est donc de niveau deux N2 = {c}.

X (x)

a _

Fig. 5.5 b _

c Ø

c c

e d

On barre le sommet c de la colonne (x), on obtient le nouveau dictionnaire avec la


nouvelle colonne (x).

70 | P a g e
4) Le sommet d n’a plus de prédécesseurs, il est donc de niveau 3 N3 = {d}.

X (x).

a _

Fig.5.6 b _

c _

d Ø

e d

On barre de sommet d de la colonne (x). On obtient la nouvelle colonne (x).

5) Le sommet e n’a plus de prédécesseurs, il est donc de niveau 4 N4 = {e}.

X (x).

a _

b _
Fig. 5.7
c _

d _

e Ø

On examiné tous les sommets du graphe G. On a ainsi le graphe ordonné de G représenté


ci-dessous :

a b c d e

N0 N1 N2 N3 N4

B. La recherche d’un circuit dans un graphe connexe.

A une étape donnée de l’ordonnancement d’un graphe, la définition des niveaux se bloque
(i.e. il n’existe pas de sommets sans prédécesseurs), donc la mise en ordre du graphe est
impossible, on dit alors que le graphe possède un circuit.

71 | P a g e
Comment faire pour déterminer ce circuit ?

On applique la procédure suivante :

Soit (X, (x)) le dernier dictionnaire des prédécesseurs du graphe G où l’application de


l’algorithme de mise en ordre est bloquée.

1). On repère dans la colonne (x) un sommet quelconque x0. Ce sommet nous revoie à
sa position dans la colonne X.

2). On lit à nouveau dans la colonne (x) un nouveau sommet x1 correspondant au


prédécesseur de x0, lequel nous renvoie à sa position dans la colonne X, et ainsi de suite.

Cette procédure s’arrête lorsque dans la suite des sommets lus, un


sommet se répète. Le circuit est alors entre ces deux mêmes sommets de la suite.

Remarque :

L’écriture de la suite des sommets se fait de gauche à droite [i.e. (x0, x1, ..., xi, ..., xp, ..., x1)]
et la lecture du circuit se fait de droite à gauche.

Application

Soit le graphe G = (X, A) suivant :

d
a
Fig. 5.8

c
e

1) Soit le dictionnaire des prédécesseurs du graphe .

Le sommet a n’a pas des prédécesseurs, il est donc de niveau nul N0 = {a}.

X (x)

a Ø

Fig. 5.9 b a-e

c a-b

d c-b

e d

72 | P a g e
On barre le sommet a de la colonne (x), on obtient le dictionnaire suivant

X (x)

a _

Fig. 5.10 b e

c b

d c-b

e d

2) A cette étape, on ne peut pas déterminer le niveau N1 car il n’ y a pas de sommets


n’ayant pas de prédécesseurs, donc le graphe n’est pas ordonnable ; G contient un
circuit.

Pour déterminer ce circuit :

 On choisit un sommet dans (x), soit e ce sommet, celui-ci nous renvoie à sa ligne
dans X.

X (x)

a _

b e
Fig. 5.11
c b

d c-b

e d

 On choisit un sommet dans la ligne de e, soit d ce sommet, celui-ci nous renvoie à


sa ligne dans X.
X (x)

a _

b e
Fig. 5.12
c b

d c-b

e d

73 | P a g e
 On choisit un sommet dans la ligne de d, soit b ce sommet, celui-ci nous renvoie à sa
ligne dans X.

X (x)

a _

b e
Fig. 5.13
c b

d c-b

e d

 On choisit un sommet dans la ligne de b, soit e ce sommet. On arrête la procédure


car le sommet e s’est répété.

X (x)

a -
Fig. 5.14
b e

c b

d c-b

e d

La suite des sommets trouvés est la suivante (e, d, b, e), et on obtient ainsi le circuit (e, b,
d, e) car la lecture du circuit se fait de droite à gauche.

V.2. TD1 : « Décrire les problèmes d’ordonnancement ».

[Travail à défendre en groupe d’au plus 15 étudiants].

N.B. : Le développement attendu se fera selon le modèle suivant :

A. Les fondements de l’ordonnancement : Description et résolution.

74 | P a g e
B. Le graphe potentiels-Tâches (ou MPM) : Description et illustration concrète de son
application.

C. Le graphe potentiels-Etapes (ou PERT) : Description et illustration concrète de son


application.

D. L’étude comparative de l’intérêt de deux graphes précédemment décrits (i.e. MPM


et PERT), et la notion de contraintes redondantes.

E. Deux exemples des problèmes d’ordonnancement formulables en termes du


« Problème du voyageur ».

V.3. TD2 : « Choisir ou définir un projet, et en faire une étude descriptive


selon le modèle international de présentation et de gestion d’un
projet ».

[Travail à défendre en groupe d’au plus 15 étudiants].

V.4. Exercices.

1. Trouver le chemin critique pour la situation ci-après, en donnant le graphe y relatif.

Tâches Prédécesseurs Durée (jours)

A _ 3

B _ 9

C _ 5

D A 8

E B 4

F B 7

G B 20

H C, F 6

I D, E 5

2. La construction d’un entrepôt est divisée en dix tâches dont les caractéristiques sont
données dans le tableau ci-dessous. Trouver le chemin critique.

Durée
Tâches Nature Précédences
(jours)

A Présentation des plans par le propriétaire _ 4

75 | P a g e
Durée
Tâches Nature Précédences
(jours)

B Préparation du terrain _ 2

C Commande des matériaux A 1

D Creusage des fondations A, B 1

E Commande des portes et fenêtres A 2

F Livraison des matériaux C 2

G Coulage des fondations D, F 2

H Livraison des portes et fenêtres E 10

I Pose des murs, de la charpente et du toit G 4

J Mise en place des portes et fenêtres H, I 1

3. La rénovation du séjour d’un appartement se décompose en plusieurs tâches décrites


dans le tableau ci-dessous. Ce denier donne également les précédences à respecter lors
de la planification des travaux ainsi qu’une estimation de la durée de chacune des
tâches.

Durée
Tâches Libellé Précédences
(durée)

A Enlèvement des portes _ 1/2

B Ponçage et peinture des portes A 3

C Pose des portes B, J ½

D Arrachage des papiers peints _ 1

E Tirage de fils électriques D 1

F Pose des prises E, H, I ½

G Ragréage des murs E, A 2

H Peinture du plafond G 2

I Pose des papiers peints G 3

J Peinture des cadres H, I 1

K Arrachage de la moquette H, I, J ½

76 | P a g e
Durée
Tâches Libellé Précédences
(durée)

L Ponçage du parquet K 1

M Imprégnation et séchage du parquet L, F 4

N Peinture du balcon _ 2

O Changement des protections solaires N 1

1). Représenter le graphe des précédences de ces travaux de rénovation.

2). Déterminer une durée totale minimale de rénovation en exhibant un chemin critique.

77 | P a g e
VI. problèmes d’affectation.

VI.1. Formulation générale.

La formulation générale d’un problème d’affectation est la suivante :

« Etant donné n tâches à réaliser et n machines pour les réaliser, et


sachant que l’on connait le coût de réalisation Cij de la tâche ti par la
machine mj, [pour tous les couples (ti, mj) possibles, si la tâche ti ne peut
être effectuée par la machine mj, on pose Cij = ]. On cherche une
permutation de * + conduisant à un coût total :

∑ ()

Minimum (sur l’ensemble de toutes les n! permutations possibles). »


Le problème d’affectation est un cas particulier du problème de transport
(sans capacité). Il peut être également vu comme un problème de couplage
parfait de poids minimum dans un graphe biparti.

Cependant, compte tenu de l’importance de ce type de problème, un


algorithme spécifique a été proposé par Kuhn : il s’agit de l’algorithme
Hongrois.

VI.2. Algorithme Hongrois.

Cet algorithme repose essentiellement sur la constatation suivante :

« On ne change pas la ou les solutions optimales en augmentant ou en


diminuant d’une même quantité tous les éléments d’une même ligne (ou
d’une même colonne) de la matrice de Cij (les valeurs infinies restant infinies).
Après une telle opération, la valeur totale est augmentée ou diminuée de .

Par conséquent, si l’on fait apparaître, par des transformations de ce type,


suffisamment de zéros dans le tableau, mais pas de coûts négatifs, et qu’il
existe n zéros ‘’indépendants’’ (c’est-à-dire un seul zéro dans chaque ligne et
dans chaque colonne), on aura alors trouvé l’affectation optimale. »

L’algorithme procède en trois phases successives ci-après :

1ère phase : Obtention des valeurs nulles.


78 | P a g e
2ème phase : Recherche du maximum d’affectations possibles.

3ème phase : Détermination des affectations « intéressantes ».

Afin d’expliquer la démarche suivie, nous allons considérer l’exemple décrit par
la matrice des coûts suivante :

1 2 3 4 5
A 7 3 5 7 10
B 6 8 7
C 6 5 1 5
D 11 4 11 15
E 4 5 2 10
Fig. 6.1.

Première phase : Obtention des valeurs nulles.

A tous les éléments de chacune des colonnes, on enlève le plus petit élément
de cette colonne ; puis, dans la matrice ainsi obtenue, on enlève à tous les
éléments d’une même ligne, le plus petit élément de la ligne. On obtient de la
sorte une matrice Cij ayant au moins un zéro par ligne et par colonne.

Pour l’exemple précédent (cfr. Fig. 6.1.), on obtient, après traitement des
colonnes puis des lignes, les deux matrices suivantes :

1 2 3 4 5 1 2 3 4 5
A 1 0 4 5 3 A 1 0 4 5 3
B 0 6 0 B 0 6 0
C 0 2 0 3 C 0 2 0 3
D 5 1 9 8 D 4 0 8 7
E 1 4 0 3 E 1 4 0 3

Fig. 6.2. fig. 6.3.

Deuxième phase : Recherche du maximum d’affectations possibles.

A partir de la matrice (C1,ij), on cherche à former une solution de coût nul (un
seul zéro dans chaque ligne et dans chaque colonne). Si c’est le cas, on a la
79 | P a g e
solution optimale, sinon on cherche un ensemble maximum de
zéros « indépendants » : ceci revient à chercher un flot maximal sur le graphe
G’ constitué par les arcs de coût (réduit) nul. Sur la matrice (C1,ij), cela
correspond au traitement suivant : On considère la ligne ayant un nombre
minimal de zéros (pour l’exemple, cela peut être la première). On encadre l’un
des zéro de cette ligne (ici, C1,A2), puis on barre les zéros qui se trouvent sur la
même ligne ou la même colonne que les zéros encadrés (ici, C1,D2). On procède
de même pour toutes les lignes, en tenant compte des étapes précédentes. On
obtient, pour l’exemple, la matrice suivante :

1 2 3 4 5
A 1 0 4 5 3
B 0 6 0
C 0 2 0 3
D 4 0 8 7
E 1 4 0 3
Fig. 6.4.

Troisième phase : Détermination des affectations « intéressantes ».

Pour déterminer ces affectations, on procède de la manière ci-après :

 On marque (d’un astérisque) toutes les lignes qui ne contiennent aucun


zéro encadré-sommet non affecté- (ligne D de l’exemple) ;

 On marque les lignes qui ont un zéro encadré dans une colonne marquée
(ligne A de l’exemple) ;
 On marque les colonnes qui ont un ou plusieurs zéros barrés dans une
ligne marquée-possibilité non exploitée- (colonne 2 de l’exemple).
On répète ces trois marquages successivement jusqu’à ce que l’on ne puisse
plus effectuer de nouveaux marquages (pour l’exemple, une seule »passe »
suffit).

Les affectations intéressantes à considérer sont celle issues de sommets


correspondant aux lignes marquées ; on barre donc les lignes non marquées.
Les sommets correspondant aux colonnes marquées ne sont pas intéressants
car ils peuvent être réaffectés ; on barre donc les colonnes marquées. Pour
l’exemple, ceci nous conduits à ceci :

80 | P a g e
1 2 3 4 5
A 1 0 4 5 3 *
B 0 6 0
C 0 2 0 3
D 4 0 8 7 *
E 1 4 0 3
*

Fig. 6.5.

Dans le tableau réduit ainsi obtenu (cases non barrées), on cherche ensuite
l’élément le plus petit, nécessairement non nul par construction (pour
l’exemple, il s’agit de l’élément C1,A1) : on retranche sa valeur aux colonnes non
barrées et on l’ajoute aux lignes barrées. On obtient les tableaux successifs
suivants :

1 2 3 4 5 1 2 3 4 5
A 0 0 3 4 2 A 0 0 3 4 2
B -1 5 -1 B 0 6 0
C -1 2 -1 2 C 0 3 0 3
D 3 0 7 6 D 3 0 7 6
E 1 3 -1 2 E 2 4 0 3

Fig. 6.6. Fig. 6.7.

On note (C2,ij) la matrice ainsi obtenu et l’on poursuit la procédure de


traitement en reprenant à la seconde phase. Lorsqu’une solution optimale est
obtenue (un zéro par ligne et par colonne), on arrête, sinon on recommence et
on définit successivement les matrices (C3,ij), (C4,ij), ..., (Cn,ij).

Sur le tableau (C2,ij) de l’exemple, on est amené à encadrer C2,D2 et barrer C2,A2,
encadrer C2,E4, encadrer C2,A1 et barrer C2,B1 et C2,C1, encadrer C2,B5 et enfin
encadrer C2,C3 . Ce qui nous conduit à la situation ci-après, en reprenant à partir
de la deuxième phase de l’algorithme Hongrois :

81 | P a g e
1 2 3 4 5
A 0 0 3 4 2
B 0 6 0
C 0 3 0 3
D 3 0 7 6
E 2 4 0 3
Fig. 6.8.

La solution optimale est alors obtenue grâce aux éléments :

C2,A1 = C2,B5 = C2,C3 = C2,D2 = C2,E4 = 0;

Et la permutation ( )

Si l’on revient aux données initiales, on remarque que :

CA1 = 7, CB5 = 7, CC3 = 1, CD2 = 4 et CE4 = 2

D’où on obtient la valeur du couplage comme ci-après :

CA1 + CB5 + CC3 + CD2 + CE4 = 7+7+1+4+2 = 21.

La figure 6.9 visualise en trait fort le couplage optimal obtenu.

B 1
2

C A

5
D
4 E

fig. 6.9. Affectation optimale.

82 | P a g e
VI.3. Exercices.

1. Trois centrales électriques avec une capacité respectivement de 25, 40 et 30 millions


de kWh fournissent l’électricité de trois villes. La demande maximale de chacune des
trois villes est respectivement estimée `a 30, 35 et 25 millions de kWh. Le prix du
million de kWh dans les trois villes est donné dans la table ci-dessous.

Ville

1 2 3

1 $600 $700 $400


Usine $320 $300 $350
2
$500 $480 $450
3

Formuler le problème comme un modèle de transport.

2. Des voitures sont transportées depuis trois centres de distributions vers cinq
revendeurs. Le coût de transport dépend de la distance entre les sources et les
destinations ainsi que du fait que le camion est plein ou seulement à moitié rempli.
La table ci-dessous reprend les distances (en km) entre les centres de distributions et
les revendeurs ainsi que les capacités d’approvisionnement mensuelles des centres
des distributions et les demandes, mensuelles aussi, des revendeurs. Un camion plein
peut transporter jusqu’à 18 voitures. Le coût de transport est de $us 25 par camion
par km.
Ville Demande

1 2 3 4 5

1 100 150 200 140 35 40

Centr 2 50 70 60 65 80 20
e
40 90 100 150 130 15
3

Demande 100 200 150 160 140

Formuler le problème comme un modèle de transport.

83 | P a g e
Références.

[1]. M.L. Assas, Analyse de la tolérance aux fautes : approches fonctionnelle et structurelle.
Thèse de doctorat de l’université des Sciences et Technologies de Lille, 2002.

[2]. K. Appel et W. Haken, Every planar map is 4-colorable, Bulletin of the AMS, volume 82,
711-712, 1976.

[3]. C. Berge, Graphes, ISBN 2-04-15555-4, Gauthiers-Villaars, Bordas, Paris, 1983.

[4]. H. Bestougeff, C. Guilpin et M. Jacques. La technique informatique, Tome 2 :


algorithmes numériques et non numériques, ISBN 2-225-40337-6, Masson, Paris, 1975.

[5]. R. Cabane, Théorie des graphes, Techniques de l’ingénieur, Traité Sciences


fondamentales, document AF205.

[6]. H. Coilland, Polycopié d’exercices de recherche opérationnelle, IUT Informatique Nancy


2 et Ecole des Mines de Nancy, Juillet 1999.

[7]. N. Deo, Graph theory with applications to engineering and computer Science, Prentice-
Hall, Englewood cliffs (N.J.), 1975.

[8]. L. Euler, Solutio Problematis Ad geometrian Situs Pertinentis, Commenrarii Academiae


Scientiarum Imperialis Petropolitanae, 8, pp. 128-140, 1736.

[9]. M. Gondran et M. Minoux, Graphes et algorithms, 2ème éd.; Collection de la Direction


des Etudes et Recherches d’Electricité de France, Eyrolles 1985.

[10]. Roseaux, Exercices et problèmes résolus de recherche opérationnelle, Tome 1,


Graphes : leurs usages, leurs algorithmes, ISBN 2-10-003935-0, Dunod, Paris, 1998.

84 | P a g e

Vous aimerez peut-être aussi