Chap 1
Chap 1
Année 2017/2018
[Link] Informatique 3 Théorie des graphes
Préambule
L’histoire de la théorie des graphes débute avec les travaux d’Euler au XVIII siècle ;Elle
e
trouve son origine dans l’étude de certains problèmes, tels que celui des ponts de Königsberg. Les
habitants de Königsberg se demandaient s’il était possible, en partant d’un quartier quelconque de
la ville, de traverser tous les ponts sans passer deux fois par le même et de revenir à leur point de
départ), la marche du cavalier sur l’échiquier ou le problème de coloriage de cartes.
La théorie des graphes s’est alors développée dans diverses disciplines telles que la chimie, la
biologie, les sciences sociales. Depuis le début du XX siècle, elle constitue une branche à part
e
De manière générale, un graphe permet 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.
1
[Link] Informatique 3 Théorie des graphes
Chapitre 1
1. Introduction
Les graphes représentent de manière simple et naturelle des relations entre les objets. Ils
constituent un moyen très pratique pour représenter différents types d’objets et différentes
situations de la vie courante. Ils peuvent aussi représenter la structure d’un ensemble complexe
avec ses éléments et les relations entre eux. Les outils mathématiques et les algorithmes mises au
point en théorie des graphes permettent de résoudre une multitude de problèmes, tels que les
problèmes de cheminement, d’ordonnancement, d’affectation, etc.
Un graphe est une structure comportant un ensemble non vide X d’éléments appelés sommets et
un ensemble A d’éléments appelés arcs.
Exemple :
L’ensemble X des sommets : X={a,b,c,d}
L’ensemble A des arêtes : A = {ab, ad, ac, bd, bc}
Card (X) = 4 et Card (A) = 5
2
[Link] Informatique 3 Théorie des graphes
2.3 Terminologie
- Les deux sommets u et v sont appelés extrémités de l’arête (u,v). S’il s’agit d’un arc, u et v
désignent respectivement l’extrémité initiale et terminale de l’arc. Le sommet u est le prédécesseur
de v et v est le successeur de u.
- Les arcs ayant même extrémités sont appelés arcs parallèles.
- Un arc de la forme (v,v) est une boucle.
- Un graphe est simple s’il n’a ni arcs parallèles ni boucles.
- Un graphe sans arcs est un graphe vide (G = (X, A) /A =∅).
- Un graphe sans sommets est un graphe nul (G = (X, A) /X =∅).
- Un graphe ayant un seul sommet est un graphe trivial (G = (X, A) /Card(X) =1).
- Des arcs sont adjacents s’ils ont un sommet en commun à l’une des extrémités.
- Deux sommets u et v sont voisins ou adjacents s’ils sont connectés par un arc.
Le voisinage d’un sommet désigne l’ensemble de ses sommets voisins.
Soit x ∈ X, un sommet du graphe G, on appelle voisin de x tout sommet y ∈ X
différent de x et qui est adjacent à x. Ainsi, on définit l’ensemble V comme suit :
– V (x) = {y ∈ X − {x}/{x, y} ∈ E} pour les graphes non orientes.
– V (x) = V +(x) ∪ V −(x) où V +(x) = {y ∈ X − {x}/(x, y) ∈ U} et
V −(x) = {y ∈ X−{x}/(y, x) ∈ U}. (graphe orienté)
– V +(x) (resp. V −(x)) est appelé ensemble des voisins externes (resp. internes) de x.
- Un graphe G est dit complet si et seulement si ∀ x, y ∈ X, (x,y) ∉ A ⇒ (y,x) ∈A. c'est-à-dire
que tous les couples de sommets qu’il est possible de choisir (chacun étant pris une seule fois)
sont présents dans A.
Dans la définition ci-dessus d’un graphe, le nombre n représente l’ordre du graphe G. il s’agit du
nombre de ses sommets. Dans l’exemple de la figure 1.1, l’ordre du graphe est 4.
Définition 01 ( degré) Soit G = (X,E) un graphe non orienté (resp. G = (X, U) un graphe
orienté). A tout sommet x ∈ X, on peut associer une valeur entière positive ou nulle, notée
dG(x), qu’on appelle degré du sommet x. Cette valeur est définie comme suit :
dG(x) = nombre de fois où x est extrémité d’un arc (resp. d’une arête).
3
[Link] Informatique 3 Théorie des graphes
Preuve Chaque arête a exactement deux extrémité ⇒ Elle est comptée deux fois dans le degré de
chaque sommet ⇒ La somme totale des degrés est égale a deux fois le nombre total d’arêtes.
Remarque Pour tout graphe, nous avons : dG(x) > |V (x)|. Si G est un graphe non orienté
simple alors on a : dG(x) = |V (x)|. Tel que V (x) est l’ensemble des voisins.
Preuve Chaque arc a exactement une extrémité initiale et une extrémité terminale ⇒ Chaque arc
est comptabilise une fois dans d+ pour son extrémité initiale et une autre fois dans d− pour son
extrémité finale. Le nombre total d’arcs ayant une extrémité initiale (resp. terminale) est
exactement la somme des demi-degrés extérieurs (resp. intérieurs).
4
[Link] Informatique 3 Théorie des graphes
Conséquence : De là, on peut déduire que le nombre de sommets de degrés impairs dans un
graphe est toujours pair.
Remarques :
- un sommet pendant est un sommet dont le degré est 1.
Si dG(x) = 1 Alors x est dit sommet pendant.
- Un sommet isolé est un sommet dont le degré est nul.
Si dG(x) = 0 Alors x est dit sommet isolé.
– Un arc (resp. Une arête) incident(e) a un sommet pendant est aussi dit(e) arc (arête) pendant(e).
– On appelle degrés minimal d’un graphe G qu’on note par δ(G), le plus petit degré dans le
graphe G. δ(G) = min{dG(x)}
– On appelle degré maximal d’un graphe G qu’on note par Δ(G), le plus grand degré dans le
graphe G. Δ(G) = max{dG(x)}
A tout graphe simple d’ordre n on associe une matrice M de n lignes et n colonnes dont les
éléments sont notés Mij .
MA=
Pour un graphe non orienté G = (X,E), Mij=Mji représente le nombre d’arêtes ayant
les sommets i et j comme extrémités.
Remarques 01
- La matrice d’adjacence MA d’un graphe non orienté est toujours symétrique.
- La somme d’une ligne k = la somme d’une colonne k = dG(k).
Pour un graphe orienté G=(X, U), Mij représente le nombre d’arcs ayant i comme
extrémité initiale et j comme extrémité terminale.
Remarques 02:
- Dans le cas d’un graphe valué (dont les arcs ont des valeurs), le « 1 » est remplacé par la valeur
de l’arc.
– La somme d’une ligne i = d+G(i).
- La somme d’une colonne j = d− G(j).
5
[Link] Informatique 3 Théorie des graphes
1
0
Remarques 03
– Les coefficients de MA pour un graphe simple est binaire avec la diagonale complètement à 0.
– Les éléments de MA pour un multi graphe (graphe contenant des arcs (resp. arêtes) parallèles)
sont le nombre d’arcs (arêtes) de chaque sommets.
A tout graphe non oriente G = (X,E), on peut associer une matrice M de n lignes et m colonnes.
Où n est le nombre de sommets dans G et m est le nombre d’arêtes dans G.
Mij représente le nombre de fois où le sommet i est incident à l’arête j. Les éléments de M sont
dans {0, 1, 2}
A tout graphe orienté G = (X,U), on peut associer une matrice M de n lignes et m colonnes. Où
n est le nombre de sommets dans G et m est le nombre d’arcs dans G.
Si aj non incident à i
Si aj sortant de i
MI
Si aj rentrant dans i
Si aj est une boucle
Remarques :
Pour un graphe G=(X,A), la liste d’adjacence associée à ce graphe permet de représenter pour
chaque sommet, l’ensemble de ses successeurs.
6
[Link] Informatique 3 Théorie des graphes
Tous les arcs émanant d’un même sommet, sont liés entre eux dans une liste. A chaque arc sont
donc associés l’extrémité terminale et le pointeur au prochain sommet de la liste.
On crée un tableau LP, de dimension n, qui est destiné à contenir les têtes de liste. Dans ce
tableau, pour tout sommet i, on trouve un pointeur vers la liste de ses successeurs. La figure 1.4
illustre un graphe et la liste d’adjacence qui lui est associée.
La liste d'adjacence d'un graphe non orienté, est la liste des voisins de chaque sommet.
4 . Graphes particuliers
Il arrive parfois que seul un sous-ensemble de sommets ou d’arcs soit pertinent à la résolution
d’un problème. Pour cette raison, nous poserons les définitions de quelques graphes particuliers.
Soit G = (X,U) un graphe orienté (resp. G = (X,E) un graphe non oriente). Soit A ∈ X un sous
ensemble de sommets et V ∈ U (resp. V ∈ E).
La figure 1.5 présente un graphe G et deux de ses sous-graphes. Le premier est induit par
l’ensemble Xs= {a, b}, le second est induit par Xs’= {b, c, d}.
Si le sous-graphe d’un graphe est complet, on dit qu’il forme une clique. Dans la figure 1.5, le
sous-graphe induit par Xss est une clique car il est complet.
7
[Link] Informatique 3 Théorie des graphes
La partie (a) de la figure 1.6 illustre un graphe partiel Gp du graphe G de la figure1.5. Gp est
induit par l’ensemble Ap= {(a,b), (b,c), (d,d)}.
Le sous-graphe partiel de G = (X,A) est le graphe Gsp = (Xs , Ap) induit par un sous ensemble
Xs de sommets de X et par un sous ensemble d’arcs (arêtes )Ap de A. on peut le considérer
comme le sous-graphe d’un graphe partiel.
La partie (b) de la figure 1.6 illustre un sous-graphe partiel Gsp du graphe G de la figure 1.5. Gsp
est induit par l’ensemble Xs= {a, b} et l’ensemble Ap= {(b,c), (d,d)}.
La figure 1.7 illustre un graphe G, un graphe partiel de G ainsi qu’un sous graphe.
Figure 1.7 illustre un graphe G, un graphe partiel de G ainsi qu’un sous graphe.
8
[Link] Informatique 3 Théorie des graphes
G est antisymétrique
ssi ∀x, y ∈X, (x, y) ∈ U ⇒ (y, x) U
Un graphe biparti complet et simple G = (X1 ∪X2,U) (resp. G = (X1 ∪X2,E)) avec
|X1| = p et |X2| = q est note Kp,q.
Théorème
Un graphe est biparti si et seulement s’il ne contient aucun cycle de longueur impaire.
9
[Link] Informatique 3 Théorie des graphes
G est dit multiparti ssi l’ensemble de ses sommets X admet une partition en p sous ensembles
X1,X2, . . .Xp (p 3). Avec Xi ∩ Xj = φ (i j) et X1 ∪ X2 . . . ∪ Xp = X.
6.1 Chaîne
On appelle chaine dans un graphe non orienté (resp. orienté) G = (X,E) (resp. G = (X,U)), une
séquence finie de la forme (x0, x1, …..xm). Le sommet x0 est le sommet initial et xm est le
sommet final. Cette séquence est une suite alternée de sommets et d’arêtes (resp. d’arcs),
μ = x0x1 . . . xk−1xk (resp. μ = x0x1 . . . xk−1xk) Tel que pour tout 1 i k, xi et xi+1 sont extrémités
de l’arête i (resp. de l’arc i).
Dans cette séquence, tout arc (arêtes) (xi-1, xi) a une extrémité en commun avec l’arc (arête)
suivant (xi, xi+1). On dit que μ est une chaine joignant les sommets x0 et xk de longueur k.
Une chaine élémentaire est une chaine qui passe par un sommet au maximum une fois, (si tous
les sommets les composants sont distincts).
Sur la figure 1.13, la séquence (x6, x3, x2, x1,) représente une chaine élémentaire, alors que la
séquence (x3, x4, x2, x4,) n’est pas une chaine élémentaire.
6.4 Cycle
On appelle cycle dans un graphe non orienté (resp. orienté) G = (X,E) (resp. G = (X,U) ), toute
chaine fermée simple : μ = x0x1 . . . xk−1xk (resp. μ = x0x1 . . . xk−1xk) Tel que k 0, et x0 = xk.
10
[Link] Informatique 3 Théorie des graphes
(l’extrémité initiale est à la fois extrémité finale )La séquence de sommets pour un cycle est donc
(x0, x1, …..xm, x0). On dit que μ est un cycle longueur k.
Sur la figure 1.13, la séquence (x3, x2, x4, x3) représente un cycle.
Remarque :
- Notons qu’un même arc ne peut figurer deux fois dans la séquence.
Les concepts de chemin et circuit sont relatifs aux graphes orientés puisque le sens d’orientation
des arcs est essentiel pour ces définitions.
6.2.1 Chemin
6.2.4 Circuit
Un circuit est défini comme un chemin fermé simple, tel que l’extrémité initiale est à la fois
extrémité finale. La séquence de sommets pour un circuit est donc (x0, x1, …..xm, x0).
Sur la figure 1.13, la séquence (x3, x6, x5, x4, x3) représente un circuit.
Remarques
- On dit qu’un cycle ou circuit est élémentaire si tous les sommets qui les composent sont
distincts.
- La longueur d’un cycle ou d’un circuit est aussi égale au nombre de sommets formant ce cycle
ou circuit.
- Dans un graphe simple, un cycle ou un circuit peuvent être déterminés juste en énumérant la
suite des sommets qui les composent.
- Une boucle est un cycle (circuit) élémentaire de longueur 1.
- Toute chaine (ou chemin) élémentaire est aussi simple. L’inverse n’est pas toujours vrai.
11
[Link] Informatique 3 Théorie des graphes
7 . Connexité
La connexité est une propriété essentielle des graphes surtout pour les problèmes relatifs aux
réseaux. Dans ce qui suit, sont étudiées les notions de connexité simple et forte.
Un graphe est connexe s’il est possible, à partir de n’importe quel sommet, de rejoindre tous les
autres en suivant les arêtes. Un graphe non connexe se décompose en composantes connexes.
Il existe une chaine joignant chaque paire de sommets x et y (x y).
En d’autres termes, il doit être possible entre tout couple de sommets de trouver une chaine
reliant ces deux sommets.
Si un graphe n’est pas connexe, alors il admet au moins deux composantes connexes.
Le graphe G1 de la figure 1.14 est un graphe connexe alors que le graphe G2 n’est pas connexe
car il admet deux composantes connexes.
La composante connexe d’un sommet s, notée CC(s), est le sous-ensemble de sommets tels
qu’il existe une chaîne entre deux sommets quelconques de CC(s).
Si un sommet s’ appartient à la composante connexe d’un sommet s, alors la composante connexe
de s’ est égale à celle de s.
Définition 2
Soit un graphe G = (X,E) (resp. G = (X,U)) :
Une composante connexe CC(s) est un sous-graphe induit maximal connexe. Maximal signifie
qu’il n’y a pas de sous-graphe induit connexe plus grand contenant les sommets de CC(s).
Ou encore, Si le sous graphe engendré par un ensemble de sommets S ⊆ X (GS) est connexe et le
sous graphe engendré par S ∪ x et x S n’est pas connexe Alors GS est une composante
connexe de G.
12
[Link] Informatique 3 Théorie des graphes
Le sous graphe engendré par un sommet isolé est considéré comme une composante connexe de
G.
Exemples
Cet exemple présente les composantes connexes d'un graphe non orienté :
CC(s6) = {s6}
Remarques 1
- Un graphe ne possédant qu'une seule composante connexe est simplement un graphe connexe.
-Un sommet isolé (de degré 0) constitue toujours une composante connexe à lui seul.
Exemple
Ce graphe orienté complet à 3 sommets est 2-sommet-connexe
G est k-sommet-connexe si et seulement si le graphe reste
fortement connexe, c'est-à-dire 1-arc-connexe, quand on lui ôte k −
1 sommets.
Remarque
On définit la connectivité d’un graphe comme étant le plus grand k tel que G est k-connexe.
13
[Link] Informatique 3 Théorie des graphes
Définition 3 Un graphe orienté G=(X, U) est fortement connexe (f.c.) s’il existe entre chaque
paire de sommets x et y X (x y) un chemin de x à y et un chemin de y à x .
Exemples :
Données :
En entrée :
– X : ensemble de n éléments représentant les identificateurs des sommets.
– U : ensemble de m éléments sous forme (i, j) représentant les arcs où i, j X
– r : identificateur d’un sommet de X qu’on appelle racine.
En sortie :
– CFC : sous-ensemble de X. Le sous graphe engendré par cet ensemble représente une composante
fortement connexe.
14
[Link] Informatique 3 Théorie des graphes
Autres :
– i, j : variables sommets.
– Marque : vecteur de n éléments booléens.
– A, D : sous-ensembles de X. Ils représentent l’ensemble des ascendants et l’ensemble des
descendants de la racine.
L’algorithme :
(* Initialisation *)
D ← {r} ;
Pour tout i X Marque[i] ← faux ;
(* Recherche des descendants de r *)
Tant que (∃ i D) et (Marque[i] = faux)
Marque[i] ← vrai ;
Pour tout (i, j) U D ← D ∪ {j} ;
(* Reinitialisation *)
A ← {r} ;
Pour tout i X Marque[i] à faux ;
(* Recherche des ascendants de r *)
Tant que (∃ i A) et (Marque[i] = faux)
Marque[i] ← vrai
Pour tout (j, i) U A ← A ∪ {j} ;
(* Calcul de la C.F.C. *)
CFC ← D ∩ A;
Exemple
Remarque 6
- Un graphe fortement connexe possède une seule C.F.C.
- Le graphe réduit d’un graphe ne possède pas de circuits.
15
[Link] Informatique 3 Théorie des graphes
8. Parcours Eulériens
La ville de Koenigsberg possède deux iles (représentées par les régions A et B dans la figure
1.15(a)) et sept ponts. Le problème revient à trouver un cycle qui passe une seule fois par chacun
de ses ponts et revient à son point de départ. Euler prouva que ce problème n’avait pas de
solution et trouva une généralisation du problème.
Définition 1
Un parcours Eulérien passe une fois et une seule fois par chaque arête (resp. arc) du graphe. Le
parcours peut être une chaine, un chemin, un cycle ou un circuit. Soit G un graphe contenant m
arêtes (resp. m arcs) : Une chaine simple, un chemin simple, un cycle simple ou un circuit simple
de longueur m est appelé Eulérien.
Exemple
Il s’agit d’une généralisation du jeu bien connu 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. Ce graphe admet
une chaine eulérienne mais il est non eulérien car il n’admet pas un cycle eulérien.
………………..
Théorème 2:
Un graphe connexe est eulérien si et seulement si tous ses sommets ont un degré pair.
Le graphe de la figure 1.15(b) n’est pas eulérien car les sommets A,B,C et D ont un degré impair.
16
[Link] Informatique 3 Théorie des graphes
Conséquences
- Un graphe G admet une chaine Eulérienne d’un sommet x a un sommet y (x y) si et
seulement si dG(x) et dG(y) sont impairs et ∀z sommet de G (z x et z y), on a dG(z) pair.
Proposition 1
Un graphe G = (X,U) admet un circuit Eulérien si et seulement si pour tout sommet x, on a
d+G(x) = d− G(x).
9. Parcours Hamiltoniens
Définition 1
Un parcours Hamiltonien passe une fois et une seule fois par chaque sommet du graphe. Le
parcours peut être une chaine, un chemin, un cycle ou un circuit. Soit G un graphe d’ordre n
(contenant n sommets) : Une chaine (resp. un chemin) elementaire de longueur n − 1 est appelé
chaine Hamiltonienne (resp. chemin Hamiltonien). Un cycle (resp. circuit) elementaire de
longueur n est appele cycle (resp. circuit) Hamiltonien.
17
[Link] Informatique 3 Théorie des graphes
Remarques :
Contrairement aux graphes eulériens, il n’existe pas de caractérisation simple des graphes
hamiltoniens. On peut cependant énoncer quelques propriétés et conditions suffisantes.
Théorème 1 (Ore) Soit G = (X,A) un graphe simple d’ordre n ≥ 3 . Si pour toute paire de
sommets {x, y} non adjacents, on a d(x) + d(y) > |X | alors G est hamiltonien.
Corollaire (Dirac) Soit G = (X,A) un graphe simple d’ordre n ≥3 Si pour tout sommet x de G
on a d(x ) ≥ n/2 alors G est hamiltonien.
Condition nécessaire
La contraposée du théorème suivant fournit une condition nécessaire pour avoir un graphe
hamiltonien.
Théorème 1
Le théorème ci-dessous est utilisé pour démontrer qu’un graphe n’est pas Hamiltonien (ne
contient pas de cycle Hamiltonien). Si G = (X,E) est un graphe Hamiltonien, alors pour tout
ensemble de sommets S ⊂ X, on a : p(GX−S) |S| ou p(GX−S) est le nombre de composantes
connexes du sous graphe de G induit par l’ensemble X − S.
18
[Link] Informatique 3 Théorie des graphes
La coloration des graphes (sommets) consiste à associer à chaque sommet une couleur de telle
façon que chaque sommet adjacent n’est pas la même couleur
Propriété 1
c <= d+1 où d : est le plus grand degré des sommets du graphe
Propriété 2
n<= c où n : est l’ordre du sous graphe complet d’ordre le plus élevé. (la Clique
maximale)
Propriété 3 Le nombre chromatique d’un graphe complet est égal à son ordre.
Un algorithme couramment utilisé est celui de Welsh & Powell. Il permet d'obtenir une assez
bonne coloration d'un graphe, c'est-à-dire une coloration n'utilisant pas un trop grand nombre de
couleurs. Cependant il n'assure pas que le nombre de couleurs utilisé soit minimum (et donc égal
au nombre chromatique du graphe).
Étape 1 Classer les sommets du graphe dans l'ordre décroissant de leur degré, et attribuer à
chacun des sommets son numéro d'ordre dans la liste obtenue.
Étape 2 En parcourant la liste dans l'ordre, attribuer une couleur non encore utilisée au premier
sommet non encore coloré, et attribuer cette même couleur à chaque sommet non encore coloré
et non adjacent à un sommet de cette couleur.
Étape 3 S'il reste des sommets non colorés dans le graphe, revenir à l'étape 2. Sinon, la
coloration est terminée.
19
[Link] Informatique 3 Théorie des graphes
Remarques
- Chaque partition d’un graphe biparti est un stable.
- Si S est le plus grand stable dans G Alors |S|<= nombre de cliques dans G et
|S| =nombre minimal de cliques dans G.
- Une coloration avec k couleurs est donc une partition de l'ensemble des sommets en k
stables.
- Le nombre chromatique du graphe G, est le plus petit entier k pour lequel il existe une
partition des sommets en k sous-ensembles stables.
La coloration des arêtes d'un graphe consiste à affecter à toutes les arêtes de ce graphe une
couleur de telle sorte que deux arêtes adjacentes ne portent pas la même couleur.
L'indice chromatique du graphe G est le plus petit entier k pour lequel il existe une coloration des
arêtes.
Pour colorer les arêtes d'un graphe, on peut se ramener au problème de la coloration des
sommets. Il suffit pour cela de travailler non pas sur le graphe lui-même, mais sur le graphe
adjoint, noté G', et que l'on définit ainsi :
à chaque arête de G = (V, E) correspond un sommet de G' = (E, F)
deux sommets de G' sont reliés par une arête si les deux arêtes correspondantes de G
sont adjacentes.
On peut ensuite appliquer par exemple l'algorithme de Welsh et Powell sur le graphe G' pour
colorer ses sommets. Une fois cela fait, on colorera les arêtes de G de la même couleur que les
sommets correspondants de G'. Exemple de coloration d'arêtes.
20