Chap1 Chap2 Theorie Des Graphes
Chap1 Chap2 Theorie Des Graphes
Chap1 Chap2 Theorie Des Graphes
Auteur
Prof. Safae El Haj Benali
safae.elhajbenali@usmba.ac.ma
• Théorie de graphe
12h de cours.
8h de TD.
2h d'evaluation.
Table des matières
5 La méthode P.E.R.T. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1 Représentation de P.E.R.T. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2 Dicultés de construction du graphe P.E.R.T. . . . . . . . . . . . . . . . . . 38
5.3 Calcul de l'ordonnancement par la méthode P.E.R.T. . . . . . . . . . . . . . . 38
[ Premier Chapitre \
Eléments de théorie des graphes
La ville de Königsberg comprenait 4 quartiers, séparés par des ponts. 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.
"Euler" démontra en 1736 qu'il était impossible de traverser chacun des sept ponts de la ville
de Königsberg une fois exactement et de revenir au point de départ.
Euler représenta cette situation à l'aide d'un "dessin" où les sommets représentent les terres et
les arêtes, les ponts comme le montre la gure 1.2.
Euler démontra que ce problème n'a pas de solution. Le problème des ponts de Königsberg est
identique à celui consistant à tracer une gure géométrique sans lever le crayon et sans repasser
plusieurs fois sur un même trait.
4
1. DÉFINITION ET CONCEPTS DE BASE 5
La théorie des graphes constitue un domaine des mathématiques qui, historiquement, s'est aussi
développé au sein de disciplines diverses telles que la chimie (modélisation de structures), la biologie
(génome), les sciences sociales (modélisation des relations) ou en vue d'applications industrielles
(problème du voyageur de commerce). Elle constitue l'un des instruments les plus courants et les
plus ecaces pour résoudre des problèmes discrets posés en Recherche Opérationnelle (RO).
Un graphe permet de représenter simplement la structure, les connexions, les cheminements
possibles d'un ensemble complexe comprenant un grand nombre de situations, en exprimant les
relations, les dépendances entre ses éléments (eg, réseau de communication, réseaux ferroviaire ou
routier, arbre généalogique, diagramme de succession de tâches en gestion de projet, etc). En plus
de son existence purement mathématique, le graphe est aussi une structure de données puissante
pour l'informatique.
Dénition 1.1 Un est un schéma constitué par un ensemble (ici supposé ni) de points
graphe
et par un ensemble de èches reliant chacune deux. Les points sont appelés les du
sommets
Notation 1.1 L'arc 3 va du sommet e au sommet f . On dit qu'il est de la forme (e, f ) et on
écrit par convention que 3 = (e, f ). On remarque que si la forme ( g, c) sut pour désigner l'arc 6
6 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES
de manière univoque, la forme ( f , e) ne sut pas pour désigner l'arc 1 uniquement car 4 = ( f , e)
également.
1.2 Dénition mathématique d'un graphe
2). Une arête est donc un élément de P ( X ) (l'ensemble des parties à deux éléments de l'ensemble
X ).
2
Notation 1.3 La notation {x, y} pourrait être employée mais il faudrait écrire {x} (pour x = y).
Soit un graphe G = ( X ,U ), on notera donc les arêtes sous la forme [x, y] (avec x ∈ X et y ∈ X ).
Dénition 1.5 (Graphe non orienté) Un " graphe non orienté " sera appelé un multi-
Dénition 1.6 (Arc) Une arc est une paire ordonnée de sommets (x, y).
Dénition 1.7 (Graphe orienté) Un digraphe ou un " graphe orienté " est un graphe dont
toutes les arêtes sont orientées.
Exemple 1.4 Réseau de vol.
1.5 Multiplicité
Soit un arc de la forme (x, y), x et y sont appelés les extrémités de l'arc :
8 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES
x est l'extrémité initiale de l'arc;
y est l'extrémité nale de l'arc.
Dénition 1.9 (Multiplicité d'une paire ( x , y)) La multiplicité d'une paire (x , y) est le
nombre d'arcs (du graphe G) ayant comme extrémité initiale x et comme extrémité nale y.
Notation 1.4 La multiplicité d'une paire (x , y) est notée : m (x, y). On pose m (x, y) = m
+ − +
( y, x)
et m (x, y) = m (x, y) + m (x, y).
− +
G G G
1.6 Degrés
a) Degré d'un sommet
d(x), c'est le nombre d'arcs ayant une extrémité en x. Attention! une boucle sur un sommet est
comptée deux fois.
Fig. 1.6
Un graphe dont tous les sommets ont le même degré est dit . Si le degré commun est k,
régulier
L'ensemble des voisins ou des sommets adjacents du sommet x est noté :Γ(x) = Γ (x) + Γ (x).
+ −
b) Graphe simple
c) Graphe complet
Dénition 1.15 Un graphe est complet si chaque sommet du graphe est relié directement à
tous les autres sommets.
d) Graphe biparti
2. REPRÉSENTATIONS D'UN GRAPHE 11
Dénition 1.16 Un graphe est biparti si ses sommets peuvent être divisés en deux ensembles
X et Y , de sorte que toutes les arêtes du graphe relient un sommet dans X à un sommet dans Y
(dans la gure 1.9, on a X = {1, 3, 5} et Y = {2, 4, 6}, ou vice versa).
Exercice 1.2 Un tournoi oppose 6 équipes. Chaque équipe doit aronter toutes les autres.
1. Construisez un graphe représentant toutes les parties possibles.
2. Quel type de graphe obtenez-vous?
3. Si chaque équipe ne joue qu'un match par jour, combien de jours faudra-t-il pour terminer
le tournoi?
Exemple 1.10 On donne comme exemple la matrice d'incidence sommets-arcs du graphe partiel
sans boucle engendré par l'ensemble des arcs du graphe de la gure 1.3 privé de l'arc 5 (la boucle)
1 2 3 4 6 7 8 9
a 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 +1
c 0
0 0 0 −1 0 0 0
d 0
0 0 0 0 +1 +1 0
e
−1 +1 +1 −1 0 −1 0 0
f +1
0 −1 +1 0 0 0 0
g 0 0 0 0 +1 0 0 0
h 0 −1 0 0 0 0 −1 −1
G ( X ,U ) est une matrice carrée où chaque ligne correspond à un sommet de G et chaque colonne
correspond également à un sommet de G. Le terme général de la matrice est : a tel que
a = m (x , x ) signie que le sommet x est adjacent au sommet x .
ij
+
a = 0 sinon.
ij G i j i j
En cas de boucle (pour le sommet i, par exemple), on place un 1 sur la diagonale (en position
ij
(i, i)).
Exemple 1.11 On donne comme exemple la matrice d'incidence sommets sommets associée au
3. CONNEXITÉ DANS LES GRAPHES 13
a b c d e f g h
a 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 1
c 0 0 1 0 0 0 0 0
graphe de la gure 1.
d 0
0 0 0 1 0 0 1
e
0 0 0 0 0 1 0 1
f 0
0 0 0 2 0 0 0
g 0 0 1 0 0 0 0 0
h 0 0 0 0 0 0 0 0
Remarque 1.3 La matrice d'adjacence d'un graphe non orienté est symétrique : a ij = a ji .
Six0 = a et xk = b, on dira que la chaîne relie a et b. En plus, on dira que la chaîne a une
longueur k (c'est le nombre d'arêtes de la chaîne). Une chaîne doit comporter au moins une arête.
Le graphe 1.10 contient les chaînes ( x1 , u3 , x3 , u4 , x4 ) et ( x4 , u4 , x3 , u2 , x2 , u1 , x1 ), entre autres.
On ne change pas une chaîne en inversant l'ordre des éléments dans la suite correspondante,
ainsi les chaînes ( x1 , u3 , x3 , u4 , x4 ) et ( x4 , u4 , x3 , u3 , x1 ) sont identiques.
On appelle distance entre deux sommets la longueur de la plus petite chaîne les reliant.
Le diamètre d'un graphe la plus longue des distances entre deux sommets.
Une chaîne est élémentaire si chaque sommet y apparaît au plus une fois.
Une chaîne est simple si chaque arête apparaît au plus une fois. Dans le graphe 1.10,
( x1 , u 1 , x2 , u 2 , x3 ) est une chaîne simple et élémentaire.
Une chaîne telle que x0 = xk est appelée chaîne fermée. Dans le graphe 1.10,
( x2 , u 2 , x3 , u 4 , x4 , u 4 , x3 , u 2 , x2 ) est une chaîne fermée.
Une chaîne fermée simple est appelée cycle si seul le sommet de départ apparaît deux fois
dans la chaîne. Dans le graphe 1.10, ( x2 , u2 , x3 , u4 , x4 , u5 , x2 ) est un cycle.
Théorème 1.1 Un graphe est biparti si et seulement s'il ne contient aucun cycle de longueur
impaire.
14 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES
Fig. 1.10
Fig. 1.11
Le terme de parcours regroupe les chemins, les chaînes, les circuits et les cycles. Un parcours
est :
élémentaire : si tous les sommets qui le composent sont tous distincts ;
simple : si tous les arcs qui le composent sont tous distincts ;
hamiltonien : passe une fois et une seule par chaque sommet du graphe ;
eulérien : passe une fois et une seule par chaque arc du graphe1 ;
préhamiltonien : passe au moins une fois par chaque sommet du graphe ;
préeulérien ou chinois : passe au moins une fois par chaque arc du graphe.
Le calcul de la fermeture transitive d'un graphe peut se faire en faisant la somme booléenne
des "puissances" successives de sa matrice d'adjacence. Considérons par exemple le graphe orienté
suivant :
Soit le graphe d'ordre 7 suivant :
la matrice d'adjacence associé est :
Fig. 1.12
16 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES
0 1 0 0 0 0 0
0 0 0 0 0 1 1
0 0 0 1 0 0 0
A= 0 0 0 0 1 0 0
0 0 0 0 0 0 1
1 0 0 0 1 0 0
0 0 1 0 0 0 0
Dans cette matrice, A ( i, j) = 1 ssi il existe un chemin de longueur 1 pour aller de i à j. Pour
qu'il existe un chemin de longueur 2 pour aller d'un sommet a à un sommet b, il faut qu'il existe
un sommet i tel qu'il existe un chemin de longueur 1 de a vers i et un autre chemin de longueur
1 de i vers b. Pour tester cela, il s'agit de parcourir simultanément la ligne a et la colonne b de la
matrice A et de regarder s'il y a un 1 à la même position dans la ligne a et la colonne b. Ainsi, en
multipliant cette matrice par elle-même, on obtient la matrice A 2 des chemins de longueur 2 :
0 0 0 0 0 1 1
1 0 1 0 1 0 0
0 0 0 0 1 0 0
2
A = 0 0 0 0 0 0 1
0 0 1 0 0 0 0
0 1 0 0 0 0 1
0 0 0 1 0 0 0
Dans cette matrice, A 2 ( i, j) = 1 ssi il existe un chemin de longueur 2 pour aller de i à j. Par
exemple, A 2 (a, g) = 1 car il existe un chemin (< a; b; g >) de longueur 2 allant de a à g. De façon
plus générale, A k est la matrice des chemins de longueur k.
En additionnant A et A2, on obtient la matrice A + A2 des chemins de longueur inférieure ou
égale à 2 :
0 1 0 0 0 1 1
1 0 1 0 1 1 1
0 0 0 1 1 0 0
A + A2 = 0 0 0 0 1 0 1
0 0 1 0 0 0 1
1 1 0 0 1 0 1
0 0 1 1 0 0 0
1 1 1 1 1 1 1
1 1 1 1 1 1 1
0 0 1 1 1 0 1
2 3 4 5
A+A +A +A +A = 0 0 1 1 1 0 1
0 0 1 1 1 0 1
1 1 1 1 1 1 1
0 0 1 1 1 0 1
Uf = {(a, a), (a, b), (a, f ), (a, g), (a, c), (a, d ), (a, e), ( b, b), ( b, a), ( b, f ), ( b, g), ( b, c), ( b, d ),
( b, e), ( g, g), ( g, c), ( g, d ), ( g, e), ( c, c), ( c, d ), ( c, e), ( c, g), ( d, d ), ( d, e), ( d, g), ( d, c),
( e, e), ( e, g), ( e, c), ( e, d ), ( f , f ), ( f , a), ( f , b), ( f , g), ( f , c), ( f , d ), ( f , e)}.
3.4 Connexité
La notion de connexité exprime la possibilité d'aller de n'importe quel sommet du graphe à
n'importe quel autre sommet du graphe.
Dénition 1.21 Un multigraphe connexe est un graphe tel que pour toute paire de sommets x
et y, il existe une chaîne reliant x et y.
Exemple 1.12 Le plan d'une ville doit être connexe.
Ce graphe 1.13 est non connexe.
3.5 Composante connexe
18 CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES
Dénition 1.22 Une composante connexe est un sous graphe connexe de taille maximale.
Remarque 1.5 il est toujours possible de partitionner un graphe en composantes connexes. Par
exemple, sur la gure 1.3, si on considère le multigraphe alors il est scindé en 3 composantes
connexes : {a}, { g, c}, {e, f , d, h, b}.
Notons que si l'on calcule la fermeture transitive d'un graphe connexe, on obtient un graphe
complet. De même, si l'on calcule la fermeture transitive d'un graphe comportant k composantes
connexes, on obtient un graphe contenant k sous-graphes complets (un pour chaque composante
connexe).
Dénition 1.23 Un digraphe est dit fortement connexe si entre toute paire de sommets, il
existe un chemin de x vers x et un chemin de x vers x .
Soit G = ( X ,U ) un graphe. Si quels que soient x , x ∈ X , il existe un chemin de x vers x et un
i j j i
chemin de x vers x , alors le graphe est fortement connexe. Sinon on dénit des composantes
i j i j
fortement connexes.
j i
3. CONNEXITÉ DANS LES GRAPHES 19
Exemple 1.13
Dénition 1.24 On appelle composante fortement connexe tout sous-graphe induit maximal
fortement connexe (maximal signie qu'il n'y a pas de sous-graphe induit connexe plus grand
contenant les sommets de la composante).
Exemple 1.14 Par exemple, le graphe orienté suivant contient 2 composantes fortements connexes :
la première est le sous-graphe déni par les sommets {a, b, c, d} et la seconde est le sous-graphe déni
par les sommets {e, f , g}.
Comme pour les graphes non orientés, une façon de déterminer si un graphe orienté est fortement
connexe consiste à calculer sa fermeture transitive : si la fermeture transitive du graphe est le graphe
complet, alors il est fortement connexe.
Exemple 1.15 Revenons à l'exemple du graphe 1.12, a chacune des sous matrices carrées unités
de la matrice A + A + A + A + A correspond une composante fortement connexe : { A, B, F } et
2 3 4 5
{C, D, E, G } sont les ensembles de sommets des deux composantes fortement connexes du graphe
de la gure 1.12.
[ Deuxième Chapitre \
Le problème du plus court chemin
Les problèmes de cheminement dans les graphes (en particulier la recherche d'un plus court
chemin) comptent parmi les problèmes les plus anciens de la théorie des graphes et les plus importants
par leurs applications.
On se place dans le cas des graphes orientés valués G = ( X ,U ). Mais les résultats et algorithmes
présentés se généralisent facilement aux cas des graphes non orientés valués en transformant le
graphe non-orienté en un graphe orienté en remplaçant une arête entre deux sommets par deux arcs
de sens inverse entre ces sommets.
Dénition 2.1 Soit G = ( X ,U ) un graphe valué; on associe à chaque arc u = (i, j) une longueur
d ( u) ou d . Le problème du plus court chemin entre i et j consiste à trouver un chemin µ( i, j )
de i à j tel que :
ij
d ( u) soit minimale.
X
d (µ) =
u∈µ
Dans la recherche d'un plus court chemin de x à y, trois cas peuvent se présenter :
• Il n'existe aucun chemin de x à y (par exemple, si x et y appartiennent à deux composantes
fortement connexes diérentes de G ).
• Il existe des chemins de x à y mais pas de plus court chemin.
• Il existe un plus court chemin de x à y.
Exemple 2.1 On considère le graphe suivant : Il existe des chemins de x à y (et même une innité),
mais il n'existe pas de plus court chemin de x à y (il sut d'emprunter le cycle de poids négatif
autant de fois que nécessaire). Il existe un plus court chemin de x à z mais pas de chemin de z à x.
20
1. LES PLUS COURTS CHEMINS D'UN SOMMET À TOUS LES AUTRES 21
Et alors, une condition nécessaire et susante d'existence de plus court chemin est donnée par
le résultat suivant.
Théorème 2.1 Dans un graphe orienté valué fortement connexe G = ( X ,U ), il existe un plus
court chemin entre tout couple de sommets si et seulement s'il n'existe pas de circuit absorbant
dans G.
Les algorithmes de Dijkstra et Bellman-Ford procèdent tous les deux par relâchements successifs
d'arcs. La diérence entre les deux est que dans l'algorithme de Dijkstra, chaque arc est relâché
une et une seule fois, tandis que dans l'algorithme de Bellman-Ford, chaque arc peut être relâché
plusieurs fois.
Algorithme
1. Attribuer le poids 0 au point initial.
2. Attribuer aux sommets adjacents du point initial le poids des arêtes qui les relient (en
indiquant la provenance) et aux autres un poids inni.
3. Prendre le poids le plus petit et le considérer comme dénitif.
4. Recommencer le processus à partir du point dont on vient de trouver le poids dénitif ( en
faisant la somme des poids et en choisissant le poids minimal),
ç-à-d faire d(x ) ← d(x ) + d(x , x ) où x est le sommet tel que d(x ) soit minimale et
j i i j i i
x j ∈ Γ { x i }.
+
Pour aller de a à f , l'algorithme de Dijkstra va trouver le chemin < a, c, e, f >, de poids 3, alors
que le chemin < a, b, d, e, f > est de poids 2.
L'algorithme de Bellman-Ford (1958-1962) permet de trouver les plus courts chemins à origine
unique dans le cas où le graphe contient des arcs dont le coût est négatif, sous réserve que le graphe
ne contienne pas de circuit absorbant.
Algorithme
1. On numérote les sommets dans un ordre quelconque (sauf le x ), 1
2. λ = +∞ sauf λ = 0,
i 1
3. pour tout sommet x pour lequel λ − λ > d(x , x ), d représentant la valuation de l'arc et
λ ∈ Γ ( x ), remplacer λ par λ + d ( x , x ),
j j i i j
−
i j j i i j
Remarque 2.1 Si au bout de | X | itérations, les valeurs λ continuent à être modiées, c'est que
le graphe possède un circuit de longueur strictement négative.
j
= +∞ sinon
A l'initialisation :
d ii = 0
c i j = 0 si d i j = +∞
(
= i sinon
En n d'algorithme :
d i j = longueur du plus court chemin entre i et j
c i j = prédécesseur de j sur le plus court chemin de i à j
L'algorithme utilisé est celui de Floyd (1962). Il consiste en trois boucles imbriquées sur i, j, k
de 1 à n et on calcule :
d i j = min( d i j , d ik + d k j ).
Algorithme
pour k = 1 à n
pour i=1 à n sauf k
pour j = 1 à n sauf i
si d > d + d
ij ik kj
d i j ← d ik + d k j
ci j ← ck j
Fin
Fin
Fin
Exemple
2.4
0 5 1 2 − 1 1 1
5 0 3 ∞ 2 − 2 0
D (0) = C (0) =
1 3 0 4 3 3 − 3
2 ∞ 4 0 4 0 4 −
26 CHAPITRE 2. LE PROBLÈME DU PLUS COURT CHEMIN
0 5 1 2 − 1 1 1
5 0 3 7 2 − 2 1
D (1) = C (1) =
1 3 0 3 3 3 − 1
2 7 3 0 4 1 1 −
0 5 1 2 − 1 1 1
(2)
5 0 3 7
(2)
2 − 2 1
D = C =
1 3 0 3 3 3 − 1
2 7 3 0 4 3 1 −
0 4 1 2 − 3 1 1
(3)
4 0 3 6
(3)
3 − 2 1
D = C =
1 3 0 3 3 3 − 1
2 6 3 0 4 3 1 −
0 4 1 2 − 3 1 1
4 0 3 6 3 − 2 1
D (4) = = D̂ C (4) = = Ĉ
1 3 0 3 3 3 − 1
2 6 3 0 4 3 1 −
La distance du plus court chemin du sommet A au sommet B :
d (de D̂ ) =4
Le chemin le plus court du sommet A au sommet B : on cherche dans Ĉ la valeur de C = 3
12
ceci dit, pour aller du sommet A au sommet B on doit passer par le sommet intermediaire
12
C , de plus on a C = 3 et C = 2.
d'où le chemin le plus court du sommet A au sommet B est A → C → B.
13 32
ceci dit, pour aller du sommet B au sommet D on doit passer par le sommet intermediaire
24
D est B → C → A → B.
31 14