Académique Documents
Professionnel Documents
Culture Documents
Sommaire
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Connexité et forte connexité dans un graphe . . . . . . . . . . . . . . . 17
2.2.1 Connexité dans un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.2 Forte connexité dans un graphe . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Représentation matricielle d’un graphe . . . . . . . . . . . . . . . . . . 21
2.3.1 Matrice d’adjacence ou matrice d’incidence sommets-sommets . . . . . . . 21
2.3.2 Matrice d’incidence aux arcs ou matrice d’incidence sommets-arcs . . . . 22
2.4 Fermeture transitive d’un graphe . . . . . . . . . . . . . . . . . . . . . . 22
2.5 Graphe sans circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5.1 Algorithme permettant de tester l’absence de circuit . . . . . . . . . . . . 26
2.5.2 Algorithme d’obtention des niveaux d’un graphe sans circuit . . . . . . . 26
2.6 Noyau d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6.1 Importance du concept de noyau . . . . . . . . . . . . . . . . . . . . . . . 28
2.6.2 Algorithme de recherche d’un noyau . . . . . . . . . . . . . . . . . . . . . 29
2.7 Cheminements Eulériens et Hamiltoniens . . . . . . . . . . . . . . . . . 30
2.7.1 Cheminements Eulériens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7.2 Cheminement hamiltonien . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.8 Coloration de graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.8.1 Coloration des sommets d’un graphe - Nombre chromatique . . . . . . . . 32
2.8.2 Coloration des arêtes d’un graphe - Indice chromatique . . . . . . . . . . 33
16
2.1 Introduction 17
2.1 Introduction
2.2 Connexité et forte connexité dans un graphe
2.2.1 Connexité dans un graphe
Définition 2.2.1. Un graphe G = (X, U ) est dit connexe si pour tout couple de sommets xi , xj
de X tels que i ̸= j, il existe une chaı̂ne reliant ces deux sommets.
Remarque 2.2.1. Dans le cas où le graphe n’est pas connexe, on parlera de composantes connexes
du graphe en question.
Définition 2.2.2. • Un point d’articulation d’un graphe est un sommet dont la suppression aug-
mente le nombre de composantes connexes.
• Un isthme est une arête (un arc) dont la suppression augmente le nombre de composantes
connexes.
Soit G = (X, U ) un graphe non connexe, l’algorithme suivant permet de déterminer les com-
posantes connexes de G. Le principe de cette méthode est qu’à chaque itération, on choisit un
sommet quelconque n’appartenant à aucune composante connexe déjà identifiée, on essaie par
une procédure de marquage de reconstituer les chaı̂nes reliant ce sommet aux autres sommets
du graphe. Dans la procédure de marquage, un sommet est marqué s’il est voisin (successeur ou
prédécesseur) d’un sommet déjà marqué.
L’algorithme s’énonce comme suit :
Remarque 2.2.2. • De même lorsque le graphe n’est pas fortement connexe on parlera de com-
posantes fortement connexes du graphe.
• Il passe par chaque couple de sommets d’une composante fortement connexe au moins un circuit.
• La contraction des composantes fortement connexes en sommets donne lieu à un graphe appelé
graphe réduit (il existe un arc entre deux composantes fortement connexes Ki et Kj si et seulement
si, il existe au moins un arc entre un sommet de Ki et un sommet de Kj dans le graphe G).
L’algorithme suivant permet de déterminer les composantes fortement connexes d’un graphe
connexe. Si celui-ci n’est pas connexe, on détermine par l’algorithme précédent ses composantes
connexes et on applique la méthode suivante pour chacune des composantes connexes du graphe.
Le principe de cette méthode s’apparente à celui de la méthode précédente à l’exception de la
procédure de marquage, une considération est donnée à l’orientation des arcs.
La procédure de marquage se décrit comme suit :
On commence par marqué un sommet quelconque s d’un signe + et d’un signe −. Si un sommet y
n’est pas marqué et il est successeur d’un sommet x déjà marqué d’un +, alors on le marque d’un
signe +. Si par contre, le sommet y est prédécesseur d’un sommet x déjà marqué d’un signe −,
alors on marque le sommet y d’un signe −.
Un sommet qui est marqué d’un signe + et d’un signe − signifie qu’il existe un chemin allant
du sommet s à ce sommet et inversement. En d’autre termes, il passe au moins un circuit entre le
sommet s et celui qui est marqué d’un + et d’un −.
L’algorithme s’énonce comme suit :
Déterminer les composantes fortement connexes de ce graphe et donner le graphe réduit qui
lui est associe.
Ce graphe est connexe, mais il n’est pas fortement connexe car il n’existe pas, par exemple, de
chemin du sommet 3 au sommet 1. En appliquant l’algorithme précédent, on obtient :
Itération 1 : i = 1, on choisit s = 4, on marque d’un + et d’un − ce sommet. En appliquant
la procédure de marquage décrite ci-dessus, les sommets qu’on peut marquer d’un + et d’un
− sont 2 et 3. Par contre les sommets 7, 5 et 6 ne peuvent être marqués que d’un + et le
sommet 1 d’un −. Ainsi, la première composante fortement connexe est K1 = {2, 3, 4}. On
pose X = X \ K1 ̸= ∅.
Itération 2 : i = 2, on prend s = 6, on marque ce sommet d’un + et d’un −, l’application
de la procédure de marquage permet de marquer d’un + et d’un − le sommet 5, d’un +
le sommet 7 et d’un − le sommet 1. D’où, la deuxième composante fortement connexe est
K2 = {5, 6}. On pose X = X \ K2 ̸= ∅.
Itération 3 : i = 3, on prend s = 7, on marque ce sommet d’un + et d’un −. Aucun autre
sommet n’est marqué d’un + et d’un −. La troisième composante fortement connexe est
K3 = {7}. On pose X = X \ K3 ̸= ∅.
0 1 0 1
1 0 0 0
La matrice d’adjacence associée à ce graphe est M =
1
0 0 1
0 1 1 0
Remarque 2.3.1. Dans le cas d’un graphe simple non orienté, on considère qu’à chaque arête
[i, j] correspond deux arcs (i, j), (j, i). Dans ce cas, la matrice d’adjacence est symétrique.
Définition 2.3.2. La matrice d’incidence aux arcs associée au graphe G est la matrice A =
i=1,n
(aij )j=1,m (de type n × m) dont l’élément de la ie ligne et la j e colonne est donné comme suit :
1, si xi = I(uj ) ;
aij = −1, si xi = T (uj ) ;
0, si non.
Exemple 2.3.2. La matrice d’incidence aux arcs du graphe de l’Exemple 2.3.1 est :
−1 1 1 0 −1 0 0
1 −1 0 −1 0 0 0
A =
0
0 0 0 1 1 −1
0 0 −1 1 0 −1 1
Remarque 2.3.2. 1. Une matrice d’incidence aux arcs d’un graphe contient deux éléments
non nuls par colonne qui sont égales à 1 et −1.
2. A toute matrice ayant la propriété précédente, on peut faire correspondre un graphe dont
cette matrice est la matrice d’incidence aux arcs.
3. Le demi degré extérieur (resp. demi degré intérieur, degré) du sommet xi est égale au nombre
de 1 (resp. −1, de termes non nuls) de la ie ligne de la matrice d’incidence aux arcs de G.
0 1 0 1 0 0 0 1 1 1
0 0 1 1 0 0 0 0 0 1
•M =
0 0 0 0 1 Posons M̂ = M, k = 2, M 2 =
0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 1 1 1 1
0 0 1 1 1
M̂ + M 2 =
0 0 0 0 1
, on a M̂ ̸= M̂ + M 2 ;
0 0 0 0 1
0 0 0 0 0
• Posons M̂ = M̂ + M 2 , on calcule M 3 ;
0 0 0 0 1 0 1 1 1 1
0 0 0 0 0 0 0 1 1 1
M 3 =
0 0 0 0 0 M̂ + M 3 =
0 0 0 0 1
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
0 1 1 1 1
0 0 1 1 1
on a M̂ = M̂ + M 3 terminer d’où M̂ = 0 0 0 0 1
0 0 0 0 1
0 0 0 0 0
Les “1” mis en gras et en rouge dans la matrice M̂ correspondent aux arcs à ajouter au graphe G
pour trouver sa fermeture transitive. Ainsi la fermeture transitive recherchée Ĝ est donnée par le
graphe suivant
Pour illustrer cette situation, supposons que l’on dispose de 3 processus et de 3 ressources. Le
processus P1 utilise la ressource R1 et demande la ressource R2 qui est utilisée par P2 . Le processus
P2 détient R2 et demande R3 qui est détenue par P3 etc.
Il est donc important de disposer d’une méthode permettant de tester l’absence de circuits dans
un graphe donné. Nous en donnons deux ci-dessous.
a) On voit facilement qu’un graphe est sans circuit si et seulement si la matrice d’adjacence M̂
associée à sa fermeture transitive ne possède aucun 1 sur la diagonale. Cette caractérisation
fournit un premier algorithme de reconnaissance d’un graphe sans circuit.
b) Un second algorithme est présenté et repose sur la propriété suivante. Soit G = (X, U ) un
graphe à n sommets, construisons les n + 1 sous-ensembles de sommets X(i), i = 0, 1, 2, ..., n
où :
X(0) = {x : x ∈ X, Γ+ (x) = ∅} ;
X(1) = {x : x ∈ (X \ X(0)), Γ+ (x) ⊂ X(0)} ;
X(2) = {x : x ∈ (X \ (X(0) ∪ X(1))), Γ+ (x) ⊂ (X(0) ∪ X(1))} ;
..
.
X(n) = {x : x ∈ (X \(X(0)∪X(1)∪...∪X(n−1))), Γ+ (x) ⊂ (X(0)∪X(1)∪...∪X(n−1))}.
Ces n + 1 sous ensembles sont disjoints. Si G est sans circuit, ils constituent un re-
couvrement de X : X = X(0) ∪ X(1) ∪ ... ∪ X(n) ; De plus, X(i) = {x ∈ X :
le chemin de cardinalité maximale issu de x contient i arcs}, i = 1, 2, ..., n. Cette propriété n’est
pas d’application lorsque G possède un ou plusieurs circuits.
On vérifie que le graphe est sans circuit et on trouve X(0) = {5}, X(1) = {3, 4}, X(2) =
{2}, X(3) = {1}, X(4) = X(5) = ∅.
Exemple 2.5.2. Appliquer l’algorithme précédent au graphe de l’Exemple 2.5.1. La matrice d’ad-
jacence associée à ce graphe est
0 1 0 1 0
0 0 1 1 0
M =
0 0 0 0 1
0 0 0 0 1
0 0 0 0 0
En appliquant cet algorithme, on barre la ligne et la colonne 5, ensuite les lignes et les colonnes
3 et 4, puis la ligne et la colonne 2, on obtient enfin une matrice ne contenant que des zéros. Il
s’ensuit que ce graphe est sans circuit.
Remarque 2.5.1. La partition en niveaux d’un graphe est dite aussi mise en ordre.
Remarque 2.6.1. Un graphe peut ne pas avoir de noyau comme il peut avoir un ou plusieurs.
Exemple 2.6.2. Un gouvernement, ayant décidé de répartir trois milliards de dinars en vue de
diminuer la mortalité sur les routes, propose cinq initiatives.
Il charge un groupe de recueillir les préférences des citoyens et ce groupe parvient à établir le
graphe suivant dont les cinq sommets représentent les cinq initiatives, où un arc (xi , xj ) est tracé
s’il est certain que la population préfère l’initiative xj à l’initiative xi (on dit aussi que l’initiative
xj surclasse l’initiative xi ).
Exemple 2.6.3. Utiliser l’algorithme précédent pour déterminer le noyau du graphe suivant :
0 1 1 0 0
0 0 0 0 0
La matrice d’adjacence du graphe est M =
0 0 0 1 0
0 1 0 0 0
0 1 0 1 0
Exemple 2.7.1. Le problème de l’existence et la détermination d’un cycle eulérien dans un graphe
non orienté a été posé pour la première fois et résolu par Euler en 1736 à propos du célèbre problème
des ponts de Königsberg (aujourd’hui Kalimingrad) cette ville est traversée par deux rivières et
comporte une ı̂le.
B
1 3 6
5
A D
2 7
4
C
Le problème est alors, un piéton pourrait il, en se promenant, traverser chaque pont une et une
seule fois tout en revenant au point de départ.
Théorème 2.7.1. Une condition nécessaire et suffisante pour qu’un graphe G = (X, U ) soit
eulérien est qu’il soit connexe (à des sommets isolées près) et que tous ses sommets soient de
degré pair (∀ x ∈ X, dG (x) ≡ 0[2]).
Exemple 2.7.2. Reprenons le problème des 7 ponts de la ville de Königsberg. Ce problème peut
être formulé sous forme de graphe. Les parties de la ville seront représentées par des sommets et
les ponts par des arêtes. Le problème donc consiste à montrer l’existence d’un cycle eulérien (i.e.
le graphe est-il eulérien).
C’est un graphe connexe d(B) = d(C) = d(D) = 3, d(A) = 5. Aucun sommet n’est de degré
pair, donc G n’est pas eulérien.
Remarque 2.7.2. Un chemin hamiltonien (resp. une chaı̂ne hamiltonienne) est donc élémentaire
et de longueur n − 1 où n = |X|.
Définition 2.7.3. Un circuit hamiltonien (resp. cycle hamiltonien) est un circuit (resp. cycle) qui
passe une fois et une seule fois par chacun des sommets de G.
Remarque 2.7.3. Un circuit (resp. cycle) hamiltonien est élémentaire de longueur n (|X| = n).
Définition 2.7.4. Un graphe G = (X, U ) est hamiltonien s’il contient un cycle hamiltonien.
Remarque 2.7.4. La notion de cycle hamiltonien a été introduite dans un jeu inventé par Ha-
milton en 1859. Il s’agit de faire un voyage autour du monde en passant par 20 villes (une seule et
une seule fois) reparties selon le graphe suivant :
Définition 2.8.1 (Berge 1973). • Une coloration des sommets d’un graphe G = (X, U ) est
une fonction qui attribue une couleur à chaque sommet de sorte que deux sommets adjacents
aient des couleurs différentes.
• Le nombre minimum de couleurs d’une coloration des sommets de G est appelé nombre
chromatique de G, qui est noté par γ(G).
• Un graphe G avec γ(G) ≤ k, qui est coloriable en k couleurs est (parfois) appelé k-
chromatique.
Définition 2.8.2. Soit G = (X, U ) un graphe. Un sous ensemble de sommets de X est un ensemble
stable, s’il ne comprend que des sommets non adjacents deux à deux. On appelle nombre de stabilité
α(G) le cardinal maximum d’un sous ensemble stable.
Remarque 2.8.1. Une k-coloration des sommets d’un graphe G = (X, U ) est une partition de
l’ensemble des sommets X en k ensembles stables (chaque stable représente les sommets d’une
même couleur).
Maintenant, nous donnons des bornes inférieures et des bornes supérieures pour le nombre
chromatique γ(G).
Preuve.
(i) Dans une coloration d’un graphe, chaque sous ensemble de sommets de même couleur a un
cardinal inférieur ou égal à α(G). Ainsi, α(G)γ(G) ≥ |X|, d’où le résultat.
(ii) Le nombre chromatique d’un graphe est supérieur ou égale à celui de n’importe quel de
ses sous graphes (on a γ(Kn ) = n).
Exemple 2.8.1 (Bondy et Murty 2008). (Stockage de produits chimiques) Une entreprise fabrique
n produits chimiques C1 , C2 , ..., Cn . Certaines paires de ces produits chimiques sont incompatibles
et peuvent provoquer des explosions en cas de contact les uns avec les autres. Par mesure de
précaution, l’entreprise souhaite diviser son entrepôt en compartiments, et stocker les produits
chimiques incompatibles dans différents compartiments. Quel est le plus petit nombre de compar-
timents dans lesquels l’entrepôt doit être partagé ?
On obtient un graphe G ayant un ensemble de sommets X = {v1 , v2 , ..., vn } avec deux sommets
vi et vj sont adjacents si et seulement si les produits chimiques Ci et Cj sont incompatibles. Il est
facile de voir que le plus petit nombre de compartiments en lesquels l’entrepôt doit être partitionné
est égal au nombre chromatique γ(G).
Définition 2.8.3 (Berge 1973). Soit G = (X, U ) un graphe sans boucle. On appelle indice chro-
matique q(G) de G le plus petit entier q qui a la propriété suivante : il est possible avec q couleurs
de colorier les arêtes de G de sorte que deux arêtes adjacentes ne soient pas de la même couleur.
Définition 2.8.4. Soit G = (X, U ) un graphe simple. Un sous ensemble d’arêtes de U est un
couplage, s’il ne comprend que des arêtes non adjacentes deux à deux.
L’un des problèmes qui est étudié consiste à trouver un couplage maximum d’un graphe.
Remarque 2.8.2. • Une coloration des arêtes est une partition de l’ensemble des arêtes en
classes qui sont des couplages.
• Une coloration des arêtes d’un graphe G est exactement une coloration des sommets de son
graphe adjoint A(G) (appelé aussi line-graph). Étant donné un graphe G, son graphe adjoint
A(G) est le graphe défini de la façon suivante : Chaque sommet de A(G) représente une arête
de G ; Deux sommets de A(G) sont adjacents si et seulement si les arêtes correspondantes
sont adjacentes dans G.
Pour tout graphe G, on a ∆(G) ≤ q(G). Vizing en 1964 a démontré une borne supérieure pour
l’indice chromatique d’un graphe et, ainsi, il a obtenu un résultat qui cadre l’indice chromatique
avec des bornes distancées d’une unité. Ce résultat est considéré comme principal dans le domaine
de la coloration des arêtes.
Par conséquent, tout graphe peut être classé dans l’une des classes 1 ou 2 définies comme suit.
Définition 2.8.5 (Vizing 1964). Un graphe simple G est de classe 1 si q(G) = ∆(G) et il est de
classe 2 si q(G) = ∆(G) + 1.
Nous avons quelques résultats sur l’indice chromatique de certaines classes de graphes [Berge
1973].
Théorème 2.8.2. (i) L’indice chromatique d’un graphe simple complet G = Kn est
{
∆(G) = n − 1, si n est pair,
q(G) =
∆(G) + 1 = n, si n est impair.
q(G) = ∆(G).
Exemple 2.8.2 (Chartrand et Zhang 2009). Un tournoi de tennis de charité constitué entièrement
de matchs à deux contre deux est organisé. Cinq joueurs de tennis, désignés par A, B, C, D, E, ont
accepté de participer. Chaque paire {W, X} des joueurs de tennis jouera un match contre toute
autre paire {Y, Z} des joueurs de tennis, avec {W, X} ∩ {Y, Z} = ∅, mais aucune équipe de
2 personnes ne peut jouer deux matches le même jour. Quel est le nombre minimum de jours
nécessaires pour planifier un tel tournoi ? Donner un exemple d’un tel tournoi en utilisant un
nombre minimum de jours.
Solution. Nous construisons un graphe G dont l’ensemble des sommets est l’ensemble des équipes
possibles (i.e. l’ensemble des parties de 2 éléments de {A, B, C, D, E}). Ainsi, l’ordre de G est
C25 = 10. Deux sommets {W, X} et {Y, Z} sont adjacents si ces ensembles sont disjoints (i.e. les
équipes correspondantes peuvent organiser un match entre elles). Le graphe G est représenté sur
la Figure 2.3. Ainsi G est le graphe de Petersen. Pour répondre à la question, nous déterminons
l’indice chromatique de G. Comme le graphe de Petersen est connu pour être de la classe deux, il
s’ensuit que q(G) = ∆(G) + 1 = 4. Une 4-coloration des arêtes de G est donnée dans la Figure 2.3
avec un possible calendrier des matchs de tennis sur une période de quatre jours.