Vous êtes sur la page 1sur 55

INSTITUT NATIONAL POLYTECHNIQUE DE LORRAINE

Ecole Nationale Superieure dElectricite et de Mecanique


Elements de Theorie des Graphes
Didier Maquin
Version provisoire du 3 mai 2003
Table des mati`eres
Avant propos 4
1 Un bref historique de la theorie des graphes 4
2 Introduction 6
2.1 Quest-ce quun graphe ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Graphes et applications multivoques . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Principales denitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Modes de representation dun graphe 9
3.1 Listes de succession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Matrice dadjacence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3 Matrice dincidence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Etude de la connexite 11
4.1 Chanes et cycles, elementaires et simples . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Chemins et circuits, elementaires et simples . . . . . . . . . . . . . . . . . . . . . 12
4.3 Graphes et sous-graphes connexes . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4 Graphes et sous-graphes fortement connexes . . . . . . . . . . . . . . . . . . . . . 13
4.5 Cycles et nombre cyclomatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5 Parcours euleriens et hamiltoniens 15
5.1 Chanes et cycles euleriens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2 Chanes et cycles hamiltoniens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6 Methode de recherche de chemins 18
6.1 Rappel sur les operations booleennes sur les matrices . . . . . . . . . . . . . . . . 18
6.2 Recherche de chemins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.3 Le probl`eme du plus court chemin . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7 Arbres et arborescences 23
7.1 Denitions et proprietes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.2 Arbres couvrants de poids minimum . . . . . . . . . . . . . . . . . . . . . . . . . 24
8 Reseaux, reseaux de transport et probl`emes de ots 26
8.1 Denitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.2 Recherche dun ot complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
8.3 Amelioration du ot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
8.4 Recherche dun ot maximal : algorithme de Ford et Fulkerson . . . . . . . . . . 29
8.5 Exemple traite manuellement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8.6 Recherche dun ot maximal ` a co ut minimal . . . . . . . . . . . . . . . . . . . . . 32
9 Couplages 32
9.1 Le probl`eme du couplage maximal . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9.2 Couplage maximal et ot maximal . . . . . . . . . . . . . . . . . . . . . . . . . . 35
9.3 Couplage de poids maximal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
9.4 Probl`emes daectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3
10 Probl`emes dordonnancement 40
10.1 Le graphe potentiels-t aches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
10.2 Le graphe potentiels-etapes ou graphe PERT . . . . . . . . . . . . . . . . . . . . 42
10.3 Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10.4 Complements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Annexe A - Implementation de lalgorithme de Moore-Dijkstra 46
Annexe B - Implementation de lalgorithme de Floyd 50
Annexe C - Implementation de lalgorithme de Prim 52
References 53
4
Avant propos
Faut tfaire un dessin?. La representation dun probl`eme par un dessin, un plan, une
esquisse contribue souvent ` a sa comprehension. Le langage des graphes est construit, ` a lori-
gine, sur ce principe. Nombres de methodes, de proprietes, de procedures ont ete pensees ou
trouvees ` a partir dun schema pour etre ensuite formalisees et developpees. Chacun dentre nous
a, au moins une fois, vu ou utilise un plan de metro, une carte de lignes ferroviaires, un plan
electrique, un arbre genealogique ou un organigramme dentreprise ; ainsi, tout le monde sait
plus ou moins intuitivement ce quest un graphe. Toutefois, entre cette notion vague o` u des
points, representant des individus, des objets, des lieux ou des situations, sont relies par des
`eches, il y a une longue elaboration des concepts. La premi`ere diculte ` a laquelle on peut etre
confronte concerne la terminologie (tr`es abondante en theorie des graphes). Nous avons donc
choisi disoler les principales denitions du reste du cours en utilisant une mise en page dierente.
La theorie des graphes constitue aujourdhui un corpus de connaissances tr`es important.
Comme son nom lindique, ce cours ne constituera donc quune introduction ` a cette theorie. Nous
le preciserons ulterieurement, le developpement de cette theorie doit beaucoup ` a celui des calcu-
lateurs. Il nous a donc semble incontournable dexposer quelques algorithmes de base (recherche
de chemin, darbre, de ots, etc.). Cependant, ceci ne constitue pas le corps de cet enseignement
meme si les probl`emes pratiques de mise en uvre sont importants. Nous nevoquerons pas, par
exemple, loptimalite de telle ou telle representation dun graphe au regard du traitement que
lon souhaite eectuer, ni la complexite (au sens nombre doperations elementaires) des algo-
rithmes. De mani`ere ` a permettre au lecteur interesse de juger des dicultes de mise en uvre
des algorithmes litteraux, plus clairs pour la comprehension, decrits dans le corps du texte,
quelques implementations ` a laide du langage Matlab
r
sont donnes en annexe. Ces fonctions ne
pretendent nullement ` a etre ecaces ou ecientes sur des donnees quelconques ; elles ne sont
donnees qu` a titre dillustration. De meme, nous nous sommes eorces ce citer, au moment de
lintroduction des methodes de base, les fonctions de la bote ` a outils de manipulation de graphes
Metanet du logiciel Scilab
c
qui leur correspondent.
1 Un bref historique de la theorie des graphes
Tout le monde saccorde ` a considerer que la theorie des graphes est nee en 1736 avec la
communication dEuler (1707-1783) dans laquelle il proposait une solution au cel`ebre probl`eme
des ponts de K onigsberg (Euler, 1736). Le probl`eme pose etait le suivant. Deux les A et D
sur la rivi`ere Pregel ` a K onigsberg (alors capitale de la Prusse de lEst, aujourdhui rebaptisee
Kaliningrad) etaient reliees entre elles ainsi quaux rivages B et C ` a laide de sept ponts (designes
par des lettres minuscules) comme le montre la gure 1.
Fig. 1 La rivi`ere Pregel et lle de Kneiphof
5
Le probl`eme pose consistait, ` a partir dune terre quelconque A, B, C, ou D, ` a traverser chacun
des ponts une fois et une seule et ` a revenir ` a son point de depart (sans traverser la rivi`ere ` a la
nage !). Euler representa cette situation ` a laide dun dessin o` u les sommets representent les
terres et les aretes, les ponts comme le montre la gure 2.
A
C
B
D
Fig. 2 Graphe associe au probl`eme des ponts de K onigsberg
Comme nous le montrerons ulterieurement, Euler demontra que ce probl`eme na pas de so-
lution. Le probl`eme des ponts de K onigsberg est identique ` a celui consistant ` a tracer une gure
geometrique sans lever le crayon et sans repasser plusieurs fois sur un meme trait.
Pendant les cent annees qui suivirent, rien ne fut fait dans ce domaine de recherche. En
1847, Kirchho (1824-1887) developpa la theorie des arbres pour lappliquer ` a lanalyse de cir-
cuits electriques. Dix ans plus tard, Cayley (1821-1895) decouvrit la notion darbre alors quil
essayait denumerer les isom`eres satures des hydrocarbures de type C
n
H
2n+2
. A cette epoque,
deux autres probl`emes dimportance pour la theorie des graphes furent egalement proposes et
partiellement resolus.
Le premier est la conjecture des quatre couleurs qui arme que quatre couleurs susent
pour colorier nimporte quelle carte plane telle que les pays ayant une fronti`ere commune
soient de couleurs dierentes. Cest sans doute M obius (1790-1868) qui presenta le premier ce
probl`eme dans lun de ses cours en 1840. Environ dix ans apr`es, de Morgan (1806-1871) essaya de
resoudre ce probl`eme. Les lettres de de Morgan ` a ces divers coll`egues mathematiciens constituent
les premi`eres references ` a la conjecture des quatre couleurs. Le probl`eme devint cel`ebre apr`es sa
publication, par Cayley en 1879, dans le premier volume des Proceedings of the Royal Geographic
Society. Ce probl`eme est reste tr`es longtemps sans solution. Il fallut attendre jusquen 1976 pour
que Appel et Haken prouvent ce theor`eme en reduisant le probl`eme ` a un nombre ni de situa-
tions particuli`eres et en trouvant une solution pour chacune dentre elles ` a laide dun ordinateur.
Le second probl`eme est d u ` a Sir Hamilton (1805-1865). En 1859, il inventa un casse-tete
quil vendit pour 25 guinees ` a un fabricant de jouet de Dublin. Ce jeu consiste en un dodeca`edre
regulier en bois (un poly`edre ` a 12 faces et 20 sommets), chaque face etant un pentagone regulier
comme le montre la gure 3.
Trois aretes sont donc issues de chaque sommet. Un clou est che sur chaque sommet marque
du nom de vingt grandes villes mondiales. Le casse-tete consiste ` a enrouler une celle passant
une fois et une seule fois par chacune des villes (sommets). Bien que la solution de ce probl`eme
soit aisee ` a obtenir, personne na encore trouve de condition necessaire et susante de lexistence
dun tel chemin (appele chemin Hamiltonien) dans un graphe quelconque.
Cette periode fertile fut suivie dun demi-si`ecle de relative inactivite. Les annees 1920 virent
6
Fig. 3 Un dodeca`edre regulier
la resurgence de linteret pour les graphes. Lun des pionniers de cette periode fut K onig ` a qui
lon doit le premier ouvrage consacre enti`erement ` a la theorie des graphes (K onig, 1936). Il est
sans doute ` a lorigine de lutilisation du terme graphe pour designer ce qui etait prealablement
considere comme un ensemble de points et de `eches.
A partir de 1946, la theorie des graphes a connu un developpement intense sous limpul-
sion de chercheurs motives par la resolution de probl`emes concrets. Parmi ceux-ci, citons de
mani`ere privilegiee Kuhn (1955), Ford et Fulkerson (1956) et Roy (1959). Parall`element, un
important eort de synth`ese a ete opere en particulier par Claude Berge. Son ouvrage Theorie
des graphes et ses applications publie en 1958 (Berge, 1958) marque sans doute lav`enement
de l`ere moderne de la theorie des graphes par lintroduction dune theorie des graphes uniee
et abstraite rassemblant de nombreux resultats epars dans la litterature. Depuis, cette theorie
a pris sa place, en subissant de tr`es nombreux developpement essentiellement dus ` a lappari-
tion des calculateurs, au sein dun ensemble plus vaste doutils et de methodes generalement
regroupees sous lappellation recherche operationnelle ou mathematiques discr`etes.
2 Introduction
2.1 Quest-ce quun graphe ?
Denition 1
On appelle graphe G = (X, A) la donnee dun ensemble X dont les elements sont
appeles sommets et dune partie de A symetrique ( (x, y) A (y, x) A) dont
les elements sont appeles aretes.
En presence dune arete a = (x, y) qui peut etre notee simplement xy, on dit que
x et y sont les extremites de a, que a est incidente en x et en y, et que y est un
successeur ou voisin de x (et vice versa).
On dit quun graphe est sans boucle si A ne contient pas darete de la forme (x, x),
cest-` a-dire joignant un sommet ` a lui-meme.
Le nombre de sommets est appele ordre du graphe.
Un graphe ne possedant pas de boucle ni daretes parall`eles (deux aretes distinctes joignant
la meme paire de sommets) est appele graphe simple ou 1-graphe. En revanche un p-graphe ou
graphe generalise est un graphe pour lequel il nexiste jamais plus de p aretes de la forme (x, x).
Graphiquement, les sommets peuvent etre representes par des points et larete a = (x, y)
par un trait reliant x ` a y. On notera que la disposition des points et la longueur ou la forme
7
(rectiligne ou incurvee) des traits na aucune importance. Seule lincidence des dierentes aretes
et sommets compte. A titre dexemple, les deux graphes de la gure 4 sont identiques.
1
2
3
4
1
2 4
3
Fig. 4 Deux representations graphiques dun meme graphe
Dans le trace graphique dun graphe, deux aretes peuvent sembler avoir une intersection en
un point qui nest pas un sommet. Cest le cas, par exemple, des aretes e et f du graphe de
la gure 5. De telles aretes peuvent etre vues comme etant placees dans des plans dierents et
nayant donc aucun point commun.
a
b
c
d
e
f
Fig. 5 Les aretes e et f nont pas de point commun
Les graphes ainsi denis sont dits graphes non orientes. Dans certaines situations cepen-
dant, lorientation des aretes est importante.
Denition 2
On appelle graphe oriente ou digraphe G = (X, A) la donnee dun ensemble X dont
les elements sont appeles sommets et dune partie A de X X dont les elements
sont appeles arcs ou aretes.
En presence dun arc a = (x, y) qui peut etre note simplement xy, on dit que x est
lorigine (ou extremite initiale) et y lextremite (terminale) de a, que a est sortant en
x et incident en y, et que y est un successeur de x tandis que x est un predecesseur
de y. On dit aussi que x et y sont adjacents.
2.2 Graphes et applications multivoques
Lensemble des successeurs dun sommet x X est note (x). Lapplication qui, ` a tout
element de X, fait correspondre une partie de X (un element de P(X)) est appelee une applica-
tion multivoque. Lensemble des predecesseurs dun sommet x X peut alors etre note
1
(x)
8
o` u
1
est lapplication (multivoque) reciproque de .
Si le graphe G est un 1-graphe, on constate quil est parfaitement determine par la donnee
de lensemble X et de lapplication multivoque de X P(X). Un tel graphe peut donc aussi
etre note : G = (X, ).
2.3 Principales denitions
Les denitions qui suivent sont enoncees dans le cadre des graphes orientes. Le lecteur trans-
posera aisement ces denitions (si elles ont un sens) au cas des graphes non orientes.
Denition 3
On appelle degre sortant ou demi-degre exterieur dun sommet x le nombre darcs
de la forme a = (x, y) avec y = x, cest-` a-dire le nombre delements de (x)\ {x}.
On note d
s
(x) ce degre.
On appelle degre entrant ou demi-degre interieur dun sommet x le nombre darcs
de la forme a = (y, x) avec y = x, cest-` a-dire le nombre delements de
1
(x)\ {x}.
On note d
e
(x) ce degre.
On appelle degre de x (ou valence) la somme du degre entrant et du degre sortant.
Un sommet de degre entrant non nul et de degre sortant nul est appele puits, tandis quun
sommet de degre entrant nul et de degre sortant non nul est appele source.
Un sommet nayant pas darcs incidents est appele sommet isole ; ces sommets ont un degre
nul. Deux arcs adjacents sont dits en serie si leur sommet commun est de degre egal ` a deux.
Dans la denition dun graphe, lensemble des arcs A peut etre vide ; dans ce cas, on a aaire
` a un graphe nul. Tous les sommets dun graphe nul sont donc des sommets isoles. En revanche,
lensemble des sommets X ne peut etre vide sinon le graphe correspondant nexiste pas. Cela
signie donc quun graphe comporte au moins un sommet.
Denition 4
On appelle graphe reexif un graphe possedant une boucle sur chaque sommet.
Un graphe est symetrique si, pour tout arc a
1
= (x, y) appartenant ` a A, larc
a
2
= (y, x) appartient egalement ` a A.
Un graphe est antisymetrique si, pour tout arc a
1
= (x, y) appartenant ` a A, larc
a
2
= (y, x) nappartient pas ` a A.
Enn, un graphe est transitif si, quelque soit deux arcs adjacents a
1
= (x, y) et
a
2
= (y, z) appartenant ` a A, alors larc a
3
= (x, z) appartient egalement ` a A.
Le concept de graphe symetrique est tr`es proche de celui des graphes non orientes. En
fait, ` a tout graphe symetrique, on peut associer un graphe non oriente en substituant aux arcs
a
1
= (x, y) et a
2
= (y, x), une arete a = (y, x).
9
Denition 5
Un graphe G = (X, A) est dit complet si, pour toute paire de sommets (x, y), il existe
au moins un arc de la forme (x, y) ou (y, x).
Un graphe simple complet dordre n est note K
n
. Un sous-ensemble de sommets
C X tel que deux sommets quelconques de C sont relies par une arete est appele
une clique.
Denition 6
Soit un graphe G = (X, A) et X

