Académique Documents
Professionnel Documents
Culture Documents
Theorie de Graphe
Theorie de Graphe
El
ements de Th
eorie des Graphes
Didier Maquin
Version provisoire du 3 mai 2003
1 Un bref historique de la th
eorie des graphes
2 Introduction
2.1 Quest-ce quun graphe ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Graphes et applications multivoques . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Principales definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
7
8
3 Modes de repr
esentation dun graphe
3.1 Listes de succession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Matrice dadjacence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Matrice dincidence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
10
11
4 Etude de la connexit
e
4.1 Chanes et cycles, elementaires et simples .
4.2 Chemins et circuits, elementaires et simples
4.3 Graphes et sous-graphes connexes . . . . . .
4.4 Graphes et sous-graphes fortement connexes
4.5 Cycles et nombre cyclomatique . . . . . . .
.
.
.
.
.
11
11
12
12
13
14
5 Parcours eul
eriens et hamiltoniens
5.1 Chanes et cycles euleriens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Chanes et cycles hamiltoniens . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
15
17
6 M
ethode de recherche de chemins
6.1 Rappel sur les operations booleennes sur les matrices . . . . . . . . . . . . . . . .
6.2 Recherche de chemins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Le probl`eme du plus court chemin . . . . . . . . . . . . . . . . . . . . . . . . . .
18
18
19
20
7 Arbres et arborescences
7.1 Definitions et proprietes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Arbres couvrants de poids minimum . . . . . . . . . . . . . . . . . . . . . . . . .
23
23
24
8 R
eseaux, r
eseaux de transport et probl`
emes de flots
8.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Recherche dun flot complet . . . . . . . . . . . . . . . . . . . .
8.3 Amelioration du flot . . . . . . . . . . . . . . . . . . . . . . . .
8.4 Recherche dun flot maximal : algorithme de Ford et Fulkerson
8.5 Exemple traite manuellement . . . . . . . . . . . . . . . . . . .
8.6 Recherche dun flot maximal a` co
ut minimal . . . . . . . . . . .
.
.
.
.
.
.
26
26
27
28
29
29
32
.
.
.
.
32
33
35
36
37
9 Couplages
9.1 Le probl`eme du couplage maximal
9.2 Couplage maximal et flot maximal
9.3 Couplage de poids maximal . . . .
9.4 Probl`emes daffectation . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10 Probl`
emes dordonnancement
10.1 Le graphe potentiels-taches . . . . . . . . . .
10.2 Le graphe potentiels-etapes ou graphe PERT
10.3 Resolution . . . . . . . . . . . . . . . . . . . .
10.4 Complements . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
40
41
42
43
44
46
50
52
R
ef
erences
53
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` lorigine, 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
fl`eches, il y a une longue elaboration des concepts. La premi`ere difficulte a` laquelle on peut etre
confronte concerne la terminologie (tr`es abondante en theorie des graphes). Nous avons donc
choisi disoler les principales definitions du reste du cours en utilisant une mise en page differente.
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 calculateurs. Il nous a donc semble incontournable dexposer quelques algorithmes de base (recherche
de chemin, darbre, de flots, 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 effectuer, ni la complexite (au sens nombre doperations elementaires) des algorithmes. De mani`ere a` permettre au lecteur interesse de juger des difficultes de mise en uvre
des algorithmes litteraux, plus clairs pour la comprehension, decrits dans le corps du texte,
r
quelques implementations a` laide du langage Matlab
sont donnes en annexe. Ces fonctions ne
pretendent nullement a` etre efficaces ou efficientes sur des donnees quelconques ; elles ne sont
donnees qu`a titre dillustration. De meme, nous nous sommes efforces ce citer, au moment de
lintroduction des methodes de base, les fonctions de la bote a` outils de manipulation de graphes
c
Metanet du logiciel Scilab
qui leur correspondent.
Un bref historique de la th
eorie 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 Konigsberg (Euler, 1736). Le probl`eme pose etait le suivant. Deux les A et D
sur la rivi`ere Pregel a` Konigsberg (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 figure 1.
C
A
B
Fig. 2 Graphe associe au probl`eme des ponts de Konigsberg
Comme nous le montrerons ulterieurement, Euler demontra que ce probl`eme na pas de solution. Le probl`eme des ponts de Konigsberg est identique a` celui consistant a` tracer une figure
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, Kirchhoff (1824-1887) developpa la theorie des arbres pour lappliquer a` lanalyse de circuits 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 H2n+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 affirme que quatre couleurs suffisent
pour colorier nimporte quelle carte plane telle que les pays ayant une fronti`ere commune
soient de couleurs differentes. Cest sans doute Mobius (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 fini de situations 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 figure 3.
Trois aretes sont donc issues de chaque sommet. Un clou est fiche sur chaque sommet marque
du nom de vingt grandes villes mondiales. Le casse-tete consiste a` enrouler une ficelle 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 suffisante 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
2
2.1
Introduction
Quest-ce quun graphe ?
D
efinition 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 differentes aretes
et sommets compte. A titre dexemple, les deux graphes de la figure 4 sont identiques.
1
4
3
d
f
c
2.2
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 application multivoque. Lensemble des predecesseurs dun sommet x X peut alors etre note 1 (x)
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 d
efinitions
Les definitions qui suivent sont enoncees dans le cadre des graphes orientes. Le lecteur transposera aisement ces definitions (si elles ont un sens) au cas des graphes non orientes.
D
efinition 3
On appelle degre sortant ou demi-degre exterieur dun sommet x le nombre darcs
de la forme a = (x, y) avec y 6= x, cest-`a-dire le nombre delements de (x)\ {x}.
On note ds (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 6= x, cest-`a-dire le nombre delements de 1 (x)\ {x}.
On note de (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 definition dun graphe, lensemble des arcs A peut etre vide ; dans ce cas, on a affaire
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
signifie donc quun graphe comporte au moins un sommet.
D
efinition 4
On appelle graphe reflexif un graphe possedant une boucle sur chaque sommet.
Un graphe est symetrique si, pour tout arc a 1 = (x, y) appartenant a` A, larc
a2 = (y, x) appartient egalement a` A.
Un graphe est antisymetrique si, pour tout arc a 1 = (x, y) appartenant a` A, larc
a2 = (y, x) nappartient pas a` A.
Enfin, un graphe est transitif si, quelque soit deux arcs adjacents a 1 = (x, y) et
a2 = (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
a1 = (x, y) et a2 = (y, x), une arete a = (y, x).
D
efinition 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.
D
efinition 6
Soit un graphe G = (X, A) et X 0 X. Le sous-graphe engendre par X 0 est G0 = (X 0 , A0 ),
A0 etant forme des aretes dont les deux extremites sont dans X 0 .
Si lon se donne un sous-ensemble A1 de A, le graphe partiel engendre par A 1 est
G1 = (X, A1 ).
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 definition precedente, une clique dun graphe G est donc un sous-graphe complet
de G.
Modes de repr
esentation dun graphe
Comme nous lavons mentionne precedemment, lessor de la theorie des graphes est essentiellement 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 figure 6.
1
7
6
1
3
5
8
4
2
1
2
3
4
5
2, 3, 4, 5
3
4
1, 4
1
2
3
4
5
5
1
1, 2
1,3,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 figure 7
montre cette organisation en ce qui concerne la table des successeurs.
1
5
2 3
6
0
7
4 5
4 1
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.
D
efinition 7
Considerons un graphe G = (X, A) comportant n sommets. La matrice dadjacence
de G est egale a` la matrice U = (uij ) de dimension n n telle que
uij =
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 figure 6 est la suivante :
0 1 1 1 1
0 0 1 0 0
U =
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 seffectue 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 ieme ligne de U est egale au degre sortant d s (xi ) du sommet
xi de G.
la somme des elements de la j eme colonne de U est egale au degre entrant d e (xj ) du sommet
xj 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.
D
efinition 8
Considerons un graphe oriente sans boucle G = (X, A) comportant n sommets
x1 , . . . , xn et m aretes a1 , . . . , am . On appelle matrice dincidence (aux arcs) de
G la matrice M = (mij ) de dimension n m telle que :
Pour un graphe non oriente sans boucle, la matrice dincidence (aux aretes) est
definie par :
mij =
1
0
1
0
1
1 1
0
1
1
0
0
0
0
0
0
1
0
0
0
0
M = 0 1 1
0
0
0 1 1
0
0 1
0
0
0
0
0 1
1
1
4
4.1
Etude de la connexit
e
Chanes et cycles,
el
ementaires et simples
D
efinition 9
Une chane est une sequence finie et alternee de sommets et daretes, debutant et
finissant 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
4.2
Chemins et circuits,
el
ementaires et simples
Toutes les definitions precedentes, sappliquant au cas des graphes non orientes, peuvent etre
transposees au cas des graphes orientes.
D
efinition 10
Un chemin est une sequence finie et alternee de sommets et darcs, debutant et
finissant 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
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 differentes
aretes. De mani`ere plus formelle, on a :
D
efinition 11
Un graphe G est connexe sil existe au moins une chane entre une paire quelconque
de sommets de G.
La relation :
xi R x j
soit xi = xj
soit il existe une chane joignant x i a` xj
est une relation dequivalence (reflexivite, symetrie, transitivite). Les classes dequivalence induites sur X par cette relation forment une partition de X en X 1 , X2 , . . . , Xp .
13
4.4
D
efinition 13
Un graphe oriente est dit fortement connexe sil existe un chemin joignant deux sommets quelconques.
La relation :
soit xi = xj
xi R x j
soit il existe a` la fois un chemin joignant x i a` xj
et un chemin joignant xj a` xi
est une relation dequivalence et les classes dequivalence induites sur X par cette relation forment
une partition de X en X1 , X2 , . . . , Xq . Les sous-graphes G1 , G2 , . . . , Gq engendres par les sousensembles X1 , X2 , . . . , Xq sont appeles les composantes fortement connexes du graphe.
Pour le graphe de la figure 8, les differentes composantes fortement connexes sont :
C1 = {1, 2, 3, 4, 5}
C2 = {6, 7}
C3 = {8}
D
efinition 14
On appelle graphe reduit Gr le quotient du graphe G par la relation de forte connexite
Gr = G/R ; les sommets de Gr sont donc les composantes fortement connexes et il
existe un arc entre Ci et Cj si et seulement sil existe au moins un arc entre un
sommet de Ci et un sommet de Cj dans le graphe G. On verifie que le graphe G r est
sans circuit.
Le graphe reduit correspondant au graphe de la figure 8 est donne figure 9. La recherche
des composantes fortement connexes et la determination du graphe reduit revetent une grande
importance pour lanalyse structurale dun syst`eme.
14
C2
4.5
Les notions de cycle et de cycle elementaire ont dej`a ete definies 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 a1 , . . . , am , on peut faire correspondre a` tout cycle un vecteur = ( 1 , 2 , . . . , m ) tel
que :
1 si ai +
1 si ai
i =
0 si ai
/ +
On remarque que est aussi un vecteur associe au cycle (obtenu en choisissant lautre
sens de parcours). Au signe pr`es, on pourra donc identifier le cycle au vecteur .
D
efinition 15
On dit que p cycles 1 , 2 , . . . , p sont dependants sil existe, entre leurs vecteurs
associes, une relation vectorielle de la forme :
1 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) = m n + p.
Parcours eul
eriens 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 datelier, etc.
5.1
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.
D
efinition 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 Konigsberg evoque au premier paragraphe. Euler prouva limpossibilite de lobtention dune solution en demontrant le theor`eme suivant :
Th
eor`
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
la chane L entre a et x1 ,
le cycle 1 entre x1 et x1 ,
la chane L entre x1 et x2 ,
le cycle 2 entre x2 et x2 ,
...
la chane L entre xp 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.
D
efinition 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.
Th
eor`
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
de (a) = ds (a) 1
et
de (b) = ds (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 flot a` co
ut minimum (cf. 8.4).
Il sagit dabord de savoir si le parcours chinois a au moins une solution. Nous enoncons
ici sans demonstration les resultats suivants.
Th
eor`
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
6
6.1
M
ethode de recherche de chemins
Rappel sur les op
erations bool
eennes sur les matrices
19
Addition bool
eenne des matrices
Soient deux graphes G1 et G2 , possedant les memes sommets, et leurs matrices dadjacence
associees U1 et U2 de dimension n n. Calculons U3 = U1 U2 telle que :
(U3 )ij = (U1 )ij (U2 )ij
Chaque element non nul de U3 represente, par definition, un arc de G 3 decrit par la matrice
U3 . Pour quun element de U3 soit non nul, il faut que lun au moins des elements correspondants
de U1 ou U2 soit non nul. On conclut donc que cette operation revient a` construire un graphe
G3 comportant a` la fois les arcs de G1 et ceux de G2 .
Multiplication bool
eenne des matrices
Considerons de nouveau les deux graphes G 1 et G2 precedents et calculons U4 = U1 U2
telle que :
(U4 )ij = (U1 )i1 (U2 )1j (U1 )i2 (U2 )2j . . . (U1 )in (U2 )nj
Pour que (U4 )ij soit egal a` 1, il faut quil existe au moins un indice k tel que simultanement
les elements (U1 )ik et (U2 )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 G2 .
6.2
Recherche de chemins
Soit U la matrice dadjacence associee au graphe G. Par definition, U ij = 1 indique lexistence 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 G0 associe a` U 2 . Chaque arc (i, j) de G0 exprime lexistence dun chemin de longueur 2 du sommet i au sommet j. En effet, 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 longueur 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 p 1 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 Ukj .
Lexistence dun chemin joignant les sommets i et j et passant par le sommet k est donc
donnee par (U p1 )ik Ukj . 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 :
Cij = U p1 i1 U1j U p1 i2 U2j . . . U p1 in Unj
Lexpression de Cij est, par definition, celle donnee pour calculer lelement (U p )ij . Comme
nous lavons verifiee 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 suffit 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 considere se formule ainsi. Etant donne un graphe oriente G = (X, A), on associe 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
P 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 lij la longueur de larc (i, j) si (i, j) A. Definissons (i)
comme la longueur minimum des chemins du sommet 1 au sommet i ; en particulier (1) = 0.
Lalgorithme proc`ede en n 1 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 definitivement marques, cest-`a-dire les sommets pour lesquels la
marque (i) represente effectivement 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 definie
par :
k S : (k) = min ((i) + lik )
iS1
k
On demontre alors aisement qu`a une etape quelconque si j est le sommet de marque provisoire (j) minimale cest-`a-dire :
(j) = min ((k))
kS
21
alors (j) = (j), cest-`a-dire que le sommet j peut etre inclus dans lensemble S des sommets
Faire S S\{j}
Si S = alors FIN
(c) - Faire pour tout i S (j)
(i) min ((i), (j) + lji )
Retourner en (b)
r
On trouvera en annexe A, un programme Matlab
implementant cet algorithme. Sous
c
Scilab , la commande relative a` la recherche du plus court chemin entre deux sommets se
nomme shortest path.
22
4
5
4
2
2
7
Pour 1 k n, notons L(k) = (lij ) 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 lij 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 :
(k)
(k1) (k1)
(k1)
lij = min lij
, lik
+ lkj
En effet, 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
(k)
(k1)
(k1)
{1, 2, . . . , k 1} et devant etre de longueur minimale. On doit donc avoir l ij = lik
+ lkj .
(k)
(k1)
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
lij = min (lij , lik + lkj )
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.
r
Un programme Matlab
implementant cet algorithme est donne en annexe B.
Arbres et arborescences
7.1
D
efinitions et propri
et
es
D
efinition 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 definition 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 sommets 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 successivement tous les arcs du graphe (dans nimporte quel ordre) et a` les colorer soit en rouge
soit en vert.
A une etape quelconque, Gc est le graphe partiel engendre par les arcs colores (rouges ou
verts) et Gr 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 Gr 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 Gc et de Gr decrot de 1.
24
Pour montrer que le graphe partiel Gr obtenu est bien une foret maximale de G, il suffit
dobserver qu`a tout instant, le graphe G r est sans cycle (cest donc bien une foret de G) ; a` la fin
de la procedure, elle est bien maximale pour linclusion car, en ajoutant un arc vert quelconque
a` Gr , 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.
D
efinition 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 definit comme celle darbre couvrant, mais elle est
plus delicate car il faut trouver une racine (qui nexiste pas toujours).
7.2
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(aij ) la longueur de cable 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 :
D
efinition 21
Soit un graphe non oriente G, connexe, pondere par une fonction positive l attachee
aux aretes. Soit un arbre couvrant T = (X, B) defini comme graphe partiel de G
avec un ensemble daretes B. Son poids (ou co
ut) total est :
25
l(T ) =
l(a)
aB
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 differents, 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` batir progressivement un arbre a` partir dun sommet quelconque (arbitrairement le sommet numero 1) et en y greffant, 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 sousensemble 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 marquage de la facon 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 suffit en effet 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 effectuant 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
Le probl`eme de loptimisation du choix dune arborescence couvrante est plus difficile que
pour les arbres couvrants parce quil faut verifier 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
8.1
R
eseaux, r
eseaux de transport et probl`
emes de flots
D
efinitions
D
efinition 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 flot est laffectation 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 flots entrants soit egale a` la somme des flots sortants (loi de Kirchhoff : conservation
des flux en chaque sommet).
Parmi les probl`emes les plus classiques, on peut citer celui de la recherche dun flot maximal. On se donne une capacite maximale sur chaque arc qui sera une borne superieure du flot
autorise sur cet arc. Le probl`eme du flot maximal consiste a` determiner un flot dont la valeur
en un certain lieu est maximale. On peut, de plus, se donner un co
ut de transport dune unite
de flot sur chaque arc et chercher le flot maximal de co
ut minimal.
D
efinition 23
On appelle reseau de transport un graphe oriente antisymetrique value G = (X, A, C),
sans boucle et dans lequel il existe :
un sommet x1 sans predecesseur (cest-`a-dire 1 (x1 ) = ) nomme entree ou
source du reseau,
un sommet xn sans successeur (cest-`a-dire (x n ) = ) nomme sortie ou puits du
reseau,
27
x 6= x1 et x 6= xn
aA+
x
aA
x
8.2
D
efinition 25
Pour un flot dans un reseau de transport G = (X, A, C), on dit quun arc est
sature si on a (a) = C(a).
Le flot est dit complet si tout chemin allant de x 1 a` xn contient au moins un arc sature.
Si lon consid`ere le graphe partiel engendre par les arcs non satures par le flot et si le flot nest
pas complet, il existe necessairement un chemin allant de lentree a` la sortie. On peut alors
definir un nouveau flot pour le reseau en augmentant de 1 le flot de chacun des arcs constituant le
chemin ; la valeur du flot est alors egalement augmentee de 1. On peut donc progressivement
28
augmenter la valeur dun flot incomplet jusqu`a ce quil soit complet. En tenant compte des
differences entre les capacites et la valeur du flot sur les arcs de , on peut connatre davance
laugmentation possible du flot. Cependant, le flot complet ainsi obtenu nest pas, en general, le
flot maximal.
8.3
Am
elioration du flot
Soit un flot complet. On va utiliser une procedure iterative pour identifier et marquer tous
les sommets du graphe o`
u il est possible de faire transiter une unite de flot supplementaire.
On definit 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 flot
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
flot nest pas nul ((x, y) A et (y, x) > 0).
Letiquette a pour role de donner le nom dun predecesseur ou dun successeur dun sommet
donne en indiquant si le flot 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 x1 a` xn 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 x1 a` xn .
Soit alors :
0
si a
/
(a) = (a)
0 (a) = (a) + 1 si a et si a est orientee dans le sens de
0
(a) = (a) 1 si a et si a est orientee dans le sens contraire de
0
On verifie aisement que 0 est encore un flot. Comme xn = xn + 1, la valeur du flot est
superieure, donc meilleure que celle de .
On peut alors systematiser lidee precedente en introduisant la notion de graphe decart ou
reseau residuel.
D
efinition 26
Soit un reseau de transport G = (X, A, C) possedant un flot complet . On appelle
29
Th
eor`
eme 4
8.4
A partir des resultats precedents, on peut maintenant proposer une methode constructive de
recherche dun flot maximal.
Algorithme 4 (Ford et Fulkerson)
Recherche dun flot maximum.
(a) - Iteration k = 0
Partir dun flot initial 0 (compatible avec les contraintes de capacite),
par exemple 0 = (0, 0, . . . , 0).
(b) - A literation k, soit k le flot courant.
k ).
Rechercher un chemin k de x1 a` xn dans le graphe decart G(
Sil nen existe pas, FIN : le flot k est maximal.
(c) - Soit k la capacite residuelle du chemin k
(minimum des capacites residuelles des arcs du chemin).
Definir le flot k+1 par :
k+1
a = ka + k si a et si a est orientee dans le sens de
k+1
= ka k si a et si a est orientee dans le sens contraire de
a
Faire k k + 1 et retourner en (b).
Par definition du graphe decart, les flots k sont tous compatibles avec les capacites. Par
ailleurs, k est positif a` chaque iteration et, par suite, lalgorithme produit une sequence de flots
compatibles de valeurs strictement croissantes.
A chaque etape, la methode consiste donc a` rechercher une chane joignant x 1 a` xn . Il
est evident que le choix dune telle chane nest pas unique. Plusieurs travaux ont tente de
systematiser ce choix afin dameliorer les performances moyennes de lalgorithme.
8.5
Exemple trait
e manuellement
On consid`ere le graphe de la figure 11 (les nombres associes aux arcs representent les capacites), pour lequel on cherche a` determiner un flot maximal entre le sommet 1 et le sommet 7.
Toutes les composantes du flot initial sont considerees nulles 0 = (0, 0, . . . , 0) (figure
0 ) est represente figure 12b.
12a) ; le graphe decart G(
Le chemin choisi est trace en pointilles, sa capacite residuelle vaut 1 = min(5, 4, 7) = 4.
On augmente donc de quatre le flot sur les arcs composant le chemin (ils sont tous orientes
30
4
2
5
1
2
5
8
3
7
3
2
6
0
2
0
1
0
5
0
3
4
0
5
1
4
2
4
1
0
5
4
3
1
3
7
3
2
6
31
4
2
5
1
0
3
4
3
1
3
4
2
5
1
2
3
6
3
4
3
2
2
3
3
4
2
5
1
1
5
4
3
2
2
4
3
1
6
3
2
w(a)(a)
aA
On peut alors se poser le probl`eme consistant a` rechercher, parmi les flots 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
= w(a) et une
capacite c(a) = c(a) (a) > 0,
ut w(a)
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 directement les probl`emes daffectation 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.
D
efinition 27
Etant donne un graphe simple non oriente G = (X, A), un couplage est un sousensemble daretes K A tel que deux aretes quelconques de K ne sont pas adjacentes.
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
D
efinition 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
= A K.
et K
Une chane alternee augmentante ou chane ameliorante est une chane alternee joignant deux sommets insatures.
= AK
En convenant de dessiner les aretes dun couplage par des traits epais, les aretes de K
restant en traits fins, une chane alternee est une chane elementaire dont les aretes sont alternativement fines et epaisses.
D
efinition 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 0 obtenu en echangeant le role des aretes
fines 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 0 est appelee transfert le long de la
chane alternee L.
Une operation de transfert le long dune chane alternee augmentante, augmente la cardinalite du couplage dune unite.
Par exemple, sur le graphe de la figure 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 0 = {(1, 2), (3, 4), (5, 6)} de
cardinalite egale a` 3.
2
1
2
1
4
3
5
4
34
Ce theor`eme montre que pour rechercher un couplage maximal, il suffit 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, effectuer 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 fixee i 0 , on construit un
arbre alterne T de racine i0 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 i0 et j est une chane alternee,
les chanes reliant i0 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 courant, 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 niveau 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 finit 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 figure 18 o`
u lon a materialise, a` laide daretes epaisses,
le couplage obtenu apr`es une etape determinee de lalgorithme precedent.
f5
f4
f3
f2
f1
x5
x4
x3
x2
x1
35
Choisissons de construire un arbre alterne dont la racine est le sommet x 1 insature par ce
couplage.
f4
x1
f5
x3
x5
f1
f3
x2
f2
f5
f4
f3
f2
f1
x5
x4
x3
x2
x1
9.2
Pour determiner un couplage maximal sur un graphe biparti G = (X, Y, ), on peut recourir a` lartifice suivant. On construit un reseau de transport (voir definition 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 figure 21). On fixe 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 flot par ces aretes et sur les aretes correspondantes vers S et P (en faisant
passer un flot nul sur les autres aretes), on obtient bien un flot sur le reseau. En effet, la loi de
36
x1
y1
x1
y1
x2
y2
x2
y2
x3
y3
x3
y3
x4
y4
x4
y4
x5
y5
x5
y5
9.3
A chaque arete a A du graphe G(X, A), on associe maintenant un nombre reel w(a) appele poids de larete a. Le poids
P 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 recherche 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).
D
efinition 30
Soit K A un couplage de G = (X, A), on rappelle quune chane alternee augmentante 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 augmentante 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
D
efinition 31
Le co
ut reduit dune chane alternee L (augmentante, reductrice ou conservative)
relative au couplage K vaut :
w(L K)
(L) = 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 :
w( K)
(L) = w( K)
Le resultat suivant caracterise un couplage de poids maximal en termes dexistence de chanes
alternees.
Th
eor`
eme 6
Un couplage K est de poids maximal si et seulement sil nexiste pas de chane alternee, 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
K1 , K2 , ..., Kp 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 flot maximal de co
ut minimal.
Th
eor`
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 0 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 daffectation
La formulation generale dun probl`eme daffectation est la suivante. Etant donne n taches a`
realiser et n machines pour les realiser et sachant que lon connat le co
ut de realisation C ij de
la tache ti par la machine mj (pour tous les couples (ti , mj ) possibles, si la tache ti ne peut etre
effectuee par la machine mj , on pose Cij = ), on cherche une permutation de {1, 2, . . . , n}
conduisant a` un co
ut total :
n
X
Ci,(i)
i=1
38
1
7
6 8
2
3
5
D 11 4
E 4
3
5
1
4 5
7 10
5
11 15
5
2 10
1
1
4
5
5
3
0 6
C
D
2
0
3
4
E 1
3
0
1
1
2
0
3
4
4
5
5
3
0 6
E 1
8
4
3
0
0 6
C
D
0 8
E 1
1
1
4
5
5
3
0 6
C
D
2
0
3
4
E 1
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 :
5
2
B -1 5 -1
1
0
C -1
D
2
0
3
3
4
4
2 -1 2
E 1
3 -1
1
0
2
0
4
4
5
2
0 6
E 2
40
3
3
0 7
4
3
0
On note (C2,ij ) la matrice ainsi obtenue et lon poursuit la procedure de traitement en reprenant a` la seconde phase. Lorsquune solution optimale est obtenue (un zero par ligne et
par colonne), on arrete ; sinon on recommence et on definit successivement les matrices (C 3,ij ),
(C4,ij ), . . . , (Cn,ij ).
Sur le tableau (C2,ij ) de lexemple, on est amene a` encadrer C 2,D2 et barrer C2,A2 , encadrer
C2,E4 , encadrer C2,A1 et barrer C2,B1 et C2,C1 , encadrer C2,B5 et enfin encadrer C2,C3 :
1
0
4
4
5
2
0 6
C
D
2
0
3
3
E 2
5
4
10
Probl`
emes dordonnancement
methode tient une place dominante par sa simplicite, son efficacite 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 taches, soumises a` de nombreuses contraintes, determiner lordre et le calendrier
dexecution des diverses taches.
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 fini de
taches, caracterisees par leur duree dexecution (generalement fixe, parfois aleatoire), eventuellement aussi par leur co
ut dexecution, et soumises a` des contraintes de posteriorite stricte (une
tache ne peut commencer que si certaines autres taches 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 taches.
La representation par un graphe dun probl`eme dordonnancement permet une bonne apprehension globale du probl`eme. Letude de ce graphe conduit a` lidentification des taches prioritaires et la detection des retards ou des depassements de moyens afin de prendre les mesures
correctives necessaires.
Le probl`eme central de lordonnancement senonce comme suit : etant donne un projet
constitue de n taches de durees dexecution fixes 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 differentes
operations a` mener que lon decomposera plus ou moins finement selon la precision souhaitee.
Generalement, les taches sont definies pour que leurs durees dexecution soient du meme ordre
de grandeur ; de plus, les contraintes de posteriorite entre les taches doivent pouvoir etre etablies
avec precision. Ce travail important est souvent long et necessite une collaboration etroite entre
les differents acteurs du projet.
10.1
Le graphe potentiels-t
aches
puisse commencer, il est necessaire que toutes les taches qui la relient a` la tache debut du projet
soient realisees.
D
efinition 32
La date au plus t
ot, ti de debut de la tache i est egale a` t i = maxj1 (tj + dj ),
i
cest-`a-dire que ti 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 tache i est egale a` Ti = minji (Tj di ) avec T = t , ce qui montre que Ti =
t l(i, ) o`
u l(i, ) est la longueur du plus long chemin de i a` .
La marge totale Mi de la tache i est definie comme la difference entre la date au plus
tot et au plus tard (Mi = Ti ti ).
Les taches dont la marge est nulle sont appelees t
aches critiques. Si un quelconque
retard est pris sur la realisation de lune de ces taches, la duree minimale du projet
sera augmentee dautant.
La marge libre mi de la tache i est le delai dont on peut retarder cette tache sans affecter les dates de debut au plus tot des taches posterieures, m i = minji (tj ti di )).
On observe donc qu`a chaque tache i est associe un nombre t i qui peut etre considere comme
un potentiel do`
u la denomination de graphe potentiels-taches.
10.2
Le graphe potentiels-
etapes ou graphe PERT
Dans cette representation, les taches sont materialisees par les arcs du graphe. La longueur
de chaque arc est egale a` la duree d i de la tache correspondante. Le debut et la fin dune tache
constituent les etapes du projet. Comme precedemment, on introduit les deux etapes de debut
() et de fin () du projet.
Chaque etape est donc definie par un ensemble de taches dej`a effectuees. Si une tache j doit
succeder a` une tache i, on confondra lextremite initiale de larc a j (correspondant a` la tache
j) et lextremite terminale de larc a i (correspondant a` la tache i), via eventuellement un arc fictif.
Le graphe ainsi defini 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 potentielstaches car elle demande la definition des etapes qui peuvent correspondre au debut o`
u a` la fin
des
t
a
ches
qui
doivent
de plusieurs taches. Si lon se donne, pour chaque tache i, lensemble 1
i
la preceder, les differentes etapes du projet correspondent aux differents ensembles 1
.
i
Soulignons aussi que pour pouvoir exprimer certaines contraintes de posteriorite stricte, il
est parfois necessaire dintroduire des taches fictives et donc des arcs fictifs de duree nulle. A
titre dexemple, considerons le sous-graphe partiel de la figure 23.
Ce graphe indique que les taches 3 et 4 doivent succeder aux taches 1 et 2. Supposons que
suite a` une modification de conditions techniques, lexecution de la tache 4 puisse commencer
43
Tche 1
Tche 3
Tche 2
Tche 4
Tche 3
Tche fictive
Tche 2
Tche 4
10.3
R
esolution
1jn
Chaque ti ainsi obtenu est la longueur du chemin le plus long du sommet au sommet i et
represente la date au plus tot de debut dexecution de la tache ou de letape i.
La duree minimum t du projet ayant ete determinee, il est bien s
ur possible de retarder
lexecution de certaines taches 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 differentes taches ou etapes i
sous la condition que la duree minimale du projet ne soit pas modifiee. Ces dates se calculent de
meme mani`ere que pour les dates au plus tot mais a` partir du graphe inverse obtenu en inversant
le sens de tous les arcs. Il vient T = t et :
Tj = min(Ti di ),
ij
44
0 j n1
Chaque quantite T Ti ainsi obtenue est la longueur du chemin le plus long du sommet i
au sommet .
10.4
Compl
ements
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 tache j doit commencer apr`es la fin de i ou bien apr`es la moitie de la
realisation de i, ou bien un certain temps apr`es la fin de i, etc.
Type disjonctif : les taches 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 taches 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 difficiles a` prendre en compte dans le graphe potentiels-etapes. On est en effet amene
a` ajouter des sommets et des arcs fictifs en tr`es grand nombre dans le graphe. En revanche,
dans le graphe potentiels-taches, 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 tache 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 fin de i se represente par un
arc (i, j) de longueur di + t.
la contrainte : j ne peut commencer quapr`es la date b j se represente par un arc (, j) de
longueur bj .
la contrainte : j doit commencer avant la date c j se represente par un arc (j, ) de longueur
cj .
enfin la contrainte : j doit suivre immediatement la tache i secrit t i + di = tj et se
represente par un arc (i, j) de longueur d i et un arc (j, i) de longueur di .
Les deux derniers cas introduisent des circuits et des arcs de longueurs negatives. La condition dexistence dun ordonnancement devient alors : il nexiste pas de circuit de longueur
strictement positive. Comme lon peut introduire des arcs de longueur differentes 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 tot et au plus tard deviennent alors :
tj = max (ti + dij ) au lieu de
tj = max (ti + di )
Tj = min(Ti di )
i1
j
ij
i1
j
ij
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-taches. On preferera donc la representation potentiels-taches d`es que le probl`eme
ne se reduit pas au probl`eme central.
45
X
X
f () =
C(i)(j)
i=1,...,n
j>i
o`
u (i) represente le ii`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 Cij , 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 - Impl
ementation de lalgorithme de Moore-Dijkstra
r
Le programme Matlab
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 :
dep
: matrice des longueurs (sil ny a pas darc entre le sommet i et le sommet j, alors
lij = et conventionnellement lii = 0).
: numero du sommet de depart du chemin recherche.
arv
En sortie, on recup`ere :
s
: 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 e
galement le vecteur des longueurs
%
des plus courts chemins entre le sommet DEP et tous les autres sommets.
%
%
Voir aussi MOORE1
%
%
n=size(L,1);
% Initialisation
Sb=1:n;
Sb(dep)=[];
mark=L(dep,:);
while 1
[v,indj]=min(mark(Sb));
j=Sb(indj);
Sb(indj)=[];
if isempty(Sb),break,end
succ=find(L(j,:)~=inf & L(j,:)~=0);
A=intersect(succ,Sb);
if ~isempty(A)
mark(A)=min(mark(A),mark(j)+L(j,A));
end
end
s=mark(arv);
%
%
%
%
%
%
%
47
4
5
4
2
2
7
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 e
galement le chemin emprunt
e
%
(s
equence de num
ero de sommets).
%
%
Voir aussi MOORE
%
%
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 figure 25 :
clear
% Matrice de distance
D=[ 0
7
1 inf inf inf
49
50
Annexe B - Impl
ementation de lalgorithme de Floyd
r
Le programme Matlab
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 :
: matrice des longueurs (sil ny a pas darc entre le sommet i et le sommet j, alors
lij = et conventionnellement lii = 0).
En sortie, on recup`ere :
A
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 e
galement la matrice des pr
ed
ecesseurs
%
%
%
[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 figure 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
52
Annexe C - Impl
ementation de lalgorithme de Prim
r
Le programme Matlab
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 param`etres dappel de la fonction prim sont les suivants :
L
dep
: matrice des longueurs (sil ny a pas darc entre le sommet i et le sommet j, alors
lij = et conventionnellement lii = 0).
: numero du sommet de depart pour la construction de larbre recherche.
En sortie, on recup`ere :
alpha
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.
%
%
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 figure 26. Le programme ci-apr`es permet de determiner un arbre
couvrant de ce graphe.
53
1
7
4
2
2
3
4
10
5
6
7
2 inf inf
inf inf inf
4
3 inf
1 10
2
0
4
2
4
0
7
2
7
0 ]
4
1
3
1
5
3
7
6
54
R
ef
erences
[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. Bestougeff, 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, SpringerVerlag, 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 cliffs (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-04016470-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