Vous êtes sur la page 1sur 59

Th

eorie des graphes

DUT Informatique, semestre 2


Version 1.3

23 mai 2013

Ph. Roux

2009-2013

2
Avertissement
Pour bien utiliser ce polycopie, il faut le lire au fur et a` mesure de lavancement
du cours magistral, et prendre le temps de refaire les exercices types qui y sont
proposes.
Les definitions et theor`emes sont numerotes suivant le meme ordre que dans
Table des mati`
eres le cours magistral.
Th eor`
eme 0.0.0 les theor`emes apparaissent toujours dans un cadre grise comme
celui-ci et sont en general suivis de leur demonstration, signalee par une barre dans
la marge et un  a` la fin comme ci-dessous :
Table des mati` eres 3 Preuve : Debut de la demonstration . . .
Origines historiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1 Differentes notions de graphes . . . . . . . . . . . . . . . . . . . . . . 7
1.1 Relations binaires . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Graphes orientes . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Autres types de graphes . . . . . . . . . . . . . . . . . . . . . 24
. . .fin de la demonstration 
1.4 Quelques probl`emes courants de theorie des graphes . . . . . 29
La table des mati`eres et lindex (`a la fin du document) permettent de retrouver
2 Chemins dans un graphe . . . . . . . . . . . . . . . . . . . . . . . . . 34
une notion precise dans ce polycopie.
2.1 Definitions et premiers exemples . . . . . . . . . . . . . . . . . 34
Les methodes et techniques qui seront approfondies en TD sont signalees par
2.2 Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
un cadre (sans couleurs)
2.3 Parcours de graphes orientes . . . . . . . . . . . . . . . . . . . 47

P
Des exercices types corriges, rediges comme vous devriez le faire en DS, sont
3 Probl`emes doptimisation . . . . . . . . . . . . . . . . . . . . . . . . 55
signales par le symbole :
3.1 Probl`eme du plus court chemin . . . . . . . . . . . . . . . . . 55
3.2 Ordonnancement et gestion de projet . . . . . . . . . . . . . . 63
Les erreurs et les confusions les plus frequentes sont signalees dans des cadres
3.3 Flots dans les reseaux . . . . . . . . . . . . . . . . . . . . . . 69
rouges avec le symbole :
4 Notions de theorie des langages . . . . . . . . . . . . . . . . . . . . . 80
4.1 Alphabets, langages et grammaires formelles . . . . . . . . . . 80 
4.2 Langages reguliers et automates Finis . . . . . . . . . . . . . . 85
4.3 Langages algebriques . . . . . . . . . . . . . . . . . . . . . . . 96 Vous etes libre de reutiliser le contenu de ce document sous les termes de la
5 Metanet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 licence CC-BY-NC-SA [10]
5.1 Lediteur de graphes metanet . . . . . . . . . . . . . . . . . . 98
5.2 Manipulation dun graphe dans Scilab . . . . . . . . . . . . . 101
5.3 Principales fonctions pour les graphes . . . . . . . . . . . . . . 108

Bibliographie 114

Liste des Exercices 115

