Documente Academic
Documente Profesional
Documente Cultură
-1
(x) (c'est dire les sommets depuis lesquels on peut venir par un arc).
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
17
Exemple:
A
B
C
D
E
F
1.1.3. Matrice d'adjacence
On dfinit l'application boolenne { } B X X : x , 01 qui deux sommets associe 1 s'il existe un arc
joignant le premier au second, 0 sinon. On reprsente alors le graphe par le tableau double entre
de ses valeurs (matrice boolenne). Cette matrice est aussi appele matrice d'incidence sommets-
sommets. Si le graphe est non orient, la matrice est symtrique. Si les branches du graphe sont
values, on peut remplacer le 1 par la valeur numrique associe la branche correspondante. Ce
type de reprsentation est commode pour la mise en uvre des algorithmes matriciels, mais son
usage est limit par son encombrement (mmoire ncessaire = nbsommets
2
).
La matrice d'adjacence de l'exemple prcdent est:
x (x)
-1
(x)
A B,C
B D A,C
C B,D,E A
D F B,C,E
E D,F C
F D,E
A B C D E F
A 0 1 1 0 0 0
B 0 0 0 1 0 0
C 0 1 0 1 1 0
D 0 0 0 0 0 1
E 0 0 0 1 0 1
F 0 0 0 0 0 0
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
18
1.1.4. Matrice d'incidence sommets-arcs
On dfinit l'application qui chaque couple (sommet arc) associe +1 si l'arc sort du sommet, -1 s'il y
rentre, et 0 sinon. Le graphe est alors reprsent par le tableau de ses valeurs. Cette notation n'a
qu'un intrt thorique. Dans le cas d'un graphe non orient, las valeurs prises sont 0 et 1. La matrice
correspondant l'exemple trait est donne ci-dessous. On observera, et cela rsulte videmment de
la dfinition d'un arc, que chaque colonne contient un +1 (origine) et un 1 (extrmit).
u
1
u
4
u
2
u
6
u
3
u
5
u
7
u
8
u
9
x
4
x
1
x
5
x
6
x
3
x
2
u
1
u
2
u
3
u
4
u
5
u
6
u
7
u
8
u
9
x
1
+1 +1 0 0 0 0 0 0 0
x
2
-1 0 -1 +1 0 0 0 0 0
x
3
0 -1 +1 0 +1 +1 0 0 0
x
4
0 0 0 -1 -1 0 -1 +1 0
x
5
0 0 0 0 0 -1 +1 0 +1
x
6
0 0 0 0 0 0 0 -1 -1
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
19
Exercice
Donner les 3 reprsentations du graphe suivant:
B U
4
E
U
1
U
5
U
8
U
10
A U
3
D G
U
2
U
6
U
9
U
11
C U
7
F
Solution
Dictionnaires des suivants et des prcdents
x (x)
-1
(x)
A B C
B CD A E
C A B D F
D C E F B
E B G D
F C G D
G E F
Matrice d'adjacence
A B C D E F G
A 0 1 1 0 0 0 0
B 0 0 1 1 0 0 0
C 0 0 0 0 0 0 0
D 0 0 1 0 1 1 0
E 0 1 0 0 0 0 1
F 0 0 1 0 0 0 1
G 0 0 0 0 0 0 0
Matrice d'incidence sommets-arcs
U1 U2 U3 U4 U5 U6 U7 U8 U9 U10 U11
A +1 +1 0 0 0 0 0 0 0 0 0
B -1 0 +1 -1 +1 0 0 0 0 0 0
C 0 -1 -1 0 0 -1 -1 0 0 0 0
D 0 0 0 0 -1 +1 0 +1 +1 0 0
E 0 0 0 +1 0 0 0 -1 0 +1 0
F 0 0 0 0 0 0 +1 0 -1 0 +1
G 0 0 0 0 0 0 0 0 0 -1 -1
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
110
1.2. DEFINITIONS
On a vu que les points du graphe sont appels sommets (vertices) ou nuds (nodes), et que chaque
branche joignant deux sommets est appele arc (arc) dans le cas des graphes orients, ou arte
(link, edge) dans le cas des graphes non orients.
Si l'origine d'un arc est l'extrmit d'un autre, ils sont adjacents.
Une boucle (loop) est un arc dont l'origine et l'extrmit sont confondues.
On appelle chemin (path) une suite d'arcs adjacents permettant de passer d'un sommet un autre.
On appelle circuit (circuit) un chemin dont les sommets initial et final concident.
De mme, dans les graphes non orients, on appelle chane (chain) une suite dartes adjacentes, et
cycle (cycle) une chane referme.
Un chemin, un circuit, une chane, un cycle, est dit :
- lmentaire (elementary) s'il ne passe qu'une seule fois par chacun de ses sommets,
- simple (simple) s'il ne passe qu'une seule fois par chacun de ses arcs,
- hamiltonien (hamiltonian) s'il passe une seule fois par chaque sommet du graphe,
- eulrien (eulerian) s'il passe une seule fois par chaque arc du graphe (cf. ponts de Knigsberg),
- prhamiltonien (ou preulrien) s'il passe au moins une fois par chaque sommet (ou chaque arc)
du graphe.
On appelle degr (degree) d'un sommet le nombre d'arcs qui lui sont connects, et plus prcisment
demi degr extrieur (outdegree) le nombre d'arcs qui en sortent, et demi degr intrieur
(indegree) le nombre d'arcs qui y rentrent.
Un graphe est dit complet (complete) si pour toute paire de sommets, il existe un arc les joignant:
(xi,xj) X, (xi,xj) U.
Un graphe est dit symtrique (symmetric) si pour tout arc (xi,xj) il existe aussi un arc de sens oppos
(xj,xi): xi xj (xi,xj) U (xj,xi) U.
Un graphe est dit antisymtrique (antisymmetric) s'il n'existe qu'un arc au plus joignant deux
sommets: xi xj (xi,xj) U (xj,xi ) U.
La cardinalit (cardinality) d'un chemin est le nombre d'arcs qui le composent.
Le poids (weight) ou longueur (length) d'un chemin est la somme des poids ou longueurs des arcs
qui le composent.
On appelle graphe partiel (partial graph) G' de G un graphe ayant les mmes sommets que G, mais
seulement un sous ensemble de ses arcs: G' = (X,V) avec V U.
On appelle sous-graphe (subgraph) engendr par un sous ensemble de sommets A X, le graphe
ayant pour sommets A et pour arcs ceux de U qui ont leurs extrmits dans A.
Un graphe est planaire (planar) s'il peut tre trac sur un plan sans que ses arcs se coupent.
Un graphe est dit connexe s'il existe au moins une chane reliant deux sommets quelconques.
Un graphe est dit fortement connexe s'il existe au moins un chemin reliant deux sommets
quelconques.
Un sous-graphe connexe s'appelle une composante connexe, et un sous-graphe fortement connexe
une composante fortement connexe.
Dans un graphe G = (X,U) connexe, on dit qu'un sommet x est un point d'articulation si le sous-
graphe obtenu en supprimant x n'est plus connexe.
On appelle ensemble d'articulation A d'un graphe G, le sous-ensemble de sommets A X tel que le
sous graphe engendr par X-A n'est pas connexe.
On appelle nombre de connexit , not (G), le nombre minimal de sommets supprimer pour
rendre le graphe G non connexe. Si (G) h (entier), le graphe est dit h-connexe.
On appelle arbre (tree) un graphe connexe sans cycle.
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
111
On appelle matrice d'incidence gnralise d'un graphe G = (X,U), la matrice des poids des arcs
joignant les sommets.
On appelle fermeture transitive (transitive closure) d'un sommet x, le sous-ensemble A X des
sommets accessibles depuis x par un chemin (xA). Si l'on ajoute x A, on parle de fermeture
rflexo-transitive.
Exercice :
Donner les degrs et demi-degrs du graphe de l'exercice prcdent.
Que peut-on dire de sa connexit?
Existe-t-il des points d'articulation?
Solution
Les demi-degrs sont ici les sommes calcules sur les lignes (-extrieur) ou les colonnes (-intrieur)
de la matrice d'adjacence ( moins que l'on ne prfre effectuer le dcompte pour chaque sommet
individuellement sur la reprsentation graphique). On vrifie que la somme des demi-grs extrieurs
est gale la somme des demi-degrs intrieurs, et au nombre d'arcs du graphe.
A B C D E F G
degr 2 4 4 4 3 3 2
1/2degr extrieur 2 2 0 3 2 2 0
1/2degr intrieur 0 2 4 1 1 1 2
Ce graphe est connexe (au sens large puisqu'il s'agit d'un graphe orient et que la connexit est une
notion non oriente, c'est dire qu'ici l'on "oublie" par abus de langage l'orientation des arcs), mais
pas fortement connexe. Il ne possde aucun point d'articulation, et ses plus petits ensembles
d'articulation sont (B,C) et (E,F). Il est donc 2-connexe. Il admet une seule composante fortement
connexe non dgnre (c'est dire non rduite un seul sommet), qui est le circuit (BDE) (voir le
paragraphe suivant pour la mthode).
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
112
1.3. ANALYSE DE LA STRUCTURE D'UN GRAPHE
1.3.1. Recherche de circuits
On commence par liminer les boucles qui sont des circuits lmentaires (diagonale de la matrice
d'adjacence). Le principe de base consiste liminer progressivement tous les sommets qui sont, soit
uniquement origine, soit uniquement extrmit des arcs adjacents, et ne peuvent donc appartenir un
circuit.
La procdure est donc la suivante: On examine tous les sommets les uns aprs les autres, dans un
ordre quelconque. Si un sommet possde la proprit dfinie plus haut, on l'limine ainsi que les arcs
adjacents. Puis on passe au sommet suivant. S'il n'y a pas de circuit, tout le graphe disparat. Sinon
seuls subsistent les circuits.
Exemple1 : on entoure en rouge les sommets qui n'ont pas de suivants.
Etape1 :
A
B
C
D
E
F
Etape2 :
A
B
C
D
E
Etape3 :
A
B
C E
Etape4 :
A
B
C
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
113
Etape5 :
A
C
Etape6 :
A
Le graphe propos n'avait pas de circuit.
Exemple 2 : On entoure aussi en bleu les sommets qui n'ont pas de prcdents
A
B
C
E
F
G D
B E
F
D
B E
D
Il reste un seul circuit (BDE).
x (x) -(x)
A BC
B CD AE
C ABDF
D CFE B
E BG D
F CG D
G EF
x (x) -(x)
B D E
D FE B
E B D
F D
x (x) -(x)
B D E
D E B
E B D
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
114
1.3.2. Dcomposition en niveaux
Considrons un graphe connexe sans circuit et la relation d'ordre suivante entre deux sommets xi et
xj: xi xj si et seulement s'il existe un chemin de xi xj
.
Il est possible d'ordonner ce graphe partir de cette relation d'ordre, c'est dire de ranger les
sommets suivant des niveaux croissants tels qu'il n'y ait pas de chemin d'un sommet un autre
sommet situ un mme niveau ou un niveau infrieur.
Cette dcomposition peut s'effectuer en recherchant, chaque itration, tous les sommets qui n'ont
pas de prcdent et donc constituent un niveau, et en les effaant avant de rechercher le niveau
suivant. On utilisera pour cela le dictionnaire des prcdents.
Cette dcomposition descendante peut tre remplace par une approche ascendante remontant de la
mme manire du sommet qui n'a pas de descendants jusqu' la racine de la dcomposition, en
utilisant le dictionnaire des suivants.
Exemple:
B D
A F
C E
Premier niveau : A na pas de prcdent
A
Deuxime niveau : C na pas de prcdent, car A retir.
A C
Troisime niveau : B et E nont pas de prcdent car C et A retirs.
B
A C
E
Quatrime niveau : D na pas de prcdent car B, C et E retirs.
B
A C D
E
Dernier niveau : F.
B
A C D F
E
Avec dictionnaire des prcdents.
x
-1
(x)
A
B A ,C
C A
D B, C, E
E C
F D, E
Retrait de A
x
-1
(x)
B C
C
D B, C, E
E C
F D, E
Retrait de C
x
-1
(x)
B
D B, E
E
F D, E
Retrait de E et B
x
-1
(x)
D
F D
Retrait de D
x
-1
(x)
F
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
115
On utilisera les dictionnaires des suivants ou des prcdents pour effectuer la dcomposition en
niveaux. Cette dcomposition sera utile dans la rsolution des problmes d'ordonnancement.
NB. La recherche des circuits d'un graphe par limination rsulte de la double application de la
procdure ascendante/descendante.
CALCUL MATRICIEL (RAPPELS)
Pour ceux qui auraient tout oubli, il est sans doute utile avant le paragraphe suivant de rappeler
brivement les quelques notions lmentaires de calcul matriciel qui seront ncessaires pour la suite.
On passera sur le fait qu'un vecteur est la reprsentation algbrique d'un point d'un espace n
dimensions R
n
et une matrice celle d'une application linaire de cet espace dans lui-mme:
A: R
n
R
n
: x Ax
a
11
a
12
... a
1n
Soit une matrice A =[a
ij
]= ...
a
n1
a
n2
... a
nn
Par convention, i sera l'indice des lignes, et j l'indice des colonnes
b
1
Soit un vecteur b = [b
i
] = ...
b
n
La somme de deux vecteurs ou deux matrices a pour terme gnrique la somme des composantes
correspondantes:
b
1
+c
1
Somme de 2 vecteurs [b+c]= ... ou encore [b+c]
i
= [b
i
+c
i
]
b
n
+c
n
Somme de 2 matrices [A+B]
ij
= [a
ij
+b
ij
]
Le produit d'un vecteur x par une matrice A est un vecteur dont chaque composante est le produit
scalaire du vecteur par la ligne correspondante de la matrice. Exemple avec une matrice 3x3:
x
1
x
2
x
3
a
11
a
12
a
13
a
11
*x
1
+a
12
*x
2
+a
13
*x
3
a
21
a
22
a
23
x = a
21
*x
1
+a
22
*x
2
+a
23
*x
3
a
31
a
32
a
33
a
31
*x
1
+a
32
*x
2
+a
33
*x
3
Soit [Ax]
i
=
k
a
ik
x
k
Le produit de 2 matrices est une matrice ayant pour terme gnrique le produit scalaire d'une ligne de
la premire et d'une colonne de la seconde. Exemple du produit de deux matrices 2x2:
b
11
b
12
b
21
b
22
a
11
a
12
a
11
b
11
+a
12
b
21
a
11
b
12
+a
12
b
22
a
21
a
22
x = a
21
b
11
+a
22
b
21
a
21
b
12
+a
22
b
22
Soit [A.B]
ij
=
k
a
ik
b
kj
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
116
1.3.3. Fermeture transitive des sommets d'un graphe
On va s'intresser aux ensembles de suivants des sommets du graphe, soit les (xi) accessibles
directement depuis xi par un chemin de longueur 1 (un arc), les
2
(x
i
)= ( (x
i
)) accessibles par un
chemin de longueur 2, etc...
Dans un graphe n sommets, il ne peut y avoir de chemin lmentaire (les circuits ne servent rien
ici) de plus de (n-1) arcs (sans rptition de sommet), si bien que la recherche pourra s'arrter
l'ordre n-1, c'est dire
n-1
(xi). En fait, on pourra s'arrter ds que
k+1
(x
i
)=
k
(x
i
).
Pour dterminer la matrice des fermetures transitives M
.
En effet, si l'on introduit la matrice M' = I M, on peut montrer que M= (M')
n-1
, dont le calcul est
beaucoup plus rapide. Pour cela il suffit d'observer que l'opration est idempotente (A A = A), et
on dmontre par rcurrence que I M M
2
M
3
... M
n-1
= ( I M )
n-1
.
On calculera donc la suite des ( I M )
k
= M'
k
, qui nous fournira les suivants accessibles par des
chemins de longueur comprise entre 0 et k.
N.B. Comme seule nous intresse la limite M, il sera plus rapide d'valuer les matrices
correspondant aux chemins de longueur 2, 4, 8, 16.. jusqu' ce que le rsultat devienne invariant (la
suite aura converg). La matrice obtenue reprsente l'ensemble des paires de sommets qui peuvent
Xi
Xk
Xk
Xk
Xj
Xk
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
117
tre joints par un chemin (de longueur quelconque). La fermeture transitive d'un sommet est donc
constitue par les sommets correspondant aux 1 de sa propre ligne.
N.B. Dans M, une colonne de zros correspond une entre du graphe (sommet sans prcdents), et
une ligne de zros une sortie du graphe (sommets sans suivants).
Exemple :
B D
A F
C E
La matrice dadjacence (matrice d'incidence sommet sommets) est :
A B C D E F
A 0 1 1 0 0 0
B 0 0 0 1 0 0
C 0 1 0 1 1 0 = M
D 0 0 0 0 0 1
E 0 0 0 1 0 1
F 0 0 0 0 0 0
Et la matrice M :
A B C D E F
A 1 1 1 0 0 0
B 0 1 0 1 0 0
C 0 1 1 1 1 0 = M I = M
D 0 0 0 1 0 1
E 0 0 0 1 1 1
F 0 0 0 0 0 1
Calculons M
2
:
1 1 1 0 0 0
0 1 0 1 0 0
0 1 1 1 1 0
0 0 0 1 0 1
0 0 0 1 1 1
0 0 0 0 0 1
X
1 1 1 0 0 0 1 1 1 1 1 0
0 1 0 1 0 0 0 1 0 1 0 1
0 1 1 1 1 0 0 1 1 1 1 1 = M
2
0 0 0 1 0 1 0 0 0 1 0 1
0 0 0 1 1 1 0 0 0 1 1 1
0 0 0 0 0 1 0 0 0 0 0 1
Calculons par exemple le terme (1,4) (en rouge):
(M
2
)
14
= (1 et 0) ou (1 et 1) ou (1 et 1) ou (0 et 1) ou (0 et 1) ou (0 et 0)
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
118
On calculera de la mme manire M
4
:
1 1 1 1 1 1
0 1 0 1 0 1
0 1 1 1 1 1 = M
4
0 0 0 1 0 1
0 0 0 1 1 1
0 0 0 0 0 1
M
4
est diffrent de M
2
, et l'on poursuit le calcul avec M
8
:
1 1 1 1 1 1
0 1 0 1 0 1
0 1 1 1 1 1 = M
4
= M
8
0 0 0 1 0 1
0 0 0 1 1 1
0 0 0 0 0 1
Cette fois M
4
= M
8
, et le processus a converg: la matrice des fermetures rflexo-transitives
cherche est M
4
. En fait, nous aurions pu aussi nous arrter la matrice M
3
en observant
simplement le graphe (on peut joindre tout couple de points par un chemin de longueur infrieure ou
gale 3). Mais ce raisonnement bas sur la reprsentation graphique n'est videmment pas
applicable des graphes de grande taille o la visualisation est inaccessible, et seul le calcul
utilisable.
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
119
1.3.4. Composantes fortement connexes dun graphe
La relation dfinie sur X par
x y ( (il existe au moins un chemin de x y et un chemin de y x) ou (x=y) ) est une
relation dquivalence.
La dfinition de cette relation entrane en effet qu'elle est rflexive (x x car x=x), symtrique (x y
y x), et transitive (x y et y z x z).
Si l'on fait le quotient du graphe par cette relation dquivalence, les classes obtenues se nomment
composantes fortement connexes du graphe (CFC). Ce sont en pratique les classes de sommets
qui sont tous relis entre eux l'intrieur d'une mme classe.
On verra ici deux mthodes pour les construire:
1re mthode (Algorithme de Foulkes):
Cette mthode utilise la matrice Mdes fermetures rflexo-transitives, en observant que la sous-
matrice associe une CFC sera par dfinition pleine de 1 et situe sur la diagonale de M.
M
On cherchera donc les faire apparatre en permutant judicieusement ses lignes et colonnes (ce
qui revient une renumrotation des sommets du graphe), de faon obtenir un partitionnement
de Men sous-matrices carres pleines de 1 (associes aux ensembles de sommets tous relis
deux deux). En d'autres termes, on va permuter lignes et colonnes pour mettre Msous forme
bloc-diagonale.
Exemple:
B
A C
F D
E
Matrice dadjacence M
A B C D E F
A 0 1 0 1 0 1
B 0 0 1 1 1 1
C 0 0 0 1 0 0
D 0 0 0 0 0 0
E 0 1 0 1 0 0
F 1 1 0 1 1 0
Matrice M
4
= M
8
= M
A B C D E F
A 1 1 1 1 1 1
B 1 1 1 1 1 1
C 0 0 1 1 0 0
D 0 0 0 1 0 0
E 1 1 1 1 1 1
F 1 1 1 1 1 1
Matrice M
2
A B C D E F
A 1 1 1 1 1 1
B 1 1 1 1 1 1
C 0 0 1 1 0 0
D 0 0 0 1 0 0
E 0 1 1 1 1 1
F 1 1 1 1 1 1
Matrice M = I M
A B C D E F
A 1 1 0 1 0 1
B 0 1 1 1 1 1
C 0 0 1 1 0 0
D 0 0 0 1 0 0
E 0 1 0 1 1 0
F 1 1 0 1 1 1
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
120
Permutons les lignes et colonnes pour obtenir la forme bloc-diagonale recherche:
Les 3 composantes fortement connexes de ce graphe sont donc {A,B,E,F} , {C} et {D} (les deux
dernires sont dgnres, rduites un seul sommet).
2me mthode (Dcomposition de Malgrange) :
Le principe de cet algorithme est le suivant: On tablit pour un sommet quelconque la liste de tous ses
prcdents et la liste de tous ses suivants. Les points communs ces deux listes (incluant en
particulier le sommet considr) constituent une composante fortement connexe. On supprime ensuite
ces sommets (et les arcs adjacents) et on repart d'un autre sommet, jusqu' puisement de ceux-ci.
On traitera l'exemple qui suit en utilisant la matrice de fermeture rflexo-transitive M, ou
directement une reprsentation graphique.
B
A C
F D
E
Recherche des CFC sur une reprsentation chane du graphe:
Partant du sommet A, on marque les sommets suivants (jaune) au cours d'une exploration du
graphe mene en profondeur d'abord (depth first search): Partant d'un sommet, on passe son
premier suivant (fils), puis au suivant de celui-ci, etc, en laissant chaque fois momentanment de
ct les autres branchements possibles (frres).
On progresse ainsi le plus loin possible sans former de cycle, puis on remonte jusqu' la dernire
bifurcation laisse de ct, que l'on explore alors en profondeur aussi, et ainsi de suite jusqu'au
retour au sommet de dpart.
On marque de la mme manire par une exploration en profondeur d'abord (et en arrire) les
sommets prcdents (bleu).
Les sommets Mi marqus deux fois constituent CFC(A), puisqu'un tel sommet Mi est reli A par
un chemin dans chaque sens (de A vers Mi par les suivants, et de A vers Mi par les prcdents
c'est dire de Mi vers A). On les retire et on itre sur le graphe rsiduel
On observera que l'exploration du graphe aurait aussi bien pu tre conduite en largeur d'abord
(breadth first search) en marquant tous les suivants d'un sommet avant de poursuivre au niveau
suivant.
A B E F C D
A 1 1 1 1 1 1
B 1 1 1 1 1 1
E 1 1 1 1 1 1
F 1 1 1 1 1 1
C 0 0 0 0 1 1
D 0 0 0 0 0 1
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
121
Le droulement du processus de construction est rsum sur la figure qui suit:
Suivants Prcdents
A A
B F CFC (A) = {A,B,C,D,E,F} {A,F,B,E} = {A,B,E,F}
C E F B
D E
Puis CFC(C) ={C} , et enfin CFC (D) = {D}
Recherche des CFC sur la matrice de fermeture rflexo transitive M
Suivants (A) = (111111) = {A,B,C,D,E,F}
Prcdents (A) = (110011) = {A,B,E,F}
CFC (A) = (111111) (110011) = (110011)
CFC (A) = {A,B,C,D,E,F} {A,B,E,F} = {A,B,E,F}
On supprime alors les sommets ABEF qui constituent CFC (A) et l'on itre sur la matrice rduite:
C D
C 1 1 CFC (C) = (11) (10) = {C}
D 0 1 Reste enfin CFC (D) = {D}
Matrice M
A B C D E F
A 1 1 1 1 1 1
B 1 1 1 1 1 1
C 0 0 1 1 0 0
D 0 0 0 1 0 0
E 1 1 1 1 1 1
F 1 1 1 1 1 1
A
B
C
D
E
F
Recherche Oprationnelle - Graphes
Yves Correc 08/10/2007
122
1.3.5. Composantes connexes d'un graphe
La vrification de la connexit d'un graphe est un problme important. On va dcrire ici un algorithme
de recherche des composantes connexes d'un graphe, analogue dans son principe celui de
Malgrange (Trmaux 1882, Tarjan 1972).
Partant d'un sommet du graphe, on numrote les sommets dans l'ordre d'une exploration, en
profondeur d'abord (depth first search). L'ensemble des sommets rencontrs forme la premire
composante connexe. Si tous les sommets ont t marqus, le graphe est connexe. Dans le cas
contraire on recommence l'exploration partir d'un sommet non encore rencontr, qui donnera une
seconde composante connexe, et ainsi de suite
NB. La connexit est considrer au sens strict dans un graphe non orient, ou au sens large si l'on
nglige l'orientation des arcs dans un graphe orient.