X. Le sous-graphe engendre par X

est G

= (X

, A

),
A

etant forme des aretes dont les deux extremites sont dans X

.
Si lon se donne un sous-ensemble A
1
de A, le graphe partiel engendre par A
1
est
G
1
= (X, A
1
).
Dans certaines situations, les sommets de G
1
ayant un degre nul (sommets isoles nayant
aucune arete incidente appartenant ` a A
1
) peuvent etre supprimes du graphe partiel.
Dapr`es la denition precedente, une clique dun graphe G est donc un sous-graphe complet
de G.
3 Modes de representation dun graphe
Comme nous lavons mentionne precedemment, lessor de la theorie des graphes est essen-
tiellement d u ` a lav`enement de puissants calculateurs. Il est donc legitime de sinteresser ` a la
mani`ere de representer les graphes au sein dun ordinateur. Plusieurs modes de representation
peuvent etre envisages selon la nature des traitements que lon souhaite appliquer au graphe
considere.
3.1 Listes de succession
Un graphe peut etre represente ` a laide dun dictionnaire ; il sagit dune table ` a simple entree
o` u chaque ligne correspond ` a un sommet et comporte la liste des successeurs ou des predecesseurs
de ce sommet. Considerons le graphe de la gure 6.
1
4
1
2
3
5
8
6
7
2
3
4
5
Fig. 6 Un graphe elementaire
Celui-ci peut etre represente par les deux tables suivantes :
10
1 2, 3, 4, 5
2 3
3 4
4 -
5 1, 4
1 5
2 1
3 1, 2
4 1,3,5
5 1
Dans la mesure o` u, pour une table donnee, le nombre de successeurs ou de predecesseurs nest
pas le meme pour chaque sommet, il est preferable de representer le dictionnaire sous forme de
deux tableaux : le premier comprenant autant delements que de sommets, ces elements pointant,
dans un second tableau, les debuts de listes de successeurs (ou de predecesseurs). La gure 7
montre cette organisation en ce qui concerne la table des successeurs.
1
0
5
6
7
1 4 2 3 4 5 3 4
Fig. 7 Codage dune liste de successeurs
Cette representation est un peu redondante dans le cas des graphes non orientes ; elle est
cependant assez commode pour parcourir le graphe. Lencombrement de cette representation est
minimal puisquil correspond exactement ` a la quantite dinformation fournie par le graphe.
3.2 Matrice dadjacence
Les outils classiques dalg`ebre lineaire peuvent egalement etre utilises pour coder les graphes.
La premi`ere idee consiste ` a considerer chaque arc comme un lien entre deux sommets.
Denition 7
Considerons un graphe G = (X, A) comportant n sommets. La matrice dadjacence
de G est egale ` a la matrice U = (u
ij
) de dimension n n telle que
u
ij
=
_
1 si (i, j) A (cest-` a-dire (i, j) est une arete)
0 sinon
Une telle matrice, ne contenant que des 0 et des 1 est appelee, de mani`ere
generale, une matrice booleenne.
Un graphe oriente quelconque a une matrice dadjacence quelconque, alors quun graphe non
oriente poss`ede une matrice dadjacence symetrique. Labsence de boucle se traduit par une
diagonale nulle. La matrice dadjacence du graphe de la gure 6 est la suivante :
U =
_
_
_
_
_
_
0 1 1 1 1
0 0 1 0 0
0 0 0 1 0
0 0 0 0 0
1 0 0 1 0
_
_
_
_
_
_
11
Ce mode de representation engendre des matrices tr`es creuses (i.e. comprenant beaucoup
de zeros). Cependant la recherche de chemins ou de chanes seectue aisement avec une telle
representation (cf 6.2). De plus, la matrice dadjacence poss`ede quelques proprietes qui peuvent
etre exploitees. Considerons un graphe G et sa matrice dadjacence associee U :
la somme des elements de la i
eme
ligne de U est egale au degre sortant d
s
(x
i
) du sommet
x
i
de G.
la somme des elements de la j
eme
colonne de U est egale au degre entrant d
e
(x
j
) du sommet
x
j
de G.
U est symetrique si, et seulement si, le graphe G est symetrique.
3.3 Matrice dincidence
La seconde idee permettant une representation matricielle dun graphe exploite la relation
dincidence entre aretes et sommets.
Denition 8
Considerons un graphe oriente sans boucle G = (X, A) comportant n sommets
x
1
, . . . , x
n
et m aretes a
1
, . . . , a
m
. On appelle matrice dincidence (aux arcs) de
G la matrice M = (m
ij
) de dimension n m telle que :
m
ij
=
_
_
_
1 si x
i
est lextremite initiale de a
j
1 si x
i
est lextremite terminale de a
j
0 si x
i
nest pas une extremite de a
j
Pour un graphe non oriente sans boucle, la matrice dincidence (aux aretes) est
denie par :
m
ij
=
_
1 si x
i
est une extremite de a
j
0 sinon
La matrice dincidence du graphe de la gure 6 secrit sous la forme suivante :
M =
_
_
_
_
_
_
1 0 1 0 1 1 1 0
1 1 0 0 0 0 0 0
0 1 1 1 0 0 0 0
0 0 0 1 1 0 0 1
0 0 0 0 0 1 1 1
_
_
_
_
_
_
4 Etude de la connexite
4.1 Chanes et cycles, elementaires et simples
Denition 9
Une chane est une sequence nie et alternee de sommets et daretes, debutant et
nissant par des sommets, telle que chaque arete est incidente avec les sommets qui
lencadre dans la sequence. Une arete ne doit pas intervenir plusieurs fois dans la
sequence contrairement ` a un sommet.
Le premier et le dernier sommet sont appeles (sommets) extremites de la chane.
12
La longueur de la chane est egale au nombre daretes qui la composent.
Si aucun des sommets composant la sequence napparat plus dune fois, la chane
est dite chane elementaire.
Si aucune des aretes composant la sequence napparat plus dune fois, la chane est
dite chane simple.
Un cycle est une chane dont les extremites concident.
Un cycle elementaire (tel que lon ne rencontre pas deux fois le meme sommet en le
parcourant) est un cycle minimal pour linclusion, cest-` a-dire ne contenant stricte-
ment aucun autre cycle.
4.2 Chemins et circuits, elementaires et simples
Toutes les denitions precedentes, sappliquant au cas des graphes non orientes, peuvent etre
transposees au cas des graphes orientes.
Denition 10
Un chemin est une sequence nie et alternee de sommets et darcs, debutant et
nissant par des sommets, telle que chaque arc est sortant dun sommet et incident au
sommet suivant dans la sequence (cela correspond ` a la notion de chane orientee).
Si aucun des sommets composant la sequence napparat plus dune fois, le chemin
est dit chemin elementaire.
Si aucune des aretes composant la sequence napparat plus dune fois, le chemin est
dit chemin simple.
Un circuit est un chemin dont les extremites concident.
En parcourant un circuit elementaire, on ne rencontre pas deux fois le meme sommet.
4.3 Graphes et sous-graphes connexes
De mani`ere intuitive, la notion de connexite est triviale. Un graphe est connexe si lon peut
atteindre nimporte quel sommet ` a partir dun sommet quelconque en parcourant dierentes
aretes. De mani`ere plus formelle, on a :
Denition 11
Un graphe G est connexe sil existe au moins une chane entre une paire quelconque
de sommets de G.
La relation :
x
i
R x
j

_
soit x
i
= x
j
soit il existe une chane joignant x
i
` a x
j
est une relation dequivalence (reexivite, symetrie, transitivite). Les classes dequivalence in-
duites sur X par cette relation forment une partition de X en X
1
, X
2
, . . . , X
p
.
13
Le nombre p de classes dequivalence distinctes est appele nombre de connexite du graphe.
On peut alors donner une autre denition concernant la connexite dun graphe. Un graphe
est dit connexe si et seulement si son nombre de connexite est egal ` a 1.
Les sous-graphes G
1
, G
2
, . . . , G
p
engendres par les sous-ensembles X
1
, X
2
, . . . , X
p
sont ap-
peles les composantes connexes du graphe. Chaque composante connexe est un graphe connexe.
La verication de la connexite dun graphe est un des premiers probl`emes de la theorie des
graphes. Nous decrirons ulterieurement des algorithmes permettant detablir cette connexite.
Denition 12
Un point darticulation dun graphe est un sommet dont la suppression augmente le
nombre de composantes connexes.
Un isthme est une arete dont la suppression a le meme eet.
Un ensemble darticulation E X dun graphe connexe G est un ensemble de
sommets tel que le sous-graphe G

deduit de G par suppression des sommets de E,


ne soit plus connexe.
4.4 Graphes et sous-graphes fortement connexes
Denition 13
Un graphe oriente est dit fortement connexe sil existe un chemin joignant deux som-
mets quelconques.
La relation :
x
i
R x
j

_
_
_
soit x
i
= x
j
soit il existe ` a la fois un chemin joignant x
i
` a x
j
et un chemin joignant x
j
` a x
i
est une relation dequivalence et les classes dequivalence induites sur X par cette relation forment
une partition de X en X
1
, X
2
, . . . , X
q
. Les sous-graphes G
1
, G
2
, . . . , G
q
engendres par les sous-
ensembles X
1
, X
2
, . . . , X
q
sont appeles les composantes fortement connexes du graphe.
Pour le graphe de la gure 8, les dierentes composantes fortement connexes sont :
C
1
= {1, 2, 3, 4, 5} C
2
= {6, 7} C
3
= {8}
Denition 14
On appelle graphe reduit G
r
le quotient du graphe G par la relation de forte connexite
G
r
= G/R; les sommets de G
r
sont donc les composantes fortement connexes et il
existe un arc entre C
i
et C
j
si et seulement sil existe au moins un arc entre un
sommet de C
i
et un sommet de C
j
dans le graphe G. On verie que le graphe G
r
est
sans circuit.
Le graphe reduit correspondant au graphe de la gure 8 est donne gure 9. La recherche
des composantes fortement connexes et la determination du graphe reduit revetent une grande
importance pour lanalyse structurale dun syst`eme.
14
1 3 5
2
8
4
7 6
Fig. 8 Graphe oriente
C
1
C
2
C
3
Fig. 9 Graphe reduit du graphe de la gure 8
4.5 Cycles et nombre cyclomatique
Les notions de cycle et de cycle elementaire ont dej` a ete denies au paragraphe 4.1. Pour un
cycle donne, on designe par
+
lensemble des arcs du cycle orientes dans le sens de parcours
et par

lensemble des arcs orientes en sens contraire. Si le graphe poss`ede m arcs designes
par a
1
, . . . , a
m
, on peut faire correspondre ` a tout cycle un vecteur = (
1
,
2
, . . . ,
m
) tel
que :

i
=
_
_
_
1 si a
i

+
1 si a
i

0 si a
i
/
+

On remarque que est aussi un vecteur associe au cycle (obtenu en choisissant lautre
sens de parcours). Au signe pr`es, on pourra donc identier le cycle au vecteur .
Denition 15
On dit que p cycles
1
,
2
, . . . ,
p
sont dependants sil existe, entre leurs vecteurs
associes, une relation vectorielle de la forme :

1
+
2

2
+. . . +
p

p
= 0
avec les
i
non tous nuls.
Si la satisfaction de la relation precedente implique
i
= 0, i = 1, . . . , p, les p cycles
sont dits independants.
15
Une base de cycles est un ensemble minimal de cycles independants tel que tout
vecteur representatif dun cycle puisse sexprimer comme combinaison lineaire des
cycles de la base.
On appelle nombre cyclomatique dun graphe G, la dimension de la base de cycles.
On peut noter que le nombre cyclomatique v(G) dun graphe ` a n sommets, m arcs et p
composantes connexes est egal ` a v(G) = mn +p.
5 Parcours euleriens et hamiltoniens
Letude des probl`emes euleriens ou hamiltoniens (recherche dune chane ou dun cycle
passant exactement une fois par chaque arete ou par chaque sommet ) remonte aux origines
de la theorie des graphes.
Linteret porte aujourdhui ` a ces probl`emes sexplique par leurs nombreuses applications :
tournees de distribution, trace automatique sur ordinateur, probl`emes dordonnancement date-
lier, etc.
5.1 Chanes et cycles euleriens
Il sagit l` a dune generalisation du jeu bien connu consistant ` a dessiner toutes les aretes dun
graphe avec un crayon sans jamais le soulever, ni passer deux fois sur la meme arete.
Denition 16
Soit G = (X, A) un graphe oriente.
Une chane eulerienne est une chane empruntant une fois et une fois seulement
chaque arete de G.
Un cycle eulerien est une chane eulerienne dont les extremites concident.
Un graphe possedant un cycle eulerien est appele graphe eulerien.
Le probl`eme de lexistence et de la determination dun cycle eulerien (dune chane eulerienne)
dans un graphe non oriente a ete pose la premi`ere fois et resolu par Euler en 1736 ` a propos du
cel`ebre probl`eme des ponts de K onigsberg evoque au premier paragraphe. Euler prouva limpos-
sibilite de lobtention dune solution en demontrant le theor`eme suivant :
Theor`eme 1
Un graphe non oriente connexe poss`ede une chane eulerienne si et seulement si le
nombre de sommets de degre impair est egal ` a 0 ou 2.
Il admet un cycle eulerien si et seulement si tous ses sommets ont un degre pair.
Montrons que la condition est necessaire. Si le cycle eulerien existe, on peut lorienter de
mani`ere arbitraire. En chaque sommet, le nombre darcs incidents doit etre egal au nombre
darcs sortants, les sommets doivent donc etre de degre pair. Dans le cas dune chane, les deux
extremites font exception ; on part ou lon arrive une fois de plus, do` u un degre impair pour ces
16
deux sommets extremites.
Montrons maintenant que la condition est susante. Raisonnons par recurrence en supposant
que le theor`eme est verie pour des graphes connexes ayant moins de m aretes. Soit G = (X, A)
un graphe de m aretes veriant la condition du theor`eme. Si G poss`ede deux sommets de degre
impair, soient a et b ces sommets (si tous les sommets de G sont de degre pair, on choisit a quel-
conque et b confondu avec a). Soit L la chane parcourue par un voyageur partant de a dans
une direction quelconque et seulement soumis ` a linterdiction demprunter deux fois la meme
arete. Si, ` a un instant donne, il arrive en un sommet x = b, il aura utilise un nombre impair
daretes incidentes ` a x et il pourra donc repartir par une arete non dej` a utilisee. Quand il ne
peut plus bouger, cest donc quil est en b. Si toutes les aretes ont ete utilisees, L est une chane
eulerienne et le theor`eme est vrai. Dans le cas contraire, le graphe partiel, deni par les aretes
non utilisees, a tous ses sommets de degre pair (de part la nature des suppressions eectuees).
Soient G

1
, G

2
, ..., G

p
les composantes connexes de G qui comportent au moins une arete. Chacun
des sous graphes G

i
poss`ede moins de m aretes et dapr`es lhypoth`ese de recurrence, il admet
un cycle eulerien
i
. Comme G est connexe, L rencontre successivement G

1
, G

2
, ..., G

p
en les
sommets x
1
, x
2
, . . . , x
p
. Le parcours alors constitue par :
la chane L entre a et x
1
,
le cycle
1
entre x
1
et x
1
,
la chane L entre x
1
et x
2
,
le cycle
2
entre x
2
et x
2
,
...
la chane L entre x
p
et b.
constitue bien une chane eulerienne entre a et b dans G. Le theor`eme est donc vrai ` a lordre m.
Comme il est vrai ` a lordre 1, il est demontre pour tout m.
Le probl`eme dEuler peut aussi etre considere avec des sens uniques.
Denition 17
Un chemin dans un graphe oriente est dit eulerien sil passe exactement une fois par
chaque arete.
Un graphe oriente est dit eulerien sil admet un circuit eulerien.
La demonstration precedente peut aisement etre adaptee ` a cette nouvelle situation.
Theor`eme 2
Un graphe oriente connexe admet un chemin eulerien (mais pas de circuit eulerien)
si, et seulement si, pour tout sommet sauf deux (a et b), le degre entrant est egal au
degre sortant et
d
e
(a) = d
s
(a) 1 et d
e
(b) = d
s
(b) + 1
Un graphe oriente connexe admet un circuit eulerien si, et seulement si, pour tout
sommet, le degre entrant est egal au degre sortant.
Parmi les probl`emes prototypes classiques des formulations precedentes, citons le probl`eme
du postier chinois (non oriente) qui consiste ` a parcourir les rues dune ville en passant au moins
17
une fois dans chaque rue, le graphe netant pas necessairement eulerien ; on cherche bien s ur ` a
minimiser la longueur totale du parcours.
On rencontre ce genre de probl`eme dans les organisations de tournees de distribution de
courrier, de ramassage dordures, dinspection de reseaux de distribution. Dans le cas oriente
o` u chaque arc doit etre emprunte dans un sens privilegie, le probl`eme se ram`ene ` a la recherche
dun ot ` a co ut minimum (cf. 8.4).
Il sagit dabord de savoir si le parcours chinois a au moins une solution. Nous enon cons
ici sans demonstration les resultats suivants.
Theor`eme 3
Un graphe non oriente admet un cycle chinois si, et seulement si, il est connexe.
Un graphe oriente admet un circuit chinois si, et seulement si, il est fortement
connexe.
La resolution du probl`eme du postier chinois peut sinspirer des methodes de recherche de
chanes ou cycles euleriens. Cependant, on pref`erera formuler le probl`eme en termes de couplage
parfait de poids minimum (cf. 9.3)
5.2 Chanes et cycles hamiltoniens
Soit G = (X, A) un graphe connexe dordre n.
Denition 18
On appelle chemin hamiltonien (chane hamiltonienne) un chemin (une chane) pas-
sant une fois, et une fois seulement, par chacun des sommets de G.
Un chemin hamiltonien (une chane hamiltonienne) est donc un chemin (une chane)
elementaire de longueur n 1.
Un circuit hamiltonien (un cycle hamiltonien) est un circuit (un cycle) qui passe une
fois, et une seule fois, par chacun des sommets de G.
On dit quun graphe G est hamiltonien sil contient un cycle hamiltonien (cas non
oriente) ou un circuit hamiltonien (cas oriente).
La notion de cycle hamiltonien trouve son origine dans le jeu invente par Hamilton que nous
avons evoque au premier paragraphe. De nombreux probl`emes concrets peuvent etre formules
en termes de recherche de parcours hamiltoniens.
On peut en particulier citer le probl`eme du voyageur de commerce. Un representant de com-
merce doit rendre visite ` a n clients x
1
, x
2
, . . . , x
n
en partant dune ville x
0
et revenir ` a son
point de depart. Il connat les distances d
0j
qui separent le dep ot x
0
de chacun de ses clients x
j
,
ainsi que la distance d
ij
entre deux clients quelconques x
i
et x
j
.
Dans quel ordre doit-il rendre visiste ` a ses clients pour que la distance totale parcourue soit
minimale ? Ce probl`eme revient ` a chercher un cycle hamiltonien de longueur totale minimale
dans le graphe complet G construit sur lensemble des sommets X = {x
0
, x
1
, . . . , x
n
}, les
18
aretes etant munies des longueurs d
ij
.
Lorsque le point darrivee est dierent du point de depart, le probl`eme revient ` a rechercher
une chane hamiltonienne de longueur totale minimale.
Un autre probl`eme classique concerne lordonancement de t aches. On cherche un ordre dans
lequel on peut eectuer n t aches donnees (deux t aches quelconques ne pouvant etre eectuees si-
multanement) tout en respectant un certain nombre de contraintes danteriorite. Si lon construit
le graphe G dont lensemble des sommets correspond ` a lensemble des t aches, et o` u il existe un
arc (i, j) si la t ache i peut etre eectuee avant la t ache j, le probl`eme revient ` a determiner un
chemin hamiltonien de G.
Dautres probl`emes concrets peuvent se ramener egalement ` a la problematique precedente.
On appelle cycle (circuit) prehamiltonien dun graphe G, un cycle (un circuit) passant au moins
une fois par chaque sommet de G. Un graphe G qui admet un tel cycle (ou circuit) est appele
graphe prehamiltonien et une condition necessaire et susante pour quil en soit ainsi est que
G soit connexe (fortement connexe).
La recherche dun cycle (circuit) prehamiltonien de longueur minimale dans un graphe G
o` u les aretes (arcs) ont des longueurs donnees se ram`ene ` a un probl`eme de recherche de cycle
(circuit) hamiltonien dans le graphe complet G

construit sur le meme ensemble de sommets, la


longueur dune arete (arc) (i, j) de G

etant egale ` a la longueur de la plus courte chane (chemin)


entre i et j.
De nombreux probl`emes du type voyageur de commerce sont en realite des probl`emes
prehamiltoniens et, pour les resoudre, on commencera par calculer la matrice des plus courts
chemins (des plus courtes chanes).
Notons que lon ne connat pas de condition necessaire et susante dexistence de cycles ou
de circuits hamiltoniens.
6 Methode de recherche de chemins
6.1 Rappel sur les operations booleennes sur les matrices
Rappelons bri`evement les deux operations daddition et de multiplication booleenne notees
et . Les variables A et B sont booleennes et prennent donc leur valeur dans {0, 1}
A B AB AB
0 0 0 0
0 1 1 0
1 0 1 0
1 1 1 1
Avant de proceder ` a la recherche systematique de chemins, examinons, de fa con generale, la
signication des operations sur les matrices dadjacence en termes de graphes.
19
Addition booleenne des matrices
Soient deux graphes G
1
et G
2
, possedant les memes sommets, et leurs matrices dadjacence
associees U
1
et U
2
de dimension n n. Calculons U
3
= U
1
U
2
telle que :
(U
3
)
ij
= (U
1
)
ij
(U
2
)
ij
Chaque element non nul de U
3
represente, par denition, un arc de G
3
decrit par la matrice
U
3
. Pour quun element de U
3
soit non nul, il faut que lun au moins des elements correspondants
de U
1
ou U
2
soit non nul. On conclut donc que cette operation revient ` a construire un graphe
G
3
comportant ` a la fois les arcs de G
1
et ceux de G
2
.
Multiplication booleenne des matrices
Considerons de nouveau les deux graphes G
1
et G
2
precedents et calculons U
4
= U
1
U
2
telle que :
(U
4
)
ij
= (U
1
)
i1
(U
2
)
1j
(U
1
)
i2
(U
2
)
2j
. . . (U
1
)
in
(U
2
)
nj
Pour que (U
4
)
ij
soit egal ` a 1, il faut quil existe au moins un indice k tel que simultanement
les elements (U
1
)
ik
et (U
2
)
kj
soit egaux ` a 1.
Cela revient ` a construire un graphe G
4
dans lequel un arc (i, j) existe si et seulement sil
existe un sommet k tel que (i, k) soit un arc de G
1
et (k, j) un arc de G
2
.
6.2 Recherche de chemins
Soit U la matrice dadjacence associee au graphe G. Par denition, U
ij
= 1 indique lexis-
tence dun chemin de longueur 1 entre les sommets i et j. Multiplions U par elle-meme, soit
U
2
= U U et considerons le graphe G

associe ` a U
2
. Chaque arc (i, j) de G

exprime lexis-
tence dun chemin de longueur 2 du sommet i au sommet j. En eet, dapr`es linterpretation
precedente, (i, j) existe si et seulement sil existe un sommet k tel que (i, k) et (k, j) sont des
arcs de G.
Demontrons par recurrence que, plus generalement, U
p
donne lexistence des chemins de lon-
gueur p. Soit un graphe possedant n sommets et U sa matrice dadjacence associee. Admettons
la propriete pour p 1 et demontrons la pour p.
Un chemin de longueur p entre les sommets i et j peut se decomposer en un chemin de
longueur p1 entre les sommets i et k auquel on ajoute larc (k, j). Lexistence du chemin entre
les sommets i et k est donnee, par hypoth`ese, par lelement (U
p1
)
ik
, celle de larc (k, j) par U
kj
.
Lexistence dun chemin joignant les sommets i et j et passant par le sommet k est donc
donnee par (U
p1
)
ik
U
kj
. Or, le sommet k est quelconque et peut etre lun des n sommets du
graphe. Lexistence dun chemin entre les sommets i et j secrit donc :
C
ij
=
_
U
p1
_
i1
U
1j

_
U
p1
_
i2
U
2j
. . .
_
U
p1
_
in
U
nj
Lexpression de C
ij
est, par denition, celle donnee pour calculer lelement (U
p
)
ij
. Comme
nous lavons veriee pour p = 2, la propriete est vraie quel que soit p.
Remarquons que pour un graphe ` a n sommets, un chemin elementaire comprend au plus
n 1 arcs. Il sut donc, pour avoir lexistence de tous les chemins, delever successivement
la matrice U jusqu` a la puissance n. De plus, si deux matrices successives ainsi calculees sont
identiques, il est inutile de poursuivre le calcul jusqu` a la puissance n.
20
6.3 Le probl`eme du plus court chemin
Le probl`eme de la recherche du plus court chemin dans un graphe se rencontre dans de
nombreuses applications. On peut citer entre autres :
les probl`emes de tournees,
certains probl`emes dinvestissement et de gestion de stocks,
les probl`emes de programmation dynamique ` a etats discrets et temps discret,
les probl`emes doptimisation de reseaux (routiers, telecommunications),
certaines methodes de traitement numerique du signal, de codage et de decodage de lin-
formation,
les probl`emes de labyrinthe et de recreations mathematiques.
Le probl`eme considere se formule ainsi. Etant donne un graphe oriente G = (X, A), on asso-
cie ` a chaque arc a A un nombre l(a) R appele longueur de larc. On dit alors que G est
value par les longueurs l(a). Si a = (i, j), on utilisera egalement la notation l
ij
pour la longueur
de larc a.
Le probl`eme du plus court chemin entre deux sommets i et j sera de trouver un chemin
(i, j) de i et j dont la longueur totale l() =

a(i,j)
l(a) soit minimum.
Ce probl`eme a de nombreuses applications pratiques car la longueur l(a) peut sinterpreter
aussi bien comme un co ut de transport sur larc a, comme les depenses de construction de larc
a, comme le temps necessaire pour parcourir larc a, etc.
Selon les proprietes du graphe traite (les longueurs sont quelconques, positives ou toutes
egales, le graphe est quelconque ou sans circuit) et selon le probl`eme considere (recherche du
plus court chemin dun sommet ` a un autre, ou dun sommet ` a tous les autres, ou entre tous
les couples de sommets) il existe de nombreux algorithmes permettant lobtention dune solution.
Nous nous contenterons simplement ici de decrire les algorithmes les plus classiques, sans
explorer toutes les situations.
Dans beaucoup de situations, les longueurs sont positives. On utilisera alors lalgorithme
de Moore-Dijkstra pour calculer le plus court chemin dun sommet (arbitrairement le sommet
numero 1) ` a tous les autres.
Posons X = {1, 2, . . . , n}. Soit l
ij
la longueur de larc (i, j) si (i, j) A. Denissons

(i)
comme la longueur minimum des chemins du sommet 1 au sommet i ; en particulier

(1) = 0.
Lalgorithme proc`ede en n1 iterations. Au debut de chacune des iterations, lensemble des
sommets est partitionne en deux sous-ensembles S et

S = X\S. Le sous-ensemble S (initialise
` a {1}) contient les sommets denitivement marques, cest-` a-dire les sommets pour lesquels la
marque (i) represente eectivement la longueur du plus court chemin entre le sommet 1 et le
sommet i. Le complementaire

S contient tous les sommets ayant une marque provisoire denie
par :
k

S : (k) = min
iS
1
k
((i) +l
ik
)
On demontre alors aisement qu` a une etape quelconque si j est le sommet de marque provi-
soire (j) minimale cest-` a-dire :
(j) = min
k

S
((k))
21
alors (j) =

(j), cest-` a-dire que le sommet j peut etre inclus dans lensemble S des sommets
denitivement marques (et, bien s ur, enleve de

S).
On mettra donc ` a jour lensemble S en incluant j (S S {j}) ainsi que les marques provi-
soires des sommets k de

S relies par un arc (j, k). Ceci se fera en considerant successivement tous
les sommets k (j)

S et en rempla cant (k) par (j) +l
jk
chaque fois que (j) +l
jk
< (k).
Si lon souhaite determiner explicitement le plus court chemin, et non pas seulement sa longueur,
on conservera, dans un tableau de predecesseurs, linformation selon laquelle le predecesseur de
k est j.
Algorithme 1 (Moore-Dijkstra)
Recherche du plus court chemin entre deux sommets dans un graphe ` a longueurs positives.
(a) - Initialisations

