Cours2 1
Cours2 1
Cours2 1
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
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 !).
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
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
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
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 :
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
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.
P
une matrice carree MG Mn (B) (o`u n = Card(S)).
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
17 18
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques
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 :
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
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.
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
6 ..
..
..
-
8
:::
..
On dit quune relation R est une relation dordre total sur S si en plus : coup plus complique que les deux rela- ..
..
..
~* ..
..
zR
..
~ 40
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.
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.
23 24
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques
P
cas de graphe simple. arc ou arete.
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.
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
27 28
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques
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 !
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.
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
C = (x, x1 , . . . , s, . . . , s , . . . , xn1 , y)
| {z }
`
a supprimer
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
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 !
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
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
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
39 40
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques
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.
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
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.
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
P
conclusion d(x, z) = k + 1
9 7 3
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 :
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
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
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)
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
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
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 :
65 66
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques
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 :
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
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
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 :
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
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
1 = 8, 0 10, 8 14, 10
3 7 = 2
30, 28 10, 10 11, 6 12, 12
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
1 = 8, 0 10, 8 14, 10
3 7 = 2
30, 30 10, 10 11, 8 12, 12
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
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.
{V rai; F aux; ; ; ; =; ; [; ]; P ; Q; R}
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 !
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 [ ; ] |
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
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 :
, 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 , ???)
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 :
89 90
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques
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.
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
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.
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.
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 :
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
103 104
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques
0. 1.
ans(2)
0.
-->netclose(1)//ferme la fen^
etre 1
-->netwindows()//nouvelle liste des fen^
etres graphiques
ans =
ans(1)
0.
ans(2)
0.
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
107 108
DUT Informatique Theorie des graphes Math
ematiques DUT Informatique Theorie des graphes Math
ematiques
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
4
Ensuite il existe plusieurs fonctions pour rechercher les predecesseurs, successeurs 3 1 6 9
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
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.
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
117 118