3 4
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Origines historiques
Les mathematiques fournissent de puissants outils pour modeliser des probl`emes
de toutes sortes :
les structures booleennes pour les probl`emes de logique (, , , =, . . .)
les ensembles pour representer des collections dobjets N, R, R2 , Mp,n(R) . . .
les fonctions, derivees, integrales pour realiser des calculs . . .
Mais ses outils sont insuffisants, meme `a notre niveau, pour pouvoir modeliser
des probl`emes dapparence pourtant assez simple. Un bon exemple de ce type de
probl`eme peut etre trouve dans le domaine des bases de donnees :
comment mod eliser les liens entre des objets pris dans differents ensembles ?
Pour cela nous avons besoin dun nouveau type dobjet mathematiques : les
graphes.

Par rapport aux autres theories mathematiques etudiees `a lIUT, la theorie des
graphes est assez recente. Larticle considere comme fondateur de la theorie des
graphes fut presente par le mathematicien suisse Leonhard Euler `a lAcademie de
Saint Petersbourg en 1735, puis publie en 1741, et traitait du probl`eme des sept
ponts de Konigsberg. Le probl`eme consistait `a trouver une promenade `a partir dun
point donne qui fasse revenir `a ce point en passant une fois et une seule par chacun
des sept ponts de la ville de Konigsberg.
Au milieu du XIX i`eme, cest le theor`eme des quatre couleurs qui va po-
pulariser dans le monde des mathematiques cette theorie peu connue jusque l`a.
Ce theor`eme affirme quon a besoin que de quatre couleurs differentes pour colo-
rier nimporte quelle carte geographique de telle sorte que deux regions limitrophes
(ayant toute une fronti`ere commune) recoivent toujours deux couleurs distinctes.
Le resultat fut conjecture en 1852 par Francis Guthrie, interesse par la coloration Figure 1 les 7 ponts de Konigsberg
de la carte des regions dAngleterre, mais ne f ut demontre quen 1976 par deux
Americains Kenneth Appel et Wolfgang Haken. Leur demonstration de ce theor`eme
fut la premi`ere `a utiliser un ordinateur pour etudier les 1478 cas particulier aux
quels se ram`ene le probl`eme des quatre couleurs critiques ce qui necessita plus de
1200 heures de calcul !
Cest donc au XX i`eme que cette theorie va connatre son veritable essor avec
lutilisation croissante dans la vie quotidienne des reseaux dont il faut optimiser
lutilisation constamment :
reseaux de transport routier, transport deau, delectricite
reseaux de transport de donnees (reseau de telephonie fixe, GSM, wifi . . .)
reseaux dinformations (bases de donnees, web, reseaux sociaux . . .)
Cette theorie est devenue fondamentale en informatique car elle fournit de nombreux
algorithmes pour resoudre des probl`emes complexes representes par des graphes de
tr`es grande taille (plusieurs centaines, milliers,. . . de sommets et darcs !).

Figure 2 une carte geographique coloriee avec 4 couleurs seulement

5 6
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

1 Diff
erentes notions de graphes D
efinition 1.1 (Relation binaire) Soient E et F deux ensembles alors
R est une relation de E vers F si R est la donnee dun triplet densembles
(E, F, U) tel que U E F .
1.1 Relations binaires On dit que x est en relation avec y si et seulement si (x, y) U ce qui
sera note xRy
La notion de graphe repose avant tout sur la notion de relation binaire, pour
Au contraire si x nest pas en relation avec y on ecrira x R6 y
lintroduire nous allons commencer par prendre un exemple de la vie courante.
On representera une relation R = (E, F, U) par un diagramme sagittal (ou

P
diagramme fleche) pour cela :
on dessine les diagrammes de Venn des ensembles E et F
1.1 Emploi du temps Un emploi du temps met en relation des jours (ou des chaque couple (x, y) U est represente par une fl`eche allant de x `a y
creneaux horaires) et des mati`eres (et eventuellement des enseignants, des salles
. . .) : Pour des raisons pratiques on utilisera le vocabulaire suivant pour designer les
differents ensembles associees a` la definition de relation binaire :
Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
Archi Syst`eme Algo Maths EGO
D
efinition 1.2 (Lexique de la th eorie des graphes)
Algo Syst`eme Anglais EC EGO
Pour une relation R, definie par le triplet (E, F, U), telle que xRy on dira :
Archi Archi Algo Algo Maths
E est lensemble de depart, F celui darrive et U celui des arcs.
Algo EC Maths
x est le predecesseur de y, on dit aussi lorigine de (x, y)
On est donc en presence de deux ensembles de donnees dans cet exemple : les jours
lensemble des predecesseurs de y est (y)
de la semaine et Les mati`eres enseignees. Mais il y a une donnee supplementaire
d (y) = Card (y) est le degre entrant en y
quon ne peut pas representer par un ensemble : la relation qui existe entre les jours
le domaine de R : DR = {x E | y F, (x, y) U}
et les mati`eres. On peux lexprimer simplement par la phrase :
y est le successeur de x, on dit aussi lextremite de (x, y)
lensemble des successeurs de x est + (x)
une mati`ere est en relation avec les jours de la semaine o`
u elle est enseignee
d+ (x) = Card+ (x) est le degre sortant de x
limage de R : ImR = {y F | x E, (x, y) U}
On peut essayer de representer ces liens sur un diagramme en les representant par
des fl`eches comme sur la figure FIG.3. On se rend alors facilement compte quon ne Il est tr`es facile de retenir le sens de certaines de ces notions en pensant a` la
peut pas modeliser ces liens en utilisant des fonctions ou des applications dun des representation graphique de la relation par un diagramme sagittal (ensembles de
ensembles vers lautre. On a besoin dune notion plus generale . . . depart et darrive, successeurs, predecesseur) Mais dautres sont moins faciles a`
R retenir (domaine, image, degre). Il faut donc bien retenir ces definitions d`es main-
Mati`eres Jours

P
tenant.
Sport Lundi
1.2 Exprimer ces diff erents ensembles pour la relation de la FIG.3
Archi Mardi Depart :E = {Sport; Archi; Algo; . . . ; Maths}
Algo Arrivee :F = {Lundi; Mardi; Mercredi; . . . ; Dimanche}
Mercredi Arcs :U = {(Archi, Lundi); (Archi, Mardi); . . . ; (Maths, V endredi)}
Syst`
eme Domaine :DR = E \ {sport}
Jeudi
Anglais Image :ImR = F \ {Samedi; Dimanche}
V endredi + (Maths) = {Jeudi; V endredi} = d+ (Maths) = 2
EC (Jeudi) = {Maths; EC; Algo} = d (Jeudi) = 3
EGO Samedi ...

Maths Dimanche

Figure 3 Relations entre les mati`eres et les o`


u elles sont enseignees

7 8
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

On peut aussi rapprocher ce vocabulaire du vocabulaire utilises pour les fonctions P 1.4 Reconnatre `
a partir des diagramme sagittaux les d
efinitions

P
et applications qui sont en fait des cas particuliers de relations ! pr
ec
edentes :
reconnatre les fonctions et les applications des autres relations :
1.3 Cas des fonctions et applications reprendre les definitions du cours de
theorie des ensembles concernant les fonctions et applications du point de vue des
relations binaires : h g f
E F E F E F
Fonctions une fonction f : E F est une relation
1 a 1 a 1 a
xRy f (x) = y
2 b 2 b 2 b
Reciproquement, une relation R est une fonction si chaque element de E `a au
plus un successeur 3 c 3 c 3 c

x E, Card(+ (x)) 1 x E, d+ (x) 1 4 d 4 d 4 d

Applications Une relation R : E F est une application si et seulement si : e 5 e 5


R est une fonction
Son domaine de definition est egal `a E g et f sont des fonctions
ce qui sexprime en langage des relations binaires par f est une application mais pas g (car d+ (5) = 0 ou encore Dg = E\{5} 6= E)
et h nest pas une fonction (car d+ (5) = 2) donc pas une application
x E, Card(+ (x)) = 1 x E, d+ (x) = 1
reconnatre injectivit
e, surjectivit
e et bijectivit
e :
Application injective surjective, bijective Soit f : E F une application,
on dit que f est f1 f2 f3
injective si chaque element de F `a au plus un predecesseur E F E F E F

y F, Card( (y)) 1 y F, d (y) 1 1 a 1 a 1 a

surjective si chaque element de F `a au moins un predecesseur 2 b 2 b 2 b


c c c
y F, Card( (y)) 1 y F, d (y) 1 3 3 3

bijective si elle est injective et surjective 4 d 4 d 4 d

y F, Card( (y)) = 1 y F, d (y) = 1 e 5 5 e

ce sont bien des applications et :


 Ces definitions ont une grande importance en base de donnees, elles sont direc- a cause de d (e) = 0)
f1 est injective mais pas surjective (`
tement liees aux cardinalites qui apparaissent dans un MCD. Elles permettent a cause de d (d) = 2)
f2 est surjective mais pas injective (`
dexpliquer pourquoi : seule f3 est bijective
Une relation fonctionnelle qui apparat dans un MCD naura pas de table propre
Une relation bijective ne devrait jamais apparatre dans un MCD On retrouve sur ces exemples les resultats du theor`eme suivant :
Theor`eme 1.3
Soient E, F des ensembles finis et f : E F une application alors
si f est injective alors Card(E) Card(F )
si f est surjective alors Card(E) Card(F )
si f est bijective alors Card(E) = Card(F )

9 10
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Le diagramme sagittal permet de detecter de nombreuses proprietes dune re- lundi mardi mercredi jeudi vendredi samedi dimanche

lation binaire, `a condition quil ny ait pas trop darc ni delements. Pour pou- Algo 1 0 1 1 0 0 0
voir analyser les proprietes de graphes de grandes tailles nous avons besoin dune Anglais
0 0 1 0 0 0 0

representation qui permette de faire des calculs : une matrice. Archi 1 1 0 0 0 0 0

Algo 1 0 1 1 0 0 0

EC 0 0 0 1 0 0 0

Definition 1.4 (matrice dadjacence) EGO 0 0 0 0 1 0 0

Soient E = {x1 ; x2 ; . . . ; xp }, F = {y1 ; y2 ; . . . ; yn } et R = (E, F, U) une relation M aths 0 0 0 1 1 0 0

alors on appelle matrice dadjacence de R la matrice booleenne MR Mp,n(B) telle Sport 0 0 0 0 0 0 0
que Syst`
eme 0 1 0 0 0 0 0

1 si (xi , yj ) U On se rappellera que dans la matrice dadjacence :
MR = (mi,j ) avec mi,j =
0 sinon

les lignes correspondent aux elements de lensemble de d
epart
les colonnes correspondent aux elements de lensemble de arriv
ee
 Pour pouvoir ecrire la matrice dadjacence dune relation il faut avoir choisi
un ordre pour les elements des ensembles E et F (il sont numerotes x1 , x2 , . . .
pour E et y1 , y2 , . . . pour F ). Ce choix est arbitraire, mais il nest pas indique dans Le defaut de la matrice dadja-
cence est quelle contient beaucoup de i j mij
la matrice dadjacence ! On prendra donc (sauf mention contraire) lordre
lexicographique pour ordonner les el
ements de E et F . Une fois quon a 0. Dun point de vue informatique 1 1 1
ordonne les elements des ensembles E et F chaque relation est representee par une cela represente un gaspillage de place 1 3 1
matrice et chaque matrice represente une relation memoire. Cest pourquoi on represente 1 4 1
parfois ces matrices sous forme de ma- 2 3 1
trice creuse , cest a` dire en donnant 3 1 1
seulement la position de chaque coeffi- 3 2 1

P cient non-nul de la matrice (ainsi que sa 4 1 1


taille). Cest la representation qui est uti- 4 3 1
1.5 Repr esentation dune relation ` a laide dune Matrice dadjacence 4 4 1
lisee en base de donnees pour representer
Comme il ny a pas `a priori dordre sur les elements dun ensemble il faut souvent 5 4 1
la table associee a` un TA. Dans le cas de
faire attention pour remplir la matrice dadjacence `a partir dun diagramme sagittal 6 5 1
la relation representee FIG.3 la matrice
u les elements ne sont pas forcement classe dans lordre lexicographique 1 . Ici on
o` 7 4 1
dadjacence sera representee comme ci-
choisit lordre lexicographique pour lensemble des mati`eres mais pas pour lensemble 7 5 1
contre :
des jours (o`u il y a un ordre plus naturel) ce qui donne : 9 2 1
R
Mati`eres Jours

La matrice dadjacence permet de faire de nombreux calculs, comme par exemples


Sport Lundi
1 0 1 1 0 0 0 compte le nombre de relations entre deux ensembles.
Archi 0 0 1 0 0 0 0
M ardi
Theor`
eme 1.5 (Nombres de relations entre 2 ensembles)
Algo 1 1 0 0 0 0 0
M ercredi Si E et F sont des ensembles finis alors le nombre de relations de E vers F est
1 0 1 1 0 0 0
Syst`
eme

0
Jeudi
Anglais
0 0 0 1 0 0 2Card(EF ) = 2Card(E)Card(F )
V endredi 0 0 0 0 1 0 0
EC
0 0 0 1 1 0 0 Preuve : Il suffit de compter le nombre de Matrices dadjacences :
EGO
Samedi

0 0 0 0 0 0 0 la matrice dadjacence est de taille Card(E) Card(F )
Chaque case peut etre remplie de 2 mani`eres 0 ou 1
M aths Dimanche

0 1 0 0 0 0 0
On a donc au total 2| 2 {z 2} = 2Card(E)Card(F ) possibilites
Pour mieux comprendre la matrice dadjacence on peut y faire apparatre les Card(E)Card(F ) r
ep
etitions

elements des ensembles E et F
Mais surtout la matrice dadjacence permet de calculer de nouvelles relations a`
1. ca ne donnerait pas forcement un diagramme tr`es lisible partir de relations connues. Commencons par la composition des relations.

11 12
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Definition 1.6 (Composition de relations) Soient R1 = (E, F, U1 ) et R2 = la somme et le produit sont faits dans lalg`ebre de Boole binaire B donc il suffit
(F, G, U2 ) 2 relations alors on appelle T = R2 R1 = (E, G, U) la relation dont les quun seul des termes du produit soit non-nul (egal a` 1) pour que MT (i, j) = 1 cela
arcs sont : veut dire quil existe k tel que MR1 (i, k) = 1 et MR2 (k, l) = 1. Cela revient a` dire
quil existe un arcs (xi , yk ) dans R1 et un autre (yk , zj ) dans R2 , il y a donc bien un

P
U = {(x, z) E G | y F, (x, y) U1 et (y, z) U2 } arc (xi , zj ) dans T 
1.6 composition de deux relations T = R2 R1 il y a un arc joignant
un element de E et un element de G dans le diagramme de la relation T si on  Attention a` lordre des termes dans le produit matriciel, la matrice dadjacence
trouve dans les diagrammes de R1 et R2 un chemin entre ces elements passant par de R2 R1 est MR1 MR2 et pas MR2 MR1 !

P
un element de F :
1.7 Verifier que la matrice MR1 MR2 est bien la matrice dadjacence
R1 R2 T de MT FIG.4
E F F G E G

0 1 0 0 0 0 0 0 0 0 1 1 0 0 0
1 a a 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0

MR1 =
0 0 1 0 0 , MR2 = 0 0 1
0 0
MT = 0 0 1 0 0
2 b b 2 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1
3 c c 3 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
La deuxi`eme formule matriciel quil faut connatre est celle sur la reciproque
4 d d 4
dune relation.
5 e e 5 Definition 1.8 (R eciproque dune relation) Soit R = (E, F, U) une relation
alors on appelle la relation reciproque de R, notee R 1 = (F, E, U ), la relation
Figure 4 Composition de relations dont les arcs sont :

P
U = {(y, x) F E | (x, y) U}

La composition de deux relations correspond au produit matriciel des matrices dad- 1.8 Calculer la r eciproque de la relation R
jacence. calculer la reciproque dune relation revient `a inverser le sens des fl`eches sur le
diagramme sagittal :
Theor`eme 1.7
Si E, F, G sont des ensembles finis alors la matrice dadjacence de T = R2 R1 est R1 R11 R11
E F E F F E
donnee par le produit matriciel suivant :

MT = MR2 R1 = MR1 MR2 1 a 1 a a 1

Ce produit matriciel est effectue avec les operations de lalg`ebre de Boole binaire ! 2 b 2 b b 2

Preuve : On note 3 c 3 c c 3

E = {x1 ; . . . ; xp }; F = {y1 ; . . . ; yl }; G = {z1 ; . . . ; zn } 4 d 4 d d 4

On peut dej`a remarquer que la relation composee T va de E vers G 5 e 5 e e 5


R1 R2
T = R2 R1 : E F G
La encore, on a une formule qui permet de calculer la matrice dadjacence de la
donc sa matrice doit etre de taille pn ce qui correspond bien `a la taille du resultat du reciproque a` partir de la matrice dadjacence de la relation de depart.
produit matriciel MR1 MR2 . Ensuite en reprenant la formule du produit matriciel : Theor`eme 1.9 Si E, F sont des ensembles finis alors la matrice dadjacence de
l
X R 1 est la transposee de la matrice dadjacence de R :
MT (i, j) = MR1 (i, k) MR2 (k, l)
k=1 MR 1 = t MR

13 14
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Preuve : On a dit que dans la matrice dadjacence les lignes correspondent aux 1.2 Graphes orient
es
elements de lensemble de depart et les colonnes aux elements de lensemble darrive.
Pour echanger les roles des ensembles de depart et darrive il suffit donc dechanger Les definitions de la partie precedente sappliquent bien entendu aussi dans le
les roles des lignes et des colonnes de la matrice dadjacence ce qui revient `a trans- cas o`
u lensemble de depart et lensemble darrive dune relation sont les memes,

P
poser cette matrice.  mais dans ce cas on va plutot parler de graphe oriente.

1.9 Calculer la matrice dadjacence de la r


eciproque de la relation Definition 1.10 (Graphe orient e) Un graphe oriente G est la donnee dun
R1 couple densembles (S, A) tels que A S S de telle sorte que G peut etre vu
0 1 0 0 0 0 0 0 0 0 comme la relation binaire R = (S, S, A) entre lensemble S et lui meme. On appel-
0 1 0 0
0 1 1 0 0 0 lera aussi :

MR1 =
0 0 1 0 0
= MR11 = 0 0 1 0 0 sommets du graphe les elements x S
0 0 0 1 1 0 0 0 1 0
0 0 0 0 1 0 0 0 1 1 arcs du graphe les elements (x, y) A
e dun sommet somme des degres entrants et sortant d(x) = d+ (x) + d (x)
degr
 Attention, la matrice dadjacence de la reciproque dune relation nest pas lin- ordre du graphe le nombre de sommets n = Card(S)
verse de la matrice dadjacence de la relation de depart : taille du graphe le nombre darcs m = Card(A)
boucle tout arc de la forme (x, x), cest `a dire dont lorigine est aussi son extremite
MR 1 6= (MR )1
arcs adjacents deux arcs de la forme (x, y) et (y, z), cest `a dire dont lorigine de
Dailleurs linverse dune matrice dadjacence nexiste pas forcement alors que la lun est lextremite de lautre.
reciproque existe toujours. Comme pour les relations binaires, G poss`ede une matrice dadjacence MG qui est

P
une matrice carree MG Mn (B) (o`u n = Card(S)).

1.10 Construire le graphe G = (S, A) suivant


 Les produits matriciels qui apparaissent dans ce cours sont fait en utilisant les
operations + et de lalg`ebre de Boole binaire B ce qui ne donne pas le meme
S = {1; 2; 3; 4} A = {(2, 1); (2, 2); (3, 1); (3, 2); (3, 3); (3, 4); (4, 1); (4, 2); (4, 3)}
resultat que sils sont fait avec les operations + et de R . Par exemple dans M5 (B)
on a ce graphe est dordre n = 4 et de taille m = 9

0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 1 0 0 0 0 1 0 0 0 0 1 0 0 0
2
MS MR =
0 0 1 0 0 0 0 1 0 0 = 0 0 1 0 0

0 0 0 1 0 0 0 0 1 1 0 0 0 1 1
0 0 0 0
0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0

M =
1 4 1 1 1 1
alors que dans M5 (R) on a
1 1 1 0

0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0
0 1 0 0 0 2 0 0 3
MS MR = 0 0 1 0 0
0 0 1 0 0
= 0 0 1 0 0
0 0 0 1 0 0 0 0 1 1 0 0 0 1 1
0 0 0 1 1 0 0 0 0 1 0 0 0 1 2

quand on fait les calculs dans R le nombre obtenu en position (i, j) dans la matrices Dans ce cours on ne considerera pas de
donne le nombre de mani`eres de construire larc (i, j) dans la relation R S . graphes avec des liens multiples, cest a`
 dire avec plusieurs arcs (x, y) differents ! 1 2
Ce type de graphes est appele graphe
multiple

15 16
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Le fait que lensemble de depart et darrive de la relation associee au graphe soient Proposition 1.13 (caract erisation par le diagramme sagittal)
les memes impose une contrainte, sur les degres des sommets, appelee lemme des Soit G = (S, A) un graphe oriente alors
poignees de mains . Reflexif si tout element de S poss`ede une boucle,
Symetrique si tous les arcs sont `a double sens,
Theor` eme 1.11 (Lemme des poign ees de mains) Soit G = (S, A) un graphe Anti-symetrique si aucun arc nest `a double sens,
de taille m alors les sommes des degres entrants et sortants des sommets de G sont Transitif si pour chaque couple darcs adjacents le raccourci est aussi un arc
egales au nombre darcs du graphe.
X X
d+ (x) = d (x) = m  Pour lanti-symetrie et la symetrie on ne tient pas compte des boucles, cest pour
xS xS cette raison que Anti-symetrique nest pas la negation logique de symetrique. Il
existe donc des relations qui sont anti-symetrique et symetrique ou, au contraire ni
en consequence la somme des degres est egale au double de nombre darcs anti-symetrique ni symetrique !

P
X X X
d(x) = d+ (x) + d (x) = 2m
xS xS xS
1.12 Modifier le graphe G pour quil soit, successivement, Reflexif, Anti-
symetrique, Symetrique
Preuve : chaque arc (x, y) compte deux fois dans la somme des degres : une fois
dans d+ (x) et une fois dans d (y), do`
u le resultat :
X X m
X X X X 2 2 2

+
d (x) = d (x) = 1 = m = d(x) = d+ (x) + d (x) = 2m 

P
xS xS i=1 xS xS xS

1 4 1 4 1 4
1.11 V
erifier le lemme des poign
ees de mains sur le graphe G de
taille 9
3 3 3

Reflexif Anti-symetrique Symetrique


2 s d+ (s) d (s) d(s)
1 0 3 3
On pourrait croire que le graphe G est dej`a transitif, pourtant il nen est rien, mais
2 2 3 5
1 4 trouver ce quil faut ajouter au graphe pour le rendre transitif demande beaucoup
3 4 2 6
plus de calculs . . . Cest l`a que la matrice dadjacence va nous aider !
4 3 1 4
P
9 9 18
3 Proposition 1.14 (caract erisation par la matrice dadjacence)
Soit G = (S, A) un graphe oriente de matrice dadjacence M alors G est :
Reflexif si M = M + Idn (Idn = matrice identite de taille n)
Symetrique si M = t M ( t M = transposee de la matrice M)
Les quatre proprietes suivantes jouent un role tr`es important en theorie des Anti-symetrique M t M +Idn = Idn ( = produit terme `a terme des matrices)
graphes. Transitif M 2 + M = M (M 2 = M M produit matriciel)
Preuve :
D
efinition 1.12 Soit G = (S, A) un graphe oriente alors on dit que G est M +Idn ajoute des 1 sur la diagonale qui correspondent donc a` des boucles
Reflexif si x S, (x, x) A sur chaque sommet, donc si M = M + Idn on a dej`a toutes les boucles.
Symetrique si x, y S, (x, y) A (y, x) A M = t M signifie que Mij = 1 = Mji = 1 donc chaque arc de i vers j on
Anti-symetrique si x, y S, (x, y) A et (y, x) A = x = y doit avoir un arc de j vers i
Transitif si x, y, z S, (x, y) A et (y, z) A = (x, z) A M t M + Idn = Idn signifie que M t M a` tous ces coefficients nuls sauf
sur la diagonale eventuellement (puis quon rajoute Idn ). Donc si Mij = 1 =
Il est assez facile de se representer ces definitions sur le diagramme sagittal du Mji = 0 pour que le produit terme a` terme donne un zero dans la case (i, j)
graphe. de la matrice (et aussi dans la case (j, i))

17 18
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Soit R la relation associee au graphe G et M sa matrice dadjacence alors M 2 f E, f f


x0
est la matrice dadjacence de la relation R R. Les 1 de cette matrice f, g E, f g g f
correspondent donc `a des arcs composes de deux arcs adjacents du graphe G. x0 x0

Si ces arcs sont dej`a dans G, les 1 correspondant sont dej`a dans la matrice f, g, h E, f g et g h f h
x0 x0 x0
M et on a bien que M 2 + M = M. Sur lensemble E = {Janvier ; Fevrier ; Mars ;Avril ; Mai ; Juin ; Juillet ; Ao
ut}

P
 on consid`ere la relation :

1.13 Modifier le graphe G pour quil soit transitif


mois1 Rmois2 mois1 et mois2 secrivent avec le meme nombre de lettres

2

0 0 0 0 0 0 0 0 en effet si mois1 , mois2 et mois3 secrivent avec n1 , n2 et n3 lettres on a
1 1 0 0 0
car M 2 + M = 6= 1 1 0 mois1 Rmois1 car n1 = n1
1 4 1 1 1 1 1 1 1 1 si mois1 Rmois2 donc n1 = n2 donc n2 = n1 donc mois2 Rmois1 et inver-
1 1 1 1 1 1 1 0 sement
si mois1 Rmois2 et mois2 Rmois3 alors n1 = n2 = n3 donc n1 = n3 et
3 mois1 Rmois3
donc cest bien une relation dequivalence. Son diagramme sagittal est represente
On verra plus loin comment rendre un graphe transitif en ajoutant des arcs (cf. ci-dessous avec les classes dequivalences et lensemble quotient E/R. Sur cet
fermeture transitive). exemple on comprend facilement que les classe dequivalence representent en
fait des parties du graphe isolees les unes des autres.
E/R E
Ces proprietes sont `a la base de relations que vous utilisez dej`a depuis vos
premi`eres etudes de mathematiques : les relations dequivalences et les relations
dordre. Cl(Janvier) Janvier

Definition 1.15 (relation d equivalence) Fvrier Juillet

Soit G = (S, A) un graphe oriente et R = (S, S, A) la relation associee alors R est


Cl(Mai)
une relation dequivalence si et seulement si elle est
Mai
Reflexive, Avril

Symetrique, Cl(Avril)
Transitive.
Dans ce cas on appelle classe dequivalence de x le sous ensemble de S : Aout
Juin

Cl(Mars)
Cl(x) = {y S | xRy} Mars

Lensemble des classes dequivalences de R est note S/R et appele ensemble quo-

P
tient de S par R .

1.14 Exemples de relations d equivalences Proposition 1.16 Si R est une relation dequivalence sur E alors
legalite dans un ensemble E car x E, Cl(x) 6= ( car x Cl(x)).
x E, x = x (x, y) E 2 , xRy Cl(x) = Cl(y).
x, y E, x = y y = x x E, Cl(x) = E.
x, y, z E, x = y et y = z x = z xE

pour x0 I un intervalle de R, la relation Lensemble des classes dequivalences de R (i.e. E/R) forment une partition de E.

f g dans lensemble E = {f : I R|f application}


x0

est une relation lequivalence car Il ne faut pas confondre les relations dequivalence avec les relations dordre.

19 20
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Definition 1.17 (relation dordre) La relation a|b a divise b sur N


Soit G = (S, A) un graphe oriente et R = (S, S, A) la relation associee alors R est :
une relation dordre si et seulement si elle est a N , a|a :
9 27

Reflexive, a, b N , a|b et b|a = a = b >


3

Anti-symetrique, a, b, c N , a|b et b|c = a|c R>


.........
..........
.......... :7
..
..
..
12

6 ..
..
..

Transitive. son diagramme de Hasse est beau- 1


-
2
-
4 ...
..
..
.
..

-
8

:::
..

On dit quune relation R est une relation dordre total sur S si en plus : coup plus complique que les deux rela- ..
..
..

~* ..
..

zR
..

tions precedentes, il y a un plus petit 10 ........


.......
.......
..
....... ..

~ 40

(x, y) S 2 , xRy ou yRx element (1) mais pas de plus grand 5


z
element : 25
z
dans le cas contraire on parle de relation dordre partiel. 125

On represente souvent les relations dordre par un diagramme plus simple que le Definition 1.19 (listes dadjacence) Soit G = (S, A) un graphe oriente dordre
diagramme sagittal habituel. n et de taille m dont les sommets x1 ; x2 ; . . . xn sont ordonnes. Le graphe G peut etre
represente par des listes dadjacence (LS, T S) qui sont definies par :
Proposition 1.18 (Diagramme de Hasse) Soit G = (S, A) un graphe oriente
LS = liste de longueur m appelee liste des successeurs , elle contient les
tel que la relation associee R = (S, S, A) soit une relation dordre. On peut
successeurs du sommet 1 (range dans lordre croissant) puis du sommet 2 . . .et
representer cette relation par un diagramme de Hasse qui est un diagramme
si un sommet na pas de successeur on passe au sommet suivant.
sagittal dans lequel
T S = liste de longueur n + 1 appelee liste des tetes successeurs qui indique
on positionne les sommets du plus petit au plus grand (au sens de R)
la position du premier successeur de chaque sommet dans LS
on omet toutes les boucles (sous-entendues par reflexivite)
la liste T S est definie comme suit :
on ne trace pas les raccourcis (sous-entendus par transitivite)
T S(1) = 1
on ne met pas de sens aux arcs (sous-entendus par anti-symetrie) par conven-

P
pour x S
tion la relation va de bas en haut ou de gauche `a droite
si x `a des successeurs alors T S(x) = numero de la case de LS du premier
1.15 exemples de relations dordre successeur de x
la relation sur un ensemble de nombres E = N, Z, Q, R sinon T S(x) = T S(x + 1)

P
x E, x x T S(n + 1) = m + 1
x, y E, x y et y x = x = y
1.16 Repr
esenter le graphe G par des listes dadjacence
x, y, z E, x y et y z = x z
son diagramme de Hasse (sur N par exemple) montre que cest une relation
dordre total : 2
0 1 2 3 ...
LS = 1 2 1 2 3 4 1 2 3
La relation sur les parties dun ensemble P(E)
{a; b; c} 1 4
A E, A A TS = 1 1 3 7 10
A, B E, A B et B A
= A = B
A, B, D E, 3
A B et B D = A D {a; b} {a; c} {b; c}
son diagramme de Hasse (sur
P({a, b, c}) par exemple) montre que La liste des tete successeurs est une liste de pointeurs qui permettent de faire
ce nest pas une relation dordre to- apparatre la liste des successeurs de chaque sommet dans liste des successeurs .
tal (en general, pourtant il y a un plus Par exemple, en faisant apparatre ces liens de T S vers LS (rouge ci-dessus) on
grand element ({a; b; c}) et un plus pe- {a} {b} {c} retrouve facilement la liste des arcs (et toute la structure du graphe) `a partir des
tit element () dans P({a, b, c}) pour listes dadjacence :
cette relation. 1 na pas de successeurs
les successeurs de 2 sont 1 et 2 ce qui donne les arcs (2, 1) et (2, 2)

21 22
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

les successeurs de 3 sont 1, 2, 3 et 4 ce qui donne les arcs (3, 1), (3, 2), (3, 3), (3, 4) 1.3 Autres types de graphes
les successeurs de 4 sont 1, 2 et 3 ce qui donne les arcs (4, 1), (4, 2) et (4, 3)
On rencontrera dautres definitions de graphes, qui sont des cas particulier de
celle vue dans la partie precedente, qui permettent de modeliser des probl`emes
 Les listes dadjacences occupent une place memoire de taille n + m + 1 cest concrets avec des graphes plus simples. Le premier exemple est celui des graphes
le minimum dinformations pour representer un graphe compare `a la matrice o`
u le sens des arcs na pas de signification, on parle dans ce cas de graphe non-
dadjacence occupe une place n2 et la liste des arcs occupe une place 2m oriente.

Definition 1.20 (graphe non-orient e) Un graphe non-oriente G est un couple


densembles (S, A) o`
u A est un ensemble de parties de S ayant 1 ou 2 elements :

A {B P(S)|Card(B) = 1 ou 2}

On appellera
S lensemble des sommets de G
A lensemble des aretes de G
La relation R associee au graphe G est la relation de S dans S contenant tous les
arcs (x, y) correspondant `a chaque arete {x; y}. Mathematiquement cela correspond
`a une relation R definie par :
e avec A
R = (S, S, A) e = {(x, y) S 2 |{x; y} A}

ou encore
xRy {x; y} A
On representera un graphe non-oriente par un diagramme sagittal o`
u lon ne met

P
pas de sens aux fl`eches et par la matrice dadjacence de R.

1.17 Representer la matrice dadjacence et lensemble des ar etes du


graphe non-orient
e G suivant
A = {{1; 2}; {1; 3}; {2; 3}; {1; 4}; {2; 4}; {3; 4}; {2}; {3}}
2

0 1 1 1
1 1 1 1

M =
1 4 1 1 1 1
1 1 1 0

 La relation associee a` un graphe non-oriente est forcement symetrique, donc sa


matrice dadjacence sera forcement symetrique.

Dans un graphe non-oriente les notions de successeurs/predecesseur ou de degres


entrant/sortant nont plus de signification. Cela cree un pi`ege au niveau du lemme
des poignees de mains.

23 24
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Definition 1.22 (graphe valu e) Un graphe value G = (S, A, ) est un graphe


 Dans un graphe non-oriente G = (S, A) le degre dun sommet est egal au nombre
(S, A) (oriente ou non-oriente) muni dune application : A R Le graphe peut
daretes quon peut compter sur le diagramme saggital, en particulier
etre represente par la matrice des valuations :
Chaque boucle compte deux fois dans le degre du sommetP considere !
de telle sorte que le lemme des poignees de mains reste vrai : xS d(x) = 2m 
si (xi , yj ) /A
W Mn (R) telleque Wi,j =
((xi , yj )) si (xi , yj ) A

Passons ensuite au cas o`


u les boucles nont pas de signification, on parle dans ce Pour un graphe value on ajoutera sur le diagramme sagittal les valuations de chaque

P
cas de graphe simple. arc ou arete.

1.19 Exemple de graphes valu es calculer la matrice dadjacence et la ma-


D
efinition 1.21 (graphe simple) Un graphe simple G est un graphe sans boucles. trice des valuations des graphes suivants :
3

 Un graphe simple peut etre oriente ou non-oriente ! 2 graphe value oriente




2 3

P
2 1 W =
4 4 1 2
1.18 Exemples de graphes simples calculer la liste des aretes/arcs et la 1 1 1
matrice dadjacence des graphes suivants : 1 1 4
0 0 0 0
1 1 0 0
graphe simple oriente A = {(1; 2); (1; 3); (2; 3); (1; 4); (2; 4); (3; 4); (4; 3)} 2 et M =
1 1 1 1

4
2 1 4 1 1 1 0

0 0 0 0
1 0 0 0 3 3
1 4 M =
1

1 0 1
1 1 1 0 1 2

3
graphevalue non-oriente
2 3 4 2 1
2 1 4 1
graphe simple non-oriente A = {{1; 2}; {1; 3}; {2; 3}; {1; 4}; {2; 4}; {3; 4}} W =
3 4 1 2
2 4 1 2 1 1 4

0 1 1 1
1 0 1 1 0 1 1 1
1 4 M =
1
1 1 1 1
1 0 1 et M = 4 2
1 1 1 0 1 1 1 1 4
1 1 1 0
3 3

1
On rencontrera dans les applications de la theorie des graphes plusieurs types de
valuations associees aux arcs dun graphe : poids, longueur, co
ut, capacite,. . .
Dans les applications de la theorie des graphes les arcs representent souvent des
donnees numeriques (valeur dun flux, une duree,. . .) on a donc besoins de definir  Dans un graphe value il faut obligatoirement de-doubler les arcs `a double sens
des graphes values (i.e. avec des valeurs numerique associees `a chaque arc ou arete). pour pouvoir indiquer les deux valuations !

25 26
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Definition 1.23 (graphe complet) On appelle graphe complet `a n sommets , P 1.22 sous-graphe de G induit par S = {1; 2; 4}

P
souvent note Kn , le graphe dordre n ayant le plus darcs/aretes possibles.

1.20 Dessiner les graphes complets


2 2
oriente `a 3 sommets non-oriente `a 4 sommets
1
2
1 1 1 4 1 4

5
3 2 4
3 3

2 3 4
en supprimant le sommet 3 on supprime les arcs {(3, 1); (3, 2); (3, 3); (3, 4); (4, 3)}.
non-oriente et simple `a 5 sommets
Il y a deux mani`eres de prendre une partie dun graphe suivant quon elimine deux exemples importants de sous-graphe et de graphe partiel sont les cliques et les
des sommets ou des arcs/aretes, ce sont les definitions de sous-graphes et graphe stables :
partiel.
Definition 1.25 (clique et stable) Soit G = (S, A) un graphe (oriente ou pas)
Definition 1.24 (sous-graphe et graphe partiel) Soit G = (S, A) un graphe alors
(oriente ou pas) alors une clique est un sous-graphe complet de G
un graphe partiel de G est un graphe G ayant pour sommets tous les som- un stable est un sous-graphe de G sans arcs/aretes
mets de G et pour arcs/aretes seulement un sous-ensemble de A, ce qui
secrit : la recherche du plus grand stable ou de la plus grande clique dun graphe est un

P
G = (S, A ) avec A A probl`eme tr`es important en theorie des graphes
un sous-graphe de G est un graphe G ayant pour sommets un sous-ensemble 1.23 Trouver le plus grand stable et la plus grande clique dun graphe
S des sommets de G et en ne conservant que les arcs/aretes joignant les
sommets de S ce qui secrit :

P
G = (S , A ) avec S S et A = {(x, y) A|x S et y S } 7 2 8 7 2 8

1.21 graphe partiel de G induit par A = A \ {(2, 2); (3, 2); (4, 3)}

3 4 3 4
2 2

1 4 1 4 5 1 6 5 1 6

Dans la graphe G lensemble de sommets {1; 5; 7} induit une clique maximale


alors que {2; 4; 5} induit un stable maximal (il y en a dautres).
3 3

27 28
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

1.4 Quelques probl`


emes courants de th
eorie des graphes Attention, les deux algorithmes ne donne pas toujours le nombre minimal de cou-
leurs ! Lalgorithme Glouton peut etre ameliore en traitant les sommets dans lordre
Les notions precedentes jouent un role fondamental dans un certain nombre de
decroissant de leur degre (comme dans lalgorithme de Welsh-Powell). Enfin notons
probl`emes type de theorie des graphes. Nous allons en donner quelques uns en
que la structure du graphe impose certaines contraintes sur le nombre chromatique :
exemple.
les sommets dune meme clique doivent etre colories dune couleur diff
erente
Definition 1.26 (coloriage dun graphe) Soit G = (S, A) un graphe simple les sommets dun meme stable peuvent tous etre colories de la m
eme couleur
non-oriente, colorier le graphe G consiste `a assigner une couleur (ou un nombre) `a
cela permet dencadrer le nombre Chromatique de G :
chaque sommet du graphe de telle sorte que deux sommets reliees par un arc/arete
aient des couleurs differentes en utilisant le moins de couleurs possibles. Le obtenir un coloriage a` k couleurs permet daffirmer que (G) k
nombre minimal de couleur est appele (G) =nombre chromatique du graphe G. trouver une clique a` k sommets permet daffirmer que (G) k
Le coloriage dun graphe permet de resoudre de nombreux probl`emes dincom-
De meme colorier les aretes du graphe G consiste `a assigner une couleur (ou patibilite.
un nombre) `a chaque arete du graphe de telle sorte que deux aretes reliees `a un

P
meme sommet aient des couleurs differentes en utilisant le moins de couleurs
possibles. Le nombre minimal de couleur est appele (G) =indice chromatique du
graphe G. 1.24 Un probl` eme de coloriage
Dans un groupe de TP de 14 etudiants on doit former des groupes de PPP de
Lalgorithme glouton est le plus simple pour colorier un graphe :


quelques etudiants en faisant en sorte que les etudiants dun meme groupe ne sen-
fonction G = Coloriage(G) tendent pas trop mal. On connat pour chaque etudiant les membres du groupe avec
couleur courante = 1 lesquels il ne sentend pas :
pour tout x sommet de G faire
V = liste des voisins de x letudiant 1 2 3 4 5 6 7
couleur = plus petite couleur non encore utilisee dans V ne sentend 3 ;5 ; 5 ;6 ;7 ; 1 ;4 ;5 ; 3 ;10 1 ;2 ;3 ;7 ; 2 ;8 ; 2 ;5 ;
si couleur couleur courante alors colorier x avec cette couleur pas avec 9 ;12 8 ;12 10 ;11 14 8 ;9 ;11 12 ;13 9 ;12
sinon incrementer la couleur courante et colorier x avec letudiant 8 9 10 11 12 13 14
fin ne sentend 2 ;5 ;6 ; 1 ;5 ; 3 ;4 ; 3 ;5 ;8 ; 1 ;2 ;6 ; 6 ;8 ; 4 ;8 ;10 ;

fin faire pas avec 11 ;13 ;14 7 ;12 11 ;14 10 ;14 7 ;9 6 ;8 ; 11 ;13
On represente la situation par un graphe simple non-oriente o`
u les sommets representent
Il existe un autre algorithme interessant pour colorier un graphe : lalgorithme de les etudiants. On trace une arete quand deux etudiants ne sentendent pas :
Welsh-Powell. Cet algorithme est plus complique mais souvent moins long `a mettre


en uvre.
12 1 3
fonction G = Welsh(G)
L = liste des sommets classes dans lordre decroissant de leur degre
9
couleur courante = 0
tant que L 6= faire
incrementer la couleur courante 7 5 11 10 4
Colorier s le premier sommet de L avec la couleur courante
eliminer s de L
2 8
V = liste des voisins de s
pour tout x dans L faire
si x
/ V alors colorier x avec la couleur courante 6 13 14
ajouter les voisins de x `a V
fin Pour trouver comment former les groupes il suffit de colorier le graphe (chaque
fin faire couleur constituera un groupe). Suivant lalgorithme utilise on trouve plusieurs so-
eliminer les sommets colories de L lutions `a 4 groupes :

fin faire

29 30
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

12 1 3 12 1 3 Le theor`eme suivant fait le lien entre graphe planaire et coloriage dun graphe.
9 9
Theor`
eme 1.28 (des quatre couleurs)
7 5 11 10 4 7 5 11 10 4 Tout graphe planaire peut etre colorie avec au plus quatre couleurs

8 8
2 2
 Un graphe ayant pour nombre chromatique (G) = 5 ne peut donc pas etre
6 13 14 6 13 14 planaire. Mais attention, la reciproque de ce theor`eme est fausse : un graphe
avec (G) = 4 nest pas forcement planaire !

Coloriage avec lalgorithme glouton :


s = 1, d(s) = 4, couleur bleu avec lalgorithme de Welsh-Powell : Ce probl`emes a de nombreuses applications pratiques. Par exemple en electronique,
s = 2, d(s) = 5, couleur bleu s = 5, d(s) = 5, couleur bleu on peut representer un circuit imprime par un graphe non-oriente dont les sommets
s = 3, d(s) = 5, couleur vert ainsi que les sommets = [14 ;12], sont des composants electroniques et les aretes sont des pistes en cuivre. Si le graphe
s = 4, d(s) = 3, couleur bleu s = 8, d(s) = 4, couleur vert est planaire on pourra graver le circuit imprime sur une seule face. Dans le cas
s = 5, d(s) = 7, couleur cyan ainsi que les sommets = [3 ;7], contraire on devra utiliser un circuit bicouche ou des straps qui fragilisent
s = 6, d(s) = 4, couleur vert s = 2, d(s) = 6, couleur cyan le circuit. Dans un autre domaine, lorsquon represente un reseau informatique,
s = 7, d(s) = 4, couleur vert et les sommets = [11 ;9 ;13 ;4], mieux vaut representer la situation par un graphe planaire quand cest possible.
s = 8, d(s) = 6, couleur rouge s = 6, d(s) = 5, couleur rouge Cela permet de mieux reperer les parties dun reseau qui peuvent se retrouver isolees
s = 9, d(s) = 4, couleur rouge ainsi que les sommets = [10 ;1], lorsquune connexion est coupe.
s = 10, d(s) = 4, couleur cyan La caracterisation des graphes planaires a` ete obtenue vers 1928 :
s = 11, d(s) = 5, couleur bleu Si dans lalgorithme glouton on prend
s = 12, d(s) = 5, couleur cyan les sommets dans lordre decroissant de Th eor`
eme 1.29 (Kuratowski)
s = 13, d(s) = 3, couleur bleu leur degre on trouverai le meme resultat un graphe fini est planaire si et seulement si il ne contient pas de sous-graphe qui
s = 14, d(s) = 5, couleur vert quavec lalgorithme de Welsh-Powell. est une expansion de K5 (la clique `a 5 sommets) ou K3,3 (le graphe complet biparti
`a 3+3 sommets)
En cherchant un peu, on peut voir quil nest pas possible de trouver une solution
`a 3 groupes.

Les notions de graphe complet, de stable et de clique jouent un role tr`es important 1
dans le coloriage dun graphe. Mais ce probl`eme est aussi relie `a un autre probl`eme
dapparence plus complexe : le probl`eme des graphes planaires. 2 3
1
Definition 1.27 (graphe planaire) Un graphe G = (S, A) est dit planaire sil 2 3

P
existe un diagramme sagittal de ce graphe o`
u aucun arc/aretes nen coupe dautre.

1.25 Rendre le graphe suivant planaire il faut deplacer les sommets 2 et


4
2 1 1 5
4 5 4 6
Figure 5 les graphes K5 et K3,3
2
3 3
4
Pour ceux qui aiment jouer, allez voir le site [5]. But du jeu : rendre des graphes
4 5 5 de plus en plus complexe planaires. Un petit algorithme pour vous aider a` rendre
un graphe planaire dans ce jeu :
Est-ce encore possible si on ajoute larete {2; 5} au graphe ?

31 32
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques


fonction G = planaire(G) 2 Chemins dans un graphe
tant que G nest pas planaire faire
pour tout x sommet de G faire 2.1 D
efinitions et premiers exemples
V = liste des voisins de x
La majeure partie des probl`emes modelises en theorie des graphes repose sur la
M = barycentre des sommets de V
notion de chemin. Cette notion est tout a` fait intuitive, mais nous allons lui donner
si on diminue le nombre dintersections darcs
un sens mathematique tr`es precis.
alors placer x en M
fin Definition 2.1 (chemin) Soit G = (S, A) un graphe oriente (resp. non-oriente)
fin faire alors un chemin (resp. une chane) dans G est une liste de sommets C =

fin faire (x0 , x1 , x2 , . . . , xk ) telle quil existe un arc (resp. une arete) entre chaque couple
de sommets successifs de C. Ce qui secrit :
si G = (S, A) est oriente alors i = 0, 1, . . . k 1 (xi , xi+1 ) A
si G = (S, A) est non-oriente alors i = 0, 1, . . . k 1 {xi , xi+1 } A
On appellera
longueur du chemin le nombre darcs/aretes du chemin
chemin/chane simple un chemin/chane dont tous les arcs/aretes sont differents
chemin/chane el
ementaire un chemin/chane dont tous les sommets sont
differents sauf peut etre le depart et larrivee (pour autoriser les circuits/-
cycles)
circuit dans un graphe oriente un chemin simple finissant `a sont point de depart
cycle dans un graphe non-oriente un chemin simple finissant `a sont point de depart

La notion intuitive de chemin correspond donc plutot a` celle de chemin/chane simple


ou elementaire. Heureusement le lemme suivant nous assure quon peut toujours sy
ramener.
Th eor`
eme 2.2 (lemme de K onig) Soient x et y deux sommets distincts dun
graphe G. Sil existe un chemin de G reliant x `a y alors il existe un chemin
elementaire de x `a y.
Preuve : On consid`ere un chemin de x a` y qui nest pas elementaire, il passe donc
deux fois par un meme sommet s, on est donc dans la situation suivante :

C = (x, x1 , . . . , s, . . . , s , . . . , xn1 , y)
| {z }
`
a supprimer

la partie quon a supprime est un cycle/circuit. Ensuite il suffit de recommencer tant


que le chemin nest pas elementaire. 

Les circuits les plus simples sont les boucles et les doubles fl`eches :
une boucle (x, x) est le plus court circuit possible
une double fl`eche correspondant a` deux arcs (x, y) et (y, x) donne aussi
 un circuit (x, y, x)
le chemin C = (x) est de longueur nulle ! Il ne correspond donc a` aucun
arc (cest coherent puisque la boucle (x, x) 6= C) on parle alors plutot de
chemin nul .

33 34
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

P 2.1 Dire si les chemins du graphe suivant sont simple,


circuit(cycle)et donner leur longueur
el
ementaire, difficile ! Nous consacrerons (plus loin) un chapitre entier de ce cours au probl`eme de
la recherche du plus court chemin dans un graphe. Pour linstant nous allons revenir
sur le probl`eme a` lorigine de la theorie des graphes.

7 (8, 4, 4) : chemin simple


6
mais pas elementaire, longueur 2 Definition 2.4 (graphe Eulerien et Hamiltonien) Soit G = (S, A) un graphe,
5 3 (1; 4; 3; 5; 8; 1) : circuit elementaire on dit que
G est Eulerien sil existe un circuit/cycle C = (x0 , x1 , . . . x0 ) passant par tous
et simple, longueur 5
les arc/aretes du graphe
4 (1; 4; 7; 6; 2) : chemin elementaire G est semi-Eulerien sil existe un chemin C = (x0 , x1 , . . . xk ) (x0 6= xk ) passant
et simple, longueur 4 par tous les arc/aretes du graphe
8 G est Hamiltonien sil existe un circuit/cycle C = (x0 , x1 , . . . x0 ) passant par
(7; 6; 2; 1; 4; 3; 5; 8; 1; 4; 7) : circuit tous les sommets du graphe
2 1 ni simple ni elementaire, longueur 10 G est semi-Hamiltonien sil existe un chemin C = (x0 , x1 , . . . xk ) (x0 6= xk )
passant par tous les sommets du graphe
La notion de longueur de chemin nous permet ensuite de definir la notion de distance un cycle ou chemin C du graphe correspondant `a `a lune de ces definitions sera
dans un graphe. appele suivant le cas :

P
cycle Eulerien, chemin semi-Eulerien, cycle Hamiltonien, chemin semi-Hamiltonien
D
efinition 2.3 (distance et diam`
etre) Dans un graphe G = (S, A) on appelle
distance dun sommet `a un autre la longueur du plus court chemin dun sommet `a
2.3 Probl` eme des sept ponts de K onigsberg
lautre, ou sil ny a pas de tel chemin :
La ville de K onigsberg (aujourdhui Kaliningrad en Russie) est construite sur les-
tuaire de la Pregel et englobe deux les. Six ponts relient le continent `a lune ou
k si plus court chemin de x vers y
x, y S, d(x, y) = est de longueur k lautre des deux les elles memes reliees par septi`eme pont (voir aussi le plan FIG.1
dessine par Euler dans [4]). Euler aimant se promener sur ces ponts se posa un jour
sinon
la question suivante :
existe-t-il une promenade dans les rues de K onigsberg permettant, `a partir dun
diam`
etre du graphe la plus grande distance entre deux sommets
point de depart au choix, de passer une et une seule fois par chaque pont, et de
revenir `a son point de depart ?
 Dans un graphe non-oriente d(x, y) = d(y, x) mais ce nest pas forcement vrai
` noter aussi, la distance dun sommet `a lui meme
dans un graphe non-oriente ! A
est toujours nulle (d(x, x) = 0) puisque le chemin nul (C = (x)) va de x `a x !

P 2.2 Calculer les distances de d(1, 8) et d(8, 1) et le diam`


etre du graphe

6 7
d(8, 1) = 1
5 3

4
8 d(1, 8) = 4

2 1
Dans cet exemple nous sommes oblige de calculer tous les chemins possibles pour Figure 6 plan de la ville de Konigsberg
etre s
ur de trouver le plus court/long ce qui meme sur un petit graphe est vite tr`es

35 36
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

On peut representer la situation par les graphes ci-dessous suivant que les ponts Preuve : Raisonnons sur un sommet x quelconque du graphe :
sont modelises par les aretes 2 (les sommets representent les 2 les et les berges) ou
par les sommets (les aretes connectent deux ponts ayant une berge commune) : Pour quil existe un cycle Eulerien il faut
quen chaque sommet lorsquon arrive par deuxi`eme
B
un arc/arete on puisse repartir par un passage
autre arc/arete. Suivant que le graphe
2 4 5 est oriente ou pas on obtient donc que x
d+ (x) = d (x) ou d(x) pair (si le graphe
A D 7 est non-oriente). premier
passage
1 3 6
Au contraire si un sommet est de degre im-
pair alors il constitue forcement un cul
C de sac ce qui empeche lexistence dun
Resoudre le probl`eme revient `a trouver un cycle Eulerien pour le premier graphe, cycle. Par contre si seulement deux som-
Hamiltonien pour le second graphe. En utilisant la premi`ere modelisation, Euler `a mets sont de degre impair il peuvent servir
de point de depart et darrive dun chemin x
decouvert que ce probl`eme navait pas de solution.
passant par tous les arcs/aretes du graphe,
?
le graphe est donc semi-Eulerien.
Th
eor`
eme 2.5 (dEuler) Soit G = (S, A) un graphe connexe alors
si G est oriente alors G est Eulerien si et seulement si pour tout sommet le Inversement si chaque sommet est de degre pair on raisonne par recurrence sur
degre sortant est egal au degre entrant : le nombre de sommets pour demontrer le theor`eme :
un graphe a` n = 1 seul sommet est evidement Eulerien !
x S, d+ (x) = d (x) pour un graphe a` n sommets on consid`ere le graphe partiel H constitue des
arcs/aretes en dehors du circuit/cycle 0 (`a eventuellement un seul sommet
si G est non-oriente alors G est Eulerien si et seulement si pour tout sommet
et sans arc/arete) qui a donc strictement moins de n sommets. Les sommets
est de degre pair :
de H verifient encore la propriete sur les degres puisque quand on enl`eve le
x S, k N, d(x) = 2k
circuit/cycle
Dans tous les cas (G orientes ou pas) si seulement deux sommets ne verifient pas si G est oriente on enl`eve on enl`eve 1 arc entrant et 1 arc sortant pour
les conditions precedentes alors G est semi-Eulerien. chaque sommet donc les degres entrant et sortant restent egaux,
si G est non-oriente on enl`eve 2 aretes incidentes pour chaque sommet donc
le degre reste pair,
Si on applique ce theor`eme au premier graphe (non-oriente) representant les sept
pont de Konigsberg on voit que les quatre sommets A, B, C, D sont de degre impair, Par induction chaque composante connexe
il nexiste donc pas de cycle Eulerien dans ce graphe. 2 3 5
de H est un graphe Eulerien, et admet
donc un circuit/cycle Eulerien i . Pour
reconstruire un cycle eulerien sur G, il 1 0
 Savoir si un graphe est Eulerien est assez facile (et trouver un cycle Eulerien nest 7
nous suffit de fusionner les circuits/cycles 2
en general pas tr`es dur), par contre savoir si un graphe est Hamiltonien est un trouves sur H avec le circuit/cycle enleve
probl`eme plus complexe, en particulier la question de trouver un cycle Hamiltonien au debut. Dans lexemple ci-contre, une 1 4 6
minimal est connu sous le nom de : fois 0 enleve du graphe on trouve un cir-
probl`eme du voyageur de commerce cuit Eulerien 2 et un autre semi-Eulerien = (2, 7, 1, 2, 3, 4, 5, 6, 4, 1)
| {z }
1 . Il ne reste plus qu`a les connecter pour 2
retrouver le circuit | {z }
0


2. Attention, il sagit dun multigraphe !

37 38
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques


Proposition 2.6 Soit G un graphe non-oriente, si G nest pas (semi-)Eulerien on fonction G = composantes fortement connexe(G)
peut le transformer en un graphe (semi-)Eulerien en lui ajoutant des arcs/aretes tant que tous les sommets de G ne sont pas marques faire
voir, eventuellement, des sommets. V = premier sommet non-marque
tant que tous les sommets de V ne sont pas marques faire
Preuve : Le probl`eme est de modifier le degre des sommets de degre impair. On
marquer x premier sommet non-marque de V
se contente de demontrer le resultat dans le cas des graphes non-orientes. Soit x, y
si un cycle C passant par x
deux sommets de degre impair :
alors ajouter les sommets de C a` V
sil ny a pas darete entre x et y alors on en ajoute une arete entre x et y leurs
fin
degres sont augmentes de 1 et deviennent pairs
fin faire
sil y a dej`a une arete entre x et y alors on ajoute un sommet z et deux aretes
V est une composante fortement connexe de G

P
entre x et z et entre y et z, les degres de x et y sont augmentes de 1 et

fin faire
deviennent pairs, alors que z est de degre 2 donc pair
on recommence jusqu`a ce quil ny ait plus de sommet de degre impair (comme vu 2.5 trouver les composantes (fortement) connexes des graphes sui-
en TD, le nombre de sommets de degre impair est pair donc on y arrivera). vants
1 4 5 8 1 4 5 8
La meme demonstration marche dans le cas o` u G est oriente en considerants les

P
sommets tels que d+ (x) 6= d (x) et en leur ajoutant des arcs (bien orientes). 
6
2.4 (contre-)exemples de graphes (semi-)Eulerien
2 3 7 2 3 6 7

La notion de chemin dans un graphe est directement reliee a` la notion de transitivite


que nous avons dej`a evoquee. Rendre un graphe transitif alors quil ne lest pas
consiste a` ajouter des arcs raccourcis de chemins existants. Cela sappelle prendre
la fermeture transitive du graphe.
Definition 2.8 (fermeture transitive) On appelle fermeture transitive dun
graphe G = (S, A) le plus petit graphe G transitif et contenant G (cest `a

le premier graphe est non-Eulerien (sommets de degre 3), en lui ajoutant 1 som-
P
dire tel que G soit un graphe partiel de G = (S, B) avec A B).
2.6 Calculer la fermeture transitive du graphe