S = {2, 3, . . . , n}
(1) = 0
(i) =
_
l
1i
si i (1)
+ sinon
(b) - Selectionner j tel que
(j) = min
k

S
((k))
Faire

S

S\{j}
Si

S = alors FIN
(c) - Faire pour tout i

S (j)
(i) min((i), (j) +l
ji
)
Retourner en (b)
On trouvera en annexe A, un programme Matlab
r
implementant cet algorithme. Sous
Scilab
c
, la commande relative ` a la recherche du plus court chemin entre deux sommets se
nomme shortest path.
Considerons, ` a titre dexemple, le graphe de la gure 10. Les iterations de lalgorithme
precedent sont les suivantes :
(a)

S = {2, 3, 4, 5, 6}, (1) = 0, (2) = 7, (3) = 1, (4) = (5) = (6) =
(b) j = 3,

S = {2, 4, 5, 6}
(c)

S (3) = {2, 5, 6}, (2) = min(7, 1 + 5) = 6, (5) = min(, 1 + 2) = 3,
(6) = min(, 1 + 7) = 8
(b) j = 5,

S = {2, 4, 6}
(c)

S (5) = {2, 4}, (2) = min(6, 3 + 2) = 5, (5) = min(, 3 + 5) = 8
(b) j = 2,

S = {4, 6}
(c)