met et 2 aretes il devient semi-Eulerien, et en ajoutant encore 2 aretes il devient


Eulerien (sommets de degre 4). 3 4 5 3 4 5

Une notion associee `a celle de chemin est la notion de connexite.


Definition 2.7 (connexit e) Soit G = (S, A) un graphe tel que pour tout couple de
sommets (x, y) il existe un chemin de x vers y :
2 1 6 2 1 6
x, y S, xi S, i = 0, . . . , k, c = (x0 , . . . , xk )chemin G et [x0 = x et xk = y]

alors on dira que La fermeture transitive dun graphe peut etre obtenue a` partir de la matrice dad-
G est connexe si G est non-oriente jacence.
G est fortement connexe si G est oriente Th eor` eme 2.9 (fermeture transitive) Soit G = (S, A) un graphe de matrice
On appelle aussi composante (fortement) connexe un sous-graphe de G de taille dadjacence M et de fermeture transitive G alors la matrice dadjacence M de G
maximale qui est (fortement) connexe. verifie

X
Trouver les composantes connexes dun graphe est assez facile visuellement (si celui- M = Mk
ci est planaire) mais trouver les composantes fortement connexes est plus difficile. k=1

On pourra utiliser lalgorithme suivant : o`


u la somme (au sens de lalg`ebre de boole binaire) est en fait une somme finie.

39 40
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

P 2.7 Calcul de la fermeture transitive via la matrice dadjacence : D


efinition 2.10 Graphes -equivalents et -minimaux deux graphes orientes G1 et
G2 sont dits -equivalents sils ont la meme fermeture transitive :
3 4 5
0 0 0 0 0 0 G1 G2 G1 = G2
0 0 1 0 0 0
Un graphe est dit -minimal si aucun graphe partiel de G na la meme fermeture
0 1 0 1 0 0
M =
1
, transitive que G
0 0 0 0 0
1 0 0 1 0 1 G graphe partiel de G, G 6= G
0 0 0 0 0 0 On remarquera que :
2 1 6
Proposition 2.11 est une relation dequivalence sur lensemble des graphes.

Preuve :
reflexive car G = G
0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 0 0 1 1 1 1 0 0 symetrique car G1 = G2 G2 = G1
transitive car G1 = G2 et G2 = G3 = G1 = G3
1 1 1 1 0 0 0
M + M2 = , M = M + M 2 + M 3 = 1 1 1 1 0 , 
1 0 0 0 0 0 1 0 0 0 0 0
La fermeture transitive est un outil de calcul assez puissant en theorie des
1 0 0 1 0 1 1 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 graphes. Par exemple elle permet de reperer les composantes (fortement-)connexe
dun graphe.

Proposition 2.12 Soit G un graphe et G sa fermeture transitive, le sous-graphe


0 0 0 0 0 0 induit sur G par une composante (fortement-)connexe est un graphe complet.
1 1 1 1 0 0

1 1 1 1 0 0 La fermeture transitive permet aussi de reperer labsence de circuits dans un graphe.
car M + M 4 =
1
= M donc plus de changement apr`es.
0 0 0 0 0

1 Proposition 2.13 Un graphe G = (S, A) est sans circuit si la relation R associee
0 0 1 0 1
`a sa fermeture transitive G est une relation dordre.
0 0 0 0 0 0
Les graphes orientes sans circuits poss`edent des proprietes specifique, en parti-
culier il y a dans un graphe sans circuit une notion de hierarchie entre les sommets.
Cest ce quon appelle la decomposition en niveaux ou aussi un tri topologique .
Preuve : Soit R la relation associee au graphe G et M sa matrice dadjacence
Proposition 2.14 (d ecomposition en niveau) Si G est un graphe sans circuit
alors :
alors on peut definir pour chaque sommet un niveau de la mani`ere suivante :
M k est la matrice dadjacence de la relation R
| R {z
R} Les sommets sans predecesseurs sont de niveau 0
k compositions tout sommet x a un niveau superieur aux niveaux de ses predecesseurs :
donc chaque 1 de cette matrice represente une suite de k arcs adjacents
dans le graphe de G. niveau(x) = max niveau(y) + 1
y (x)
Lorsquon additionne les differentes matrices M k (au sens de laddition des
booleens) on ajoute donc des 1 dans la matrice M qui correspondent `a des
On peut ensuite re-dessiner le graphe G en disposant les sommets de gauche `a droite
arcs nexistant pas dans le graphe de GP mais qui sont des raccourcis dans ce
dans lordre croissant des niveaux.
graphe. On en deduit donc que M = k
k=1 M va contenir tous les raccourcis
possibles dans G en plus des arcs dej`a dans G.
Il reste `a voir quau bout dun moment tous K+1  Si G poss`ede un circuit C = (x0 , x1 , . . . , xn1 , x0 ) il ne peut pas avoir de niveau
P les 1k dans la matrice M

ont dej`a ete ajoute dans la somme M = K puisque dans ce cas on aurait :
k=1 M . Cela arrive d`es quon a
fait le chemin elementaire le plus long possible dans G.
niveau(x0 ) < niveau(x1 ) < < niveau(xn1 ) < niveau(x0 )

On rencontrera aussi les deux notions suivantes : Pour decomposer en niveau un graphe G on utilisera lalgorithme suivant :

41 42
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques


fonction niveau = decomp niveau(G) 2.2 Arbres
n = nombre de sommets du graphe
Un cas tr`es important de graphe decomposable en niveaux est le cas des arbres.
niveau = matrice nulle de taille 1 n
degre = matrice de taille 1 n contenant les degres entrants d (x) D
efinition 2.15 (arbre) Un arbre est un graphe oriente G = (S, A) tel que :
tant que tous les sommets ne sont pas marques faire G est sans circuit
L = liste des sommets non-marques de degre entrant nul il existe un unique sommet de G nayant pas de predecesseur, cest la racine
pour tout x L faire de larbre
pour tout y successeur de x dans G faire tous les autres sommets ont exactement 1 predecesseur
si niveau(y) < niveau(x) + 1 On appellera
alors niveau(y) = niveau(x) + 1 racine de larbre le seul sommet de G qui na pas de predecesseur,
fin
degre(y) = degre(y) 1 (revient `a eliminer larc (x, y)) feuilles de larbre les sommets qui nont pas de successeur,
fin faire nuds de larbre tous les autres sommets,
fin faire branche de larbre tout chemin de la racine vers une feuille,
on marque les sommets de L
descendant de x les successeurs de x,


fin faire
ascendant de x le predecesseur de x,