S (2) = {4, 6}, (4) = min(8, 5 + 4) = 8, (6) = min(8, 5 + 1) = 6
(b) j = 6,

S = {4}
(c)

S (2) =
(b) j = 4,

S =
22
3
4
6
5 2
1
7
4
5
1
2
5
1
3
7
2
Fig. 10 Graphe oriente
Les longueurs des plus courts chemins seront donc :
(1) = 0, (2) = 5, (3) = 1, (4) = 8, (5) = 3 et (6) = 6
On peut egalement sinteresser ` a la determination des plus courts chemins entre toutes les
paires de sommets (on se place toujours dans la situation o` u les longueurs sont toutes positives).
On peut, bien s ur, utiliser lalgorithme precedent, mais son ecacite est faible devant ce type
de probl`eme. On pref`erera un algorithme se rattachant aux methodes matricielles. Lalgorithme
de Floyd que nous allons presenter est particuli`erement simple dans sa mise en uvre.
Notons L = (l
ij
) la matrice n n dont le terme (i, j) est egal ` a la longueur de larc (i, j) si
(i, j) A et + sinon (pour les termes diagonaux, on pose l
ii
= 0).
Pour 1 k n, notons L
(k)
= (l
(k)
ij
) la matrice dont le terme (i, j) represente la longueur
minimale dun chemin dorigine i et dextremite j, et astreint ` a la condition que tous les sommets
intermediaires appartiennent au sous-ensemble {1, 2, . . . , k}.
Pour k = 0, on a L
(0)
= L, puisque l
ij
est la longueur du chemin direct (unique) entre i et j
(sans sommet intermediaire). On remarque alors que les matrices L
(k)
sont liees par la relation
de recurrence :
l
(k)
ij
= min
_
l
(k1)
ij
, l
(k1)
ik
+l
(k1)
kj
_
En eet, deux situations peuvent se produire suivant que le plus court chemin de i ` a j ` a
sommets intermediaires dans {1, 2, . . . , k} emprunte le sommet k ou non.
Dans le premier cas, ce chemin est forme dun sous-chemin entre i et k, suivi dun sous-chemin
entre k et j, chacun ne pouvant utiliser comme sommets intermediaires que des sommets de
{1, 2, . . . , k 1} et devant etre de longueur minimale. On doit donc avoir l
(k)
ij
= l
(k1)
ik
+l
(k1)
kj
.
Dans le second cas, on doit evidemment avoir l
(k)
ij
= l
(k1)
ij
.
La matrice L
(n)
, donnant lensemble des valeurs des plus courts chemins dans le graphe,
pourra donc etre determinee en n etapes de recurrence ` a partir de la relation precedente.
23
Algorithme 2 (Floyd)
Recherche de la matrice des plus courts chemins dans un graphe ` a longueurs positives.
Pour k de 1 ` a n
Pour tout i et j de 1 ` a n faire
l
ij
= min (l
ij
, l
ik
+l
kj
)
Comme pour lalgorithme precedent, si lon souhaite, en plus de la longueur des chemins,
exhiber explicitement le chemin, on mettra ` a jour, au f ur et ` a mesure de lintroduction dun
nouveau sommet k, une matrice de predecesseurs.
Un programme Matlab
r
implementant cet algorithme est donne en annexe B.
7 Arbres et arborescences
7.1 Denitions et proprietes
Denition 19
Un arbre est un graphe connexe sans cycles.
Un graphe sans cycle qui nest pas connexe est appele une foret (chaque composante
connexe est un arbre).
Par denition meme, un arbre est donc un graphe simple. On constate egalement que
T = (X, T) est un arbre si et seulement sil existe une chane et une seule entre deux som-
mets quelconques.
Etant donne un graphe quelconque G = (X, A) un arbre de G est un graphe partiel connexe
et sans cycles. Si ce graphe partiel inclut tous les sommets du graphe G, larbre est appele
arbre maximum ou arbre couvrant. Une foret de G est un graphe partiel sans cycle de G (non
necessairement connexe). Une foret maximale de G est une foret de G maximale pour linclusion
(lajout dune seule arete supplementaire du graphe ` a cette foret cree un cycle).
Considerons un graphe G = (X, A) comportant n sommets, m arcs et p composantes
connexes ; lalgorithme suivant permet de construire une foret maximale de G.
Initialement, tous les arcs du graphe sont incolores. La methode consiste ` a examiner suc-
cessivement tous les arcs du graphe (dans nimporte quel ordre) et ` a les colorer soit en rouge
soit en vert.
A une etape quelconque, G
c
est le graphe partiel engendre par les arcs colores (rouges ou
verts) et G
r
le graphe partiel engendre par les arcs rouges.
Chaque fois quun nouvel arc a incolore est examine :
soit il passe par a un cycle elementaire dont tous les arcs (autres que a) sont rouges ; on
colore alors larc en vert, le nombre de connexite de G
c
et de G
r
reste constant,
soit un tel cycle nexiste pas, auquel cas larc a permet de connecter deux sommets qui
netaient pas encore connectes dans G
c
; on colore larc a en rouge, le nombre de connexite
de G
c
et de G
r
decrot de 1.
24
Pour montrer que le graphe partiel G
r
obtenu est bien une foret maximale de G, il sut
dobserver qu` a tout instant, le graphe G
r
est sans cycle (cest donc bien une foret de G) ; ` a la n
de la procedure, elle est bien maximale pour linclusion car, en ajoutant un arc vert quelconque
` a G
r
, on cree un cycle.
On peut egalement facilement demontrer les proprietes suivantes :
Si G poss`ede n sommets et p composantes connexes, une foret maximale de G comporte
exactement n p arcs.
Soit T = (X, T) une foret maximale de G = (X, A). Alors T et G ont le meme nombre de
connexite.
Soit T = (X, T) une foret maximale de G = (X, A). Alors, par tout arc a

T = A T, il
passe un cycle et un seul
a
dont tous les arcs (autres que a) appartiennent ` a T.
Cette derni`ere propriete est importante car elle permet de construire une base de cycles dun
graphe G (voir 4.5).
Soit un graphe G = (X, A) comportant n sommets, m arcs et p composantes connexes. Soit
T = (X, T) une foret maximale de G = (X, A) et pour a

T = A T, notons
a
le cycle
(unique) contenu dans T + {a}. Les cycles {
a
} forment une base de cycles du graphe G, dont
la dimension est le nombre cyclomatique de G.
La notion darborescense est ladaptation de la structure darbre aux 1-graphes orientes.
Denition 20
Un graphe G est une arborescence sil existe un sommet R appele racine de G tel
que, pour tout sommet S de G, il existe un chemin et un seul de R vers S.
La notion darborescence couvrante se denit comme celle darbre couvrant, mais elle est
plus delicate car il faut trouver une racine (qui nexiste pas toujours).
7.2 Arbres couvrants de poids minimum
Considerons le probl`eme qui consiste ` a relier n villes par un reseau cable de la mani`ere la plus
economique possible. On suppose connue la longueur l
ij
= l(a
ij
) la longueur de c able necessaire
pour relier les villes i et j. Le reseau doit evidemment etre connexe et il ne doit pas admettre de
cycles pour etre de co ut minimal ; cest donc un arbre et ce doit etre larbre maximum le plus
economique.
Le probl`eme ` a resoudre se pose donc dans les termes suivants :
Denition 21
Soit un graphe non oriente G, connexe, pondere par une fonction positive l attachee
aux aretes. Soit un arbre couvrant T = (X, B) deni comme graphe partiel de G
avec un ensemble daretes B. Son poids (ou co ut) total est :
25
l(T) =

aB
l(a)
On dit que T est un arbre couvrant de poids minimal de G si l(T) est minimal parmi
les poids de tous les arbres couvrants possibles de G.
On peut montrer que si toutes les aretes sont de poids dierents, larbre couvrant de poids
minimal est unique. Plusieurs algorithmes ont ete proposes pour resoudre ce probl`eme. Les plus
simples sont les algorithmes de Prim et de Kruskal.
Lalgorithme de Prim consiste ` a b atir progressivement un arbre ` a partir dun sommet quel-
conque (arbitrairement le sommet numero 1) et en y greant, ` a chaque etape, larete de poids
minimal parmi celles qui permettent de maintenir un graphe partiel qui soit un arbre. Si le
graphe est connexe, le processus sarrete avec un arbre couvrant. Sinon, il aboutit ` a un arbre
couvrant pour une composante connexe ; on poursuit avec les autres composantes connexes pour
obtenir une foret couvrante.
Plus precisement, on construit progressivement, ` a partir du sommet numero 1, un sous-
ensemble de sommet S X contenant {1} et un sous-ensemble T A tel que le graphe partiel
(S, T) soit un arbre de poids minimal du sous-graphe engendre par S. Pour cela, ` a chaque etape,
on selectionne dans le cocycle :
(S) = {(k, l) | (k, l) A, k S, l X\S}
larete de poids minimal, soit a = (i, j). Les sous-ensembles S et T sont alors augmentes en leur
ajoutant le sommet j et larete a respectivement : S S {j}, T T {a}.
La mise en uvre de cet algorithme peut se faire aisement ` a laide dune procedure de mar-
quage de la fa con suivante. On associe, ` a chaque sommet i, un nombre reel (i) appele marque du
sommet i. A une etape quelconque, la marque (i) dun sommet i X\S represente le poids de
larete de poids minimal dans lensemble des aretes joignant i ` a S. Dautre part, on conserve dans
un tableau lindice (i) de larete ayant permis dattribuer au sommet i, la marque (i). Ces
informations permettent aisement dobtenir, ` a letape courante, larete de poids minimal dans le
cocycle (S) : il sut en eet de determiner le sommet i X\S ayant une marque minimale et
larete cherchee est (i). Par ailleurs, lorsque le sous-ensemble S est augmente du sommet i, les
marques sont mises ` a jour en examinant toutes les aretes issues de i et dont lautre extremite j ne
fait pas encore partie de larbre (j X\S) et en eectuant la substitution (j) min((j), l
ij
).
Chaque fois quune marque est amelioree, le tableau est mis ` a jour. Si le graphe est connexe,
lalgorithme sarrete lorsque S = X (tous les sommets ont ete integres ` a larbre). Les elements du
tableau representent alors les indices des aretes constituant larbre couvrant de poids minimal.
Algorithme 3 (Prim)
Recherche dun arbre couvrant de poids minimal.
(a) - Initialisations
(1) = 0
(i) = , i {2, 3, . . . , n}
(i) = , i {1, 2, . . . , n}
S =
26
(b) - Selectionner i tel que (i) = min
jX\S
((j))
Si (i) = ou S = X alors FIN
S S {i}
(c) - Pour toutes les aretes a = (i, j) telles que j X\S faire
Si l
ij
< (j) alors (j) = l
ij
, (j) = a
Retourner en (b)
Lannexe C presente une implementation Matlab
r
de cet algorithme et les resultats obtenus
sur un exemple.
Le probl`eme de loptimisation du choix dune arborescence couvrante est plus dicile que
pour les arbres couvrants parce quil faut verier que le sommet choisi au depart est bien racine
de larbre. Plusieurs algorithmes ont ete developpes pour resoudre ce probl`eme ; nous ne les
decrirons pas ici.
8 Reseaux, reseaux de transport et probl`emes de ots
8.1 Denitions
Denition 22
Un graphe fortement connexe, sans boucle et ayant plus dun sommet, est appele un
reseau.
On appelle nud dun reseau un sommet qui a plus de deux arcs incidents. Les autres
sommets sont appeles antinuds.
On appelle branche tout chemin pour lequel seuls les premiers et derniers sommets
sont des nuds.
Dans un graphe oriente G, un ot est laectation dune valeur reelle ` a chaque arc de G,
representant une quantite transportee sur cet arc, de telle sorte que, en chaque sommet, la
somme des ots entrants soit egale ` a la somme des ots sortants (loi de Kirchho : conservation
des ux en chaque sommet).
Parmi les probl`emes les plus classiques, on peut citer celui de la recherche dun ot maxi-
mal. On se donne une capacite maximale sur chaque arc qui sera une borne superieure du ot
autorise sur cet arc. Le probl`eme du ot maximal consiste ` a determiner un ot dont la valeur
en un certain lieu est maximale. On peut, de plus, se donner un co ut de transport dune unite
de ot sur chaque arc et chercher le ot maximal de co ut minimal.
Denition 23
On appelle reseau de transport un graphe oriente antisymetrique value G = (X, A, C),
sans boucle et dans lequel il existe :
un sommet x
1
sans predecesseur (cest-` a-dire
1
(x
1
) = ) nomme entree ou
source du reseau,
un sommet x
n
sans successeur (cest-` a-dire (x
n
) = ) nomme sortie ou puits du
reseau,
27
et tel quau moins un chemin unisse x
1
` a x
n
dans G.
La fonction de ponderation C est supposee positive et lon nomme capacite de larc
a le nombre C(a).
Denition 24
Si lon designe par A

x
lensemble des arcs sortants du sommet x et A
+
x
lensemble
des arcs entrants de ce meme sommet x, on dit quune fonction (a) denie sur A
et ` a valeurs reelles est un ot pour le reseau de transport si :
il est positif : (a) > 0, a A,
il verie la loi des nuds de Kirchho :

aA

x
(a)

aA
+
x
(a) = 0, x = x
1
et x = x
n
il ne depasse pas la capacite des arcs : (a) C(a), a A.
Si x nest ni x
1
ni x
n
, la quantite entrante en x doit etre egale ` a la quantite sortante que
nous designons par
x
:

x
=

aA

x
(a) =

aA
+
x
(a)
Si est un ot sur un reseau de transport G, alors on a
x
1
=
xn
; cette quantite sappelle
la valeur du ot.
La principale question qui se pose pour un reseau de transport donne est de determiner un
ot de valeur maximale ainsi que les ots le long de chaque arc. Il arrive frequemment egalement
que lon doive considerer des reseaux avec des capacites localisees non seulement sur les aretes
mais egalement sur les sommets. Cest notamment le cas pour les reseaux telephoniques pour les-
quels la limite de capacite est autant due aux lignes quaux centraux. On peut ramener aisement
ce probl`eme au precedent ; il sut de dedoubler chaque sommet en une entree et une sortie liees
par un arc ayant pour capacite celle quon attribuait precedemment au sommet.
Dans ce qui suit, les valeurs des ots et des capacites sont considerees comme enti`eres. Si
lon ne peut pas se ramener directement ` a cette situation, on approche les valeurs reelles par
des rationnels, on reduit ces nombres au meme denominateur commun d et lon choisit comme
unite de reference 1/d.
8.2 Recherche dun ot complet
Denition 25
Pour un ot dans un reseau de transport G = (X, A, C), on dit quun arc est
sature si on a (a) = C(a).
Le ot est dit complet si tout chemin allant de x
1
` a x
n
contient au moins un arc sature.
Si lon consid`ere le graphe partiel engendre par les arcs non satures par le ot et si le ot nest
pas complet, il existe necessairement un chemin allant de lentree ` a la sortie. On peut alors
denir un nouveau ot pour le reseau en augmentant de 1 le ot de chacun des arcs constituant le
chemin ; la valeur du ot est alors egalement augmentee de 1. On peut donc progressivement
28
augmenter la valeur dun ot incomplet jusqu` a ce quil soit complet. En tenant compte des
dierences entre les capacites et la valeur du ot sur les arcs de , on peut connatre davance
laugmentation possible du ot. Cependant, le ot complet ainsi obtenu nest pas, en general, le
ot maximal.
8.3 Amelioration du ot
Soit un ot complet. On va utiliser une procedure iterative pour identier et marquer tous
les sommets du graphe o` u il est possible de faire transiter une unite de ot supplementaire.
On denit un processus detiquetage de certains sommets du graphe. En x
1
, on place une
etiquette + . Soit x un sommet dej` a marque :
on marque avec une etiquette +x tout successeur y non marque de x pour lequel le ot
nest pas ` a son maximum ((x, y) A et (x, y) < C(x, y)).
on marque avec une etiquette x tout predecesseur y non marque de x pour lequel le
ot nest pas nul ((x, y) A et (y, x) > 0).
Letiquette a pour r ole de donner le nom dun predecesseur ou dun successeur dun sommet
donne en indiquant si le ot peut etre augmente dans le sens de parcours (etiquette +x ) ou
diminue sil est dans le sens contraire (etiquette x ).
Si lon parvient jusquau marquage du sommet x
n
avec cette procedure, cest quil existe une
chane de x
1
` a x
n
dont tous les sommets sont marques avec lindice du sommet precedent au
signe pr`es. Notons que lon est pas oblige de marquer tous les sommets (tous les successeurs ou
predecesseurs dun sommet donne) ; lobjectif etant simplement delaborer une chane marquee
de x
1
` a x
n
.
Soit alors :
_
_
_

(a) = (a) si a /

(a) = (a) + 1 si a et si a est orientee dans le sens de

(a) = (a) 1 si a et si a est orientee dans le sens contraire de


On verie aisement que

est encore un ot. Comme

xn
=
xn
+ 1, la valeur du ot est
superieure, donc meilleure que celle de .
On peut alors systematiser lidee precedente en introduisant la notion de graphe decart ou
reseau residuel.
Denition 26
Soit un reseau de transport G = (X, A, C) possedant un ot complet . On appelle
graphe decart ou reseau residuel, le reseau

G() = (X, A, C) tel que :
si a A et (a) < C(a) alors a A et C(a) = C(a) (a)
si a = (x, y) A et (a) > 0 alors a
1
= (y, x) A et C(a
1
) = (a)
Le reseau residuel indique le long de quels arcs on peut augmenter ou diminuer le ot.
Linteret du graphe decart apparat dans le theor`eme suivant.
29
Theor`eme 4
Soit un ot de G (de x
1
` a x
n
) et