P
Cette technique nous resservira plus loin dans la rechercher des chemins les plus
La structure dun arbre peut etre enti`erement reconstruite par la liste des
courts dans un graphe, il faut donc savoir decomposer un graphe en niveaux.
predecesseurs definie par :
2.8 D
ecomposition en niveau dun graphe sans circuit : 
si y est la racine de G
y S, pred(y) =
5 8 2 x tel que (x, y) A sinon
d (5) = 0 donc niveau 0 et on elimine

P
(5, 3) Lorsque chaque sommet `a au plus 2 successeurs on parle aussi darbre binaire.
d (3) = 0 donc niveau 1 et on elimine
(3, 1), (3, 4), (3, 6) 2.9 Repr
esenter larbre ci-dessous par une liste de pr
ed
ecesseurs
4 6 7 d (6) = 0 donc niveau 2 et on elimine
(6, 4), (6, 8), (6, 7) 4 8
d (4) = d (7) = 0 donc niveau 3 et on 2
elimine (4, 8), (7, 1), (7, 8) 5 9 11 14
3 1 ... 1
12
6
au final niveau = 4 5 1 3 0 2 3 6 et on peut redessiner le graphe : 3
7 10 13 15
4
P red = 0 1 1 2 2 3 3 4 5 7 9 9 10 11 13
la racine du graphe est le sommet 1
5 3 6 8
les feuilles sont les sommets 8, 14, 12, 6 et 15
7 2 une branche de larbre C = (1, 2, 5, 9, 12) (chemin de la racine jusqu`a 12)

Dans un arbre il est tr`es facile de retrouver un chemin entre la racine et un sommet
1 quelconque
 Le graphe associe `a une relation dordre admet une decomposition en niveaux (si
on ne tient pas compte des boucles). Faire le diagramme de Hasse dune relation Th eor`
eme 2.16 Soit G = (S, A) un arbre de racine r, alors pour tout sommet x il
dordre revient `a re-dessiner le graphe en disposant les sommets du graphe dans existe un unique chemin de x vers r.
lordre croissant des niveaux calcules. Preuve : Pour demontrer ce theor`eme il suffit dindiquer comment construire ce
chemin. Pour trouver ce chemin il suffit de remonter le long dune branche en

43 44
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

lisant la liste des predecesseurs. Le predecesseur dun sommet dans larbre etant `a
chaque fois unique il ny pas de choix et donc le chemin trouve est bien unique 
P

2.10 Arbre couvrant de poids maximal avec lalgorithme de Kruskal
arete {5, 3} poids=0+17 3 15 2
Cette demonstration nous donne directement un algorithme pour calculer le che-
arete {3, 1} poids=17+16

min entre la racine et un sommet de larbre :
arete {2, 3} poids=33+15
fonction C = chemin arbre(G, x) arete {1, 5} 1 et 5 dej`
a connectes 16 17 3 9
P = liste des predecesseurs de larbre G arete {4, 2} poids=48+9
si P (x) = alors C = (x) arete {5, 4} 5 et 4 dej`
a connectes
sinon C = (chemin arbre(G, P (x)), x) arete {2, 5} 2 et 5 dej`
a connectes
5

fin Poids total de larbre = 57 1 11 7 4
2 9 4
 Un graphe dordre n qui est un arbre peut etre represente avec seulement n places 15
memoire ! Cest beaucoup moins que pour un graphe quelconque, qui necessite 5 17 3
16 P red = 3 3 5 2 0
une place memoire n + m + 1 en utilisant les listes dadjacence.
1


Pour traiter le cas de plusieurs sommets sans predecesseurs (quon rencontrera lors
du parcours dun graphe) on parlera plus generalement de foret. fonction T = prim(G)
Definition 2.17 (for et) Un graphe G = (S, A) compose de plusieurs sous-graphes poids = poids total de larbre couvrant (initialise a` 0)
qui sont tous des arbres est appelee for et. Comme pour un arbre la structure dune marquer le sommet 1
foret peut etre enti`erement reconstruite par la liste des predecesseurs, il y aura juste tant que il reste des sommets non-marques faire
plusieurs sommets x S tels que pred(x) = 0. {x; y} = arete de co
ut minimal joignant un sommet
marque x et un sommet non-marque y
Dans le cas des graphes non-orientes on sinteresse aussi aux arbres couvrants : marquer le sommet y et ajouter larete {x; y} a` T
Definition 2.18 (arbre couvrant) Soit G = (S, A) un graphe on appelle arbre poids = poids + W (x, y)

P
couvrant de G un graphe partiel de G qui est un arbre. fin faire

De nombreux probl`emes associes aux graphes values peuvent etre resolus par la 2.11 Arbre couvrant de poids minimal avec lalgorithme de Prim
recherche dun arbre couvrant de poids minimal.
sommets aretes poids
Proposition 2.19 Soit G = (S, A, ) un graphe non-oriente et value alors il existe
marques sortantes minimal
G un arbre de couvrant de de G qui soit de poids maximal (ou minimal) et qui peut
1 7 5 1 {1; 2} {1; 3} {1; 5} 4
etre obtenu par lalgorithme de Kruskal ou lalgorithme de Prim.

1,2 {1; 3} {1; 5} 1
4 3 {2; 3} {2; 5} {2; 4}
fonction T = Kruskal(G)
initialisation poids = poids total de larbre couvrant (initialise `a 0) 2 4 1,2,4 {1; 3} {2; 3} {4; 3} 3
pour chaque sommet x S faire 7 5 {1; 5} {2; 5} {4; 5} {4; 6}
1
E(x) = { sommets connectes `a x} = {x} fin faire 1,2,4,3 {1; 5} {2; 5} {4; 5} 3
9
traitement 4 {3; 6} {4; 6}
pour chaque arete (x, y) A (par ordre de poids decroissant) faire 3 6 1,2,4,3,5 {3; 6} {4; 6} {5; 6} 5
si E(x) 6= E(y) alors ajouter larete (x, y) `a larbre T 3 8 6
Poids total de larbre = 16
poids = poids + W (x, y)
F = E(x) E(y)
pour chaque sommet z F faire 5 5 6
E(z) = F 3
1 4 2 P red = 0 1 4 2 2 5
fin faire
fin 1
4 3 3

fin faire

45 46
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

2.3 Parcours de graphes orient


es  Les parcours que nous allons etudier sappliquent aussi aux graphes non-orientes,
Le parcours dun graphe est un probl`eme type de theorie des graphes auquel Dans ce cas on consid`ere que les aretes sont des arcs a` double sens.
peuvent se ramener de nombreux autres probl`emes dalgorithmique.
Commencons par etudier un premier type de parcours : le parcours en largeur.
Definition 2.20 (parcours dun graphe) Soit G = (S, A) un graphe et x S Definition 2.21 (parcours en largeur) Soit G = (S, A) un graphe et x S un
un sommet, un parcours du graphe G `a partir de x est une visite de chaque sommet, un parcours en largeur du graphe G `a partir de x est un parcours dans
sommet accessible depuis x. Le resultat dun parcours est un ensemble de lequel un sommet y est marque avant le debut de traitement de ses successeurs.
chemins partants de x allant vers les sommets accessibles depuis x. Un parcours Si on veut recuperer la liste des predecesseurs P qui permet de retrouver larbre de
peut etre repr esente par sous-graphe de G qui est un arbre de racine x (ou parcours en largeur depuis le sommet x on utilisera lalgorithme suivant :

une foret si certains sommets de G ne sont pas accessibles depuis x).

Dun point de vue algorithmique, un parcours correspond `a la procedure suivante : fonction P = parcours largeur(G, x)
L = file des sommets a` traiter
procedure parcours(G, x) P = liste des predecesseurs de larbre de parcours
L = liste des sommets `a traiter (vide au depart) marquer le sommet x et le mettre dans L
mettre x dans L (debut du traitement de x) tant que L 6= faire
tant que L 6= faire sortir le 1er sommet y de L
sortir le 1er sommet y de L (y en cours de traitement) V = successeurs non traites de y
V = successeurs non traites de y pour tout z V faire
pour tout z V faire marquer z; P (z) = y
mettre z dans L (debut du traitement de z) mettre z a` la fin de L
fin faire fin faire

fin du traitement de y fin faire


fin faire
 La liste L des sommets a` traiter est lexemple type dune file de type
`a chaque etape de la boucle tant que un seul sommet y est traite qui engendre le FIFO 3 :
debut du traitement dun ou plusieurs autre sommets . . . on ajoute les elements par le bas de la file
On peut definir un ordre de parcours en numerotant `a un endroit precis de la on retire les elements par le haut de la file
boucle tant que le sommet y en cours de traitement.

Les algorithmes de type glouton qui consistent `a traiter chaque sommet du


P 2.12 Parcours du graphe G en largeur, par ordre croissant des som-
mets, depuis le sommet 8 :
graphe peuvent souvent etre ecrit en utilisant en utilisant le mod`ele dun parcours
(ce qui parfois conduit `a des ameliorations de lalgorithme). On peut par exemple
voir les algorithmes de coloriage de graphes ou de decomposition en niveau sous 8 5 3
forme de parcours de graphes (reprendre lalgorithme de Weslh sous cet angle).

 Lors du parcours dun graphe G, au cours du traitement dun sommet x


celui-ci doit etre marqu
e, selon le moment o` u lon decide de marquer le 2 4 6 1
sommet (en debut ou en fin de traitement), lordre dans lequel on decide de traiter
les successeurs de ce sommet (par ordre de numero croissant ou decroissant par
exemple), on obtiendra des parcours tr`es differents.

Dans la pratique on sinteressera surtout `a recuperer la liste des predecesseurs 10 9 7


correspondant `a larbre de parcours obtenu.

3. First In, First Out

47 48
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Donne larbre de parcours : si sa distance a` x verifiait d(x, z) < k + 1 il y aurait alors un autre chemin
de x a` z dans le graphe (x, . . . , y , z) mais alors

d(x, z) d(x, y ) + d(y , z) = d(x, y ) d(x, z) d(y , z) < k


2 4 5
donc z est le successeur dun sommet de niveau < k et z aurait du etre
8 10 1
traite au pire au niveau k et pas au niveau k + 1 ! Donc d(x, z) k + 1

P
conclusion d(x, z) = k + 1 
9 7 3

P = 7 10 7 2 4 7 9 0 10 8 2.13 Calcul des distances du sommet 8 dans G


6
Detail de lalgorithme :
2 4 5
x + (x) marques L
8 10 1
8 {10} [8 ;10] [10]
10 {2 ;9} [8 ;10 ;2 ;9] [2 ;9]
9 7 3
2 {4 ;8 ;9} [8 ;10 ;2 ;9 ;4] [9 ;4]
9 {7} [8 ;10 ;2 ;9 ;4 ;7] [4 ;7] Distances = 4 2 4 3 4 4 3 0 2 1 6
4 {5 ;8} [8 ;10 ;2 ;9 ;4 ;7 ;5] [7 ;5]
7 {1 ;2 ;3 ;4 ;6} [8 ;10 ;2 ;9 ;4 ;7 ;5 ;1 ;3 ;6] [5 ;1 ;3 ;6]
5 {8} [8 ;10 ;2 ;9 ;4 ;7 ;5 ;1 ;3 ;6] [1 ;3 ;6] Passons maintenant au parcours en profondeur :
1 {3} [8 ;10 ;2 ;9 ;4 ;7 ;5 ;1 ;3 ;6] [3 ;6]
3 {5 ;6} [8 ;10 ;2 ;9 ;4 ;7 ;5 ;1 ;3 ;6] [6] Definition 2.23 (parcours en profondeur) Soit G = (S, A) un graphe et x S
6 {1 ;4 ;5} [8 ;10 ;2 ;9 ;4 ;7 ;5 ;1 ;3 ;6] [] un sommet, un parcours en profondeur du graphe G `a partir de x est un parcours
dans lequel un sommet y nest marque quapr`
es le debut du traitement de ses suc-
Lordre de parcours des sommets du graphes est donne par la liste des sommets cesseurs
marques : [8; 10; 2; 9; 4; 7; 5; 1; 3; 6] quon retrouve facilement sur larbre : Comme pour le parcours en largeur on peut ecrire precisement lalgorithme permet-
2(3) 4(5) 5(7) tant de recuperer larbre de parcours en profondeur :

8(1) 10(2) 1(8)


fonction P = parcours profondeur(G, x)
9(4) 7(6) 3(9) L = [x] (Pile des sommets a` traiter)
P = liste des predecesseurs de larbre de parcours
6(10) tant que L 6= faire
sortir le 1er sommet y de L
Le parcours en largeur est tr`es utile pour trouver les distances depuis un sommet V = successeurs non traites de y
donne dans un graphe. pour tout z V faire
P (z) = y
Theor`eme 2.22 (parcours en largeur et distances) Soit G = (S, A) un mettre z au debut de L
graphe et x un sommet, alors les niveaux des sommets dans le parcours en largeur fin faire
depuis le sommet x sont exactement les distances de x `a ces sommets. marquer le sommet y

fin faire
Preuve : La demonstration se fait par recurrence
la racine de larbre est de niveau 0 et on a bien d(x, x) = 0
par hypoth`ese pour tous les sommets y de niveau k on a bien d(x, y) = k,  La liste L des sommets a` traiter est lexemple type dune Pile de type
examinons maintenant la distance `a x dun successeur z dun des sommets y : LIFO 4 :
son niveau est k + 1 (successeur de y de niveau k) on ajoute les elements par le haut de la pile
sa distance `a x verifie d(x, z) d(x, y) + d(y, z) = k + 1 on retire les elements par le haut de la pile

49 50
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Cet algorithme admet aussi une formulation recursive plus simple `a programmer : Definition 2.24 (num erotation prefixe et suffixe) On appelle numerotation
prefixe et numerotation suffixe les numerotations des sommets du graphe corres-

pondants `a lordre de traitement des sommets du graphe lors du parcours en pro-
fondeur suivant quon numerote un sommet avant ou apr` es le traitement de ses
fonction P = parcours profondeur(G, x)
successeurs :

marquer x (debut du traitement de x)
V = successeurs non traites de x fonction P = parcours profondeur(G, x)
pour tout y V faire marquer x
P (y) = x numerotation prefixe de x
P = parcours profondeur(G, y) V = successeurs non traites de x
fin faire pour tout y V faire

fin du traitement de x P (y) = x

P
P = parcours profondeur(G, y)
fin faire
2.14 Parcours du graphe G en profondeur, par ordre d
ecroissant des

numerotation suffixe de x

P
sommets, depuis le sommet 8 :

2.15 num erotation des sommets dans le parcours en profondeur :


8 5 3 numerotation prefixe = 8 10 9 7 6 5 4 1 3 2

8(1) 10(2) 9(3) 7(4) 6(5) 5(6)


2 4 6 1

4(7)

10 9 7 1(8) 3(9)
2(10)
Donne larbre de parcours :
5
numerotation suffixe = 4 6 3 2 1 5 7 10 8 9
8 10 9 7 6 4
8(10) 10(9) 9(8) 7(7) 6(5) 5(1)
1 3

2
P = 6 7 1 6 6 7 9 0 10 8 4(2)

 Le parcours en profondeur ne permet pas de calculer les distances depuis un 1(4) 3(3)
sommet ! Au contraire le parcours en profondeur essaye de construire les chemins 2(6)
les plus long possibles depuis un sommet donne.

4. Last In, First Out Le parcours en profondeur sert, entre autre, a` classer les arcs en differentes categories.

51 52
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

D
efinition 2.25 (classification des arcs) le parcours en profondeur dun graphe Cette classification permet de detecter des circuits dans un graphe.
G depuis le sommet x permet de definir quatre types darc :
Th eor`
eme 2.26 (d etection des circuits) Dans un graphe G = (S, A) et x un
arcs couvrants : les arcs retenus pour le parcours en profondeur
sommet. Si dans le parcours en profondeur de G `a partir de x il existe un arc
arcs directs : les arcs nappartenant pas au parcours en profondeur mais reliant retrographe alors il existe au moins un circuit dans le graphe G.
un sommet `a un descendant
Preuve : Soit (y, z) un arc retrograde du graphe G (lors du parcours depuis x).
arcs r
etrograde : les arcs nappartenant pas au parcours en profondeur mais re-
Soit y = z et alors cet arc est une boucle qui est le plus simple des circuits. Sinon il
liant un sommet `a un ascendant (ou `a lui meme)
existe un chemin dans larbre de parcours qui va de x a` y passant par z, donc on a
arcs traversiers : les arcs nappartenant pas au parcours en profondeur mais re- un chemin C de z a` y qui permet de construire un circuit C :

P liant deux branches distinctes de larbre


2.16 Classement des arcs du graphe G dapr`
fondeur, par ordre d
es le parcours en pro-
ecroissant des sommets, depuis le sommet 8 :
C = (x, . . . , z, . . . . . . . . . , y ) = C = (y, z, . . . , y )est un circuit de G
| {z
C =chemin de z `
ay
} | {z }
C

P

5
2.17 Exemple de detection de circuit du graphe G dapr`
es le parcours
en profondeur, par ordre d
ecroissant des sommets, depuis le sommet 8 :

8 10 9 7 6 4
5

8 10 9 7 6 4

1 3 1 3
2
2
arcs couvrants : arcs r
etrograde : larc retrograde (5, 8) permet de retrouver le circuit :(8, 10, 9, 7, 6, 5, 8)
arcs directs : arcs traversiers : larc retrograde (3, 6) permet de retrouver le circuit :(3, 6, 1, 3)

8 5 3 8 5 3

2 4 6 1
2 4 6 1

10 9 7

10 9 7

53 54
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

3 Probl`
emes doptimisation La premier algorithme pour calculer les distances minimales consiste a` calculer
toutes les distances entres couples de sommets (i, j) en essayant de les diminuer en
3.1 Probl`
eme du plus court chemin passant par un autre sommet k. Cest lalgorithme de Floyd-Warshall-Roy.
Le probl`eme doptimisation suivant est celui du chemin optimal, il intervient Definition 3.3 (algorithme de Floyd-Warshall-Roy) Dans un graphe oriente
directement dans le fonctionnement des routeurs dun reseau informatique(protocole value G = (S, A, f ), dordre n et de taille m. Lalgorithme de Floyd-Warshall calcule
OSPF par exemple). Nous avons dej`a etudie cette question dans la partie 2.1 de ce deux matrices de taille n n
cours, o`
u nous avons defini la longueur des chemins. Ici nous avons besoin detudier Dist matrice des distances telle que Dist(x, y) = distance optimale de x `a y
une notion plus generale de longueur qui puisse etre appliquee `a un graphe value. P red matrice des predecesseurs telle que P red(x, y) = predecesseur de y dans
le chemin optimal depuis x
Definition 3.1 (longueur et distance) Dans un graphe oriente value G =
Pour le plus court chemin lalgorithme secrit :

(S, A, f ) on appellera longueur dun chemin C = (x0 , x1 , . . . , xp1 , xp ) relativement
`a f la valeur fonction [Dist, P red] = FLOYD(G)
p1
X Initialisation :
Longueurf (C) = f (xi , xi+1 )
i=0
n = nombre de sommets de G
Dist = matrice des poids relativement a` f
on appellera distance de x `a y par rapport `a f la longueur (relativement `a f ) du initialisee a` 0 sur la diagonale Dist(s, s) = 0, s = 1, . . . , n
plus court chemin de x `a y P red = matrice des predecesseurs initialisee a`
P red(i, j) = i si larc (i, j) existe, 0 sinon
Distmin (x, y) = min Longueurf (C), et Distmax (x, y) = max Longueurf (C)
C=(x,...,y) C=(x,...,y) Traitement :
pour z = 1 jusqu` a n faire
Ces definitions generalisent les definitions de longueur et distance dans un graphe pour x = 1 jusqu` a n faire
oriente (mais non-value). On retrouve la definition de la partie 2.1 en prenant la pour y = 1 jusqu` a n faire
valuation f (x, y) = 1, (x, y) A (tous les arcs sont de longueur 1). si Dist(x, z) + Dist(z, y) < Dist(x, y)
alors modifier Dist(x, y) et P red(x, y) = P red(z, y)
Proposition 3.2 (existence du chemin optimal) Dans un graphe oriente value fin
G = (S, A, f ) il existe un plus court (resp. long) chemin entre tout couple de sommets fin faire
si et seulement si il nexiste pas de circuit de longueur negative (resp. positive) fin faire
relativement `a f .

fin faire
Preuve :
Supposons quil existe un circuit (z0 , z1 , . . . , z0 ) dans
le graphe et notons sa longueur (relativement `a f )
z3
P 3.1 Appliquer lalgorithme de Floyd-Warshall-Roy pour trouver les
plus courts chemins du graphe :
P f (z2 , z0 )
l= f (zi , zi+1 ). Alors on peut trouver deux sommets
x, y tel quun chemin optimal (de longueur L relative- 1 2 4
ment `a f ) entre ces deux sommets passe par un des x z0 f (z1 , z2 ) y
sommets zi (prendre x = z0 !) ce chemin secrit donc 0 2 1
C = (x, . . . , z0 , . . . , y). Dans ce cas en rajoutant autant
f (z0 , z1 )
de tours de circuits quon le souhaite on obtient un nou-
3 5 11 2 16
veau chemin
z1
!
X 19 9 15
Ck = (x, . . . , z0 , . . . , z0 , . . . , z0 , . . . , z0 , . . . , y) Lk = L+k f (zi , zi+1 ) = L+kl
| {z } | {z }
1er tour i=0,...
k i`eme tour
6 11 3
en faisant tendre k on obtient, selon le signe de l, que la longueur de Ck tend
vers . Il ne peut donc pas exister de distance minimale entre x et y si l < 0 et Ce graphe poss`ede une valuation negative (f (4, 1) = 2) et des circuits de lon-
il ne peut donc pas exister de distance maximale entre x et y si l > 0.  gueur positive (comme (1, 6, 5, 1)). En particulier il ny a pas de chemins les plus

55 56
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

long dans ce graphe. Definition 3.4 (algorithme de Bellman-Ford-Kalaba) Soit un graphe oriente
value G = (S, A, f ), dordre n et de taille m, et x un sommet de G. Lalgorithme de
Bellman calcule deux matrices de taille 1 n
etape k = 0 etape k = 4 Dist matrice des distances telle que Dist(y) = distance optimale de x `a y
P red matrice des predecesseurs telle que P red(y) = predecesseur de y dans le
0 3 0 3
1 chemin optimal depuis x
0 15 1 11 0 15 1 3 2
Pour le plus court chemin lalgorithme secrit :

0 16 14 0 16 18 17
Dist0 = Dist4 =
2

2 0 2 0 2 1 fonction [Dist, P red] = BELLMAN(G, s)
0
0 0 0 3 Initialisation : n = nombre de sommets de G
9 11 19 0 8 9 11 10 12 0 P red = tableau des predecesseurs initialise a` 0
Dist = tableau des distances initialise a` + (sauf Dist(s) = 0)
etape k = 1 etape k = 5
W = matrice des poids des arcs ( si larc nexiste pas)

0 3 Traitement : k = 1
0 3 1 tant que k n et il y a eu des modifications a` letape precedente faire
0 15 1 3 2
0 15 1 11

14

pour tout sommet x faire
0 16 18 17
0 16 Dist5 =
Dist1 =
2
2 0 2 1 pour tout y successeur de x faire
0 2 1

0

si Dist(x) + W (x, y) < Dist(y)
0 0 3
0 3 alors modifier Dist(y) et P red(y) = x
8 9 11 10 12 0
9 11 19 0 fin
etape k = 6 fin faire
etape k = 2
fin faire
0 12 14 13 15 3 k =k+1
0 3 1 0 13 1 3 2

fin faire
11

P
0 15 1 14 26 0 16 18 17
0 16 Dist6 =
2

Dist2 = 10 12 0 2 1
2 0 2 1 0
12 14 13 0 3 3.2 Appliquer lalgorithme de Bellman-Ford-Kalaba : pour trouver les
0 0 3 8 9 11 10 12 0 plus courts chemins du graphe G depuis le sommet 2 et faire apparatre larbre de
9 11 10 19 0 parcours sur le graphe
la liste des predecesseurs corres-
etape k = 3 pondante est
Dist Pred
0 3 0 6 6 2 4 1 k x 1 2 3 4 5 6 1 2 3 4 5 6
0 15 1 11 4 0 6 2 4 1
0 0 0 0 0 0 0 0 0
0 16 4 6 0 3 4 1
Dist3 = P red = 1 2 0 15 1 11 0 0 2 2 2 0
2 0 2 1 4 6 6 0 4 1
1 4 -1 0 15 1 3 4 0 2 2 4 0
0 0 3 5 6 6 2 0 1 2 1 -1 0 15 1 3 2 4 0 2 2 4 1
9 11 10 19 0 4 6 6 2 4 0 2 6 -1 0 13 1 3 2 4 0 6 2 4 1

 Lalgorithme de Floyd-Warshall-Roy fonctionne sur tous les graphes mais a deux 1 2 4


defauts :
son temps de calcul est tr`es long ( n3 ) et il consomme beaucoup de 0 2 1
memoire
il calcule lensemble des distances entre tout couple de sommets alors 5 11 2
3 16
quon peut souvent se contenter des distance depuis un sommet particulier
19 9 15
Les defauts de lalgorithme de Floyd-Warshall-Roy, nous obligent `a chercher dautres
algorithmes moins co uteux. Le premier dentre eux est lalgorithme de Bellman-Ford. 6 11 3

57 58
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

 lalgorithme de Bellman-Ford fonctionne sur tout les graphes mais a un hypoth` ese de recurrence Pk a` une etape k de lalgorithme : pour tout
temps de calcul encore relativement long ( n2 m n3 ) mais consomme element x de D, Dist(x) est la plus petit distance de s a` x
moins de memoire. P0 est vraie : D = {s} et Dist(s) = 0 (par initialisation) est bien minimale.
Pk Pk+1 a` letape k de lalgorithme les distances dans Dist sont mini-
males. Soit x le k + 1i`eme sommet traite par lalgorithme, x est ajoute a` D.
Lalgorithme de Bellman-Ford-Kalaba reste encore co uteux et complexe. Dans de Supposons quil existe un plus court
nombreux cas on peut simplifier la recherche dun chemin optimal `a condition que chemin de la source a` x passant par
le graphe poss`ede certaines proprietes. Le premier exemple dune telle situation y / D, on aurait donc :
x
est lalgorithme de Dijkstra, que lon peut utiliser pour la recherche de chemins
minimaux dans un graphe `a valuations positives. Dist(s, y) + Dist(y, x) Dist(s, x)

si les valuations sont toutes positives C s Dist(y, x)


D
efinition 3.5 (algorithme de Dijkstra-Moore) Soit un graphe oriente value
G = (S, A, f ), dordre n et de taille m, et x un sommet de G. Lalgorithme de Dist(y, x) 0 do` u lon tire que
Dijkstra calcule deux matrices de taille 1 n Dist(s, y) Dist(s, x). On aurait
Dist matrice des distances telle que Dist(y) = distance optimale de x `a y donc du traiter y avant x dans lalgo- y
P red matrice des predecesseurs telle que P red(y) = predecesseur de y dans le rithme ! ! ! Ce qui nest pas possible.
chemin optimal depuis x 
Pour le plus court chemin lalgorithme secrit : Lalgorithme de Dijkstra ne peut pas etre utilise sur le graphe G a` cause de la
valuation negative f (4, 1) = 2. Si on change cette valuation en un nombre positif
fonction [Dist, P red] = DIJKSTRA(G, s)
Initialisation :
n = nombre de sommets de G
P red = tableau des predecesseurs initialise `a 0
P
on peut alors calculer les distances par lalgorithme de Dijkstra.
3.3 Appliquer lalgorithme de Dijkstra-Moore sur le graphe GD pour
calculer les chemins les plus courts depuis le sommet 6
Dist = tableau des distances initialise `a + (sauf Dist(s) = 0)
W = matrice des poids des arcs ( si larc nexiste pas) 1 2 4
C = {1; 2; . . . ; n} (liste des sommets restant `a traiter)
D = (liste des sommets dej`a traites) 0 2 1
Traitement :
tant que C 6= faire 5 11 2
x = sommet de C le plus proche de s 3 16
retirer x de C et le mettre dans D
pour tout sommet y C faire 19 9 15
si Dist(x) + W (x, y) < Dist(y)
alors modifier Dist(y) et P red(y) = x
fin 6 11 3
fin faire

fin faire Dist Pred
x D C 1 2 3 4 5 6 1 2 3 4 5 6
0 {} {1 ;2 ;3 ;4 ;5 ;6} 0 0 0 0 0 0 0
 Lalgorithme de Dijkstra a un temps dexecution assez rapide ( n2 ) mais a 6 {6} {1 ;2 ;3 ;4 ;5} 9 11 19 0 0 6 6 0 6 0
deux defauts : 2 {6 ;2} {1 ;3 ;4 ;5} 9 11 10 19 0 0 6 6 2 6 0
il ne sapplique quaux graphes `a valuations positives 4 {6 ;2 ;4} {1 ;3 ;5} 12 9 11 10 12 0 4 6 6 2 4 0
il ne marche que pour trouver les plus courts chemins 3 {6 ;2 ;4 ;3} {1 ;5} 12 9 11 10 12 0 4 6 6 2 4 0
1 {6 ;2 ;4 ;3 ;1} {5} 12 9 11 10 12 0 4 6 6 2 4 0
Preuve : Lalgorithme de Dijkstra est base sur le fait qu`a chaque etape de lal-
gorithme, pour tout element x de C, Dist(x) est la plus petit distance de s `a x.
Lefficacite de lalgorithme de Dijkstra peut donc se demontrer par recurrence :
P5 {6 ;2 ;4 ;3 ;1 ;5} {} 12 9 11 10
3.4 contre-exemple pour lalgorithme de Dijkstra pour des valua-
12 0

egatives Pour le graphe suivant il est facile de voir que Dist = 0 2 4


tions n
4 6 6 2 4 0

59 60
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

contrairement `a ce que donne lalgorithme de Dijkstra : On ne peut pas appliquer lalgorithme de Bellman simplifie sur le graphe de
depart a` cause des circuits (6, 3, 4, 1, 6), (6, 5, 1, 6),. . .. Si on inverse larc (1, 6) on

P
2 Dist Pred aura plus aucun circuit et l`a on peut appliquer notre algorithme.
3 s D C 1 2 3 1 2 3
0 {} {1 ;2 ;3} 0 0 0 0 3.5 Appliquer lalgorithme de Bellman simplifi e sur le graphe GK pour
1 {1} {2 ;3} 0 3 4 0 1 1 calculer les chemins les plus courts depuis le sommet 2
1 -2
4 2 {1 ;2} {3} 0 3 4 0 1 1
3 {1 ;2 ;3} {} 0 3 4 0 1 1 1 2 4

3 0 2 1
 Le protocole de routage OSPF (Open Shortest Path First), de type link
state, utilise lalgorithme de Dijkstra pour calculer le chemin optimal dans un 3 5 11 2 16
reseau.
19 9 15
De meme pour un graphe decomposable en niveaux, quelque soit ses valuations
et quelque soit le type de chemin recherche, on pourra utiliser un autre algorithme : 6 11 3
lalgorithme de Bellman-Kalaba.
la decomposition en niveaux donne :
Definition 3.6 (algorithme de Bellman simplifi e) Soit un graphe oriente
value G = (S, A, f ), dordre n et de taille m, et x un sommet de G. Lalgorithme de
Bellman simplifie calcule deux matrices de taille 1 n 6 3 1
Dist matrice des distances telle que Dist(y) = distance optimale de x `a y 11
3 2
P red matrice des predecesseurs telle que P red(y) = predecesseur de y dans le
chemin optimal depuis x 9 16 0
15 4
Pour le plus court chemin lalgorithme secrit :

1 2
fonction [Dist, P red] = BELLMAN SIMPLE(G, s) 2 11 5
Initialisation :
P red = tableau des predecesseurs initialise `a 0 19
ce qui donne :
Dist = tableau des distances initialise `a + (sauf Dist(s) = 0)
W = matrice des poids des arcs ( si larc nexiste pas) Dist Pred
Faire la decomposition en niveau de G niv 1 2 3 4 5 6 1 2 3 4 5 6
Traitement : 1 0 0 0 0 0 0 0
pour tout k = niveau(s) + 1 jusqu` a niveau maximum faire 2 0 15 0 0 2 0 0 0
pour tout sommet x du niveau k faire 3 0 15 1 0 0 2 2 0 0
pour tout sommet y predecesseur de x faire 4 0 15 1 3 0 0 2 2 4 0
si Dist(y) + W (y, x) < Dist(x) 5 -1 0 15 1 3 4 0 2 2 4 0
alors modifier Dist(x) et P red(x) = y
fin  Les algorithmes de Floyd-Warshall-Kalaba et de Bellman (mais pas lalgorithme
fin faire de Dijkstra) permettent aussi de calculer les chemins de longueur maximale
fin faire dans un graphe. Dans ce cas il suffit de faire les modifications suivantes dans les


fin faire algorithmes donnees :
changer Dist(y) + W (y, x) < Dist(x) en Dist(y) + W (y, x) > Dist(x)
dans les conditionnelles
 lalgorithme de Bellman simplifie a un temps dexecution assez rapide ( n2 ) initialiser les distances a` au lieu de a` +
mais ne sapplique quaux graphes d
ecomposable en niveaux (donc sans cir-
Dans la pratique la liste P red calcule par ces differents algorithmes correspond
cuits)
a` la table de routage decrivant les meilleurs chemins.

61 62
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

3.2 Ordonnancement et gestion de projet lordonnancement


i 1 2 3 4 5 6 7
nest pas compatible
ti 0 0 5 12 10 14 20
La planification dun projet regroupe lensemble des methodes permettant de t1 t2
trouver lorganisation optimale du projet (duree minimale, identification des taches |{z} t3 t5 t4 t6 t7
critiques, . . .). Ce probl`eme peut etre modelise `a laide dun r
eseau PERT ( pro-
ject evaluation and review technique ) et resolu `a laide de la theorie des graphes.
Historiquement le PERT a ete cree en 1956 `a la demande de la marine americaine, 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
pour planifier la duree de son programme de construction de missiles balistiques car on doit avoir plus de 5 jours entre le debut de la tache 5 et le debut de la
nucleaires miniaturises Polaris (qui necessitait lintervention de 9000 sous-traitants tache 6
et 250 fournisseurs) afin de rattraper le retard en mati`ere de balistique, apr`es le choc Pour rendre tout cela plus lisible nous allons traduire les contraintes sous forme
de la crise de Spoutnik , par rapport `a lURSS. Lutilisation de la theorie des dinegalites entre les dates de commencement de chaque tache. Il faudra pour cela
graphes a permis de reduire la duree du projet `a 4 ans alors que le delai initial etait bien identifier les differents types de contrainte que lon rencontre.
estime `a 7 ans !
Proposition 3.8 (type de contraintes) On traduira les differentes contraintes
Definition 3.7 (projet) un projet P est constitue par : en inegalites de la mani`ere suivante :
un ensemble de taches `a realiser (Ai )i=1,...,n avec, pour chaque tache, une date contrainte au plus t
ot Aj commence au plus tot apr`es le debut de Ai

de commencement ti et une duree di ,


un ensemble de contraintes sur les taches du projets, contraintes qui tj ti
peuvent sexprimer par des inegalites faisant intervenir les dates (ti )i=1,...,n
et les durees (di )i=1,...,n contrainte au plus tard Aj commence au plus tard apr`es le debut de Ai

Trouver un ordonnancement pour le projet consister `a calculer, `a partir des durees


(di )i=1,...,n , des dates de commencement (ti )i=1,...,n qui soient compatibles avec les tj ti ti tj

P
contraintes du projet.
contraintes implicites toute tache Ai doit demarrer au plus tot au debut du
3.6 un exemple de projet et de contraintes : On le presente en general projet (A1 ) et finir au plus tard `a la fin du projet (An )

P
sous forme dun tableau :
ti t1 0 et tn ti di
Taches Operations et contraintes Duree en 3.7 Traduire les contraintes du projet en in equations :On essaie de
jours traduduire chaque contrainte par une inegalite de la forme tj ti
1 D ebut du projet 0
2 aucune contrainte 11
contraintes equation
3 commence au plus tot 1 jour apr`es le debut du projet 5
(3) commence au plus tot 1 jour apr`es le debut de (1) t3 t1 1
commence au plus tard 8 jours apr`es le debut de (4)
(3) commence au plus tard 8 jours apr`es le debut de (4) t4 t3 8
4 commence au plus tot 1 jours apr`es la fin de (2) 8
(4) commence au plus tot 1 jours apr`es la fin de (2) t4 t2 11 + 1 = 12
5 commence au plus tot 1 jours avant la fin de (2) 5
(5) commence au plus tot 1 jours avant la fin de (2) t5 t2 11 1 = 10
6 commence au plus tot apr`es le debut de (4) et apr`es la 4
(6) commence au plus tot apr`es le debut de (4) t6 t4 0
fin de (5)
(6) commence au plus tot apr`es la fin de (5) t6 t5 d5 = 5
7 Fin projet 0
` partir des equations obtenues on va pouvoir representer ce projet par un graphe
A
Il est difficile de concevoir un planning directement `a partir dune liste de contraintes, oriente et value.
par exemple :
Definition 3.9 (graphe potentiel-t ache, reseau PERT) On associe `a un
i 1 2 3 4 5 6 7
lordonnancement est compatible probl`eme dordonnancement un graphe oriente et value G = (S, A, f ) tel que :
ti 0 1 14 13 11 16 21
Chaque tache Ai du projet sera represente par un sommet xi du graphe
t1 t2 t5 t4 t3 t6 t7 chaque contrainte tj ti d du projet sera representee par un arc (xi , xj ) de
valuation f (xi , xj ) = d
On ajoutera eventuellement des contraintes implicites pour que chaque tache dans
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 le graphe appartienne `a au moins un chemin reliant la tache de debut de projet et
celle de fin de projet.

63 64
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

P 3.8 Repr
esenter le projet par un graphe : La duree minimale de realisation du projet est donc de 20 jours qui correspond `a
lordonnancement :

3 5 i 1 2 3 4 5 6 7
8 ti 0 0 1 12 10 15 20
1 4
12 0 8  Lorsquil ny a pas de circuits dans le graphe on peut utiliser lalgorithme de
1 0 2 6 4 Bellman simplifie pour calculer lordonnancement correspondant. Dans les autres
7
cas il faudra utiliser lalgorithme de Bellman general !
10 5

5
Th eor`
eme 3.11 (ordonnancement au plus tard) Pour une duree T , lordon-
ici on a du ajouter deux arcs correspondant `a des contraintes implicites : nancement au plus tard dun projet consiste `a trouver les dates les plus tardives de
larc (1, 2) avec le poids 0 t2 t1 0 (A2 debute apr`es le debut) commencement (ti )i=1,...,n de chaque tache telles que la duree du projet soit au maxi-
larc (6, 7) avec le poids 4 t7 t6 d6 = 4 (A7 commence au plus tot `a mum de T . Pour calculer cet ordonnancement il suffit de calculer les chemins les
la fin de A6 ) plus longs dans le graphe r eciproque G1 (toujours relativement `a f ) depuis
le sommet correspondant `a la fin du projet. Les distances obtenues donnent le temps
restant `a partir du commencement dune tache jusqu`a la fin du projet, en dautres
 Les valuations du graphe potentiel-tache peuvent tr`es bien etre negatives. termes la tache i doit demarrer au plus tard `a la date :
Les contraintes au plus tard feront apparatre des circuits dans le graphe

P
potentiel-tache. ti = T Dist(xi ), i = 1, . . . , n

3.10 Calculer lordonnancement au plus tard pour T = 22 jours : on


calcule dabord le graphe reciproque de G (en conservant les poids des arcs)
Th eor`eme 3.10 (ordonnancement au plus t ot) Lordonnancement au plus tot
dun projet consiste `a trouver les dates de commencement (ti )i=1,...,n de chaque tache 5
telles que le projet soit fini le plus rapidement possible. Pour calculer cet ordon- 4 8 3
nancement il suffit de calculer les chemins les plus longs dans le graphe G
8 0 1
(relativement `a f ) depuis le sommet correspondant au debut du projet. Les distances
obtenues donnent les dates de commencement de chaque tache :
7 4 6 12 1
ti = Dist(xi ), i = 1, . . . , n
5 0

P
Si xn correspond `a la tache de fin du projet alors la duree totale du projet est tn .
5 10 2
3.9 Calculer lordonnancement au plus t ot : ici le graphe de G ne poss`ede
on calcule les chemins les plus longs depuis le sommet 7 (avec lalgorithme de Bell-
pas de circuits on peut utiliser lalgorithme de Bellman simplifie (le graphe est dej`
a
man simplifie puisque G1 est decompose en niveaux) :
decompose en niveaux) ce qui donne :

Dist Pred Dist Pred


niv 1 2 3 4 5 6 7 1 2 3 4 5 6 7 niv 1 2 3 4 5 6 7 1 2 3 4 5 6 7
0 0 - - - - - - 0 0 0 0 0 0 0 0 - - - - - - 0 0 0 0 0 0 0 0
1 0 0 1 - - - - 0 1 1 0 0 0 0 1 - - - - - 4 0 0 0 0 0 0 7 0
2 0 0 1 12 10 - - 0 1 1 2 2 0 0 2 - - - 8 9 4 0 0 0 0 7 6 7 0
3 0 0 1 12 10 15 - 0 1 1 2 2 5 0 3 - 20 5 8 9 4 0 0 4 7 7 6 7 0
4 0 0 1 12 10 15 20 0 1 1 2 2 5 4 4 20 20 5 8 9 4 0 2 4 7 7 6 7 0

65 66
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

on en deduit lordonnancement au plus tard pour la duree T = 22 : i 1 2 3 4 5 6 7


au plus tot 0 0 1 12 10 15 20
au plus tard 2 2 17 14 12 18 22
i 1 2 3 4 5 6 7 marge 2 2 16 2 2 3 2
Dist(i) 20 20 5 8 9 4 0
ti = T Dist(i) 2 2 17 14 12 18 22 La marge est donc au minimum de 2 jours (normal puisquon a fixee une duree
T = 22 alors que la duree minimale est de 20 jours). En cas de besoin (absences,
probl`emes tecniques,. . .) on pourra donc prendre des ressources sur la realisation de
 Si le graphe G na pas de circuits alors il en va de meme pour le graphe reciproque la tache 3 pour aider sur les autres taches critiques.
G1 . On peut donc utiliser lalgorithme de Bellman simplifie pour calculer ces
ordonnancements, mais attention, les niveaux de G et G1 ne sont pas forcement  Il peut y avoir plusieurs chemins critiques dans un graphe potentiel tache.
les memes !

Les ordonnancements au plus tot et au plus tard permettent de visualiser les taches Definition 3.13 (contrainte redondante) On dira quune contrainte dun projet
les plus critiques du projet, pour lesquelles on ne peut pas prendre de retard sans est redondante si dans le reseau PERT G = (S, A, f ) associe elle correspond `a un
repercution sur la date de fin du projet. arc (xi , xj ) tel quil existe un chemin de xi `a xj de longueur (relativement `a f )

P
telle que f (xi , xj ) < .
Theor` eme 3.12 (chemin critique) Si T est la duree minimale du projet (calculee
via lordonnancement au plus tot) le chemin le plus long depuis la tache de debut 3.12 Ajout dune contrainte redondante au projet : si on ajoute la
de projet jusqu`a celle de fin de projet est appele chemin critique tout retard sur contrainte :
la realisation dune des tache de ce chemin critique entrane un allongement de La tache (2) doit commencer au plus tot 1 semaine avant la tache (6)
la duree du projet. Pour les autres sommet du graphe potentiel-tache il existe une on obtient un nouveau graphe :
marge sur la duree de realisation de la tache, marge definie par :

marge = date de debut pour lordonnancement au plus tard 3 5


date de debut pour lordonnancement au plus tot

P
8
1 4
3.11 Repr esenter le chemin critique et calculer les marges pour T =
12 0 8
22 : le chemin critique (1, 2, 4, 7) sobtient donc en faisant apparatre larbre de
parcours correspondant `a la liste de predecesseurs calculee avec lordonnancement 1 0 2 7 6 4 7
au plus tot : P red = 0 1 1 2 2 5 4
10 5

3 5
5
8 pourtant on comprend bien que cette contrainte est inutile puisque la tache 2 doit de
1 4 toute facon demarrer au moins 15 jours avant la tache 6 `a cause du chemin (2, 5, 6).
Dans la pratique de nombreuses contraintes implicites sont ignorees car redondantes.
12 0 8
1 0 2 6 4 7

10 5

On a donc une marge sur la realisation des taches 3 et 6 mais pas pour les taches
2,4 et 5 comme le montre le calcul des marges :

67 68
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

3.3 Flots dans les r


eseaux
Lune des applications les plus importantes de la theorie des graphes est lopti-
P 3.13 Repr
sagittal :
4
esenter un r
eseau de transport et un flot sur un diagramme

misation des flots dans les reseaux. Pour etudier ce probl`eme il faut dabord definir
ce quest un reseau de transport.
26, 16 15, 2 30, 18
Definition 3.14 (r
eseau de transport) Un reseau de transport est un quadruplet
(G, s, t, C) o`
u
G = (S, A) est un graphe oriente simple 1 = 8, 0
3 10, 8 7 14, 10 = 2
s est un sommet sans predecesseur appele source
t est un sommet sans successeur appele puits
C : A R+ est une valuation positive de G appelee capacite 30, 20 10, 10 11, 2 12, 8
pour un ensemble de sommets W S on notera
arcs entrants en W : lensemble darcs W = {(x, y) A|x
/ W et y W }
6 20, 10 5
arcs sortants de W : lensemble darcs W + = {(x, y) A|x W et y
/ W}
si W = {z} est un singleton on notera ces ensembles simplement z + et z . la source est le sommet 1 et le puits est le sommet 2
sur chaque arc
Le reseau de transport va donc servir de support `a un flot . Ce flot est en fait le premier nombre indique la capacite
une seconde valuation attachee au graphe representant le reseau. le second nombre indique le flot
Definition 3.15 (flot) Soit (G, s, t, C) un reseau de transport, alors un flot sur ce par exemple larc (3, 7) `a une capacite C(3, 7) = 10 et un flot f (3, 7) = 8
graphe G = (S, A) est une valuation positive f : A R+ qui verifie : le flot de larc (6, 3) est sature et le flot de larc (4, 6) est nul
le flot ne depasse pas la capacite pour W = {5; 6}
W = {(1, 6); (4, 6)} mais ne contient pas (6, 5) !
(x, y) A, 0 f (x, y) C(x, y) W + = {(6, 3); (5, 7); (5, 2)}
la loi des nuds se verifie en chaque sommet, par exemple pour 3
la loi des nuds f (3) = 10 car 3 = {(6, 3)}

P
X X f + (3) = 8 + 2 = 10 car 3+ = {(3, 4); (3, 7)}
z S \ {s; t}, f (x, z) = f (z, y)
(x,z)z + (z,y)z 3.14 Exemples concrets de r eseaux de transport et de flot : on peut
facilement modeliser les reseaux quon rencontre dans la vie courante par un graphe
Pour tout sommet z on appelle : oriente comportant une source et un puits, une capacite et un flot :
X
flot entrant en z : la quantite f (z) = f (x, z) r
eseau electrique : les arcs sont des lignes electriques, les flots des quantites de
(x,z)z courant, les sources sont les centrales (hydrauliques, nucleaire, eoliennes, `a
X
flot sortant de z : la quantite f + (z) = f (z, y) charbon,. . .) o`
u est produite lelectricite, les puits sont des endroits o`
u lelectricite
(z,y)z +
est consommee, les capacites representent lintensite du courant `a partir de la-
quelle une ligne va fondre !
Et on dira que le flot f sur larc (x, y) est :
r
eseau de distribution de leau : les arcs sont des canalisations, les flots des
satur
e : si f (x, y) = C(x, y)
quantites deau, les capacites le debit maximal dune canalisation, les sources
nul : si f (x, y) = 0 peuvent etre des nappes phreatiques, des barrages . . ., les puits sont des endroits
o`
u leau est rejete, une station depuration dans le meilleur des cas !
La contrainte la plus importante pour un flot est la loi des nuds. Elle a ete posee
par le physicien allemand Gustav Kirchhoff en 1845, lorsquil a etabli les r`egles de r
eseau informatique : les arcs peuvent representer des cables de transmission
calcul des intensites des courants dans un circuit electrique. Elle exprime simplement (c
ables ethernet, cables telephoniques, fibre optique, o`
u le vide pour le wifi !),
la conservation du flux : le flux entrant= le flux sortant . les flots sont des quantites dinformation, les capacites le debit maximal dune
connexion (Mo/s), les sommets sont des routeurs, la source une machine
emettant des informations (un mail par exemple), le puits la machine des-
tinataire de ces informations,

69 70
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

r
eseau routier : les arcs sont des routes, les flots des quantites de voitures, les Proposition 3.17 (Lemme de la coupe) Soit (G, s, t, C) un reseau de transport
sommets des carrefours, les capacites le nombre de voitures `a partir duquel il et f un flot sur ce reseau alors pour toute coupe W on a
va se former un bouchon, les sources les endroits do` u partent les vehicules
(la zone Pegase par exemple), les puits les endroits o`
u vont les voitures (mai- X X
son/appartement des gens partant de la zone Pegase). f + (s) = f (x, y) f (x, y) = f (t)
(x,y)W + (x,y)W
Le vocabulaire utilise dans ce chapitre est donc directement herite de termes utilises
dans chacun des reseaux que nous rencontrons dans la vie courante. cette valeur est appelee valeur du flot f est notee V (f ) et pour toute coupe on a

 il existe des definitions plus generales de flots et de reseau de transport. V (f ) CW


Par exemple, dans certaines reference, on parle parfois de reseaux de trans-
Preuve : la demonstration se fait par recurrence sur le nombre de sommets de la
port avec plusieurs sources ou plusieurs puits. On pourra toujours, dans ces
coupe
cas, se ramener `a la definition de ce cours (source et puits unique) en ajoutant :
une source s et des arcs vers toutes les P autres sources du probl`eme (s , si ) avec epart W = {s} : donc s = car s na pas de predecesseur
au d
une capacite egale `a celle sortant de si ( (si ,x)s+ C(si , x) = C(s , si ))
i X X X
un puits t et des arcs depuis toutes P les autres puits du probl`eme (tj , t ) avec une f + (s) = f (x, y) = f (x, y) f (x, y)
capacite egale `a celle entrant en tj ( (x,tj )t C(x, tj ) = C(tj , t )) (x,y)s+ (x,y)s+ (x,y)s
j
| {z } | {z }
Dans dautres definitions le r
eseau de transport est muni de deux capacit es = f + (s) par d
efinition = 0 car s =
Cmax et Cmin (eventuellement negatives) avec un flot verifiant (en plus de la loi des
nuds) : W = W {z} : on ajoute un sommet z a` une coupe plus petite W
(x, y) A, Cmin(x, y) f (x, y) Cmax (x, y)
X X
si Cmin verifie la loi des nuds on peut se ramener au cas traite dans ce cours en f (x, y) f (x, y)
remplacant : (x,y)W + (x,y)W
les capacites Cmin et Cmax par une capacite definie par
X X X X
= f (x, y) + f (z, y) f (x, y) + f (x, z)
(x, y) A, C(x, y) = Cmax (x, y) Cmin(x, y)
(x,y)W + (z,y)z + (x,y)W (x,z)z

le flot f par un nouveau flot f defini par X X X X
= f (x, y) f (x, y) + f (z, y) f (x, z)
(x, y) A, f(x, y) = f (x, y) Cmin (x, y) (x,y)W + (x,y)W (z,y)z + (x,z)z
| {z } | {z }
= f + (s) pour la coupe W = 0 dapr`
es loi des nuds
Dans les probl`emes de reseau de transport les flots entrants et sortants dun
ensemble de sommets jouent un role tr`es important, ce qui nous am`ene `a definir la = f + (s)
notion de coupe. attention, lors du passage de la premi`ere a` la deuxi`eme ligne du calcul il faut
Definition 3.16 (coupe) Soit (G, s, t, C) un reseau de transport, une coupe est un remarquer que :
ensemble de sommets contenant la source : certains arcs (z, y) / W mais dans ce cas (z, y) z + et (z, y) W et les
deux termes f (z, y) sannulent mutuellement dans la somme,
W S, s W certains arcs (x, z) / W + mais dans ce cas (x, z) z et (x, z) W + et les
deux termes f (x, z) sannulent mutuellement dans la somme,
On appelle capacit
e de la coupe W la quantite : ce qui justifie legalite finale.
X pour la derni`ere coupe W = S \ {t} : comme t+ = (car t na pas de succes-
CW = C(x, y) seur) on a :
(x,y)W +
Une coupe est donc un ensemble qui coupe en deux le graphe avec dun cote X X
f + (s) = f (x, y) f (x, y) = f (t)
la source et de lautre le puits. La coupe permet de definir la valeur du flot, cest (x,y)W + (x,y)W
`a dire la quantite qui a ete transporte de la source jusquau puits. La capacite des | {z } | {z }
differentes coupes impose une limite maximale au flot dans un reseau de transport. = f (t) car W+ = t = 0 car t na pas de successeur

71 72
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

on peut donc definir la valeur du flot comme etant V (f ) = f + (s) = f (t). Il ne reste Theor`eme 3.18 (flot-max/coupe-min)
plus qu`a justifier que la valeur du flot est majore par la capacite de chaque coupe. Soit (G, s, t, C) un reseau de transport alors il existe un flot f sur ce reseau tel que
Ce dernier resultat decoule du controle du flot par les capacites, en effet pour une
coupe W : V (f ) = min CW
coupe W

X X La demonstration de Ford et Fulkerson conduit a` un procede algorithmique qui per-
V (f ) = f (x, y) + f (x, y)
met, en partant dun flot donnee (le flot nul f (x, y) = 0 par exemple), de laugmenter
(x,y)W + (x,y)W
jusqu`a la valeur maximale donnee par la capacite dune coupe minimale ! Cest ce
X X procede que nous allons etudier maintenant. Lidee de Ford et Fulkerson est quil y
C(x, y) + 0 = CW a deux mani`eres daugmenter le flot dans un reseau entre deux sommets voisins x
(x,y)W + (x,y)W et y :
| {z } | {z }
car f (x, y) C(x, y) car f (x, y) 0 si (x, y) A et f (x, y) < C(x, y) alors on peut augmenter le flot de x vers y
de C(x, y) f (x, y) sur cet arc

si (y, x) A et f (y, x) > 0 alors on peut diminuer le flot jusqu`a 0 de y vers
 Dans certains ouvrages sur les flots, on ajoute au graphe un arc fictif, partant x ce qui revient a` augmenter le flot de x vers y
du puits t pour rejoindre la source s, avec la valuation f (s, t) = V (f ), de telle Ainsi pour pouvoir augmenter le flot il suffit de trouver une suite de sommets du
sorte que s et t verifient aussi la loi des nuds. graphe allant de la source au puits et le long de laquelle on puisse augmenter le flot,

P
cest ce quon va appeler une chane augmentante.

D
efinition 3.19 (chane augmentante) Dans un reseau de transport (G, s, t, C)
3.15 Calcul du flot et coupe minimale :
muni dun flot f on appelle augmentation du flot de x vers y la quantite :

4 (x, y) = max (C(x, y) f (x, y), f (y, x))


W4 W4
Une chane augmentante est une suite de sommets C = (x0 , x1 , . . . , xp ) dans G
26, 16 15, 2 30, 18 telle que :
C est chemin du graphe de la source s jusquau puits t dans le graphe G
considere comme un graphe non-orient
e:
1 = 8, 0 10, 8 14, 10
3 7 = 2 x0 = s, xp = t, et [i = 0, . . . , p 1, (xi , xi+1 ) A ou (xi+1 , xi ) A]

laugmentation du flot de s vers t le long de C est strictement positive :


30, 20 10, 10 11, 2 12, 8
C = min (xi , xi+1 ) > 0

P
i=0,...,p1

6 20, 10 5
V (f ) = 36 3.16 Chane augmentante (1; 4; 2) avec = 10 = min(10, 12) :
4
la valeur du flot actuel est de 36 (sur larc fictif de retour ) : pour la chane (1; 4; 2), = 10
+
V (f ) = 36 = f (1) = 16 + 20 = f (2) = 18 + 10 + 8 26, 16 15, 2 30, 18
il y a plusieurs coupes de capacite minimale CW = 56 :
W1 = {1}, W2 = {1; 6}, W3 = {1; 3; 6}, W4 = {1; 3; 4; 5; 6; 7} 8, 0
1 = 3 10, 8 7 14, 10 = 2
Le flot maximum est donc limite par la coupe minimale du reseau. Le
theor`eme suivant affirme que le flot maximum `a justement pour valeur la capa-
cite de la coupe minimale . Ce theor`eme a ete enonce par en 1956 par P. Elias, 30, 20 10, 10 11, 2 12, 8
A. Feinstein et C.E. Shannon, et (independamment) par L.R. Ford, Jr. et D.R.
Fulkerson. 6 20, 10 5

73 74
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques


Le long dune telle chane on peut augmenter le flot dune quantite C .
X X

Proposition 3.20 Dans un reseau de transport (G, s, t, C) muni dun flot f , sil f+ (xi ) = f(x, xi ) = f (xi , x)+(f (xi , xi+1 ) + C ) = f + (xi )+C

existe une chane augmentante C = (x0 , x1 , . . . , xp ) dans G alors on peut definir un +
(xi ,x)xi +
(xi ,x)xi
nouveau flot f sur le reseau par : x6=xi+1

Dans le second cas si (xi1 , xi ) A et (xi+1 , xi ) A, f (xi ) = f+ (xi ) car


f (x, y) = f (x, y) + C si (x, y) = (xi , xi+1 ) A

f (x, y) = f (x, y) = f (x, y) C si (x, y) = (xi+1 , xi ) A

f (x, y) sinon X X

f (xi ) = f(x, xi ) = f (x, xi ) . . .
qui verifie V (f) = V (f ) + C

(x,xi )xi (x,xi )x
i
x6=xi1 ,xi+1
Preuve : On verifie facilement que f est bien un flot, dabord le nouveau flot f ne + (f (xi1 , xi ) + C ) + (f (xi , xi+1 ) C ) = f (xi ) + 0
depasse pas la capacite et reste positif :
X X
si(xi , xi+1 ) A alors f+ (xi ) = f(xi , x) = f (xi , x) = f + (xi ) car xi+1 , xi1
/ x+
i
(xi ,x)x+ (xi ,x)x+
f(xi , xi+1 ) = f (xi , xi+1 ) + C > f (xi , xi+1 ) + 0 0 i i

on demontre de meme que f (xi ) = f+ (xi ) quand (xi , xi1 ) A et (xi+1 , xi )



et A et quand (xi , xi1 ) A et (xi+1 , xi ) A . . .
enfin le flot a` bien ete augmente de C puisque pour s (premier sommet de la chane
f(xi , xi+1 ) = f (xi , xi+1 )+C f (xi , xi+1 )+C(xi , xi+1 )f (xi , xi+1 ) = C(xi , xi+1 )
augmentante) on a :
si (xi+1 , xi ) A alors
X X

V (f ) = f (s) =
f (s, y) = f (s, y) + f (s, x1 ) + C
f(xi+1 , xi ) = f (xi+1 , xi ) C > f (xi+1 , xi ) f (xi+1 , xi ) = 0 | {z }
+
(s,y)s + (s,y)s ,y6=x1
f(s,x1 )
et
X
f(xi , xi+1 ) = f (xi , xi+1 ) C < f (xi , xi+1 ) 0 C(xi , xi+1 ) = f (s, y) + C = f + (s) + C = V (f ) + C
sinon f(x, y) = f (x, y) reste compris entre 0 et C(x, y) (s,y)s+

Ensuite f verifie bien la loi des nuds. Soit xi un sommet de la chane augmen-

tante la verification est simple sur un diagramme mais peut etre compliquee `a ecrire :
On en deduit facilement lalgorithme de Ford-Fulkerson pour calculer le flot
maximum sur un reseau de transport.
inchange xi+1 inchange xi+1
Theor` eme 3.21 (algorithme de Ford-Fulkerson) Dans un reseau de transport
f(xi , xi+1 ) f(xi , xi+1 ) (G, s, t, C), on obtient un flot maximum en partant de nimporte flot f , laugmentant
de C pour chaque chane augmentante C du reseau. Ce qui donne lalgorithme :

xi = f (xi , xi+1 ) + C xi = f (xi , xi+1 ) C
f(xi1 , xi ) f(xi1 , xi )
fonction f = Ford Fulkerson(G, s, t, C, f )
= f (xi1 , xi ) + C inchange = f (xi1 , xi ) + C inchange f = flot de depart (eventuellement nul)
xi1 xi1 tant que C chane augmentante faire
augmenter f de C le long de C

fin faire
Dans le premier cas si (xi1 , xi ) et (xi , xi+1 ) A, f (xi ) = f+ (xi ) car :
Pour comprendre le mieux est dappliquer cet algorithme sur un exemple.

X X

f (xi ) = f(x, xi ) = f (x, xi )+(f (xi1 , xi ) + C ) = f (xi )+C



(x,xi )xi (x,xi )xi
x6=xi1

75 76
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

P 3.17 Construction du flot maximum avec lalgorithme de Ford-Fulkerson :


au depart le flot est V (f ) = 36 on cherche des chanes augmentantes de la source
pour trouver dautre chane augmentante :
4
au puits en commencant par chercher des chemins sans arcs satures : pour la chane (1; 6; 5; 7; 3; 4; 2), = 2
4
pour la chane (1; 4; 2), = 10 26, 26 15, 2 30, 28

26, 16 15, 2 30, 18


1 = 8, 0 10, 8 14, 14
3 7 = 2

1 = 8, 0 10, 8 14, 10
3 7 = 2
30, 28 10, 10 11, 6 12, 12

30, 20 10, 10 11, 2 12, 8


6 20, 18 5

6 20, 10 5
4
`a la fin le flot est bien de 56
4
pour la chane (1; 6; 5; 2), = 4 26, 26 15, 4 30, 30

26, 26 15, 2 30, 28


1 = 8, 0 10, 6 14, 14
3 7 = 2

1 = 8, 0 10, 8 14, 10
3 7 = 2
30, 30 10, 10 11, 8 12, 12

30, 20 10, 10 11, 2 12, 8


6 20, 20 5

6 20, 10 5

4
pour la chane (1; 6; 5; 7; 2), = 4 A ` chaque fois quon modifie le flot le long dune chane augmentante qui est un
chemin de la source ou puits on sature un arc.
26, 26 15, 2 30, 28 ` la fin il faut eventuellement detourner le flot de certains points
A
dengorgement ce qui peut rendre nul le flot sur un arc.
Enfin sur le dernier diagramme les coupes minimales apparaissent clairement, ce
1 = 8, 0 10, 8 14, 10
3 7 = 2 sont des ensembles de sommets tels que le flux sortant est sature (arcs en rouges)
et le flux entrant est nul (arcs en noir) !
30, 24 10, 10 11, 2 12, 12

6 20, 14 5

` partir de maintenant on ne trouve plus de chane augmentant qui soit un chemin


A
P 3.18 rep erage des coupes minimales sur le flot maximum
il y a trois coupes minimales de capacite 56
de la source au puits, on est donc oblige de prendre un ou des arcs `a contre-sens
W0 = {1}, W1 = {1; 6}, W2 = {1; 3; 4; 5; 6; 7}

77 78
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

4 4 Notions de th
eorie des langages
Nous allons terminer ce cours avec un des prolongements de la theorie des graphes
26, 26 15, 4 30, 30 ayant le plus dapplications en informatiques : la theorie des langages. La theorie des
W2
langages permet, par exemple, de modeliser les langages de programmation et de les
analyser. Elle sest donc developpee a` partir des annees 50 accompagnant les progr`es
1 = 8, 0 10, 6 14, 14 de lelectronique puis de linformatique. Cette theorie a permis de construire de
3 7 = 2
nombreux outils danalyse lexicale et syntaxique, comme yacc et lex, qui permettent
de generer un interpreteur/compilateur pour un langage de programmation definit
30, 30 10, 10 11, 8 12, 12 de mani`ere formelle.

W1 6 20, 20 5 4.1 Alphabets, langages et grammaires formelles


Il faut commencer par donner une definition precise dun langage.
D efinition 4.1 (Langage formel) Un langage L, defini sur un alphabet , est un
Preuve : th eor`eme de Ford-Fulkerson Considerons une coupe minimale W ,
ensemble de mots (eventuellement vides) obtenus par concatenation des elements de
il y a forcement un arc, entre cette coupe et le reste des sommets, dont le flot est
lalphabet . Pour etre plus precis :
soit nul soit sature. Il doit aussi exister un chemin de s `a t passant par cet arc qui
est une chane augmentante (sinon il existerait une coupe de capacite plus faible un alphabet est un ensemble de symboles elementaires ,
strictement plus petite que W ). Augmenter le flot va donc tendre `a saturer cet arc un mot sur est une suite de symboles appartenant `a (on dit aussi lex`eme),
(si on le prend dans le sens direct) ou `a le vider (si on le prend `a contre-sens) : enation est loperation qui permet de fabriquer des mots `a partir dun
la concat
alphabet en les juxtaposant,
W W W W la longueur dun mot est le nombre de symboles qui le compose,
le mot vide est note est le seul mot de longueur nulle || = 0.
C1 , f1 C1 , C1

 En consequence un mot au sens de la theorie des langages peut correspondre


a` ce que nous appellerions une phrase .
s t s t

C2 , f2 C2 , 0 P 4.1 Exemples de langages simples quelques exemples tires des cours de


mathematiques :
 les entiers naturels N forment un langage sur lalphabet

 Le protocole de routage IP appele RIP (Routing Information Protocol), de type = {0; 1; 2; 3; 4; 5; 5; 6; 7; 8; 9}


distance vector, est base sur lalgorithme de Ford-Fulkerson. Chaque routeur
communique aux autres la distance avec un reseau donne en comptant le nombre de 54321 N est un mot de longueur 5
sauts et diffuse toute sa table de routage. Ce protocole (maintenant assez ancien) mais 01234 nest pas un mot de ce langage, car lecriture dun entier ne
est limite `a 15 sauts et ne prend pas en compte la qualite des transmissions. commence jamais par 0 !
les expressions bool eennes du cours de theorie des ensembles (semestre 1) forment
un langage sur lalphabet

{V rai; F aux; ; ; ; =; ; [; ]; P ; Q; R}

[P = Q] [P Q] est un mot de ce langage (de longueur 12)


par contre P [= Q] nest pas un mot de ce langage, car le parenthesage
nest pas valide

79 80
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

expressions arithm
etiques d
efinies dans Q forment un langage sur lalphabet L1 = {x |x impair} L1 L2 = {2; 12}
{0; 1; 2; 3; 4; 5; 5; 6; 7; 8; 9; +; ; ; /; [; ]}
L+
1 = L1 mais L1 = L1 {} L1 L2 = L1 {1; 3; 11; 13}
[56 34] [1 + 2] est un mot de ce langage de longueur 13
[123/456] + [789/[10 2 5]] nest pas un mot de ce langage `a cause de la L2 = {1; 2; 3; 11; 12; 13} L3 = {x |x impair} = L1
division par 0 !

 Attention un symbole de lalphabet peut etre compose de plusieurs caract`eres !


Il faut donc faire attention `a la definition du langage, qui peut etre ambigue. Par  Un langage L sur est donc forcement un sous-ensemble de : L .
exemple si on consid`ere le langage de tous les mots possibles sur lalphabet
= {a; b; ab} alors il existe une ambigut e sur la nature du mot aab qui peut
etre vu comme a.a.b ou comme a.ab ! En particulier on ne peut pas savoir si cest
un mot de longueur 2 ou 3 ! Grammaire formelle
La notion de symbole elementaire , qui apparat dans la definition de lalphabet,
doit donc etre comprise dans le sens quaucun symbole de lalphabet ne peut etre Pour pouvoir representer la construction des mots dun langage, on a besoin de
decompose en symboles appartenant eux aussi `a lalphabet. formaliser leurs r`egles de construction dune mani`ere simple. Pour cela nous avons
besoin dintroduire le concept de grammaire.

Cette difficulte apparat directement dans lanalyse des langages de programma- D efinition 4.3 (Grammaire formelle) Une grammaire formelle (ou, simple-
tion dans le processus didentification des variables utilisateur. Par exemple dans la ment, grammaire) est constituee des quatre objets suivants :
premi`ere definition du langage ALGOL (fin des annees 50) les mots cles netaient un ensemble fini de symboles V appele vocabulaire (contenant lalphabet
pas interdits pour les noms de variables. On pouvait donc ecrire : du langage) forme de 2 sous ensembles V = T N :
if else = then then if = else else then = if; des symboles terminaux T = {}, notes conventionnellement par des
Cela a vite ete abandonne (`a lepoque, la theorie des langages et des automates minuscules,
netait pas tr`es avancee...). des symboles non-terminaux N, notes conventionnellement par des majus-
cules,
On peut fabriquer des langages `a partir dautres langages plus simple en utilisant Un element de lensemble des non-terminaux, appele axiome , note conven-
quelques operations de base. tionnellement S0 ,
Definition 4.2 (operations sur les langages) A ` partir de langages L, L1 , L2 , Un ensemble de r`egles de la forme o` u est un non-terminal et
sur un alphabet , on peut construire de nouveaux langages sur en utilisant une concatenation de terminaux et de non-terminaux
les op
eration de base sur les ensembles union, intersection, complement pour des raisons de commodite on acceptera les simplifications suivantes dans
lecriture des r`egles :

P
L1 L2 , L1 L2 , L [ ; ] |

enation definie par L1 .L2 = {w = u.v|u L1 et v L2 }


la concat 4.3 Exemple de grammaires formelles
l
el
evation `
a la puissance definie par recurrence avec
identifier un langage ` a partir de la grammaire :
n 0, Ln = Ln1 .L et L0 = {} on consid`ere la grammaire formelle sur lalphabet = {a; b; c} :
lensemble de symboles V = {a; b; c; S0 ; S1 }
la fermeture de Kleene L = Ln en particulier symboles terminaux : a, b, c
n=0
est lensemble de tous les mots possibles sur lalphabet un axiome S0

P
et les r`egles S0 a; S0 S1 ; S1 bS1 ; S1 c
On notera aussi L+ = Ln
n=1
analysons les mots que lon peut former avec ce langage
efinir des langages sur lalphabet = {1; 2; 3} `a partir de
4.2 D dapr`es la premi`ere r`egle a est un mot du langage
L1 = {x |x pair}, L2 = {x |x 20}, L3 = {1; 3} les trois autre r`egles permettent de former des mots du type b . . . bc
ce langage est donc en fait {a; c; bc; bbc; bbbc; . . .}. On aurait pu aussi ecrire les
alors L1 = {2; 12; 22; 32; 112; 122; 132; . . .} r`egles de cette grammaire sous la forme : S0 a|S1 ; S1 bS1 |c

81 82
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Retrouver la grammaire ` a partir du langage :


soit le langage contenant tous les noms des fiches dexercice du cours de maths :
P 4.4 Exemples de grammaires de types 3
grammaire de type 2 : les expressions logiques
ecrite sous la forme dune

On a dej`a dit que le langage des expressions logiques, quon rencontre en calcul des
T D1.pdf, T P 1.pdf, . . . , T D9.pdf, T P 9.pdf predicats 5 , peut etre formalisee par un langage sur lalphabet
peut etre formalise par une grammaire en posant : = {V rai; F aux; ; ; ; =; ; [ ; ]; P ; Q; R}
lalphabet = {T ; D; P ; 1; . . . ; 9; .; p; d; f }
on ajoute un axiome S0 essayons decrire la grammaire de ce langage. Pour cel`a il faut ajouter des etats Si
et les r`egles S0 T DS1 |T P S1; `a lalphabet et expliquer comment on obtient un mot du langage par concatenation
des symboles de :
S1 1S2 |2S2 |3S2 |4S2 |5S2 |6S2 |7S2 |8S2|9S2 ; S2 .pdf
on demarre de laxiome S1
et lensemble de symboles V = {T ; D; P ; 1; . . . ; 9; .; p; d; f ; S0; S1 ; S2 } on indique les r`egles dutilisation du et du ou et du non :

S1 S1 S1 |S1 S1 |S1 |S1 = S1 |S1 S1


 Pour decrire les r`egles dun langage on utilisera dans le vocabulaire (en plus de
lalphabet) le mot vide . une expression se termine par une variable P, Q, R ou une valeur V rai ou
F aux :
S1 V rai|F aux|P |Q|R
Cest un linguiste americain, Noam Chomsky, qui a le premier degage la notion
de grammaire formelle, dans les annees 50. Il en a propose une classification appelee on a donc identifie V rai, F aux, P, Q, R comme terminaux de cette grammaire.
de nos jours hierarchie de Chomsky. Telle quelle cette grammaire est de type 2 mais elle peut etre reecrite sous forme
dune grammaire de type 3 en rajoutant des etats :
D efinition 4.4 (hi erarchie de Chomsky) Soit L un langage formel, sur un al- on part dun axiome S1 :
phabet = {a; b; . . .}, defini par un vocabulaire V = N T (T = {} sous-
ensemble des terminaux N = T ) et un ensemble de r`egles R. Le langage L appartient S1 V rai S2 |F aux S2 |P S2 |Q S2 |R S2 |S1
`a lune des 4 categories (de la plus restrictive `a la plus large) suivantes :
on peut terminer le mot en decidant que S2 peut etre remplace par le ou
Les langages de type 3, ou langages rationnels :
ajouter un operateur binaire
ce sont les langages definis par une grammaire lineaire `a gauche (resp. droite),
grammaire dont chaque membre droit (resp. gauche) de r`egle commence par S2 S3 | S3 | = S3 | S3 |
un non-terminal. En dautres termes r`egles doivent pouvoir secrire sous la
forme : lineaire `a gauche : A aB|a lineaire `a droite : A Ba|a si on a ajoute un operateur binaire on est oblige dajouter un symbole de lal-
avec A, B N, a T = {} phabet (non vide) donc ensuite il faut revenir `a letat terminal S2 en ajoutant
Les langages de type 2, ou langages alg ebriques : un symbole correspondant `a une variable ou un booleen :
ce sont les langages definis par une grammaire formelle hors-contexte, gram-
maire dont les r`egles doivent pouvoir secrire sous la forme : S3 V rai S2 |F aux S2 |P S2 |Q S2 |R S2 | S3
A a|aBb avec A, B N, a, b T = {}
le seul symbole terminal est donc S2
Les langages de type 1, ou langages contextuels : la grammaire est donc lineaire `a droite et donc le langage est de type 3.
ce sont les langages definis par une grammaire contextuelle, grammaire dont
les r`egles doivent pouvoir secrire sous les formes des grammaires de type 2 ou
3 ou : A avec A N, , , V, 6=
Les langages de type 0, ou langages r ecursivement enumerables :
Cet ensemble inclut tous les langages definis par une grammaire formelle.