G() le reseau residuel associe ` a . Une condi-
tion necessaire et susante pour que le ot soit maximal est quil nexiste pas de
chemin de x
1
` a x
n
dans

G().
La demonstration de ce theor`eme sappuie sur le lemme des arcs colores de Minty que nous
ne detaillerons pas ici.
8.4 Recherche dun ot maximal : algorithme de Ford et Fulkerson
A partir des resultats precedents, on peut maintenant proposer une methode constructive de
recherche dun ot maximal.
Algorithme 4 (Ford et Fulkerson)
Recherche dun ot maximum.
(a) - Iteration k = 0
Partir dun ot initial
0
(compatible avec les contraintes de capacite),
par exemple
0
= (0, 0, . . . , 0).
(b) - A literation k, soit
k
le ot courant.
Rechercher un chemin
k
de x
1
` a x
n
dans le graphe decart

G(
k
).
Sil nen existe pas, FIN : le ot
k
est maximal.
(c) - Soit
k
la capacite residuelle du chemin
k
(minimum des capacites residuelles des arcs du chemin).
Denir le ot
k+1
par :
_

k+1
a
=
k
a
+
k
si a et si a est orientee dans le sens de

k+1
a
=
k
a

k
si a et si a est orientee dans le sens contraire de
Faire k k + 1 et retourner en (b).
Par denition du graphe decart, les ots
k
sont tous compatibles avec les capacites. Par
ailleurs,
k
est positif ` a chaque iteration et, par suite, lalgorithme produit une sequence de ots
compatibles de valeurs strictement croissantes.
A chaque etape, la methode consiste donc ` a rechercher une chane joignant x
1
` a x
n
. Il
est evident que le choix dune telle chane nest pas unique. Plusieurs travaux ont tente de
systematiser ce choix an dameliorer les performances moyennes de lalgorithme.
8.5 Exemple traite manuellement
On consid`ere le graphe de la gure 11 (les nombres associes aux arcs representent les capa-
cites), pour lequel on cherche ` a determiner un ot maximal entre le sommet 1 et le sommet 7.
Toutes les composantes du ot initial sont considerees nulles
0
= (0, 0, . . . , 0) (gure
12a) ; le graphe decart

G(
0
) est represente gure 12b.
Le chemin choisi est trace en pointilles, sa capacite residuelle vaut
1
= min(5, 4, 7) = 4.
On augmente donc de quatre le ot sur les arcs composant le chemin (ils sont tous orientes
30
1
3
4
6
7 5
2
2
2
8 5
3
7
3
5
4
Fig. 11 Graphe oriente elementaire
1
3
4
6
7 5
0
0
2
0 0
0
0
0
0
0
1
3
4
6
7 5
2
2
2
8 5
3
7
3
5
4
Fig. 12 Flot initial et graphe decart
positivement). On obtient un nouveau ot
1
, ainsi que son graphe decart

G(
1
), tous deux
representes aux gures 13a et 13b.
1
3
4
6
7 5
0
0
2
0 0
0
4
0
4
4
1
3
4
6
7 5
2
2
2
8 5
3
3
3
1
4
4
4
Fig. 13 Flot ` a literation numero 1 et graphe decart
Le nouveau chemin est toujours represente en traits pointilles. Cette fois, sa capacite residuelle
vaut
2
= min(1, 2, 3) = 1. Le nouveau ot
2
et le graphe decart correspondant sont donnes ` a
la gure 14.
En poursuivant ainsi lalgorithme, on obtient les situations decrites aux gures 15 et 16.
Apr`es literation numero 4, on constate quil nexiste plus de chemin joignant le sommet 1 au
sommet 7 dans le graphe decart. Lalgorithme sach`eve donc et le ot maximal est celui obtenu
lors de cette derni`ere etape
1
=
7
= 9.
31
1
3
4
6
7 5
1
0
2
0 0
1
4
0
5
4
1
3
4
6
7 5
1
2
2
8 5
2
3
3
5
4
4
1
1
Fig. 14 Flot ` a literation numero 2 et graphe decart
1
3
4
6
7 5
1
0
2
2 2
3
4
0
5
4
1
3
4
6
7 5
1
2
2
6 3
3
3
5
4
4
1
3
2
2
Fig. 15 Flot ` a literation numero 3 et graphe decart
1
3
4
6
7 5
1
2
2
4 2
3
4
2
5
4
1
3
4
6
7 5
1
2
4 3
3
1
5
4
4
1
3
2
2
2
2
Fig. 16 Flot ` a literation numero 4 et graphe decart
Notons egalement que lalgorithme peut etre adapte au cas o` u les capacites des arcs ont
des bornes inferieures non nulles (positives, voire meme negatives). En pratique, on associe ` a la
plupart des reseaux de transport, une notion de co ut unitaire du transport qui se traduit par
lassociation, ` a chaque arc a du reseau, dun nombre reel w(a) representant ce co ut unitaire. Le
co ut total dun ot est deni comme la somme des co uts associes aux ots elementaires :
W() =

aA
w(a)(a)
On peut alors se poser le probl`eme consistant ` a rechercher, parmi les ots ` a valeur maximale,
celui qui est ` a co ut minimal. Lalgorithme de Ford et Fulkerson peut egalement etre adapte ` a
cette situation.
32
8.6 Recherche dun ot maximal `a co ut minimal
La recherche dun ot maximal ` a co ut minimal peut etre resolue ` a laide de lalgorithme de
Busacker-Gowen qui permet de determiner la famille compl`ete de tous les ots de co ut minimal
dun sommet x
1
` a un sommet x
n
et de valeur = 1, 2, ..., v. Nous enon cons ici cet algorithme
iteratif sous forme litterale et laissons le soin au lecteur den eectuer une description plus in-
formatique.
A literation numero k, le ot courant
k
est suppose etre un ot de valeur
k
0
et de co ut
minimal parmi lensemble de tous les ots de valeur
k
0
.
Soit

G(
k
) le graphe decart relatif ` a
k
; on attribue aux arcs de

G(
k
) les co uts w et les
capacites c suivantes :
si a = (x
i
, x
j
) A et (a) < c(a), larc a
+
= (x
i
, x
j
) a un co ut w(a) = w(a) et une
capacite c(a) = c(a) (a) > 0,
si a = (x
i
, x
j
) A et (a) > 0, larc a

= (x
j
, x
i
) a un co ut w(a) = w(a) et une capacite
c(a) = (a).
Soit alors
k
un chemin de co ut minimal relativement aux co uts w entre x
1
et x
n
sur le
graphe decart

G(
k
) ; on note
k
la capacite residuelle de ce chemin. On denit alors le ot

k+1
comme dans lalgorithme de Ford-Kulkerson. Si est le vecteur associe au chemin
k
(cest-` a-dire tel que
a
= 1 si a
+

k
et
a
= 1 si a


k
), on a
k+1
=
k
+
k
et le ot