, N, 6=

 Une grammaire ecrire sous la forme dune grammaire de i peut en fait etre une
grammaire de type i + 1 ! 5. si on se limite a` 3 propositions P, Q, R

83 84
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

4.2 Langages r
eguliers et automates Finis  Les expressions reguli`eres sont tr`es importantes, en syst`eme elle permettent se
Dans lensemble des langages sur un alphabet lensemble des langages reguliers simplifier le traitement des fichiers en grande quantite. Il existe de nombreuses
joue un role tr`es important. implementation des expressions reguli`eres dans differents langages, par exemple, en
Bourne shell on peut utiliser grep. Pour rechercher les fiches de TD/TP du cours
Definition 4.5 (Langages r eguliers) dans un repertoire il suffira de faire :
Lensemble R des langages reguliers sur est le plus petit ensemble tel que ls | grep -e ^T[DP][1-9].pdf
R et {} R de meme pour rechercher les fichiers graphes :
a {a} R ls | grep -e ^exo[1-9][0-9]*G.graph
A, B R A B, A.B, A R On trouve aussi des fonctions comme sed qui permettent de faire des
remplacement dans un fichier en utilisant des expressions reguli`eres :
Les langages reguliers peuvent donc etre construit `a partir dun alphabet en sed -e s/regex1\(regex2\)regex3/\1/g fichier.txt
utilisant uniquement des operations simples (reunion, concatenation, fermeture de cette commande substitue (s), dans tout (g) le fichier (fichier.txt), les groupes de
Kleene). la forme regex1\(regex2\)regex3 e par juste le contenu correspondant a` regex2
(symbolise par \1) On retrouve le meme genres de fonctionnalites en php avec
Theor` eme 4.6 (expression r eguli`ere)
preg match, pour utiliser des expressions reguli`eres dans des editeurs de texte
Une expression reguli`ere est une expression formee `a partir des symboles {},
comme notepad++ on pourra lire [6] . . .
des r`egles 6 de reunion (|), concatenation (termes accoles !), puissance ( 2 , 3 , . . . ) et
fermeture de Kleene ( et + ), le tout eventuellement parenthese.

R est langage regulier R peut etre represente par une expression reguli`ere.

P
d
4.5 Exemple dexpressions r
ecrire les el
eguli`
eres
ements dun langage repr esente par une expression r eguli`ere
Pour construire des expressions reguli`eres correspondant `a des langages com-
plexes il faut passer par un graphe permettant de representer simplement le langage
et quon appelle un automate.
sur lalphabet = {a; b; c}
a = {; a; aa; aaa; . . .}
(a|b) = {; a; b; ab; ba; aab; aba; abb; baa; bab; bba; bbb; . . .}
D
efinition 4.7 (Automate ` a nombre fini d etats)
ab = {a; ab; abb; abbb; . . .}
Un automate fini est un quintuplet A = (E, , , I, F ) o`
u:
a|b c = {a; c; bc; bbc; bbbc; . . .} et nous avons plus haut que ce langage est
est un ensemble (non-vide) de symboles appele alphabet
bien decrit par une grammaire de type 3 S0 a|S1 ; S1 bS1 |c
E est un ensemble (non-vide) dont les elements sont appeles etats
trouver une expression r eguli` ere pour d ecrire un langage : E {} E est appelee fonction de transition
exemple avec lalphabet des caract`eres = {a; b; . . . ; z; A; B; . . . ; Z; 0; . . . 9; .} I E un ensemble (non-vide) detat appeles etats initiaux
Lensemble des fiches pdf du cours de theorie des graphes (TD1 `a TD9 et F E un ensemble (non-vide) detat appeles les etats acceptant (terminaux)
TP1 `a TP9) peut etre decrit par lexpression reguli`ere On represente A par le graphe dun reseau de transport G = (E, U, ) avec :
pour sommets lensemble E des etats
T(D|P)(1|2|3|4|5|6|7|8|9).pdf
pour arcs lensemble des couples (x, y) U E E tels que
si on veut decrire dans une meme expression reguli`ere les differentes versions
du polycopie (les fichiers cours.pdf et cours2.pdf ) en plus des fiches de TD w {}, (x, w) = y (donc (x, w) est bien definie)
et TP alors on peut construire une autre expression reguli`ere :
pour valuation C(x, y) = {w|y = (x, w)}
(cours(|2).pdf)|(T(D|P)(1|2|3|4|5|6|7|8|9).pdf) plusieurs sources donnees par lensemble I des etats initiaux
plusieurs puits donnees par lensemble F des etats acceptant
les fichiers scilab associes `a chaque TP peuvent etre decrit par lexpression Les etats initiaux sont indiques par des fl`eches, les finaux par des doubles cercles.
reguli`ere suivante ` chaque chemin dune source vers un puits de G on fait correspondre un mot
A
obtenus en concatenant les symboles appartenant aux valuations des arcs du chemin
(TP(1|2|3|4|5|6|7|8|9).sce)|(exo(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)G.graph) dans lordre de parcours. Le langage associ e`a un automate A est lensemble des
6. par ordre de priorite croissante mots obtenus en considerant tous les chemins possibles dune source vers un puits.

85 86
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

 les etats dun automate correspondent grosso-modo aux elements non-terminaux les etats S1 et S2 etant tr`es similaires on peut les regrouper en un seul (et
du vocabulaire dans la grammaire du langage L associe `a ceci-pr`es que : supprimer la transition par le mot vide) :
un non-terminal A de la grammaire admettant une r`egle de derivation A
deviendra un etat final de lautomate A b b
on ajoutera des etats terminaux (B ici) `a lautomate A pour representer les r`egles S0 S1 S2
de derivation du type A a comme si on avait les r`egles A aB, B

P
a

4.6 Premiers automates. Les automates permettent de representer un lan- cela revient `a ecrire que ba a b = ba b. On en deduit que le langage est decrit
gage dune mani`ere plus explicite quune expression reguli`ere et moins formelle par les r`egles S0 bS1 ; S1 aS1 |bS2 ; S2| avec les symboles terminaux a, b
quune grammaire. Il est donc tr`es utile de pouvoir faire le lien entre un automate et et laxiome S0 . Laxiome S0 est letat initial et S2 letat final de lautomate.
le langage associe, soit sous forme dexpression reguli`eres soit sous forme de gram- pour le langage a b|ba il suffit dajouter un etat qui permet de choisir si on
maire : veut aller vers lautomate de a b ou vers celui de ba :
a
a b
le langage a est decrit par la r`egle S0 aS0 | S1 S3
le symbole terminal est a et laxiome S0 . Il sera
S0
represente par lautomate ci-contre. Laxiome S0
est letat initial et final de lautomate
S4

le langage a b consiste `a enchaner un mot de a a
a
puis le symbole b. Au niveau de la grammaire cela
correspond aux r`egles S0 aS0 |b les symboles ter- b b
S0 S1 S0 S2
minaux sont a, b et laxiome S0 . Il sera represente
par lautomate ci-contre. Laxiome S0 est letat ini-
tial et S1 letat final de lautomate On en deduit que le langage associe est decrit par les r`egles

De meme pour le langage ba mais on inverse a
lordre des transitions. le langage est donc decrit S0 aS0 |bS2 ; S1 bS3 ; S3 aS3 |; S4 S1 |S2 ; S2
par les r`egles S0 bS1 ; S1 aS1 | avec les b
S0 S1
symboles terminaux a, b et laxiome S0 . Il sera avec les symboles terminaux : a, b et laxiome S4 . Laxiome S4 est letat initial
represente par lautomate ci-contre o` u laxiome S0 et S2 , S3 sont les etats finaux de lautomate.
est letat initial et S1 letat final de lautomate pour le langage (a b) il faut ajouter un etat `a la fois initial et final qui va
pour le langage a bba il suffit maintenant de concatener les automates des accepter le mot vide et permettre de boucler sur les mots de a b :
langages a b et ba ce qui donne :
a a
a
S0 b S1 b S2 b
S2 S0 S1

le langage est donc decrit par les r`egles S0 aS0 |bS1 ; S1 bS2 ; S2 aS2 |; ce langage est donc decrit par les r`egles S0 aS0 |bS1 ; S1 S2 ; S2 S0 |;
les symboles terminaux sont a, b et laxiome S0 . Laxiome S0 est letat initial les symboles terminaux etant a, b et laxiome S2 qui est donc letat initial et
et S2 letat final de lautomate. aussi letat final de lautomate.
De meme le langage ba a b peut etre represente par lautomate : pour le langage (a b)+ il faut supprimer le mot vide de (a b) ce qui peut se
faire en changeant juste letat final :
a
S0 b S1 S2 b S3
S2 S0 b S1
a a

87 88
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

le langage est donc decrit par les memes r`egles que (a b) : Lautomate permet de verifier facilement si un mot appartient ou pas au langage
associe puisque chaque mot correspond a` un chemin depuis un etat initial jusqu`a un
S0 aS0 |bS1 ; S1 S2 |; S2 S0 ;

P
etat final. Tester si un mot appartient a` un langage sappelle faire lanalyse lexicale
mais cette fois Laxiome S2 nest que letat initial alors que S1 est letat final. du langage
4.8 Analyse lexicale
 Un langage donnee peut etre represente par des automates en apparence
le mot P = Q P Q est bien dans le langage L car il peut etre obtenu
differents ! Par exemple le langage ba a b a ete represente par lautomate :
par le chemin :
(S1 , S2 , S3 , S2 , S3 , S3 , S2 , S3 , S2 )
S0 b S1 S2 b S3 le mot P = Q Q nappartient pas au langage L car on ne peut
pas atteindre un etat final en partant de letat initial, on bloque apr`es P =
a a Q . . . car on arrive en S3 et on ne peut pas rajouter le connecteur
(S1 , S2 , S3 , S2 , S3 , S3 , ???)

 En langage C, le programme Lex permet de faire lanalyseur lexical dun langage


S0 b S1 b S3
qui peut etre simplifie en : de type 3 a` partir de sa description formelle (sa grammaire). Il existe aussi une
version GNU de Lex appelee Flex.
a

P
Lautomate permet de construire facilement une expression reguli`ere pour le
langage associe.
On parle alors dautomates equivalent. Simplifier un automate consiste `a lui
enlever des etats ou des transitions sans changer le langage auquel il est associe ! 4.9 Trouver lexpression r eguli`
ere du langage des expressions bool eennes
Reprenons le langage des expressions booleennes (sans parenthesage) associe `a lau-
Ces differents exemples montrent quon peut facilement construire un automate `a tomate :

partir dautomate plus simples en utilisant les operations de base sur les langages ; ; =;

concatenation (.) reunion (|) et etoile de Kleene ( ou + ). V ; F ; P ; Q; R
S1 S2 S3
Theor`eme 4.8 (Th eor`eme de Kleene)
V ; F ; P ; Q; R
Lensemble des langages qui peuvent etre modelises par un automate fini est exacte-
ment lensemble des langages de type 3, cest `a dire lensemble des langages reguliers
(donc qui peuvent etre decrits par une expression reguli`ere). Verifier quun mot ap- la partie de lautomate entre S2 et S3 peut etre vue comme une boucle sur S2o` u

P
partient bien `a un langage de type 3 sappelle faire lanalyse lexicale.
4.7 Construire lautomate dun langage.
Le langage des expressions booleennes (sans parenthesage) definit par la grammaire :
lon repeterait le motif (|| = | )() (V |F |P |Q|R). Ceci permet de construire
un automate equivalent mais avec moins detats :

S1 S1 S1 |S1 S1 |S1 |S1 = S1 |S1 S1 |V rai|F aux|P |Q|R (| | = | )() (V |F |P |Q|R)



peut aussi etre represente par un automate, Pour cela il est plus facile de partir de
la grammaire mise sous forme lineaire `a gauche : V ; F ; P ; Q; R
S1 S2
S1 V rai S2 |F aux S2 |P S2 |Q S2 |R S2 |S1
S2 S3 | S3 | = S3 | S3 |
S3 V rai S2 |F aux S2 |P S2 |Q S2 |R S2 | S3
Sur ce nouvel automate on peut remarquer que chaque boucle va correspondre `a
; ; =; une fermeture de Kleene, dans lexpression reguli`ere associee, qui entourent le motif

V ; F ; P ; Q; R apparaissant sur la transition S1 S2. Ici il nest pas difficile de trouver que le
S1 S2 S3
langage associe est defini par :
V ; F ; P ; Q; R  
() (V |F |P |Q|R) (| | = | )() (V |F |P |Q|R)
|{z} | {z }| {z }
boucle S1 arc S1 S2
S1 est donc letat initial et S2 est letat final. boucle S2

89 90
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

la generalisation de cette methode est ce quon appelle lalgorithme de Moore.


Elle consiste `a simplifier lautomate jusqu`a ce quil nait plus que deux etats (un
P 4.10 calculer une expression r eguli`ere du langage
On commence par se ramener `a un etat initial/final
initial et lautre final) pour se ramener `a lexemple precedent. a a

Proposition 4.9 (calcul dexpression r eguli` ere) Soit un automate fini A = C C E


(E, , , I, F ) pour calculer lexpression reguli`ere correspondant au langage L as-
socie `a A on cherche `a eliminer pas `a pas les sommets et les transitions suivant 2
r`egles :
A A
1. suppressions des etats intermediaires

b
ab c ab ab
a c B D B D
A X B A X B
a; b a; b
2. suppression des transissions multiples
puis on deroule lalgorithme (peut importe lordre dans lequel on choisit les sommets)
a
a|b E E
A B A B a a
b
3. a` la fin on doit aboutir `a un automate de la forme suivante dont lexpression
reguli`ere associee est a bc A A ab
a c

A b B A a bc B ab
B D B


ce qui donne lalgorithme a; b a; b
fonction regex = automate vers regex(A ) `a la fin on arrive `a seulement deux etats (un initial un final) :
simplifier A pour quil nait quun seul etat initial/final
tant que A poss`ede au moins un etats non-final et non-initial faire a
X = un etat non-final et non-initial de A a |((a|b) ab)
A E A E
pour tout A , B etats de A adjacents `a Xfaire

simplifier A suivant la r`egle 1) : (a|b) ab
creer la transition A B
supprimer les transitions A X et X B
fin faire
supprimer X de lautomate
simplifier les arc multiples suivant la r`egle 2)
fin faire lexpression reguli`ere est donc a |((a|b) ab)
simplifier les eventuelles boucles restantes dans A
suivant la r`egle 3)  Au cours de lalgorithme on a lapparition (temporaire) de multi-arc entre les


regex = valeur de lunique transition de A (r`egle 3) sommets du graphe.

 Lautmate utilise na pas besoin detre deterministe ! Mais selon lautomate de


depart on ne trouvera pas la meme expression reguli`ere !  Les etats initiaux et finaux de lautomate peuvent etre le meme etat !

91 92
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Pour de nombreux probl`emes, on a en plus besoin dimposer aux automates quon Proposition 4.11 (rendre un automate d eterministe)
manipule detre deterministe. Cest `a dire qu`a partir dun etat donne letat dans Pour rendre un automate fini A = (E, , , I, F ) deterministe on commence par :
lequel on va se retrouver ensuite ne depend que de lunite lexicale suivante, et pas ajouter un etat initial unique avec des transitions vides vers les etats initiaux
dun choix fait par hasard (do`u le nom deterministe). de depart
eliminer les transitions multiples Si abSj en ajoutant un etat Sk pour les
remplacer par les transitions Sj aSk et Sk bSj
Definition 4.10 (Automate d eterministe) eliminer les transitions vides Si Sj et ajouter pour chaque transition Sj
Un automate fini A = (E, , , I, F ) est dit deterministe si il existe un unique etat aSk la transition Si aSk (des etats peuvent devenir initiaux ou finaux `a
initial et si pour tout mot du langage associe il existe un unique chemin de letat cette etape)
initial vers un etat final.

P
ensuite pour chaque S E et a on calcule lensemble T E des etats pour
lesquels il existe une transition Si aTj . Le nouvel automate deterministe acceptant
4.11 Automate non-d
eterministe : on consid`ere le langage : le meme langage que A est alors A = (E , , , I , F ) o`
u
E = {S E| il existe des transition de S vers un autre etat de E }
L = {w|w finit par ab ou ne contenient que des a } (S, a) = T Si , Tj E, (Si , a) = Tj
I = {S E|S0 I, S0 S}
il contient exactement tous les mots du langage a et du langage (a|b) ab donc il peut
etre represente par lexpression reguli`ere : ((a|b) ab)|a . Si on veut construire un
automate correspondant il suffit dassembler les deux automates de a et (a|b) ab en
ajoutant un etat inital unique et des transition vides :
P F = {S E|Sf F, Sf F }
4.12 Rendre un automate d eterministe
On commence par verifier quil ny a quun seul etat initiale puis on enl`eve les tran-
a
sitions multiples et les transitions vides :
C
ajouter un nouvel etat initial decomposer la transition B abD
a

C B ab D A

a; b
B ab D

a; b

ceci permet de trouver une grammaire lineaire `a droite pour ce langage :

A B|C B a.B|b.B|D D ab C a.C|


eliminer la transition A B eliminer la transition A C
mais il est difficile de savoir si un mot est accepte par le langage : pour un mot
commencant par a faut-il de A aller vers C ou vers B ?

 un automate deterministe ne peut pas contenir plusieurs transitions avec le


meme symbole depuis un sommet donne. De meme une transition avec le mot
vide depuis un sommet nest possible que sil ny a quune seule transition depuis
ce sommet. Enfin il ne peut pas y avoir plusieurs etats initiaux.

Quand on fabrique un automate `a partir dautomates plus simple il est pratique


dutiliser des transition par le mot vide mais alors lautomate obtenu nest en
general plus deterministe. On dispose dune methode pour rendre nimporte quel On a maintenant un etat initial A et trois etats finaux A, C et E. On applique ensuite
automate deterministe. la procedure pour calculer les nouveaux etats en utilisant un tableau. On commence

93 94
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

par placer le singleton contenant letat initial dans la file des ensembles `a traiter et 4.3 Langages alg
ebriques
on calcule les ensembles detats quon peut atteindre pour chaque transition possible.
Lexemple le plus simple de Langage de type 2, dans la hierarchie de Chomsky,

P
On ajoute les nouveaux ensembles obtenus `a la File . . .sur cet exemple on obtient :
est celui des expressions bien parenthesees.
File a b
4.13 expressions bool eennes avec parenth esage : on peut expliquer le
{A} {C; B; D} {B} parenthesage dune expression booleen en ajoutant `a la grammaire :
{C; B; D} {C; B; D} {B; E} S1 V rai S2 |F aux S2 |P S2 |Q S2 |R S2 |S1
{B} {B; D} {B} S2 S3 | S3 | = S3 | S3 |
{B; E} {B; D} {B} S3 V rai S2 |F aux S2 |P S2 |Q S2 |R S2 | S3
{B; D} {B; D} {B; E} les deux symboles [ et ] et les r`egles
Il ne reste plus qu`a representer le nouvel automate, normalement lautomate poss`ede S1 [ S1 ]; S3 [ S3 ];
un seul etat initial A et tous les etats contenant A, C ou E sont des etats finaux
soient A, CBD et BE : mais il est impossible decrire ces r`egles sous la forme dune grammaire lineaire `a
gauche (ou `a droite). Ce langage est donc de type 2.
CBD b BE
 Un langage de type 2 peut etre represente par un automate plus complexe appele
a
a automate ` a pile. Verifier quun mot appartient bien a` un langage de type 2
a sappelle faire lanalyse syntaxique.
A b
b
b
Pour montrer quun langage nest pas rationnel il ne suffit de lecrire avec des
a
a r`egles de derivation de la forme A aBb, mais montrer que ces r`egles ne peuvent
B BD pas se simplifier. Un outil tr`es utile pour sen sortir dans ce cas est le theor`eme
ci-dessous appele lemme de letoile
b
Theor`eme 4.12 (lemme de l etoile)
Soit L un langage rationnel. Il existe un entier K tel que tout mot w de L de longueur
 La methode pour rendre un automate deterministe consiste donc `a ajouter des |w| K poss`ede une factorisation w = xyz telle que
etats `a lautomate, ces etats correspondent `a des ensembles detats de lautomate 0 < |xy| K et
de depart. xy k z L pour tout entier k 0.
en dautre termes si L est regulier alors xy + z L.
Preuve : Le theor`eme na dinteret que si L contient une infinite de mots (sinon il
existe un mot de longueur maximale max{|w| | w L} et il suffit de prendre K = 0,
x = y = et z = w de telle sorte que :
xy k z = k w = w L
Pour un langage contenant une infinite de mots mais decrit par une grammaire
formelle finie. Soit n le nombre de symboles non-terminaux du langage L, alors il
existe un mot w de longueur l K = n + 1 : w = a1 . . . ai . . . al
Pour verifier que ce mot appartient au langage on a besoin dutiliser l r`egles de
derivations, on passe donc au moins 2 fois par le meme non terminal puisque l > n :
0 a i a ai+1 aj
S0 S1 Si Si+1 . . . Si . . . al
donc le mot w poss`ede un motif que lon peut repeter k fois (k quelconque) en
reutilisant la suite de derivations Si . . . aj Si
w = a1 . . . ai ai+1 . . . aj aj+1 . . . al = a1 . . . ai (ai+1 . . . aj )k aj+1 . . . al = xy k z L
| {z } | {z } | {z } | {z } | {z } | {z }
=x =y =z =x =y k =z

95 96
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

il reste `a verifier que |xy| K, cest evident puisque le non-terminal repete ne peut 5 Metanet
pas letre `a la derni`ere derivation qui donne forcement un terminal. 
Le lemme de letoile permet de montrer facilement par labsurde quun langage Pour illustrer ce cours de Theorie des graphes nous utiliserons en TP le logiciel

P
ne peut pas etre regulier. Scilab et sa bote a` outils dediee aux graphes : Metanet.

4.14 Montrer quun langage avec parenth esage nest pas r


egulier  Lediteur de graphes Metanet a subit des changements tr`es importants entre les
Soit un langage L secrivant avec pour grammaire versions 4 et 5 de Scilab . Dans ce cours Nous utiliserons la version 4.1.2 de
Scilab .
= {a; (; )}, I = {S} S (S)|aS|

qui contient des mots bien parentheses comme : Pour lutilisation de Scilab en TP reportez vous aux documents suivants disponible
sur le site [7]
(a), (a(a)), (a(a)aa((a))(aaa)), ((((a)))a((a))), . . . un tutoriel general sur Scilab [8]
un tutoriel particulier pour metanet [9]
soit K la valeur du lemme de letoile et w un mot du langage L, quitte a lui ajouter
des parenth`eses par la r`egle S (S) on peut se ramener `a ce quil commence par
K 2 parenth`eses : 5.1 L
editeur de graphes metanet
Scilab poss`ede une interface graphique specialement dediee a` la manipulation des
w= (. . . . . . ( a )......) = (. . . . . . ( a) ) . . . . . . ) graphes metanet. Nous allons voir comment lutiliser pour construire un graphe :
| {z } | {z } | {z } |{z} | {z }
K 2 parenth`
eses K 2 parenth`
eses x =y z
| {z } 1. Lancer lediteur de graphes avec la commande
longueur=K

de telle sorte que z ne contient que K 3 parenth`eses et xy est de longueur K, mais --> edit_graph()
alors on aurait que
une nouvelle fenetre souvre alors :

w = (. . . . . . ( a) . . . . . . a) ) . . . . . . ) L
| {z } | {z } | {z }
x yk z