k+1
est un ot de co ut minimal de valeur
k
0
+
k
.
On notera qu` a chaque iteration, on doit rechercher le plus court chemin (au sens du chemin
de co ut minimal) de x
1
` a x
n
dans un graphe o` u la longueur (le co ut) des arcs peut etre negative ;
il conviendra donc demployer un algorithme adapte ` a cette situation (lalgorithme de Dijkstra
ne convient pas). Il existe cependant une amelioration de cet algorithme proposee par Edmonds
et Karp et basee sur une technique de modication des co uts permettant de les rendre tous
positifs en conservant cependant la meme hierarchie de chemin sur le graphe decart ; dans cette
situation lalgorithme de Dijkstra peut etre utilise.
9 Couplages
Les probl`emes de couplage dans les graphes quelconques (ou dans les graphes bipartis) ont
un double interet. Le premier, le plus evident, vient de leurs applications : ils generalisent di-
rectement les probl`emes daectation et ils interviennent dans certains probl`emes importants
de la theorie de graphes : probl`emes de tournees, determination de plus courtes chanes dans
un graphe non oriente, etc. Le second, dordre theorique, vient de ce quils se rattachent ` a une
classe de probl`emes de programmation lineaire en nombres entiers.
Denition 27
Etant donne un graphe simple non oriente G = (X, A), un couplage est un sous-
ensemble daretes K A tel que deux aretes quelconques de K ne sont pas adja-
centes.
Un sommet i X est dit sature par le couplage K A sil existe une arete de K
incidente ` a i.
Un couplage K qui sature tous les sommets du graphe est appele couplage parfait.
Un couplage maximal est un couplage de cardinalite maximale.
33
9.1 Le probl`eme du couplage maximal
Denition 28
Si K A est un couplage de G = (X, A), on appelle chane alternee (relativement ` a
K) une chane elementaire de G dont les aretes appartiennent alternativement ` a K
et

K = AK.
Une chane alternee augmentante ou chane ameliorante est une chane alternee joi-
gnant deux sommets insatures.
En convenant de dessiner les aretes dun couplage par des traits epais, les aretes de

K = AK
restant en traits ns, une chane alternee est une chane elementaire dont les aretes sont alter-
nativement nes et epaisses.
Denition 29
Etant donne un couplage K A, considerons une chane alternee L dont chaque
extremite est un sommet insature ou est telle que lunique arete de K qui lui est
incidente soit dans L. Alors le couplage K

obtenu en echangeant le r ole des aretes


nes et epaisses le long de la chane L est encore un couplage de G. Cette operation
qui fait passer du couplage K au couplage K

est appelee transfert le long de la


chane alternee L.
Une operation de transfert le long dune chane alternee augmentante, augmente la cardina-
lite du couplage dune unite.
Par exemple, sur le graphe de la gure 17, les aretes (2, 3) et (5, 6), dessinees en traits epais,
forment un couplage K de cardinalite egale ` a 2. La chane L = {1, 2, 3, 4} est une chane alternee
dont les extremites sont des sommets insatures. Cest donc une chane alternee augmentante.
Un transfert le long de cette chane produit le nouveau couplage K

= {(1, 2), (3, 4), (5, 6)} de


cardinalite egale ` a 3.
3
4
6
5 2
1
3
4
6
5 2
1
Fig. 17 Couplages initial et nal
Pour cet exemple particulier, ce couplage est maximal, car, pour un graphe dordre n, la
cardinalite dun couplage maximal est egale ` a la partie enti`ere de n/2.
Le theor`eme suivant permet de caracteriser un couplage maximal.
Theor`eme 5
Un couplage K est maximal si et seulement sil nexiste pas de chane alternee aug-
mentante relativement ` a K.
34
Ce theor`eme montre que pour rechercher un couplage maximal, il sut donc de savoir trouver
une chane alternee augmentante (sil en existe) relativement ` a un couplage K A quelconque.
La procedure pour construire un couplage maximal K pour G = (X, A) est la suivante :
1. Initialiser K =
2. Trouver un chane ameliorante K
a
de K, eectuer le transfert le long de cette chane
et remplacer le couplage K par celui ainsi obtenu (dont la cardinalite a necessairement
augmente de un).
3. Repeter letape 2 jusqu` a ce quil ne soit plus possible de creer une nouvelle chane
ameliorante ; K est alors un couplage maximal.
Le probl`eme qui se pose alors est de savoir construire, pour un couplage donne, une chane
alternee augmentante. Pour rechercher des chanes alternees dorigine xee i
0
, on construit un
arbre alterne T de racine i
0
tel que :
T = (Y, T) est un sous-graphe partiel connexe et sans cycle de G,
pour tout j Y , la chane (unique) L
T
(j) de larbre entre i
0
et j est une chane alternee,
les chanes reliant i
0
aux sommets pendants ont un nombre pair daretes.
Nous ne detaillerons pas ici les multiples situations particuli`eres auxquelles on peut etre
confrontes dans la construction de cet arbre. Nous nous contenterons de decrire la situation la
plus courante.
On choisit tout dabord comme racine de larbre (niveau 0) un sommet insature relativement
au couplage courant. Au niveau i impair, on ins`ere dans larbre un sommet adjacent ` a lun des
sommets inseres au niveau i 1 par le biais dune arete nappartenant pas au couplage cou-
rant, ainsi que cette arete. Au niveau i pair, on ins`ere dans larbre alterne, un sommet adjacent ` a
lun des sommets inseres au niveau i1 par le biais dune arete appartenant au couplage, ainsi
que cette arete. On continue ` a construire progressivement cet arbre jusqu` a linsertion, ` a un ni-
veau impair, dun sommet insature, ou bien jusqu` a ce que lon ne puisse plus inserer de sommet.
Sil existe une chane alternee augmentante du couplage courant, on nit necessairement par
inserer un sommet insature s. La chane reliant s ` a la racine de larbre est alors une chane
alternee augmentante.
Considerons le graphe biparti de la gure 18 o` u lon a materialise, ` a laide daretes epaisses,
le couplage obtenu apr`es une etape determinee de lalgorithme precedent.
x5 x4 x3 x2 x1
f5 f4 f3 f2 f1 f
x
Fig. 18 Couplage courant
35
Choisissons de construire un arbre alterne dont la racine est le sommet x
1
insature par ce
couplage.
x5
x3
x2
x1 f5
f4
f3
f2
f1
Fig. 19 Arbre alterne de racine x
1
Au niveau 1 de larbre, la seule possibilite est dinserer larete (x
1
, f
5
) et le sommet f
5
. Au
niveau 2, on ins`ere larete (f
5
, x
5
) appartenant au couplage (cest encore la seule possibilite). Au
niveau 3, les deux aretes (x
5
, f
3
) et (x
5
, f
4
) nappartenant pas au couplage peuvent etre inserees.
On ins`ere ensuite les aretes (f
4
, x
3
) et (f
3
, x
2
), ainsi que les sommets (satures) correspondants.
Le sommet x
3
est alors un sommet pendant de larbre, en revanche, on peut inserer, au niveau
5, les aretes (x
2
, f
1
) et (x
2
, f
2
) conduisant ` a larbre alterne de la gure 19.
Comme les sommets f
1
et f
2
sont tous deux insatures, on a ainsi cree deux chanes ameliorantes
qui permettent daugmenter, en eectuant un transfert, la cardinalite du couplage. Si lon choisit
par exemple, la chane f
1
, x
2
, f
3
, x
5
, f
5
, x
1
), le nouveau couplage est represente gure 20.
x5 x4 x3 x2 x1
f5 f4 f3 f2 f1 f
x
Fig. 20 Couplage augmente
Pour cet exemple particulier, on observe quil sut dajouter ` a ce dernier couplage larete
(x
4
, f
2
), reliant les deux seuls sommets insatures, pour obtenir un couplage parfait qui est, bien
s ur, un couplage maximal du graphe.
9.2 Couplage maximal et ot maximal
Pour determiner un couplage maximal sur un graphe biparti G = (X, Y, ), on peut recou-
rir ` a lartice suivant. On construit un reseau de transport (voir denition 23) en ajoutant au
graphe une origine S liee ` a tous les sommets de X et une destination P liee ` a tous les sommets
de Y (voir gure 21). On xe ` a 1 les capacites de tous les arcs de ce reseau.
Un couplage permet de selectionner un certain nombre daretes du graphe biparti. Si lon fait
passer une unite de ot par ces aretes et sur les aretes correspondantes vers S et P (en faisant
passer un ot nul sur les autres aretes), on obtient bien un ot sur le reseau. En eet, la loi de
36
Kirchho en un sommet quelconque de X ou de Y exprime ici quil y a au plus une arete du
couplage y parvenant. Reciproquement, un ot sur ce reseau ne peut transporter au plus quune
unite de ot sur chaque arete et lensemble des aretes transportant une unite de ot entre X et
Y determine un couplage sur G. En eet, si deux aretes retenues etaient adjacentes en x X,
la loi de Kirchho en x imposerait un ot de deux unites au moins sur larc entre S et x, ce qui
depasse la capacite imposee. La valeur du ot est donc egale au nombre daretes constituant le
couplage.
Le probl`eme du couplage maximal se ram`ene ainsi ` a un probl`eme de ot maximal dans un
reseau de transport, qui peut etre resolu ` a laide de lalgorithme de Ford-Fulkerson. La gure
21 (partie gauche) montre un ot complet et non maximal qui peut etre ameliore en un ot
maximal (partie droite).
x1
x2
x3
x4
x5
y1
y2
y3
y4
y5
S P
x1
x2
x3
x4
x5
y1
y2
y3
y4
y5
S P
Fig. 21 Flot complet et maximal
9.3 Couplage de poids maximal
A chaque arete a A du graphe G(X, A), on associe maintenant un nombre reel w(a) ap-
pele poids de larete a. Le poids dun couplage K A est la somme des poids des aretes qui
le constituent, soit w(K) =

aK
w(a). Le probl`eme du couplage de poids maximal est la re-
cherche dun couplage tel que son poids soit maximal sur lensemble de tous les couplages de G.
On remarquera quun couplage de poids maximal nest pas necessairement un couplage maximal
(couplage de cardinalite maximale).
Denition 30
Soit K A un couplage de G = (X, A), on rappelle quune chane alternee augmen-
tante est une chane alternee joignant deux sommets insatures.
Une chane alternee reductrice est une chane alternee impaire dont les aretes extremes
sont dans K.
Une chane alternee conservative est une chane alternee paire dont une extremite
est un sommet isole.
On remarquera de mani`ere evidente que le transfert le long dune chane alternee augmen-
tante augmente la cardinalite du couplage dune unite ; le long dune chane reductrice, il la
reduit dune unite et le long dune chane conservative, il ne la change pas.
37
Denition 31
Le co ut reduit dune chane alternee L (augmentante, reductrice ou conservative)
relative au couplage K vaut :
(L) = w(L

K) w(L K)
Un cycle alterne pair est une chane alternee paire dont les extremites concident.
Un transfert le long dun cycle alterne pair conserve la cardinalite du couplage.
Le co ut reduit du cycle est :
(L) = w(

K) w( K)
Le resultat suivant caracterise un couplage de poids maximal en termes dexistence de chanes
alternees.
Theor`eme 6
Un couplage K est de poids maximal si et seulement sil nexiste pas de chane al-
ternee, ni de cycle alterne pair de co ut reduit strictement positif relativement ` a K.
Le theor`eme ci-dessous montre que lon peut construire, de proche en proche, des couplages
K
1
, K
2
, ..., K
p
de cardinalite 1, 2, ..., p et de poids maximal, par des transferts successifs le long
de chanes alternees augmentantes et de co ut reduit maximal. On generalise ainsi le resultat de
Busacker-Gowen sur la recherche de ot maximal de co ut minimal.
Theor`eme 7
Soit K un couplage de cardinalite p de poids maximal (sur lensemble des couplages
de cardinalite p) et soit L une chane alternee augmentante (relativement ` a K) de
co ut reduit maximal. Le couplage K