alors que ce mot est mal parenthese puisquil contient K 2 parenth`eses ouvrantes
et K 2 + k parenth`eses fermantes ! Do`u la contradiction.

 La plupart des langages de programmation, sans etre `a proprement parler des


langages algebriques, en sont assez proches pour que les techniques danalyse des
langages algebriques sy adaptent. En langage C, le programme Yacc (acronyme de
Yet Another Compiler Compiler) permet de faire lanalyseur syntaxique (parser en
anglais) dun langage de type 2 `a partir de sa description formelle. Il existe aussi
une version GNU de yacc appelee Bison.

2. Avant de commencer on peut avoir besoin de parametrer le comportement de


cette fenetre. Dans le menu graph de cette fenetre choisir longlet settings
permet de parametrer la taille des sommets et lepaisseur des arcs qui seront
dessines. Mais surtout le dernier param`etre is graph directed permet de
definir le type de graphe quon va faire : oriente (yes) ou non-oriente (no) :

97 98
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

4. Une fois le graphe saisi vous pouvez modifier la position des sommets pour que
les arcs ne cachent pas les informations affichees en utilisant la fonction Move
Node du menu edit. Faire un clic gauche sur un sommet puis le deplacer avec
de meme longlet options permet de choisir linformation qui sera indiquee `a
la souris. Refaire un clic gauche a` la nouvelle place desiree (le sommets et les
proximite dun sommet (node en anglais) ou dun arc. Je vous conseille de choi-
arcs qui y sont attaches se deplacent en meme temps que la souris).
sir pour le champ Nodes le param`etre number pour afficher automatiquement
son numero `a cote de chaque sommet :

5. Il ne reste plus qu`a sauver le graphe,


pour cela commencer par choisir Give
default names dans le menu edit
(cliquer sur yes dans la fenetre qui ap-
parait ensuite) puis sauver le graphe
3. Ensuite on peut commencer la construction du graphe. Pour cela nous allons avec SaveAs dans le menu graph un
utiliser les fonctionnalites du menu edit. Pour creer les sommets choisir New fichier texte avec dextension *.graph
Node, `a chaque clic gauche vous creez un nouveau sommet `a lendroit du clic sera cree dans le repertoire que vous
le numero du nouveau sommet est incremente `a chaque clic (et saffiche si on choisirez.
la specifie via longlet options du menu graph). Pour creer les arcs choisir
New Arc, faire un clic gauche sur un sommet existant, pour definir lorigine,
puis un autre clic gauche sur un sommet existant, pour definir lextremite de
Ce fichier contient toute la structure du graphe et pourra etre utilise dans la
larc. Larc saffiche avec ou sans fl`eche suivant que le graphe est oriente ou
fenetre courante de Scilab pour divers calculs sur le graphe.
pas (cela a ete specifie via longlet settings du menu graph).

99 100
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

5.2 Manipulation dun graphe dans Scilab monpremiergraphe . . .). si vous ne mettez pas le point virgule toutes les informations
du fichier G.graph seront affichees a` lecran . . . et il y en a beaucoup ! Ce sont
Nous venons de sauver la structure dun graphe, cree avec metanet, dans un fi-
les proprietes du graphes, auxquelles nous aurons besoin dacceder pour effectuer
chier *.graph, inversement nous pouvons charger la structure dun graphe dans Sci-
certains traitements. Pour un graphe stocke dans la variable G, toutes les proprietes
lab `a partir de fichier *.graph. Pour cela il faut que le fichier *.graph se trouve dans
du graphes sont accessibles de 3 mani`eres :
le repertoire courant de Scilab, si ce repertoire nest pas le repertoire de demarrage
G(i) o` u i est le numero de la propriete
de Scilab (ca depend du lien utilise pour lancer Scilab ) il vous faut changer de
G.prop o` u prop est le nom de la propriete
repertoire avec la commande :
G(prop) o` u prop est le nom de la propriete
--> chdir(Z:/Graphes/)//nouveau r
epertoire courant Z:/Graphes/ en voici la liste exhaustive que lon peut aussi obtenir dans laide en ligne :

si vous netes pas tr`es `a laise avec ces operations en lignes de commandes vous pou- --> help graph-list
vez le faire via une boite de dialogue, soit `a partir du menu fichier --> changer
de repertoire, soit en lancant la commande :
n Nom type description
--> chdir(tk_getdir(pwd())) 1 graph string vecteur ligne avec les noms des pro-
prietes 2 a` 34
pwd() renvoie le repertoire courant actuel et cest tk getdir() qui va lancer louver- 2 name string le nom du graphe. Cest une chane de
ture dune boite de dialogue pour recuperer le chemin du nouveau repertoire o`u vous caract`eres (longueur < 80).
voulez travailler. Enfin chdir se charge ensuite de faire le changement de repertoire. 3 directed constant flag donnant le type du graphe. Il est
egal a` 1 (graphe oriente) ou egal a` 0
(graphe non-oriente).
4 node_number constant nombre de sommets
5 tail constant vecteur ligne des numeros des sommets
origines
6 head constant vecteur ligne des numeros des sommets
extremites
7 node_name string vecteur ligne des noms des sommets.
Les noms des sommets doivent etre
differents. Par defaut les noms des som-
mets sont egaux a` leurs numeros.
8 node_type constant vecteur ligne des types des sommets. Le
type est un entier entre 0 et 2, 0 par
defaut : 0 = sommet normal , 1= puits,
2= source
9 node_x constant vecteur ligne des coordonnees x des
sommets. Valeur par defaut calculee.
10 node_y constant vecteur ligne des coordonnees y des
sommets. Valeur par defaut calculee.
11 node_color constant vecteur ligne des couleurs des sommets,
Pour charger le graphe, contenu dans le fichier G.graph, dans lenvironnement des entiers correspondants a la table de
de travail il suffit maintenant dappeler la commande : couleur courante.
12 node_diam constant vecteur ligne des diam`etres des
--> G=load_graph(G.graph); sommets en pixels, un sommet est
dessine sous forme dun cercle.
La commande G= sert `a stocker le contenu du fichier G.graph dans la variable Scilab Par defaut, valeur de lelement
G (mais on aurait pu choisir tout autre nom de variable valide 7 comme graphe ou default_node_diam .
7. ne commencant pas par un chiffre ou un caract`ere special et de moins de 24 caract`eres

101 102
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

n Nom type description n Nom type description


13 node_border constant vecteur ligne de lepaisseur des 27 edge_weight constant vecteur ligne des poids des aretes, 0 par
bords des sommets. un sommet defaut.
est dessine sous forme dun cercle, 28 default_node_diam constant diam`etre par defaut des sommets du
par defaut, valeur de lelement graphe, 20 pixels par defaut.
default_node_border . 29 default_node_border constant epaisseur du bord des sommets, 2 pixels
14 node_font_size constant vecteur ligne de la taille de la police par defaut.
utilisee pour afficher le nom du som- 30 default_edge_width constant epaisseur par defaut des aretes du
met. Les tailles possibles sont : 8, 10, graphe,1 pixel par defaut.
12, 14, 18 ou 24. Par defaut, valeur de 31 default_edge_hi_width constant taille par defaut des aretes mises
lelement default_font_size . en evidence (en pixels), 3 pixels par
15 node_demand constant vecteur ligne des demandes des som- defaut.
mets, 0 par defaut ; 32 default_font_size constant taille par defaut de la police utilisee
16 edge_name string vecteur ligne des noms daretes. Il est pour afficher le nom des sommets et
souhaitable que les noms des aretes aretes. 12 par defaut
soient differents, mais cest nest pas 33 node_label string vecteur ligne des noms des sommets
obligatoire. Par defaut les noms des 34 edge_label string vecteur ligne des noms des aretes
aretes sont leur numeros.
17 edge_color constant vecteur ligne des couleurs des aretes.
des entiers correspondants a la table de Les proprietes du graphe sont donc des matrices de reels (constant) ou de chanes
couleur courante. de caract`eres (string), a` defaut de toutes les retenir on pourra se souvenir quelles
18 edge_width constant vecteur ligne des epaisseurs des aretes se regroupent en 6 grandes categories :
en pixels, par defaut, valeur de
la propriete 1 contient le nom des proprietes 2 a` 34,
lelement default_edge_width .
les proprietes 2 a` 6 comportent les informations minimales pour creer un graphe
19 edge_hi_width constant vecteur ligne des epaisseurs des
(nom,type,nombre de sommets, et les arcs sous forme de deux vecteurs a` 1 ligne
aretes mises en evidence (en pixels),
et m colonnes contenant les extremites de chaque arc),
par defaut, valeur de lelement
les proprietes 7 a` 15 sont des vecteurs a` 1 ligne et n colonnes decrivant les
default_edge_hi_width .
caracteristique de chaque sommet et denommes node_*
20 edge_font_size constant vecteur ligne de la taille de la police uti-
les proprietes 16 a` 27 sont des vecteurs a` 1 ligne et m colonnes decrivant les
lisee pour afficher le nom des aretes. Les
caracteristique de chaque arc et denommes edge_*
tailles possibles sont :8, 10, 12, 14, 18
les proprietes 28 a` 32 denommees default_* sont des reels donnant certaines
ou 24. Par defaut, valeur de lelement
valeurs par defaut du graphe, ces valeurs qui peuvent se substituer aux valeurs
default_font_size .
indiquees par certaines proprietes node_* ou edge_* le cas echeant.
21 edge_length constant vecteur ligne des longueurs des aretes, les proprietes 33 et 34, denommees *_label, peuvent contenir, temporaire-
0 par defaut.
ment, une liste de chanes de caract`eres associees aux sommets et aux arcs.
22 edge_cost constant vecteur ligne des co uts des aretes, 0 par Cela peut etre pratique pour afficher certaines valeurs dans la fenetre gra-
defaut. phique de metanet (par exemple afficher 2 proprietes sur chaque arc) mais ces
23 edge_min_cap constant vecteur ligne des capacites minimum valeurs ne peuvent pas etre sauvees dans le fichier *.graph !
des aretes, 0 par defaut.
Beaucoup de ces informations sont necessaires pour laffichage du graphe dans
24 edge_max_cap constant vecteur ligne des capacites maximum
metanet avec la commande :
des aretes, 0 par defaut.
25 edge_q_weight constant vecteur ligne des poids quadratiques
des aretes, 0 par defaut.
26 edge_q_orig constant vecteur ligne des origines quadratiques -->show_graph(G)
des aretes, 0 par defaut.

une nouvelle fenetre de lediteur de graphes souvre avec le graphe G dedans :

103 104
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

0. 1.
ans(2)
0.

La fonction netclose() permet en plus de fermer une fenetre graphique :

-->netclose(1)//ferme la fen^
etre 1
-->netwindows()//nouvelle liste des fen^
etres graphiques
ans =
ans(1)
0.
ans(2)
0.

Les modifications des proprietes graphiques de G modifierons cet affichage. Pour


les couleurs on peut utiliser la table des couleurs par defaut de Scilab (utiliser
getcolor()) :

numero 1 2 3 4 5 6 7 8 ...
couleur noir bleu vert cyan rouge magenta rouge blanc ...

Dans lexemple suivant, on modifie la couleur des sommets (de couleur 1 =noir par
defaut) pour quen fonction du numero du sommet la couleur devienne bleu, vert,
Attention, si lediteur de graphe na pas encore ete ouvert (ou a ete ferme) il faut
cyan ou rouge :
le reparametrer pour afficher les informations relatives aux sommets et arcs. Pour
imprimer un graphe (vers un fichier PS, BMP, GIF, ou vers une imprimante) utiliser -->G=load_graph(G.graph);//chargement du graphe
longlet export du menu graph. Laffichage des graphes ainsi obtenus est sommaire
-->show_graph(G)//affichage du graphe
mais tout `a fait lisible (cf. FIG.7). Si on veut utiliser plusieurs fenetres graphiques
ans =
differentes on pourra soit relancer la commande edit_graph() soit show_graph()
avec loption new. Il faudra alors faire attention `a bien identifier la fenetre gra- 0.
phique active lors des appels `a show_graph. Pour cela on pourra utilier la fonction -->n=G.node_number//nombre de sommets
netwindows() qui donne la liste des fenetres graphiques : n =
9.
-->show_graph(G,new)//affichage dans une nouvelle fen^
etre -->G.node_color// les couleurs des n sommets
ans = ans =
1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
-->netwindows()//liste des fen^
etres graphiques -->G.node_color=2+pmodulo([1:n],4);//on modifie les couleurs
ans =
ans(1) -->G.node_color// nouvelles couleurs des sommets
ans =
0. 1.
ans(2) 3. 4. 5. 2. 3. 4. 5. 2. 3.
1.
de meme on peut modifier la couleur des arcs en rouge(= 5) :
et la fonction netwindow() qui permet de choisir la fenetre graphique active :
-->G.edge_color//les couleurs des arcs
-->netwindow(0)// choisir la fen^
etre graphique active ans =
-->netwindows()//nouvelle liste des fen^
etres graphiques 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
ans = -->G.edge_color=5*ones(G.edge_color);//couleurs des arcs a
` 5
ans(1) -->G.edge_color//nouvelles couleurs des arcs

105 106
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

ans =
function G=gen gr ap h ( n , varargin )
5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5. //n=nombre de sommets
-->G.default_node_border=5;//grossir la taille des sommets // v a r a r g i n=param`e tre o p t i o n n e l ( d i r e c t ) 0 ou 1
-->show_graph(G); //G= g raphe p l a n a i r e ` a n sommets
// r e c u p e r a t i o n de l a v a r i a b l e d i r e c t
// d i r e c t =1 s i G e s t o r i e n t e ( par d e f a u t ) e t 0 s i n o n
i f length ( varargin)>0 then d i r e c t=varargin ( 1 )
e l s e d i r e c t =1 // o r i e n t e par d e f a u t
end
// i n i t i a l i s a t i o n s
dt=getdate ( ) // r e c u p e r a t i o n de l a d a t e
// d t s e r t ` a f a b r i q u e r une n o u v e l l e g r a i n e pour random
s e e d =(sum( dt ( [ 3 5 ] ) ) 1 ) prod(1+ dt ( [ 2 6 7 8 9 ] ) )
v=[ s eed , n , 1 , 1 , 0 , 2 0 , 5 0 , 5 0 , 0 , 2 0 , 1 0 0 , 1 0 0 ] ;
// param`e tre s pour g e n n e t
2 8 5
G=gen net ( G , d i r e c t , v ) // g e ne r a t i o n du g raphe
2 8 5
G(24)= null ( ) // bug dans g e n n e t
// m o d i f i c a t i o n de c e r t a i n e s p r o p r i e t e s
7
7
m=length (G. t a i l ) // nombre d arc
G. n o d e t y p e=zeros ( 1 , n ) // e l i m i n a t i o n d e s p u i t s e t s o u r c e s
G. n o d e c o l o r=ones ( 1 , n ) // c o u l e u r n o i r pour t o u s l e s sommets
G. e d g e c o l o r=ones ( 1 ,m) // c o u l e u r n o i r pour t o u s l e s a r c s
// v a l e u r s par d e f a u t pour l a f f i c h a g e du g raphe
4

3 1 6 9 4 3 1 6
9
G. d e f a u l t n o d e d i a m =10
G. d e f a u l t n o d e b o r d e r=5
G. d e f a u l t e d g e w i d t h =1
Figure 7 modifications des proprietes graphiques du graphe G G. d e f a u l t e d g e h i w i d t h =3
G. d e f a u l t f o n t s i z e =14
endfunction

Outre les fonctions load_graph(G.graph); et show_graph on retiendra la


syntaxe dutilisation des fonctions suivantes utiles pour le chargement et la sauve-
garde des graphes : 5.3 Principales fonctions pour les graphes
save_graph(G,G.graph) sauvegarde du graphe G dans le fichier G.graph
Nous allons maintenant examiner les differentes actions de base quon peut faire
(dans le repertoire courant)
sur un graphe avec Scilab . Ces actions de base peuvent etre faites directement sur
G = make_graph(G,oriente,n,tail,head) creation dun graphe (sans
les proprietes de la variable G, mais pour simplifier leur utilisation elles sont aussi
informations graphiques)
codees sous forme de fonctions. Reprenons le dernier graphe de la partie precedente :
check_graph(G) verifie que la structure du graphe est correcte,
G = gen_net() generation dun graphe planaire aleatoire (avec informations
graphiques) linteret de cette fonction est quelle determine la position des
sommets de telle sorte que les arcs ne se croisent pas. Cest un avantage pour
generer facilement des exemples de graphes lisibles (malgre un bug mineur -->G=load_graph(G.graph);//chargement du graphe
dans cette fonction) -->show_graph(G);//affichage du graphe

Pour bien comprendre la manipulation des differentes proprietes dun graphe on


pourra examiner la fonction suivante qui cree aleatoirement un graphe planaire en
fonction du nombre de sommets :

107 108
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

-->arcs=[G.head;G.tail]//liste des arcs


arcs =
2 8 5 2. 3. 6. 7. 3. 8. 6. 7. 9. 4. 5. 6.
1. 1. 1. 2. 2. 2. 7. 6. 4. 5. 9. 8.
-->predecessors(2,G)//pr
edecesseurs de 2
7 ans =
1.
-->successors(2,G)//successeurs de 2
ans =
7. 3. 8.
-->neighbors(2,G)//voisins de 2
ans =
1. 3. 7. 8.
9 4
3 1 6

On peut recuperer le nombre de sommets soit directement dans le graphe (avec  On evitera dutiliser les fonctions predecessors et successors pour un graphe
la propriete G.node_number soit avec la fonction node_number(G) non-oriente (ou ces notions ne sont pas definies), mais on utilisera plutot dans
ce cas la fonction neighbors. Par contre pour un graphe oriente neighbors renvoie
bien la liste des predecesseurs et des successeurs.
-->G.node_number//lecture du nombre de sommets dans le graphe
ans =
9.
-->node_number(G)//fonction
equivalente On peut aussi modifier la structure du graphe en enlevant/ajoutant des arcs ou
ans = des sommets avec les fonctions delete_nodes, delete_arcs, add_node et add_edge :
9.
-->G=delete_arcs([2,8],G);//d
etruire un arc
De meme on peut recuperer le nombre darcs directement dans le graphe en calculant
-->G=add_edge(8,5,G);//ajouter un arc
la longueur des listes G.tail et G.head ou en utilisant une fonction edge_number(G)
ou arc_number(G) (suivant que le graphe est oriente ou pas) : -->n=node_number(G);//nombre de sommets
-->G=add_node(G,[500,300]);//ajouter un sommet
-->length(G.tail)//=calcul du nombre dar^
etes ou darcs -->G=add_edge(n+1,n+1,G);//ajouter une boucle
ans = -->show_graph(G)
12.
-->arc_number(G)//=nombre darcs dun graphe orient
e
ans =
12.
-->edge_number(G)//=nombre dar^
etes pour un graphe non-orient
e 2 8 5
ans = 10
12.
7

 pour un graphe non-oriente arc_number(G) renvoie 2 fois le nombre daretes !

4
Ensuite il existe plusieurs fonctions pour rechercher les predecesseurs, successeurs 3 1 6 9

ou les voisins dun sommet :

109 110
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

 La commande G1=delete_nodes(x,G) creee un nouveau graphe G1 correspon- solution : lidee est de parcourir la liste des arcs (s, t) et quand lun des sommets
dant au graphe G duquel on a enleve le sommet x (et tous les arcs qui lui sont ad- est egal a` x lautre est un predecesseurs ou un successeur de x. Ensuite il y a de
jacents). Mais attention, dans G1 la numerotation des sommets a change, les numeros nombreuses mani`eres de mettre en uvre cette strategie soit en utilisant des boucles
de sommets plus grand que x ont subi un decalage `a gauche (i.e. ces numeros (for ou while) soit en utilisant la fonction de recherche find.
ont diminue de 1). Par contre le nom de ces sommets (propriete node_name) na
pas change ! function L=p r e d e c e s s e u r s ( x ,G)
// s o l u t i o n c l a s s i q u e av e c une b o u c l e
t a i l =G. t a i l , head=G. head // l i s t e d e s a r c s
On a enfin des fonctions qui permettent de mettre en evidence (en gras) des m=length ( t a i l ) // nombre d a r c s
sommets ou des arcs : L = [ ] // l i s t e d e s p r e d e c e s s e u r s
i =0
-->G=load_graph(G.graph);//chargement du graphe while i <m// p a r c o u r s de l a l i s t e d e s a r c s
i=i +1
-->show_graph(G);//affichage du graphe i f head ( i )==x then L=[L , t a i l ( i ) ]
end
-->show_arcs([1,2])//met en gras les arcs 1 et 2 end
-->show_nodes([1,2],sup) //met en gras les sommets 1 et 2 endfunction

function L=s u c c e s s e u r s ( x ,G)


// s o l u t i o n en u t i l i s a n t f i n d
t a i l =G. t a i l , head=G. head // l i s t e d e s a r c s
p o s i t i o n=find ( t a i l==x ) // f i n d t r o u v e l e s i o`
u t a i l ( i )==x
L=head ( p o s i t i o n ) // l i s t e d e s s u c c e s s e u r s
endfunction

function L=v o i s i n s ( x ,G)


// s o l u t i o n mi xte
t a i l =G. t a i l , head=G. head // l i s t e d e s a r c s
m=length ( t a i l ) // nombre d a r c s
L = [ ] // l i s t e d e s v o i s i n s
for i =1:m// p a r c o u r s de l a l i s t e d e s a r c s
Attention pour show_arcs il faut connatre les numeros des arcs ! on peut verifier // l e s p r e d e c e s s e u r s
que les arcs numerotes 1 et 2 sont bien les arcs (1, 2) et (1, 3) : i f head ( i )==x then v= t a i l ( i )
// on a j o u t e v `
a L s il n y e s t pas de j `
a
i f find (L==v )==[] then L=[L , v ]
-->arcs=[G.head;G.tail]//liste des arcs end
arcs =
end
2. 3. 6. 7. 3. 8. 6. 7. 9. 4. 5. 6.
// l e s s u c c e s s e u r s
1. 1. 1. 2. 2. 2. 7. 6. 4. 5. 9. 8.
i f t a i l ( i )==x then v=head ( i )
// on a j o u t e v `
a L s il n y e s t pas de j `
a
Pour finir quelques petits exercices pour comprendre comment fonctionnent les i f find (L==v )==[] then L=[L , v ]

P
fonctions de base sur les graphes. end
end
5.1 Manipulation de G.tail et G.head Soit G un graphe simple oriente. end

Ecrire les fonctions scilab suivantes, sans utiliser les fonctions predecessors, successors, endfunction
neighbors, mais en accedant directement aux proprietes du graphe G :
L=predecesseurs(x,G) liste des predecesseurs de x dans G 5.2 Num erotation des arcs dun graphe scilab Soit G un graphe simple,
L=successeurs(x,G) liste des successeurs de x dans G oriente ou non, et ecrire une fonctions scilab k=arc_2_num(x,y,G) qui calcule la
L=voisins(x,G) liste des voisins de x dans G liste des numeros k(i) de chacun des arcs (x(i), y(i)) si ils existent, ou k = [] sinon.

111 112
DUT Informatique Theorie des graphes Math
ematiques

solution : la difficulte ici est double : il faut traiter plusieurs arcs dans la meme
fonction et traiter `a la fois les graphes orientes et non-orientes.

function k=arc 2 num ( x , y ,G)


a r c s =[G. t a i l ;G. head ] // l i s t e d e s a r c s
k = [ ] // i n i t i a l i s a t i o n de k
n=length ( x ) // nombre d arc ( x , y ) ` a traiter
Bibliographie
i =0
while i <n// p a r c o u r s d e s l i s t e s x e t y
i=i +1 [1] Bertrand Hauchecorne, Daniel Surrateau Des mathematiciens de A `a Z
X=x ( i ) ,Y=y ( i )
// i n d=p o s i t i o n de ( x ( i ) , y ( i ) ) dans l a l i s t e d e s a r c s [2] http://fr.wikipedia.org/wiki/Th
eorie des graphes
in d=v e c t o r f i n d ( a r c s , [ X;Y] , c ) [3] http://fr.wikipedia.org/wiki/Th
eorie des langages
k=[k in d ] // on l a j o u t e ` a l a f i n de k [4] http://math.dartmouth.edu/~ euler/docs/originals/S053.pdf
// pour l e s g r a p h e s nono r i e n t e s
// on c h e r c h e a u s s i l arc ( y ( i ) , x ( i ) ) [5] http://www.planarity.net/
i f G. d i r e c t e d ==0 then in d=v e c t o r f i n d ( a r c s , [ Y;X] , c ) [6] http://www.posteet.com/view/221
k=[k in d ]
[7] http://perso.univ-rennes1.fr/philippe.roux/
end
end [8] tutoriel pour scilab :http://perso.univ-rennes1.fr/philippe.roux/
endfunction scilab/intro/fiche_scilab.pdf ou http://perso.univ-rennes1.fr/
philippe.roux/scilab/intro/fiche_scilab.html
[9] tutoriel pour metanet :http://perso.univ-rennes1.fr/philippe.roux/
scilab/metanet/fiche_metanet.pdf ou http://perso.univ-rennes1.fr/
philippe.roux/scilab/metanet/fiche_metanet.html
[10] http://creativecommons.org/licenses/by-nc-sa/3.0/deed.fr

113 114
P
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques

Liste des exercices 2.16 Classement des arcs du graphe G dapr`es le parcours en profondeur, par
ordre decroissant des sommets, depuis le sommet 8 : . . . . . . . . . . . . 53
1.1 Emploi du temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.17 Exemple de detection de circuit du graphe G dapr`es le parcours en
1.2 Exprimer ces differents ensembles pour la relation de la FIG.3 . . . . . . 8 profondeur, par ordre decroissant des sommets, depuis le sommet 8 : . . 54
1.3 Cas des fonctions et applications . . . . . . . . . . . . . . . . . . . . . . 9 3.1 Appliquer lalgorithme de Floyd-Warshall-Roy pour trouver les plus
1.4 Reconnatre `a partir des diagramme sagittaux les definitions precedentes : 10 courts chemins du graphe : . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.5 Representation dune relation `a laide dune Matrice dadjacence . . . . 11 3.2 Appliquer lalgorithme de Bellman-Ford-Kalaba : . . . . . . . . . . . . . 58
1.6 composition de deux relations T = R2 R1 . . . . . . . . . . . . . . . . 13 3.3 Appliquer lalgorithme de Dijkstra-Moore sur le graphe GD . . . . . . . 60
1.7 Verifier que la matrice MR1 MR2 est bien la matrice dadjacence de 3.4 contre-exemple pour lalgorithme de Dijkstra pour des valuations negatives 60
MT FIG.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.5 Appliquer lalgorithme de Bellman simplifie . . . . . . . . . . . . . . . . 62
1.8 Calculer la reciproque de la relation R . . . . . . . . . . . . . . . . . . . 14 3.6 un exemple de projet et de contraintes : . . . . . . . . . . . . . . . . . . 63
1.9 Calculer la matrice dadjacence de la reciproque de la relation R1 . . . . 15 3.7 Traduire les contraintes du projet en inequations : . . . . . . . . . . . . 64
1.10 Construire le graphe G = (S, A) suivant . . . . . . . . . . . . . . . . . . 16 3.8 Representer le projet par un graphe : . . . . . . . . . . . . . . . . . . . 65
1.11 Verifier le lemme des poignees de mains sur le graphe G de taille 9 . . . 17 3.9 Calculer lordonnancement au plus tot : . . . . . . . . . . . . . . . . . . 65
1.12 Modifier le graphe G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.10 Calculer lordonnancement au plus tard pour T = 22 jours : . . . . . . . 66
1.13 Modifier le graphe G pour quil soit transitif . . . . . . . . . . . . . . . . 19 3.11 Representer le chemin critique et calculer les marges pour T = 22 : . . . 67
1.14 Exemples de relations dequivalences . . . . . . . . . . . . . . . . . . . . 19 3.12 Ajout dune contrainte redondante au projet : . . . . . . . . . . . . . . . 68
1.15 exemples de relations dordre . . . . . . . . . . . . . . . . . . . . . . . . 21 3.13 Representer un reseau de transport et un flot sur un diagramme sagittal : 70
1.16 Representer le graphe G par des listes dadjacence . . . . . . . . . . . . 22 3.14 Exemples concrets de reseaux de transport et de flot : . . . . . . . . . . 70
1.17 Representer la matrice dadjacence et lensemble des aretes du graphe 3.15 Calcul du flot et coupe minimale : . . . . . . . . . . . . . . . . . . . . . 73
non-oriente G suivant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.16 Chane augmentante (1; 4; 2) avec = 10 = min(10, 12) : . . . . . . . . 74
1.18 Exemples de graphes simples . . . . . . . . . . . . . . . . . . . . . . . . 25 3.17 Construction du flot maximum avec lalgorithme de Ford-Fulkerson : . . 77
1.19 Exemple de graphes values . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.18 reperage des coupes minimales sur le flot maximum . . . . . . . . . . . . 78
1.20 Dessiner les graphes complets . . . . . . . . . . . . . . . . . . . . . . . 27 4.1 Exemples de langages simples . . . . . . . . . . . . . . . . . . . . . . . . 80
1.21 graphe partiel de G induit par A = A \ {(2, 2); (3, 2); (4, 3)} . . . . . . . 27 4.2 Definir des langages sur lalphabet = {1; 2; 3} . . . . . . . . . . . . . . 81
1.22 sous-graphe de G induit par S = {1; 2; 4} . . . . . . . . . . . . . . . . . 28 4.3 Exemple de grammaires formelles . . . . . . . . . . . . . . . . . . . . . . 82
1.23 Trouver le plus grand stable et la plus grande clique dun graphe . . . . 28 4.4 Exemples de grammaires de types 3 ecrite sous la forme dune grammaire
1.24 Un probl`eme de coloriage . . . . . . . . . . . . . . . . . . . . . . . . . . 30 de type 2 : les expressions logiques . . . . . . . . . . . . . . . . . . . . . 84
1.25 Rendre le graphe suivant planaire . . . . . . . . . . . . . . . . . . . . . 31 4.5 Exemple dexpressions reguli`eres . . . . . . . . . . . . . . . . . . . . . . 85
2.1 Dire si les chemins du graphe suivant sont simple, elementaire, cir- 4.6 Premiers automates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
cuit(cycle)et donner leur longueur . . . . . . . . . . . . . . . . . . . . . 35 4.7 Construire lautomate dun langage. . . . . . . . . . . . . . . . . . . . . 89
2.2 Calculer les distances de d(1, 8) et d(8, 1) et le diam`etre du graphe . . . 35 4.8 Analyse lexicale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.3 Probl`eme des sept ponts de Konigsberg . . . . . . . . . . . . . . . . . . 36 4.9 Trouver lexpression reguli`ere du langage des expressions booleennes . . 90
2.4 (contre-)exemples de graphes (semi-)Eulerien . . . . . . . . . . . . . . . 39 4.10 calculer une expression reguli`ere du langage . . . . . . . . . . . . . . . 92
2.5 trouver les composantes (fortement) connexes des graphes suivants . . . 40 4.11 Automate non-deterministe : . . . . . . . . . . . . . . . . . . . . . . . . 93
2.6 Calculer la fermeture transitive du graphe . . . . . . . . . . . . . . . . . 40 4.12 Rendre un automate deterministe . . . . . . . . . . . . . . . . . . . . . 94
2.7 Calcul de la fermeture transitive via la matrice dadjacence : . . . . . . . 41 4.13 expressions booleennes avec parenthesage : . . . . . . . . . . . . . . . . . 96
2.8 Decomposition en niveau dun graphe sans circuit : . . . . . . . . . . . . 43 4.14 Montrer quun langage avec parenthesage nest pas regulier . . . . . . . 97
2.9 Representer larbre ci-dessous par une liste de predecesseurs . . . . . . . 44 5.1 Manipulation de G.tail et G.head . . . . . . . . . . . . . . . . . . . . . 111
2.10 Arbre couvrant de poids maximal avec lalgorithme de Kruskal . . . . . 46 5.2 Numerotation des arcs dun graphe scilab . . . . . . . . . . . . . . . . . 112
2.11 Arbre couvrant de poids minimal avec lalgorithme de Prim . . . . . . . 46
2.12 Parcours du graphe G en largeur, par ordre croissant des sommets, depuis
le sommet 8 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.13 Calcul des distances du sommet 8 dans G . . . . . . . . . . . . . . . . . 50
2.14 Parcours du graphe G en profondeur, par ordre decroissant des sommets,
depuis le sommet 8 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.15 numerotation des sommets dans le parcours en profondeur : . . . . . . . 52

115 116
DUT Informatique Theorie des graphes Math
ematiques

Index sature, 69, 78


sortant, 69
prefixe, 52
suffixe, 52
fonctions, 9
foret, 45 ordonnancement
algorithme augmentante, 74 au plus tard, 66
Bellman simplifie, 61 chemin, 34 grammaire, 82 au plus tot, 65
Bellman-Ford-Kalaba, 58 critique, 67 graphe ordre, 16
chemin dans un arbre, 45 (semi-)Eulerien, 36 complet, 27 ordre de parcours, 47
coloriage (semi-)Hamiltonien, 36 (semi-)Eulerien, 36
(semi-)Hamiltonien, 36 parcours, 47
glouton, 29 le plus long, 62
multiple, 16 en largeur, 48
Welsh-Powell, 29 optimal, 55
non-oriente, 24 en profondeur, 50
connexite, 40 circuit, 34, 42, 54
oriente, 16 poids, 26
decomposition en niveaux, 42 classifications des arcs, 53
partiel, 27 produit matriciel, 13
Dijkstra-Moore, 59 clique, 28, 30
planaire, 31 projet, 63
expression reguli`ere, 91 coloriage, 29
potentiel-tache, 64 protocole
Floyd-Warshall-Roy, 56 composante
reciproque, 66 OSPF, 61
Ford-Fulkerson, 76 connexe, 39
simple, 25 RIP, 79
Kruskal, 45 fortement connexe, 39
sous-graphe, 27 puissance, 81
parcours composition, 13
en largeur, 48 concatenation, 80 -equivalent , 42
relation
en profondeur, 50 connexite, 39 -minimal, 42
binaire, 7, 8
recursif, 51, 52 conrainte value, 26
dequivalence, 19
planarite, 33 au plus tard, 64 grep, 86
dordre, 21
Prim, 45, 46 au plus tot, 64 hierarchie de Chomsky, 83 reciproque, 14
alphabet, 80 contrainte reseau
analyse lexicale, 90 implicite, 64 injective, 9 PERT, 64
applications, 9 redondante, 64, 68 de transport, 69
Konigsberg, 36
arbre, 44 coupe, 71
couvrant, 45 minimale, 78 langage, 80 sommet, 16
couvrant optimal, 45 cout, 26 regulier, 85 sous-graphe, 27
arc, 16 cycle, 34 lemme stable, 28, 30
adjacent, 16 de letoile, 96 surjective, 9
couvrant, 53 degre, 16, 25 de la coupe, 72
entrant, 8 taille, 16
direct, 53 de Koning, 34
sortant, 8 Theor`eme
entrant, 69 des poignees de mains, 17, 25
diagramme dEuler, 37
retrograde, 53 Lex, 90
de Hasse, 21, 43 des quatres couleurs, 5, 32
sortant, 69 lex`eme, 80
sagittal, 7 flot-max/coupe-min, 74
traversier, 53 listes dadjacence, 22
diam`etre, 35 de Kleene, 89
automate loi des nuds, 69
distance, 35, 49, 55 Kuratowski, 32
deterministe, 93, 94 longueur, 26, 34, 55
fini, 86 Yacc, 96
expression reguli`ere, 85 matrice
bijective, 9 creuse, 12
boucle, 16 fermeture de Kleene, 81 dadjacence, 11
fermeture transitive, 40 des valuations, 26
capacite, 26 flot, 69 mot, 80
dune coupe, 71 entrant, 69
chane, 34 nul, 69, 78 numerotation, 47

117 118

Vous aimerez peut-être aussi