obtenu ` a partir de K par transfert le long de


L est de poids maximal parmi tous les couplages de cardinalite p + 1.
9.4 Probl`emes daectation
La formulation generale dun probl`eme daectation est la suivante. Etant donne n t aches ` a
realiser et n machines pour les realiser et sachant que lon connat le co ut de realisation C
ij
de
la t ache t
i
par la machine m
j
(pour tous les couples (t
i
, m
j
) possibles, si la t ache t
i
ne peut etre
eectuee par la machine m
j
, on pose C
ij
= ), on cherche une permutation de {1, 2, . . . , n}
conduisant ` a un co ut total :
n

i=1
C
i,(i)
minimum (sur lensemble de toutes les n! permutations possibles).
Le probl`eme daectation est un cas particulier du probl`eme de transport (sans capacite).
Il peut egalement etre vu comme un probl`eme de couplage parfait de poids minimum dans un
graphe biparti.
Cependant, compte-tenu de limportance de ce type de probl`eme, un algorithme specique
a ete propose par Kuhn; il sagit de lalgorithme Hongrois.
38
Cet algorithme repose essentiellement sur la constatation suivante. On ne change pas la ou
les solutions optimales en augmentant ou en diminuant dune meme quantite tous les elements
dune meme ligne (ou dune meme colonne) de la matrice des C
ij
(les valeurs innies restant
innies). Apr`es une telle operation, la valeur totale est augmentee ou diminuee de .
Par consequent, si lon fait apparatre, par des transformations de ce type, susamment de
zeros dans le tableau, mais pas de co uts negatifs, et quil existe n zeros independants (cest-
` a-dire un seul zero dans chaque ligne et dans chaque colonne), on aura alors trouve laectation
optimale.
Lalgorithme proc`ede en trois phases successives. An dexpliquer la demarche suivie, conside-
rons lexemple decrit par la matrice des co uts suivante :
A
B
C
D
E
7 3 5 7 10
6 8 7
6 5 1 5

11 4 11 15
4 5 2 10
1 2 3 4 5
Premi`ere phase : obtention de valeurs nulles
A tous les elements de chacune des colonnes, on enl`eve le plus petit element de cette colonne,
puis, dans la matrice ainsi obtenue, on enl`eve, ` a tous les elements dune meme ligne, le plus petit
element de la ligne. On obtient de la sorte une matrice (C
1,ij
) ayant au moins un zero par ligne
et par colonne.
Pour lexemple precedent, on obtient, apr`es traitement des colonnes puis des lignes, les deux
matrices suivantes :
A
B
C
D
E
1 0 4 5 3
0 6 0
0 2 0 3

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

4 0 8 7
1 4 0 3
1 2 3 4 5
Deuxi`eme phase : recherche du maximum daectations possibles
A partir de la matrice (C
1,ij
), on cherche ` a former une solution de co ut nul (un seul zero dans
chaque ligne et dans chaque colonne). Si cest le cas, on a la solution optimale, sinon on cherche
un ensemble maximum de zeros independants : ceci revient ` a chercher un ot maximal sur le
graphe G

constitue par les arcs de co ut (reduit) nul. Sur la matrice C


1,ij
, cela correspond au
traitement suivant. On consid`ere la ligne ayant un nombre minimal de zeros (pour lexemple,
cela peut etre la premi`ere). On encadre lun des zeros de cette ligne (ici, C
1,A2
), puis on barre les
zeros qui se trouvent sur la meme ligne ou la meme colonne que le zeros encadre (ici, C
1,D2
). On
proc`ede de meme pour toutes les lignes, en tenant compte des etapes precedentes. On obtient,
pour lexemple, la matrice suivante :
39
A
B
C
D
E
1 0 4 5 3
0 6 0
0 2 0 3

4 0 8 7
1 4 0 3
1 2 3 4 5
Troisi`eme phase : determination des aectations interessantes
Pour determiner ces aectations, on proc`ede la mani`ere suivante :
On marque (dune asterisque) toutes les lignes qui ne contiennent aucun zero encadre
sommet non aecte (ligne D de lexemple) ;
On marque les lignes qui ont un zero encadre dans une colonne marquee (ligne A de
lexemple) ;
On marque les colonnes qui ont un ou plusieurs zeros barres dans une ligne marquee
possibilite non exploitee (colonne 2 de lexemple).
On rep`ete ces trois marquages successifs jusqu` a ce que lon ne puisse plus eectuer de nou-
veaux marquages (pour lexemple, une seule passe sut).
Les aectations interessantes ` a considerer sont celles issues des sommets correspondant aux
lignes marquees ; on barre donc les lignes non marquees. Les sommets correspondant aux colonnes
marquees ne sont pas interessants car ils ne peuvent etre reaectes ; on barre donc les colonnes
marquees.
A
B
C
D
E
1 0 4 5 3
0 6 0
0 2 0 3

4 0 8 7
1 4 0 3
1 2 3 4 5
*
*
*
Dans le tableau reduit ainsi obtenu (cases non barrees), on recherche ensuite lelement le plus
petit, necessairement non nul par construction (pour lexemple, il sagit de lelement C
1,A1
) ; on
retranche sa valeur aux colonnes non barrees et on lajoute aux lignes barrees. On obtient les
tableaux successifs suivants :
A
B
C
D
E
0 0 3 4 2
-1 5 -1
-1 2 -1 2

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

3 0 7 6
2 4 0 3
1 2 3 4 5
40
On note (C
2,ij
) la matrice ainsi obtenue et lon poursuit la procedure de traitement en re-
prenant ` a la seconde phase. Lorsquune solution optimale est obtenue (un zero par ligne et
par colonne), on arrete ; sinon on recommence et on denit successivement les matrices (C
3,ij
),
(C
4,ij
), . . . , (C
n,ij
).
Sur le tableau (C
2,ij
) de lexemple, on est amene ` a encadrer C
2,D2
et barrer C
2,A2
, encadrer
C
2,E4
, encadrer C
2,A1
et barrer C
2,B1
et C
2,C1
, encadrer C
2,B5
et enn encadrer C
2,C3
:
A
B
C
D
E
0 0 3 4 2
0 6 0
0 3 0 3

3 0 7 6
2 4 0 3
1 2 3 4 5
La solution optimale est alors obtenue gr ace aux elements :
C
2,A1
= C
2,B5
= C
2,C3
= C
2,D2
= C
2,E4
= 0
et ` a la permutation =
_
A B C D E
1 5 3 2 4
_
.
Si lon revient aux donnees initiales, on obtient :
C
A1
= C
B5
= C
C3
= C
D2
= C
E4
= 7 + 7 + 1 + 4 + 2 = 21
La gure 22 visualise en trait fort le couplage optimal obtenu.
A
C
D
E
1
2
3
4
5
B
Fig. 22 Aectation optimale
10 Probl`emes dordonnancement
Lobjet dun probl`eme dordonnancement est de faciliter la mise en uvre et de guider
lexecution dun ensemble complexe de t aches (programme de recherche ou de production, lan-
cement dun produit, construction dun edice ...). La technique danalyse la plus connue, appelee
methode PERT (Program Evaluation and Review Technique) a ete introduite aux Etats-Unis en
1958 pour la conduite du programme de recherche et de construction des fusees Polaris. Cette
41
methode tient une place dominante par sa simplicite, son ecacite et la variete dextensions qui
ont pu etre developpees.
En toute generalite, les probl`emes dordonnancement se posent sous la forme suivante. Etant
donne un objectif quon se propose datteindre et dont la realisation suppose lexecution prealable
de multiples t aches, soumises ` a de nombreuses contraintes, determiner lordre et le calendrier
dexecution des diverses t aches.
Le crit`ere doptimalite peut porter sur la minimisation de la duree et/ou du co ut de la
realisation du projet. Nous supposerons que le projet est decomposable en un nombre ni de
t aches, caracterisees par leur duree dexecution (generalement xe, parfois aleatoire), eventuel-
lement aussi par leur co ut dexecution, et soumises ` a des contraintes de posteriorite stricte (une
t ache ne peut commencer que si certaines autres t aches sont compl`etement terminees). Ce type
de probl`eme se nomme probl`eme central de lordonnancement. Des cas plus complexes peuvent
egalement etre envisages comme par exemple le cas des contraintes disjonctives, cest-` a-dire le
cas o` u, en plus des contraintes de succession, on impose la realisation non simultanee de certaines
paires de t aches.
La representation par un graphe dun probl`eme dordonnancement permet une bonne appre-
hension globale du probl`eme. Letude de ce graphe conduit ` a lidentication des t aches priori-
taires et la detection des retards ou des depassements de moyens an de prendre les mesures
correctives necessaires.
Le probl`eme central de lordonnancement senonce comme suit : etant donne un projet
constitue de n t aches de durees dexecution xes et soumises ` a des contraintes de posteriorite
stricte, determiner un calendrier dexecution ou ordonnancement qui minimise la duree de
realisation totale du projet.
En pratique, le travail preliminaire ` a accomplir sera donc de dresser une liste des dierentes
operations ` a mener que lon decomposera plus ou moins nement selon la precision souhaitee.
Generalement, les t aches sont denies pour que leurs durees dexecution soient du meme ordre
de grandeur ; de plus, les contraintes de posteriorite entre les t aches doivent pouvoir etre etablies
avec precision. Ce travail important est souvent long et necessite une collaboration etroite entre
les dierents acteurs du projet.
10.1 Le graphe potentiels-taches
A partir de la description des t aches du projet, on construit le graphe suivant :
A chaque t ache i (i de 1 ` a n), on associe un sommet i du graphe,
On denit un arc entre i et j de longueur d
i
(la duree de la t ache i) si la t ache i doit
preceder la t ache j.
On introduit deux sommets correspondant ` a deux t aches ctives de duree nulle, la t ache
de debut des travaux , anterieure ` a toutes les t aches (il sut de relier le sommet aux
sommets sans predecesseurs du graphe) et la t ache de n des travaux , posterieure ` a
toutes les autres t aches (tous les sommets sans successeur du graphe seront relies au som-
met ).
Le graphe ainsi deni doit etre sans circuit ; en eet, dans le cas contraire, une operation
devrait se succeder ` a elle-meme. Le travail commen cant ` a la date 0, on cherche un ordonnance-
ment qui minimise la duree totale du projet, donc la date de n des travaux. Pour quune t ache
42
puisse commencer, il est necessaire que toutes les t aches qui la relient ` a la t ache debut du projet
soient realisees.
Denition 32
La date au plus t ot, t
i
de debut de la t ache i est egale ` a t
i
= max
j
1
i
(t
j
+ d
j
),
cest-` a-dire que t
i
est egale ` a la longueur du plus long chemin l(, i) de ` a i.
La duree minimale du projet t

est donc la longueur du plus long chemin de ` a .


Si la duree minimale du projet est egale ` a t

, la date au plus tard pour commencer


la t ache i est egale ` a T
i
= min
j
i
(T
j
d
i
) avec T

= t

, ce qui montre que T


i
=
t

l(i, ) o` u l(i, ) est la longueur du plus long chemin de i ` a .


La marge totale M
i
de la t ache i est denie comme la dierence entre la date au plus
t ot et au plus tard (M
i
= T
i
t
i
).
Les t aches dont la marge est nulle sont appelees t aches critiques. Si un quelconque
retard est pris sur la realisation de lune de ces t aches, la duree minimale du projet
sera augmentee dautant.
La marge libre m
i
de la t ache i est le delai dont on peut retarder cette t ache sans aec-
ter les dates de debut au plus t ot des t aches posterieures, m
i
= min
j
i
(t
j
t
i
d
i
)).
On observe donc qu` a chaque t ache i est associe un nombre t
i
qui peut etre considere comme
un potentiel do` u la denomination de graphe potentiels-t aches.
10.2 Le graphe potentiels-etapes ou graphe PERT
Dans cette representation, les t aches sont materialisees par les arcs du graphe. La longueur
de chaque arc est egale ` a la duree d
i
de la t ache correspondante. Le debut et la n dune t ache
constituent les etapes du projet. Comme precedemment, on introduit les deux etapes de debut
() et de n () du projet.
Chaque etape est donc denie par un ensemble de t aches dej` a eectuees. Si une t ache j doit
succeder ` a une t ache i, on confondra lextremite initiale de larc a
j
(correspondant ` a la t ache
j) et lextremite terminale de larc a
i
(correspondant ` a la t ache i), via eventuellement un arc ctif.
Le graphe ainsi deni doit etre sans circuit. Dans cette formulation, les sommets sinterpr`etent
comme des etapes, cest pourquoi lon utilise lappellation graphe potentiels-etapes (connu plus
communement sous le nom de graphe PERT).
La construction dun tel graphe est un peu plus complexe que celle du graphe potentiels-
t aches car elle demande la denition des etapes qui peuvent correspondre au debut o` u ` a la n
de plusieurs t aches. Si lon se donne, pour chaque t ache i, lensemble
1
i
des t aches qui doivent
la preceder, les dierentes etapes du projet correspondent aux dierents ensembles
1
i
.
Soulignons aussi que pour pouvoir exprimer certaines contraintes de posteriorite stricte, il
est parfois necessaire dintroduire des t aches ctives et donc des arcs ctifs de duree nulle. A
titre dexemple, considerons le sous-graphe partiel de la gure 23.
Ce graphe indique que les t aches 3 et 4 doivent succeder aux t aches 1 et 2. Supposons que
suite ` a une modication de conditions techniques, lexecution de la t ache 4 puisse commencer
43
Tche 1
Tche 3
Tche 2 Tche 4
Fig. 23 Element de graphe PERT
avant que ne soit achevee la t ache 1. Pour adapter le graphe ` a ce changement, on ajoute un arc
ctif comme sur la gure 24.
Tche 1
Tche 3
Tche 2 Tche 4
Tche ctive
Fig. 24 Element de graphe PERT
10.3 Resolution
Un ordonnancement est un programme dexecution qui xe la date t
i
de debut dexecution
de chacune des t aches (dans la methode du potentiel) ou de debut de realisation de chacune des
etapes (dans la methode PERT). Un ordonnancement est optimal sil est realisable cest-` a-dire
si t
j
t
i
d
i
et sil minimise la duree de realisation t

du projet.
La duree minimale du projet est egale ` a la longueur du plus long chemin de ` a . En
eet, pour quune t ache puisse commencer, il faut que toutes les t aches precedentes aient ete
executees, de sorte que la duree du projet ne peut etre inferieure ` a la somme des durees des
t aches composant le chemin le plus long de ` a . Ce chemin, appele chemin critique, nest pas
necessairement unique. Comme le graphe est sans circuit,on a :
t
j
= max
i
1
j
(t
i
+d
i
), 1 j n
Chaque t
i
ainsi obtenu est la longueur du chemin le plus long du sommet au sommet i et
represente la date au plus t ot de debut dexecution de la t ache ou de letape i.
La duree minimum t

du projet ayant ete determinee, il est bien s ur possible de retarder


lexecution de certaines t aches ou etapes sans pour autant accrotre t

. Il est d`es lors interessant


de determiner les dates au plus tard T
i
de debut dexecution des dierentes t aches ou etapes i
sous la condition que la duree minimale du projet ne soit pas modiee. Ces dates se calculent de
meme mani`ere que pour les dates au plus t ot mais ` a partir du graphe inverse obtenu en inversant
le sens de tous les arcs. Il vient T

= t

et :
T
j
= min
i
j
(T
i
d
i
), 0 j n 1
44
Chaque quantite T

T
i
ainsi obtenue est la longueur du chemin le plus long du sommet i
au sommet .
10.4 Complements
Pour comparer linteret des deux graphes precedemment decrits, il faut se placer dans un
cadre plus general que le probl`eme central de lordonnancement et examiner un ensemble de
contraintes que lon doit pratiquement prendre en compte dans les probl`emes dordonnancement.
Ces contraintes sont essentiellement de trois types :
Type potentiel : la t ache j doit commencer apr`es la n de i ou bien apr`es la moitie de la
realisation de i, ou bien un certain temps apr`es la n de i, etc.
Type disjonctif : les t aches i et j ne peuvent etre realisees en meme temps (car cest le meme
ouvrier qui les realise par exemple).
Type cumulatif : les moyens necessaires ` a lexecution dun certain nombre de t aches sont,
` a chaque instant, limites ; par exemple, le nombre de camions utilisables ou la somme
depensee pour les travaux realises ` a linstant t ne doit pas depasser un certain seuil, etc.
Les contraintes de type potentiel autres que les contraintes danteriorite du probl`eme central
sont diciles ` a prendre en compte dans le graphe potentiels-etapes. On est en eet amene
` a ajouter des sommets et des arcs ctifs en tr`es grand nombre dans le graphe. En revanche,
dans le graphe potentiels-t aches, chaque contrainte supplementaire de type potentiel sintroduit
simplement par ladjonction dun arc dans le graphe. Par exemple :
la contrainte : j ne doit pas commencer avant la moitie de la realisation de la t ache i se
represente par un arc (i, j) de longueur d
i
/2.
la contrainte : j ne peut commencer quun temps t apr`es la n de i se represente par un
arc (i, j) de longueur d
i
+t.
la contrainte : j ne peut commencer quapr`es la date b
j
se represente par un arc (, j) de
longueur b
j
.
la contrainte : j doit commencer avant la date c
j
se represente par un arc (j, ) de longueur
c
j
.
enn la contrainte : j doit suivre immediatement la t ache i secrit t
i
+ d
i
= t
j
et se
represente par un arc (i, j) de longueur d
i
et un arc (j, i) de longueur d
i
.
Les deux derniers cas introduisent des circuits et des arcs de longueurs negatives. La condi-
tion dexistence dun ordonnancement devient alors : il nexiste pas de circuit de longueur
strictement positive. Comme lon peut introduire des arcs de longueur dierentes partant dun
sommet i quelconque, il est preferable de noter d
ij
la longueur de larc allant de i ` a j. Les
formules de determination des dates au plus t ot et au plus tard deviennent alors :
t
j
= max
i
1
j
(t
i
+d
ij
) au lieu de t
j
= max
i
1
j
(t
i
+d
i
)
T
j
= min
i
j
(T
i
d
ij
) au lieu de T
j
= min
i
j
(T
i
d
i
)
Les contraintes de type disjonctif ou cumulatif sont impossibles ` a prendre en compte dans
le graphe PERT. Certains amenagements permettent leur prise en compte dans le graphe
potentiels-t aches. On preferera donc la representation potentiels-t aches d`es que le probl`eme
ne se reduit pas au probl`eme central.
45
Pour terminer cette presentation succincte des probl`emes dordonnancement, examinons
quelques exemples pouvant se formuler en termes du probl`eme du voyageur de commerce
ou de ses nombreuses variantes.
Exemple 1 : Dans un syst`eme dexploitation automatise, une machine doit reguli`erement eec-
tuer n types de t aches dierentes x
1
, x
2
, . . . , x
n
. On connat de plus des durees de commutations
entre deux t aches x
i
et x
j
quelconques. Le probl`eme est de trouver une sequence de x
i
qui mini-
mise le temps total des commutations. Si lon consid`ere le graphe de sommets {x
i
}
i=1,...,n
dont
larc (x
i
, x
j
) a une longueur egale au temps de commutation entre x
i
et x
j
, le probl`eme revient
` a determiner un circuit hamiltonien de longueur minimum.
Dans beaucoup de situations, on cherche un chemin hamiltonien dans un graphe qui mini-
mise une autre fonction economique que la longueur totale du chemin.
Exemple 2 : Etant donnees n t aches i = 1, . . . , n de duree a
i
, soit d
i
la date o` u la t ache i
doit etre terminee (date souhaitee). Determiner la sequence de t aches sur une machine unique
de fa con ` a minimiser le retard maximum, cest-` a-dire minimiser max
i=1,...,n
(t
i
d
i
) o` u t
i
est la
date o` u la t ache i est eectivement terminee. La solution optimale est obtenue en ordonnant les
t aches i selon lordre croissant des dates souhaitees d
i
.
Exemple 3 : Etant donne un graphe oriente G = (X, A) et des poids C
a
= C
i,j
sur chaque arc
a = (i, j), determiner une chane hamiltonienne qui minimise :
f() =

i=1,...,n
_
_

j>i
C
(i)(j)
_
_
o` u (i) represente le i
i` eme
sommet de la chane hamiltonienne.
Cela revient ` a determiner, sur une matrice carree dordre n, C = (C
ij
), une permutation
des lignes et des colonnes (la meme pour les lignes et les colonnes) telle que la somme des
elements de la matrice triangulaire superieure soit minimale.
Ce probl`eme a de nombreuses applications. La plus classique correspond ` a lanalyse des
preferences : etant donne N objets, on demande ` a k personnes de les comparer par paires (on
pose C
ij
, le nombre de personnes ayant preferees i ` a j). Loptimum de f() est obtenu si la
chane hamiltonienne est constituee de la succession des sommets pris dans un ordre minimisant
le nombre de desaccords.
46
Annexe A - Implementation de lalgorithme de Moore-Dijkstra
Le programme Matlab
r
ci-dessous est une implementation de lalgorithme de Moore-Dijkstra
decrit au paragraphe 6.3 et permettant lobtention du plus court chemin entre deux sommets.
Les trois param`etres dappel de la fonction moore sont les suivants :
L : matrice des longueurs (sil ny a pas darc entre le sommet i et le sommet j, alors
l
ij
= et conventionnellement l
ii
= 0).
dep : numero du sommet de depart du chemin recherche.
arv : numero du sommet darrivee du chemin recherche.
En sortie, on recup`ere :
s : la longueur du plus court chemin (s = sil nexiste pas de chemin).
m : le vecteur des longueurs des plus courts chemins entre dep et tous les autres
sommets.
function [s,mark]=moore(L,dep,arv)
%MOORE Recherche du plus court chemin entre deux sommets dun graphe
%
% S=MOORE(L,DEP,ARV) calcule la longueur du plus court chemin entre
% les sommets de num ero DEP et ARV.
%
% [S,M]=MOORE(L,DEP,ARV) renvoie egalement le vecteur des longueurs
% des plus courts chemins entre le sommet DEP et tous les autres sommets.
%
% Voir aussi MOORE1
% Copyright (c) 2003 by Didier MAQUIN
% $Revision: 0.1 $Date: 05/01/03 $
n=size(L,1);
% Initialisation
Sb=1:n;
Sb(dep)=[];
mark=L(dep,:);
while 1
[v,indj]=min(mark(Sb));
j=Sb(indj); % j sommet de marque provisoire minimale
Sb(indj)=[]; % on retire j de Sb
if isempty(Sb),break,end % si Sb est vide on ar^ ete
succ=find(L(j,:)~=inf & L(j,:)~=0); % liste des successeurs de j
A=intersect(succ,Sb); % intersection entre cette liste et Sb
if ~isempty(A) % si cette liste nest pas vide
mark(A)=min(mark(A),mark(j)+L(j,A)); % on remet ` a jour les marques
end
end
s=mark(arv);
47
Considerons le graphe de la gure 25 :
3
4
6
5 2
1
7
4
5
1
2
5
1
3
7
2
Fig. 25 Graphe oriente
Voil` a ci-dessous un exemple de programme dappel pour calculer les longueurs des plus courts
chemins joignant le sommet 1 ` a tous les autres :
clear
% Matrice de distance
D=[ 0 7 1 inf inf inf
inf 0 inf 4 inf 1
inf 5 0 inf 2 7
inf inf inf 0 inf inf
inf 2 inf 5 0 inf
inf inf inf inf 3 0 ];
%
dep=input(Sommet de d epart : );
arv=input(Sommet darriv ee : );
[s,m]=moore(D,dep,arv)
Pour dep = 1 et arv = 6, on obtient :
Sommet de d epart : 1
Sommet darriv ee : 6
s =
6
m =
0 5 1 8 3 6
La fonction precedente peut etre modiee de mani`ere ` a memoriser, en plus de la longueur
du chemin, la succession des sommets par lesquels il passe. Il sut pour cela de maintenir ` a jour
une table de predecesseurs. Celle-ci peut ensuite etre exploitee pour reconstituer le chemin suivi.
Le programme Matlab
r
ci-dessous realise cette fonction. Les trois param`etres dappel de la
fonction moore1 sont identiques ` a ceux de la fonction precedente. En sortie, on obtient :
s : la longueur du plus court chemin (s = sil nexiste pas de chemin).
chemin : le vecteur des numeros de sommets decrivant le chemin.
48
function [s,chemin]=moore1(L,dep,arv)
%MOORE1 Recherche du plus court chemin entre deux sommets dun graphe
%
% S=MOORE1(L,DEP,ARV) calcule la longueur du plus court chemin entre
% les sommets de num ero DEP et ARV.
%
% [S,CHEMIN]=MOORE1(L,DEP,ARV) renvoie egalement le chemin emprunt e
% (s equence de num ero de sommets).
%
% Voir aussi MOORE
% Copyright (c) 2003 by Didier MAQUIN
% $Revision: 0.1 $Date: 05/01/03 $
n=size(L,1);
% Initialisation
Sb=1:n;
Sb(dep)=[];
mark=L(dep,:);
p=ones(1,n)*inf;
succ=find(L(dep,:)~=inf & L(dep,:)~=0);
p(succ)=dep;
while 1
[v,indj]=min(mark(Sb));
j=Sb(indj); % j sommet de marque provisoire minimale.
Sb(indj)=[]; % on retire j de Sb.
if isempty(Sb),break,end % si Sb est vide on ar^ ete.
succ=find(L(j,:)~=inf & L(j,:)~=0);% on cherche la liste des successeurs de j.
A=intersect(succ,Sb); % intersection entre cette liste et Sb.
if ~isempty(A) % si cette liste nest pas vide
oldmark=mark(A); % on m emorise lancienne marque
mark(A)=min(mark(A),mark(j)+L(j,A)); % et on remet ` a jour les marques.
id=find(oldmark~=mark(A)); % pour les sommets dont les marques ont
p(A(id))=j; % chang e on m emorise le pr ed ecesseur.
end
end
s=mark(arv);
chemin=[];
if isfinite(p(arv))
chemin=[arv]; % on construit le chemin
while chemin(end)~=dep % ` a laide de la table des pr ed ecesseurs
k=chemin(end); % ` a partir de la fin.
chemin=[p(k) chemin];
end
end
Ci-dessous un exemple de programme dappel correspondant au graphe de la gure 25 :
clear
% Matrice de distance
D=[ 0 7 1 inf inf inf
49
inf 0 inf 4 inf 1
inf 5 0 inf 2 7
inf inf inf 0 inf inf
inf 2 inf 5 0 inf
inf inf inf inf 3 0 ];
%
dep=input(Sommet de d epart : );
arv=input(Sommet darriv ee : );
[s,chemin]=moore1(D,dep,arv);
if isfinite(s)
fprintf(Le chemin )
fprintf(%i ,chemin)
fprintf(de longueur %f ,s)
fprintf(est le chemin de longueur minimale\n)
else
fprintf(Il nexiste pas de chemin !\n)
end
Pour dep = 1 et arv = 6, on obtient :
Sommet de d epart : 1
Sommet darriv ee : 6
Le chemin 1 3 5 2 6 de longueur 6.000000 est le chemin de longueur minimale
Pour dep = 4 et arv = 3, on obtient :
Sommet de d epart : 4
Sommet darriv ee : 3
Il nexiste pas de chemin !
50
Annexe B - Implementation de lalgorithme de Floyd
Le programme Matlab
r
ci-apr`es est une implementation de lalgorithme de Floyd decrit au
paragraphe 6.3 et permettant lobtention de la matrice des plus courts chemins dans un graphe
dont les arcs sont valuees positivement. Le seul param`etre dappel de la fonction floyd est le
suivant :
L : matrice des longueurs (sil ny a pas darc entre le sommet i et le sommet j, alors
l
ij
= et conventionnellement l
ii
= 0).
En sortie, on recup`ere :
A : la matrice des plus courts chemins entre tous les sommets.
P : la matrice des predecesseurs (p
ij
represente le numero du sommet predecesseur
immediat de j sur le plus court chemin entre i et j).
function [A,P]=floyd(L)
%FLOYD Recherche de la matrice des plus courts chemins entre sommets
%
% [A]=FLOYD(L) calcule a matrice des plus courts chemins entre sommets
%
% [A,P]=FLOYD(L) renvoie egalement la matrice des pr ed ecesseurs
%
% Copyright (c) 2003 by Didier MAQUIN
% $Revision: 0.1 $Date: 05/04/03 $
[n,m]=size(L);
if n ~= m error(La matrice des distance nest pas carr ee);end
A=L;
for i=1:n
P(i,:)=i*ones(1,m);
end
for k=1:n
for i=1:n
for j=1:n
if A(i,k) + A(k,j) < A(i,j)
A(i,j) = A(i,k) + A(k,j);
P(i,j) = P(k,j);
end
end
end
end
Considerons de nouveau le graphe de la gure 25. Le programme ci-apr`es permet de calculer
la matrice des plus courts chemins et dediter, en exploitant la matrice des predecesseurs, le
chemin reliant un sommet initial ` a un sommet terminal quelconques sous la forme dune liste de
sommets.
51
clear;
% Matrice de distance
C=[ 0 7 1 inf inf inf
inf 0 inf 4 inf 1
inf 5 0 inf 2 7
inf inf inf 0 inf inf
inf 2 inf 5 0 inf
inf inf inf inf 3 0 ];
%
[A,P]=floyd(C)
initial=input(Sommet initial : );
terminal=input(Sommet terminal : );
%
if ~isfinite(A(initial,terminal))
fprintf(Il nexiste pas de chemin entre les sommets %d et %d\n\n,initial,terminal);
else
j=terminal;
chemin=[j];
while j ~= initial
j=P(initial,j);
chemin=[j chemin];
end
fprintf(Plus court chemin entre les sommets %d et %d\n\n,initial,terminal)
fprintf(%d ,chemin);
fprintf(\n\n)
end
Pour initial = 1 et terminal = 6, on obtient :
Plus court chemin entre 1 et 6
1 3 5 2 6
Alors que pour initial = 6 et terminal = 1, le resultat est le suivant :
Il nexiste pas de chemin entre 6 et 1
52
Annexe C - Implementation de lalgorithme de Prim
Le programme Matlab
r
ci-apr`es est une implementation de lalgorithme de Prim decrit au
paragraphe 7.2 et permettant lobtention dun arbre couvrant de poids minimal. Les deux pa-
ram`etres dappel de la fonction prim sont les suivants :
L : matrice des longueurs (sil ny a pas darc entre le sommet i et le sommet j, alors
l
ij
= et conventionnellement l
ii
= 0).
dep : numero du sommet de depart pour la construction de larbre recherche.
En sortie, on recup`ere :
alpha : un tableau de chanes de caract`eres designant les aretes constituant larbre.
function [alpha]=prim(L)
%PRIM Recherche dun arbre couvrant de poids minimal
%
% ALPHA=PRIM(L) d etermine un arbre couvrant de poids minimal
% ALPHA est un tableau de cha^ nes de caract` eres d esignant les
% ar^ etes de larbre.
% Copyright (c) 2003 by Didier MAQUIN
% $Revision: 0.1 $Date: 05/01/03 $
n=size(L,1);
mark=ones(1,n)*inf;
alpha=ones(n,3)*abs(-); % liste des ar^ etes de larbre
dep=1; % sommet de d epart (fix e ` a 1)
mark(dep)=0;
A=[];
S=1:n;
while 1
S=setdiff(S,A); % ensemble X\A
[val,l]=min(mark(S)); % recherche du sommet ayant la plus petite marque
i=S(l); % num ero du sommet
if isempty(setxor(A,1:n)),break, end % si A=X alors FIN
A=[A i]; % ajout du sommet ` a larbre
succ=find(L(i,:)~=inf & L(i,:)~=0); % successeurs du sommet i
E=setdiff(succ,A); % liste des successeurs moins les sommets d ej` a dans S
for k=1:length(E) % mise ` a jour des marques
if L(i,E(k))<mark(E(k))
mark(E(k))=L(i,E(k));
alpha(E(k),:)=[num2str(i) - num2str(E(k))]; % m emorisation ar^ etes
end
end
end
Considerons le graphe de la gure 26. Le programme ci-apr`es permet de determiner un arbre
couvrant de ce graphe.
53
3
5
1 4
6
7 2
7
3
1 4
1
4
3
2
2
7
2
2
10
Fig. 26 Graphe simple
clear
% 1 2 3 4 5 6 7
D=[ 0 7 3 2 2 inf inf
7 0 1 inf inf inf inf
3 1 0 inf 4 3 inf
2 inf inf 0 1 10 2
2 inf 4 1 0 4 2
inf inf 3 10 4 0 7
inf inf inf 2 2 7 0 ]
%
alpha=prim(D);
setstr(alpha)
Le resultat obtenu est :
ans =
---
3-2
1-3
1-4
4-5
3-6
4-7
Cela correspond ` a larbre suivant :
3
5
1 4
6
7 2
3
1
1
3
2
2
Fig. 27 Arbre couvrant de poids minimal
54
References
[1] A.V. Aho, J.E. Hopcroft et J.D. Ullman, The design and analysis of computer algorithms,
ISBN 0-201-00029-6, Addison Wesley, Reading (Mass.), 1974.
[2] M.L. Assas, Analyse de la tolerance aux fautes : approches fonctionnelle et structurelle.
Th`ese de doctorat de lUniversite des Sciences et Technologies de Lille, 2002.
[3] K. Appel et W. Haken, Every planar map is 4-colorable, Bulletin of the AMS, Volume 82,
711-712, 1976.
[4] C. Berge, Graphes, ISBN 2-04-15555-4, Gauthiers-Villars, Bordas, Paris, 1983.
[5] H. Bestouge, C. Guilpin et M. Jacques, La technique informatique, Tome 2 : algorithmes
numeriques et non numeriques, ISBN 2-225-40337-6, Masson, Paris, 1975.
[6] N. Biggs, E. Lloyd et R. Wilson, Graph Theory 1736-1936, ISBN 0-19-853901-0, Clarendon
Press Oxford, 1976.
[7] R. Cabane, Theorie des graphes, Techniques de lIngenieur, Traite Sciences fondamentales,
document AF205.
[8] H. Coilland, Polycopie dexercices de recherche operationnelle, IUT Informatique Nancy 2
et Ecole des Mines de Nancy, juillet 1999.
[9] R. Diestel, Graph theory, Graduate Texts in Mathematics Series, vol. 173, electronic
edition, http ://www.math.uni-hambourg.de/home/diestel/books/graph.theory, Springer-
Verlag, New York 1997, 2000,
[10] F. Droesbeke, M. Hallin et C. Lefevre, Les graphes par lexemple, ISBN 2-7298-8730-X,
Ellipses, 1987.
[11] N. Deo, Graph theory with applications to engineering and computer science, Prentice-Hall,
Englewood clis (N.J.),1975.
[12] L. Euler, Solutio Problematis Ad geometriam Situs Pertinentis, Commenrarii Academiae
Scientiarum Imperialis Petropolitanae, 8, pp. 128-140, 1736.
[13] M. Gondran et M. Minoux,Graphes et algorithmes, 2`eme ed., Collection de la Direction des
Etudes et Recherches dElectricite de France, Eyrolles 1985.
[14] M. Minoux et G. Bartnik, Graphes, algorithmes, logiciels, Dunod Informatique, ISBN 2-04-
016470-7, Bordas Paris, 1986.
[15] Roseaux, Exercices et probl`emes resolus de recherche operationnelle. Tome 1. Graphes :
leurs usages, leurs algorithmes, ISBN 2-10-003935-0, Dunod, Paris, 1998.
55