Cours TG LSTI

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 68

Université Moulay Ismail Meknès

Faculté des Sciences et Techniques Errachidia


Département : Informatique
Filière : LST - Informatique
Module (I514) : Théorie des graphes et réseaux de Pétri

Polycopié de cours :
Graphes et réseaux de Pétri

Pr. Youssef QARAAI


Email : y.qaraai@fste.umi.ac.ma

A.U. 2020-2021
Sommaire

1 Généralités sur les graphes 4


1.1 Notions de graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Modes de représentation d'un graphe . . . . . . . . . . . . . . . . . . . . . 8
1.3 Quelques classes importantes de graphes . . . . . . . . . . . . . . . . . . . 11
1.4 Chemin, connexité et arbre . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 Parcours et coloration de graphes 18
2.1 Parcours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2 Parcours en largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.3 Parcours en profondeur . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Tri topologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3 Coloration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.1 Position du problème . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.2 Résolution algorithmique . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.3 Encadrement du nombre chromatique . . . . . . . . . . . . . . . . . 28
2.3.4 Exemples et remarques . . . . . . . . . . . . . . . . . . . . . . . . . 29
3 Optimisation dans les graphes 33
3.1 Arbres couvrants à poids minimum . . . . . . . . . . . . . . . . . . . . . . 33
3.1.1 Algorithme de Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.2 Algorithme de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Problème de plus court chemin . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1 Position du problème et principe des algorithmes . . . . . . . . . . 37
3.2.2 Algorithme de Bellman-Ford . . . . . . . . . . . . . . . . . . . . . . 39
1
SOMMAIRE 2
3.2.3 Algorithme de Bellman . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2.4 Algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 Problème de Flots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.1 Position du problème . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.2 Algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . 49
4 Réseaux de Pétri 52
4.1 Dénitions et formalismes . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2 Dynamique d'un RdP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3 Propriétés des RdP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Introduction

La théorie des graphes a connue un essor croissant avec le développement des réseaux dont
il faut optimiser l'utilisation. On peut citer quelques exemples de manière non exhaustive :
 réseaux de transports routier : les sommets représentent les carrefours et les arêtes les
rues;
 réseaux informatiques : les sommets représentent les ordinateurs et les arêtes les connexions
physiques;
 réseaux sociaux : les sommets représentent les membres du groupe, deux personnes sont
reliées par une arête si elles se connaissent;
 graphe du web : les sommets représentent les pages web et chaque arc correspond a un
hyperlien d'une page vers une autre;
 réseau de transports de données (téléphonie, wi, réseaux informatique,...);
 représentation d'un algorithme, du déroulement d'un jeu;
 réseaux de régulation génétique;
 organisation logistique : les sommets représentent des évènements, deux évènements
sont reliées par une arête s'ils ne peuvent pas avoir lieu en même temps;
 ordonnancement de projet : les sommets représentent les diérentes tâches composant
un projet, deux tâches sont reliées par une èche si la deuxième ne peut pas commencer
avant que la première soit terminée;
L'étude des graphes se réalise sous deux points de vues complémentaires. L'étude de pro-
priétés structurelles de graphes ou de familles de graphes et l'étude algorithmique de
certaines propriétés.
Ainsi, l'objectif de ce cours, destiné aux étudiants de la licence LST informatique, est
de leur fournir un ensemble de méthodes et algorithmes utiles à la modélisation et la
résolution de plusieurs préoccupations concrètes. Il est composé de quatre chapitres : le
3
SOMMAIRE 4
premier présente des généralités sur la notion de graphe en théorie des graphes. Le second
chapitre sera destiné à l'introduction et la caractérisation du concept de chemin dans un
graphe, tandis que le dernier chapitre sera réservé à l'optimisation dans un graphes. Cela
concerne essentiellement, le problème de coloration, celui de la détermination d'un arbre
de recouvrement à poids optimal, la recherche des chemins optimaux, etc. Un quatrième
chapitre sera consacré à une initiation aux réseaux de Pétri permettant d'orir un forma-
lisme de modélisation de systèmes dynamiques au travers l'étude de leurs évolutions ainsi
que plusieurs propriétés qui les caractérisent.

Youssef Qaraai E-MMIS, FSTE, UMI


Chapitre 1

Généralités sur les graphes

1.1 Notions de graphe


Graphe orienté et/ou non orienté :
Dans les exemples cités en introduction ci-dessus, un graphe est un ensemble ni de som-
mets reliés par des arêtes. Ces arêtes peuvent être orientées ou non, de plus une valeur
peut être associée à chaque arête ou aux sommets.
Dénition 1.1.1. Un graphe orienté G = (S, A) est la donnée :
 d'un ensemble S dont les éléments sont des sommets;
 d'un ensemble A ⊂ S × S dont les éléments sont les arcs.
Un arc a = (s, s ) est aussi noté s → s , s est l'origine de a et s l'extrémité. On
0 0 0

dit aussi que s est le successeur de s et s le prédécesseur de s .


0 0

Il se peut qu'il y ait plusieurs arcs entre deux mêmes sommets. On parle alors de graphe
orienté multi-arcs. Formellement, G = (S, A, p, q) c'est la donnée :
 d'un ensemble S dont les éléments sont des sommets;
 d'un ensemble A ⊂ S × S dont les éléments sont les arcs;
 de deux fonctions p : A → S et q : A → S qui à chaque arc a ∈ A associe son
prédécesseur p(a) et son successeur q(a).
Exemple 1.1.1. graphe orienté et graphe orienté multi-arcs

5
1.1. NOTIONS DE GRAPHE 6

G = (S, A) où :
S = {1, 2, 3, 4} et A = {(1, 2), (2, 1), (2, 4), (3, 4), (3, 3)}.

G = (S, A, p, q) où :
S = {1, 2, 3, 4} et A = {a, b, c, d, e, f, g}

p(a) = 1, p(b) = 2, p(c) = 2, p(d) = 2, p(e) = 3, p(f ) = 3, p(g) = 3

q(a) = 2, q(b) = 1, q(c) = 4, q(d) = 4, q(e) = 4, q(f ) = 3, q(g) = 3

Dénition 1.1.2. Un graphe non orienté G = (S, A) est la donnée :


 d'un ensemble S dont les éléments sont des sommets;
 d'un ensemble A ⊂ S × S dont les éléments sont les arêtes du graphe.
Le ou les sommets d'une arête sont appelés extrémités de l'arête. Les arêtes n'ayant qu'une
seule extrémité sont des boucles.
On peut de la même façon dénir un graphe non orienté multi-arêtes. Formellement,
G = (S, A, α) est la donnée :
 d'un ensemble S dont les éléments sont des sommets;
 d'un ensemble A dont les éléments sont les arêtes;
 d'une fonction α de A dans les parties à un ou deux éléments de S
Exemple 1.1.2. graphes non orienté et graphe non orienté multi-arêtes :

Youssef Qaraai E-MMIS, FSTE, UMI


1.1. NOTIONS DE GRAPHE 7
G = (S, A) où
S = {1, 2, 3, 4} et A = {{1, 2}, {2, 4}, {3, 4}, {3}}.

G = (S, A, α) où
S = {1, 2, 3, 4} et A = {a, b, c, d, e, f, g, },

α(a) = α(b) = {1, 2}, α(c) = α(d) = {2, 4}, α(e) = {3, 4}, α(f ) = α(g) = {3}

Si un arc ou une arête à ses deux extrémités constituées du même sommet, on dit que
c'est une boucle.
Un graphe est simple s'il est non-orienté, s'il a au plus une arête entre deux sommets et
s'il n'a pas de boucle.
L'ordre d'un graphe est le nombre de sommets |S| et la taille d'un graphe est le nombre
d'arêtes ou d'arcs |A|.
On appelle valuation sur les sommets (resp. sur les arcs ou arêtes) toutes fonctions prenant
en argument les sommets (resp. sur les arcs ou arêtes) et renvoyant un réel ou un élément
dans un ensemble donné.
Soit G = (S, A) un graphe orienté, on associe le graphe non orienté G = (S, A ) ayant le
0 0

même ensemble de sommets S et dont l'ensemble d'arêtes A vérie {x, y} ∈ A ⇔ (x, y) ∈


0 0

A ou (y, x) ∈ A.
Degré :
Pour un graphe orienté, on appelle degré entrant d'un sommet s, noté d (s) (resp. degré

sortant d'un sommet s, d (s)) le nombre d'arcs dont le sommet est prédécesseur (resp.
+

successeur).
Pour un graphe non-orienté, on appelle degré d'un sommet s, noté d(s) le nombre d'arêtes
dont le sommet est une extrémité.
Lemme 1.1.1. (Lemme de la poignée de main)
Pour un graphe G = (S, A) orienté on a :
X X
d− (s) = d+ (s) = |A|
s∈S s∈S

Youssef Qaraai E-MMIS, FSTE, UMI


1.1. NOTIONS DE GRAPHE 8
Soit G = (S, A) un graphe non orienté. Nous avons :
X
d(s) = 2|A|
s∈S

Démonstration. Dans le cas orienté, chaque sommet d'un arc a un successeur ou un pré-
décesseur d'où la deuxième égalité.
Pour obtenir la première égalité, il sut d'orienter le graphe non-orienté et remarquer que
pour chaque sommet d(s) = d (s) + d (s).
− +


Une conséquence directe de ce lemme est que dans un graphe, le nombre de sommets dont
le degré est impair est toujours pair.
Construction de graphes à partir d'un autre :
Soit G = (S, A) un graphe (orienté ou non).
 Un sous graphe de G est un graphe G = (S , A ) tel que S ⊂ S et A ⊂ A.
0 0 0 0 0

 Un sous graphe G = (S , A ) d'un graphe G = (S, A) est un sous graphe induit si


0 0 0

A est formé de tous les arcs (ou arêtes) de G ayant leurs extrémités dans S (c'est
0 0

à dire ∀s, s ∈ S , (s, s ) ∈ A si et seulement si (s, s ) ∈ A).


0 0 0 0 0

 Un sous-graphe G = (S , A ) d'un graphe G = (S, A) est couvrant s'il contient tous


0 0 0

les sommets de G (c'est à dire S = S). 0

Exemple de graphe, sous-graphe quelconque et sous-graphe induit.

Soit G = (V, E) un graphe (orienté ou non). On note G = G−v le graphe induit lorsqu'on
0

supprime le sommet v. Si e ∈ E on note G = G − E le graphe G auquel on a supprimer


0

l'arête e et G = G + e.
0

Youssef Qaraai E-MMIS, FSTE, UMI


1.2. MODES DE REPRÉSENTATION D’UN GRAPHE 9
1.2 Modes de représentation d'un graphe
Compte tenu de l'essor des graphes en informatique, il est naturel de s'intéresser aux dié-
rentes manières de les représenter. Diérents modes de représentation peuvent être envisa-
gées suivant la nature des traitements que l'on souhaite appliquer aux graphes considérés.
Représentation sagittale :
La représentation sagittale est la représentation sous forme d'un dessin. Un même graphe
peut avoir des représentations sagittales en apparence très diérentes.
Dénition par propriété caractéristique :
Une même propriété caractérise les relations entre les diérents sommets.
Exemple 1.2.1. On considère le graphe G = (S, A) avec S = {1, 2, 3, 4, 5, 6} et pour tout
s, s ∈ S on a : (s, s ) ∈ A ⇐⇒ s divise strictement s . Sa représentation sagittale est :
0 0 0

Listes d'adjacence :
Un graphe peut être représenté à l'aide d'un dictionnaire : il s'agit d'une table à simple
entrée où chaque ligne correspond à un sommet et comporte la liste des successeurs (ou
des prédécesseurs) de ce sommet.
En pratique pour stocker un graphe orienté G = (S, A), on ordonne les sommets s , ..., s
1 n

et le graphe G est représenté par deux listes dites d'adjacence (LS, T S) dénies par :
1. LS : liste de longueur |A| appelée liste des successeurs, elle contient les successeurs
du sommets s , puis ceux de s jusqu'à ceux de s , si un sommet n'a pas de
1 2 n

successeur, on passe au sommet suivant.


2. T S : liste de longueur |S| + 1 appelée liste des têtes successeurs qui indique la
position du premier successeur de chaque sommet dans LS. La liste T S est dénit
comme suit :
 T S(1) = 1
 pour s ∈ S, si s possède un successeur alors T S(s ) est le numéro de la case
i i i

de LS du premier successeur de s , sinon T S(s ) = T S(s )


i i i+1

 T S(n + 1) = |A| + 1
Youssef Qaraai E-MMIS, FSTE, UMI
1.2. MODES DE REPRÉSENTATION D’UN GRAPHE 10
Exemple 1.2.2. Pour décrire un graphe, il sut de donner le dictionnaire des successeurs
ou bien le dictionnaire des prédécesseurs.

Sommets Successeurs
1 2
2 1, 4
3 3, 4
4 ∅
Sommets Prédecesseurs
1 2
2 1
3 3
4 2, 3

La représentation sous forme de listes est : LS = (2, 1, 4, 3, 4) et T S = (1, 2, 4, 6, 6)


Matrice d'adjacence :
Soit G = (S, A) un graphe dont les sommets sont numérotés de 1 à n. La matrice d'adja-
cence de G est la matrice carrée (m ) dénie par :
i,j (i,j)∈[1,n]2

(
k si k arcs de i vers j
mi,j =
0 sinon
Si le graphe n'est pas orienté, la matrice est symétrique.
Exemple 1.2.3. matrices d'adjacence de graphes orientés :



 0 1 0 0


 1 0 0 1
M=


 0 0 1 1

0 0 0 0

Youssef Qaraai E-MMIS, FSTE, UMI


1.2. MODES DE REPRÉSENTATION D’UN GRAPHE 11



 0 1 0 0


 1 0 0 3
M=


 0 0 2 1

0 0 0 0

et de graphes non orientés associés :




 0 1 0 0


 1 0 0 1
M=


 0 0 1 1

0 1 1 0



 0 1 0 0


 1 0 0 3
M=


 0 0 2 1

0 3 1 0

Matrice d'incidence :
La matrice d'incidence d'un graphe orienté G = (S, A) est une matrice à coecients dans
{−1, 0, 1} indexée par l'ensemble S × A tel que pour (i, j) ∈ S × A on a m = 1 si le
i,j

sommet i est l'extrémité de l'arête j, m = −1 si i est l'origine de j, et 0 sinon. On


i,j

remarque que, puisque chaque colonne correspond à une arête, il doit y avoir exactement
un 1 et un −1 sur chaque colonne.
Comparaison des diérentes méthodes :
On s'intéresse ici à l'espace nécessaire pour stocker un graphe G = (S, A), les diérentes

Youssef Qaraai E-MMIS, FSTE, UMI


1.3. QUELQUES CLASSES IMPORTANTES DE GRAPHES 12
méthodes ont leurs avantages et inconvénients. En voici un aperçu :
Représentation Stockage Autre avantage
Liste des arcs 2|A|
Liste d'adjacence |S|+|A|+1 Stocker des graphes creux
Implémenter des algorithmes de parcours
Matrice d'adjacence |S|*|S| Stocker des graphes denses
informations sur la longueur d'un chemin
Matrice d'incidence |S|*|A| Calcul des circuits
1.3 Quelques classes importantes de graphes
On s'intéresse ici à dénir quelques classes de graphes non-orientés dont la plupart sont
simple (non multi-arêtes et sans boucle).
Graphes isolés :
Le graphe isolé d'ordre n est un graphe à n sommets sans arête, on le note I . n

Graphes cycliques :
Le graphe cyclique d'ordre n est le graphe à n sommets S = {s , ..., s } tels que les arêtes
1 n

sont A = {{s , s } : i ∈ [1, n]} ∪ {{s , s }}, on le note C .


i i+1 n 1 n

C3 C4 C5 C6 C7

Graphes complets :
Le graphe complet d'ordre n est le graphe simple à n sommets dont tous les sommets sont
reliés deux à deux, on le note K .
n

K3 K4 K5 K6 K7

Youssef Qaraai E-MMIS, FSTE, UMI


1.4. CHEMIN, CONNEXITÉ ET ARBRE 13
Graphe biparti : Un graphe est biparti s'il existe une partition de son ensemble de
sommets en deux sous-ensembles X et Y telle que chaque arête ait une extrémité dans X
et l'autre dans Y . On dénit le graphe biparti complet entre un ensemble de n sommets
et un ensemble à m sommets comme le graphe simple tel que chaque sommet du premier
ensemble est relié à chaque sommet du deuxième ensemble. On le note K . n,m

Graphes planaires :
Un graphe non-orienté (pas forcément simple) est planaire s'il admet une représentation
sagittale dans un plan sans que les arêtes se croisent. K est planaire puisque on peut le
4

représenter de la façon suivante :

Question : Est ce que K et K sont planaires?


5 3,3

1.4 Chemin, connexité et arbre


Dénition 1.4.1. Soit G = (S, A) un graphe orienté (resp. non orienté). Un chemin
(resp. une chaîne) dans G est une suite de sommets C = (s , s , s , ..., s ) telle qu'il existe
un arc (resp. une arête) entre chaque couple de sommets successifs de C . Ce qui s'écrit :
0 1 2 k

 si G = (S, A) est orienté alors pour tout i ∈ [0, k − 1] on a (s , s ) ∈ A


 si G = (S, A) est non orienté alors pour tout i ∈ [0, k − 1] on a {s , s } ∈ A.
i i+1

On appellera :
i i+1

 Chemin (resp. chaîne) simple : un chemin (resp. chaîne) dont tous les arcs (resp.
arêtes) sont diérents.
 Chemin (resp. chaîne) élémentaire : un chemin (resp. chaîne) dont tous les sommets
sont diérents sauf peut être le départ et l'arrivée (pour autoriser les circuits ou
cycles).
Youssef Qaraai E-MMIS, FSTE, UMI
1.4. CHEMIN, CONNEXITÉ ET ARBRE 14
 Circuit dans un graphe orienté : un chemin simple nissant à son point de départ.
 Cycle dans un graphe non orienté : une chaîne simple nissant à son point de
départ.
En théorie des graphes, deux types fondamentaux de chemins ont été largement étudiés :
il s'agit des chemins Eulériens et Hamiltoniens.
Longueur d'un chemin :
La longueur d'un chemin (d'une chaîne) est égale au nombre d'arcs (d'arêtes) qui le (la)
compose.
Distance entre deux sommets : longueur du plus petit chemin (chaîne) entre ces deux
sommets.
Diamètre d'un graphe : plus grande distance entre deux sommets de ce graphe.
Remarque 1.4.1. Dans le cas d'un graphe valué ou pondéré où l'on associe un réel à
chaque arcs (arêtes), la longueur d'un chemin correspond à la somme des valeur de chaque
arc (arête) du chemin (chaîne).
Exemple : On peut calculer le diamètre des graphes classiques ci-dessous :
 diamètre de K : 1
n

 diamètre de K :n2
n,m

 diamètre de C : [ 2 ]
n

Dénition 1.4.2. (Connexité et forte connexité)


Un graphe non-orienté est connexe si pour tout couple de sommets s et s , il existe une
0

chaîne reliant s à s .
0

Un graphe orienté est connexe si le graphe non orienté associé est connexe. Un graphe
orienté est fortement connexe si pour tout couple de sommets s et s , il existe un chemin
0

reliant s à s .
0

Exemple de graphe connexe et fortement connexe. Le graphe à gauche est fortement


connexe tandis que celui de droite est connexe mais non fortement connexe.

Youssef Qaraai E-MMIS, FSTE, UMI


1.4. CHEMIN, CONNEXITÉ ET ARBRE 15
Une arrête e d'un graphe connexe G = (S, A) est un pont ou isthme si X − e (graphe
obtenu en supprimant l'arête e) n'est pas connexe.
Pour un graphe quelconque, on peut le décomposer en sous graphes connexes. Soit G =
(S, A) un graphe non orienté, on dénit la relation d'équivalence R sur S par sR s ⇐⇒
0
G G

il existe une chaîne reliant s à s0

Dénition 1.4.3. Étant donné un graphe G = (S, A), un sous graphe induit par les
sommets d'une classe d'équivalence est une composante connexe de G. Autrement dit, une
composante connexe (resp. fortement connexe) C d'un graphe G = (S, A) est un sous
ensemble maximal de sommets tels que deux quelconques d'entre eux soient reliés par une
chaîne (resp. un chemin). Formellement, si s ∈ C alors on a :
 pour tout s ∈ C il existe une chaîne (resp. un chemin) reliant s à s
0 0

 pour tout s ∈ S\C , il n'existe pas de chaîne (resp. chemin) reliant s à s


0 0

Les composantes connexes vérient certaines propriétés, dont on cite par exemple (sans
donner de démonstrations) :
 Les composantes connexes (resp. fortement connexe) d'un graphe G = (S, A)
forment une partition de S.
 Un graphe est connexe (resp. fortement connexe) si et seulement s'il a une seule
composante connexe (resp. fortement connexe).
 Le sous graphe induit par une composante connexe (resp. fortement connexe) est
connexe (resp. fortement connexe).
 La composante connexe C qui contient un sommet s ∈ S est C = {s ∈ S : il existe
0

une chaîne reliant s à s }


0

 La composante fortement connexe C qui contient un sommet s ∈ S est C = {s ∈ 0

S : il existe un chemin reliant s à s et un chemin reliant s à s}


0 0

Exemple 1.4.1. Les composantes connexes de G sont {A, C, E} et {B, D, F } tandis que
celles de G sont {2, 6}, {3, 5, 7} et {4}.
1

Youssef Qaraai E-MMIS, FSTE, UMI


1.4. CHEMIN, CONNEXITÉ ET ARBRE 16

G1 G2
Les composantes fortement connexes de G sont {A, B} et {C} tandis que celles de G
sont {1, 7}, {2, 3, 5, 6} et {4}.
3 4

G3 G4

Proposition 1.4.1. Un graphe connexe d'ordre n comporte au moins n − 1 arêtes.


Démonstration. On montre le résultat par récurrence sur l'ordre du graphe n.
Le résultat est évident pour n = 1 et n = 2.
Supposons la propriété prouvée sur les graphes connexes d'ordre n. Soit G = (S, A) un
graphe connexe à n + 1 sommets. La connexité assure que chaque sommet est de degré au
moins 1. On a alors deux cas :
 Cas 1 : si chaque sommetXest de degré au moins 2, alors le lemme de la poignée de
main conduit à 2|A| = d(s) ≥ 2n donc |A| ≥ n ;
 Cas 2 : s'il existe un sommet s de degré 1 alors, le graphe induit G obtenu en
s∈S
0

éliminant s et l'arête dont il est l'extrémité, est un graphe connexe de n sommets qui
possède exactement une arête de moins que G. D'après l'hypothèse de récurrence,
G possède donc au moins n − 1 arêtes, d'où G en possède au moins n.
0

Nous pouvons lier l'absence de cycle dans un graphe avec le nombre d'arêtes.
Proposition 1.4.2. Un graphe acyclique à n sommets possède au plus n − 1 arêtes.
Youssef Qaraai E-MMIS, FSTE, UMI
1.4. CHEMIN, CONNEXITÉ ET ARBRE 17
Démonstration. On va montrer cette propriété par récurrence sur le nombre de sommets
du graphe G = (S, A).
 Si G est d'ordre 1, comme G est acyclique il n'y a pas de boucle, il ne possède donc
aucune arête et la propriété est vériée.
 Supposons la propriété est vrai au rang n et montrons la au rang n + 1. Comme G
est acyclique, il existe un sommet s de degré 0 ou 1. Considérons le graphe induit
G par les sommets S\{s}. Ce graphe est acyclique et possède n sommets, par
0

hypothèse d'induction G a au plus n − 1 arêtes. On en déduit que G a au plus n


0

arêtes car d(s) ≤ 1.




Dénition 1.4.4. Un arbre est un graphe non orienté, connexe, sans cycle.
Une forêt est un graphe non orienté sans cycle (chacune de ses composantes connexes est
un arbre) : Les sommets de degré 1 ou 0 sont appelés feuilles, les autres sommets sont
appelés n÷uds.
Théorème 1.4.1. Soit G un graphe non orienté à n sommets. Les propositions suivantes
sont équivalentes
 G est connexe et sans cycle
 G est connexe et a n − 1 arêtes
 G est connexe et la suppression de n'importe quelle arête le déconnecte;
 G est sans cycle et a n − 1 arêtes
 G est sans cycle et l'ajout de n'importe quel arête crée un cycle
 Entre toute paire de sommets de G il existe une unique chaîne élémentaire.
Les arbres utilisés en algorithmique ont le plus souvent une orientation et un sommet qui
joue un rôle particulier : la racine.
Dénition 1.4.5. Un graphe non orienté est un arbre enraciné s'il est connexe sans cycle
et si un sommet particulier a été distingué, on l'appellera la racine.
Un arbre enraciné est souvent muni d'une orientation naturelle : on oriente chaque arête
de telle sorte qu'il existe un chemin de la racine à tout autre sommet. Le graphe orienté
résultant est aussi appelé arbre orienté.
Proposition 1.4.3. Un graphe orienté est un arbre enraciné si et seulement si
 il est connexe,
Youssef Qaraai E-MMIS, FSTE, UMI
1.4. CHEMIN, CONNEXITÉ ET ARBRE 18
 il a un unique sommet sans prédécesseur (la racine),
 et tous ses autres sommets ont exactement un prédécesseur.
Remarque 1.4.2. Un graphe orienté sans circuit n'est pas forcément un arbre orienté.
On appellera :
 racine de l'arbre : le sommet qui n'a pas de prédécesseur
 feuilles de l'arbre : les sommets qui n'ont pas de successeur
 n÷uds de l'arbre : tous les autres sommets
 branche de l'arbre : tout chemin de la racine vers une feuille
 descendant de s : le successeur de s
 ascendant de s : le prédécesseur de s
Lorsque chaque sommet a au plus 2 successeurs on parle aussi d'arbre binaire.
Proposition 1.4.4. Un arbre à n sommets peut être déni par une liste de n éléments,
appelée liste des prédécesseurs, qui contient le prédécesseur de chaque sommet (ou ∅ pour
la racine de l'arbre) et on a : ∀s ∈ S P red(s) = ∅s sisi (ss =, s)racine
(

0 0
∈A

Par conséquent, le stockage d'un arbre n'est pas trop gourmand d'un point de vu infor-
matique. Par exemple, la liste Pred = [∅, 1, 1, 2, 3, 2, 3, 5, 3, 6, 4, 4, 7, 8, 14, 10] représente
l'arbre suivant :

Le sommet 1 est la racine, les sommets 9, 11, 12, 13, 15 et 16 sont les feuilles, une branche
de l'arbre est (1, 3, 5, 8, 14, 15).
Après avoir présenté un bref rappel sur la terminologie de graphe en théorie des graphes,
nous nous intéresserons dans la suite aux algorithmes liés à ce concept, tels que les parcours,
la coloration, le cheminement, le recouvrement, etc.

Youssef Qaraai E-MMIS, FSTE, UMI


Chapitre 2

Parcours et coloration de graphes

Le présent chapitre aborde quelques méthodes et techniques fréquemment utilisées en


théorie des graphes. il s'agit du problème de parcours d'un graphe ainsi que sa coloration.
Les algorithmes de parcours n'ont pas une nalité intrinsèque. Ils servent comme outil
pour étudier une propriété globale du graphe, comme la connexité ou la forte connexité ou
l'existence d'un point d'articulation, etc. Tandis que ceux de la coloration trouvent à leurs
tours un vaste domaine d'application comme par exemple le problème de l'attribution de
fréquences dans les télécommunications, la conception de puces électroniques, la gestion
et la planication des emplois du temps, etc.
2.1 Parcours
2.1.1 Principe

Un parcours de graphe est un algorithme qui consiste à explorer les sommets de proche
en proche à partir d'un sommet initial. Dans cette section on considèrera que les graphes
traités sont orientés. Les algorithmes fonctionnent pour le cas non orienté en transformant
chaque arête en deux arcs à double sens.
Soit G = (S, A) un graphe et s ∈ S un sommet, un parcours du graphe G à partir de s
est une visite de chaque sommet accessible depuis s.
Un parcours peut être représenté par un sous graphe de G qui est un arbre de racine s.
Lors d'un parcours de graphe, on doit marquer les sommets visités pour ne pas les traiter
plusieurs fois. Lorsqu'on marque un sommet on réalise le traitement de ce sommet, le
19
2.1. PARCOURS 20
moment où l'on réalise ce marquage peut donner des parcours diérents.
D'un point de vue algorithmique, un parcours correspond à la procédure suivante. Il reste
à préciser dans quel ordre on prend les sommets de la liste L. On dénira et on distinguera
alors le parcours en largeur (BFS : Breadth First Search) et le parcours en profondeur
(DFS : Depth First Search) juste après.
Algorithme 2.1.1. (Algorithme de parcours)
Données : Un graphe orienté G = (S, A) et un sommet s ∈ S
L ← Liste des sommets à traiter (vide au départ);
Mettre s dans L (Début traitement de s);
Tant que L 6= ∅ faire
sortir x le premier sommet de L (x en cours de traitement);
Pour y voisin non marqué de x faire
P (y) ← x
Mettre y dans L (Début traitement de y);
Fin Pour;
Fin Tant que.
2.1.2 Parcours en largeur

A partir d'un sommet s, un parcours en largeur traite d'abord les voisins de s pour ensuite
les explorer un par un. Ce mode de fonctionnement utilise donc une le dans laquelle on
ajoute les voisins non encore explorés par le bas (enler) et on retire les sommets à traiter
par le haut (déler).
Si on veut récupérer la liste des prédécesseurs P qui permet de retrouver l'arbre de parcours
en largeur depuis le sommet s on utilise l'algorithme suivant :
Algorithme 2.1.2. (Algorithme de parcours en largeur)
Données : Un graphe orienté G = (S, A) et un sommet s ∈ S
L = F ile des sommets à traiter (vide au départ);
P = Liste de taille |S| où toutes les valeurs sont aectées de ∅ (liste des prédécesseurs
dans l'arbre de parcours);
Marquer le sommet s et l'enler dans L ;
Tant que L 6= ∅ faire
déler x le premier sommet de L;
Youssef Qaraai E-MMIS, FSTE, UMI
2.1. PARCOURS 21
Pour y voisin non marqué de x faire
Marquer y ;
P (y) ← x
Enler y dans L;
Fin Pour;
Fin Tant que.
Remarque 2.1.1. La liste L des sommets à traiter est l'exemple type d'une File de type
FIFO (First In, First Out) :
 on ajoute les éléments par le bas de la le,
 on retire les éléments par le haut de la le.
Le parcours en largeur explore tous les sommets accessibles depuis le sommet initial. Il
permet de calculer les composantes connexes du graphe avec une complexité linéaire. De
plus, lors de ce parcours, les sommets sont explorés par distance croissante au sommet
de départ. Grâce à cette propriété, on peut utiliser l'algorithme pour résoudre l'un des
problèmes de cheminement : calculer le plus court chemin entre deux sommets.
Exemple 2.1.1. Sur le graphe suivant, l'algorithme BFS va alors fonctionner ainsi :

Il explore dans l'ordre les sommets A, B, C, E, D, F, G.


La complexité en temps dans le pire cas est en O(n + m) où n = |S| est le nombre de
sommets et m = |A| est le nombre d'arcs. En eet, chaque arc et chaque sommet est visité
au plus une seule fois.
Soit un graphe G = (S, A), dont aucun sommet n'est marqué à l'appel de l'algorithme.
Tous les sommets insérés dans la le sont marqués et l'instruction conditionnelle assure
donc que les sommets seront insérés au plus une fois, comme l'insertion dans la le se fait
en O(1), la complexité est en O(S). Les voisins étant donnés par liste d'adjacence seront
visités au plus m fois car la somme des longueurs des listes d'adjacence est m (le nombre
d'arêtes). La complexité totale est donc O(n + m).
Youssef Qaraai E-MMIS, FSTE, UMI
2.1. PARCOURS 22
2.1.3 Parcours en profondeur

C'est un algorithme de recherche qui progresse à partir d'un sommet s en s'appelant


récursivement pour chaque sommet voisin de s. Le nom d'algorithme en profondeur est
dû au fait que, contrairement à l'algorithme de parcours en largeur, il explore en fait à
fond les chemins un par un : pour chaque sommet, il marque le sommet actuel, et il prend
le premier sommet voisin jusqu'à ce qu'un sommet n'ait plus de voisins (ou que tous ses
voisins soient marqués), et revient alors au sommet père.
Comme pour le parcours en largeur on peut écrire l'algorithme permettant de récupérer
l'arbre de parcours en profondeur :
Algorithme 2.1.3. (Algorithme de parcours en profondeur)
Données : Un graphe orienté G = (S, A) et un sommet s ∈ S
L = P ile des sommets à traiter (vide au départ);
P = Liste de taille |S| où toutes les valeurs sont aectées de ∅ (liste des prédécesseurs
dans l'arbre de parcours);
Enler s dans L ;
Tant que L 6= ∅ faire
Dépiler x le premier sommet de L ;
Si x non marqué Alors
Pour y voisin de x non marqué faire
P (y) ← x
Mettre y au début de L ;
Marquer x;
Fin Si;
Fin Pour;
Fin Tant que.
Cet algorithme admet aussi une formulation récursive plus simple à programmer :
Remarque 2.1.2. La liste L des sommets à traiter est l'exemple type d'une Pile de type
LIFO (Last In, First Out) :
 on ajoute les éléments par le haut de la pile,
 on retire les éléments par le haut de la pile.
Exemple 2.1.2. Nous conviendrons que les sommets à gauche sur ce graphe seront choisis
avant ceux de droite. Si l'algorithme utilise eectivement un marquage des sommets pour
Youssef Qaraai E-MMIS, FSTE, UMI
2.2. TRI TOPOLOGIQUE 23
éviter de tourner indéniment en boucle, on aura alors l'ordre de visite suivant : A, B,
D, F , E , C , G.

Supposons maintenant que nous n'utilisions pas la méthode de marquage, on aurait alors
la visite des sommets suivants dans l'ordre : A, B, D, F, E, A, B, D, F, E, etc indéniment,
puisque l'algorithme ne peut sortir de la boucle A, B, D, F, E et n'atteindra donc jamais C
ou G.
De même comme celle de l'algorithme de parcours BFS, la complexité en temps de l'al-
gorithme DFS dans le pire cas est en O(n + m) où n = |S| est le nombre de sommets et
m = |A| est le nombre d'arcs.

2.2 Tri topologique


Pour un graphe représenté en mémoire sous une forme facile à parcourir, par exemple par
listes d'adjacence, le calcul d'un tri topologique est simple. Il sut d'eectuer un parcours
en profondeur du graphe, au cours duquel on empile chaque sommet une fois ses succes-
seurs visités. En désempilant, on obtient un tri topologique.
On peut se servir d'un parcours en profondeur déjà eectué pour déterminer directement
un ordre topologique. En eet, la lecture des sommets dans l'ordre inverse de la numéro-
tation du parcours en profondeur est un ordre topologique.
Une autre façon de procéder consiste à rechercher une racine (sommet sans prédécesseur),
l'enlever, et répéter l'opération autant de fois que nécessaire. C'est facile si l'on peut fa-
cilement calculer le nombre de prédécesseurs d'un sommet; en eet, les racines à une
itération sont parmi les successeurs des racines à l'itération précédente, et un compteur
des prédécesseurs permet de les reconnaître.
Youssef Qaraai E-MMIS, FSTE, UMI
2.2. TRI TOPOLOGIQUE 24
L'algorithme de tri topologique d'un graphe fonctionne sur le même principe que l'algo-
rithme de parcours en profondeur en rajoutant une notion de date de début et de date de
n. L'ordre topologique sera à la n les sommets dans l'ordre du tableau de date de n.
On commence par un sommet donné puis tant qu'il est possible on descend de niveau en
suivant les arcs orientés en incrémentant à chaque étape la date de début, jusqu'à arriver
à un sommet d'où aucun arc ne part. On inscrit alors notre première date de n. Puis on
remonte en passant par le parent d'où on est venu, et on visite les autres arcs qui n'ont
pas encore été traités. Et on répète l'opération. An de savoir si un sommet a été vu ou
non, on utilise un système de couleurs : Blanc pour : Non traité, Gris pour : En traitement
et Noir pour Traité.
 Non traité correspond aux sommets qui n'ont ni date de début, ni date de n.
 En traitement correspond aux sommets qui ne possèdent qu'une date de début et
pas encore de date de n.
 Traité correspond aux sommets qui possèdent les deux.
Par exemple pour le graphe ci-dessous on écrit le couple dateDébut/dateFin ainsi : (date-
Début,dateFin).

On commence par le sommet 1, on a alors pour ce point la date de début : (1, ), la date
de n n'étant pas encore connue. On a alors le choix de continuer soit vers 2 ou vers 8.
Supposons que l'on aille vers 2. On aura alors pour 2 (2, ), puis en 3 avec (3, ) et enn en
6 avec (4, ).
Ici, 6 est un sommet dont ne part aucun arc. Il est donc impossible de descendre encore
Youssef Qaraai E-MMIS, FSTE, UMI
2.3. COLORATION 25
de niveau. On marque donc notre première date de n pour 6 : (4,5). Puis on remonte en
passant par le parent d'où l'on vient, c'est-à-dire 3.
Comme il n'y a pas d'autre arc partant du sommet 3, on marque notre deuxième date de
n pour 3 : (3,6) puis on remonte encore par le parent d'où l'on est venu, c'est-à-dire 2.
Du sommet 2, on continue en suivant l'arc qui n'a pas encore été visité (vers 8), d'où il est
impossible de descendre davantage. On a donc pour 8 : (7,8) puis on remonte au sommet
2.
Cette fois, tous les arcs partant du sommet 2 ont été traités, donc on marque la date de
n pour 2 : (2,9) et on remonte vers le sommet 1, qui est dans la même situation, donc 1 :
(1,10).
On répète ensuite ces opérations en commençant par un sommet qui n'a pas encore été
visité, par exemple 4 : (11, ) d'où on peut descendre en 5 : (12, ), mais pas plus loin car
6 a déjà été visité. On a donc pour 5 : (12 ,13), puis après être remonté en 4 : (11,14) car
tous ses voisins ont été visités.
On recommence avec 7 : (15,16) et 9 : (17,18), qui n'ont aucun voisin non-traité.
Finalement, on trie les sommets par date de n décroissante pour obtenir l'ordre suivant :
9, 7, 4, 5, 1, 2, 8, 3, 6.

2.3 Coloration
2.3.1 Position du problème

Dénition 2.3.1.  Soit G = (S, A) un graphe non orienté simple (sans boucle et
non multi-arêtes). Un coloriage (ou coloration) des sommets de G consiste à attri-
buer une couleur (ou un nombre) à chaque sommet de telle sorte que deux sommets
adjacents soient de couleurs diérentes.
 Un graphe G est k-coloriable s'il existe un coloriage avec k couleurs.
 Le nombre chromatique du graphe G, noté χ(G) est le nombre minimal de couleurs
nécessaire pour colorier un graphe.
On note qu'obtenir un coloriage à k couleurs d'un graphe G permet d'armer que χ(G) ≤
k . La diculté réside pour trouver une minoration, on utilise souvent la proposition sui-
vante :
Proposition 2.3.1. Soit G un graphe et G un sous graphe de G. On a χ(G ) ≤ χ(G).
0 0

Youssef Qaraai E-MMIS, FSTE, UMI


2.3. COLORATION 26
Quelques exemples d'applications :
- Problème de compatibilité : Dans un groupe de 8 étudiants, on doit former des groupes
de telle sorte que les étudiants d'un même groupe ne s'entendent pas trop mal. On connaît
les incompatibilités suivantes :

Le nombre minimal de groupes nécessaire correspond au nombre chromatique du graphe


des incompatibilités.

- Problème d'emploi du temps : Un club sportif veut organiser six tournois divers : S, E,
G, D, T et M . Plusieurs personnes se sont inscrites à la fois pour les tournois E, S, G,
d'autres personnes pour les tournois G, D, M , et en n d'autres personnes pour les tournois
M, T, S . Il est entendu qu'une participation simultanée à plusieurs tournois est impossible
et que les organisateurs veulent satisfaire tout le monde.
Quel est le nombre maximum de tournois qui pourraient se dérouler en même temps?

- Coloriage de cartes géographiques : On cherche à colorier une carte de telle sorte que deux
pays frontaliers soient de couleurs diérentes. Pour résoudre ce problème, plus historique
qu'autre chose, on peut se ramener au coloriage d'un graphe planaire construit de la façon
suivante : les sommet correspondent aux pays et il y a une arête entre deux sommets si
les pays correspondants sont frontaliers.
Youssef Qaraai E-MMIS, FSTE, UMI
2.3. COLORATION 27
Nombre chromatique de graphes classiques : Il est facile de déterminer le nombre
chromatique de certains graphes classiques comme par exemple :
 graphe isolé d'ordre n : χ(I ) = 1
n

 graphe cyclique d'ordre n : χ(C ) = 2 si n pair et 3 si n impair


n

 graphe complet d'ordre n : χ(K ) = n


n

 G graphe biparti avec au moins une arête : χ(G) = 2 (en fait un graphe est 2-
coloriable si et seulement s'il est biparti).
 G arbre avec au moins une arête : χ(G) = 2
2.3.2 Résolution algorithmique

Dans cette section on s'intéresse aux algorithmes qui permettent de trouver un coloriage
ou le nombre chromatique. Commençons par un algorithme dit glouton.
On considère ici un coloriage comme une fonction des sommets dans l'ensemble des entiers.
L'algorithme glouton nous donne facilement un coloriage du graphe, le principe consiste à
prendre les sommets les uns après les autres et pour chaque sommet s d'aecter la couleur
minimale qui n'apparait pas dans les voisins coloriés de s.
Algorithme 2.3.1. (Algorithme glouton de coloriage d'un graphe)
Données : Un graphe G = (S, A)
Résultats : Une coloration φ :→ N de G

Pour s ∈ S faire
φ(s) ← plus petite couleur non utilisée par les voisins de s ;
Fin pour.
L'algorithme se termine une fois que l'on a visité tous les sommets.
A chaque fois que l'on attribue une couleur à un sommet, elle est diérente des couleurs
des sommets voisins pour lesquels on a attribué une couleur. Ainsi le coloriage obtenu est
valide.
En termes de complexité, on passe n = |S| fois dans la boucle, chaque fois que l'on passe
dans la boucle on regarde tous les voisins du sommet considéré, on a au plus ∆(G) voisin
à regarder où ∆(G) est le degré maximal du graphe. Dans le pire des cas, on a une com-
plexité de O(n ∗ ∆(G)).
A-t-on un coloriage optimal avec cet algorithme? Le résultat dépend généralement de
l'ordre dans lequel on choisit les sommets et il est facile de trouver des exemples ou l'ordre
Youssef Qaraai E-MMIS, FSTE, UMI
2.3. COLORATION 28
donné ne donne pas un coloriage optimal. On peut jouer sur l'ordre des sommets choisis,
par exemple les prendre dans l'ordre des degrés décroissants.
Un deuxième algorithme, et qui est fréquemment utiliser lors de la coloration d'un graphe
est celui de Welsh-Powell. Il est possible d'améliorer cet algorithme en coloriant d'abord
les sommets qui imposent le plus de contraintes (sommet de plus haut degré) et en uti-
lisant la couleur que l'on vient d'utiliser là ou cela est possible. On appelle ce principe
l'algorithme de Welsh-Powell. Pour certaine classe de graphe cet algorithme donne même
systématiquement le coloriage optimal.
Algorithme 2.3.2. (Algorithme de Welsh-Powell pour colorier un graphe)
Données : Un graphe G = (S, A)
Résultats : Une coloration φ :→ N de G

L ← liste des sommets ordonnés par degré décroissant;


couleur-courante ← 0 ;
Tant que L 6= ∅ faire
couleur-courante ← couleur-courante +1
Colorier s le premier sommet de L avec couleur-courante;
Éliminer s de L ;
V ← voisins de s ;
Pour x ∈ L faire
Si x ∈/ V alors
Colorier x avec la couleur-courante;
Éliminer x de L ;
Ajouter les voisins de x à V ;
Fin Si;
Fin Pour;
Fin Tant que.
Il est clair que, puisque le nombre de sommets dans L (et donc non coloriés) diminue d'au
moins une unité à chaque fois que l'on exécute la boucle.
Cet algorithme fournit bien un coloriage de G, en eet chaque fois que l'on colorie un
sommet, on place dans S les sommets voisins à ce sommet de telle sorte que l'on ne colorie
plus de cette couleur les sommets de S. Ainsi deux sommets voisins sont de couleurs
diérentes.
Youssef Qaraai E-MMIS, FSTE, UMI
2.3. COLORATION 29
De manière grossière, on passe n = |S| fois dans la boucle Tant que, puis n fois dans la
boucle Pour, on a donc une complexité grossière en O(n ) . Cependant, on peut être plus
2

précis. Dans la preuve de la proposition ci-dessous, on voit que l'on passe au maximum
∆(G) + 1 fois dans la boucle Tant que. On a donc une complexité en O(n ∗ ∆(G)).

Proposition 2.3.2. Soit ∆(G) le degré maximal d'un graphe G, on a : χ(G) ≤ ∆(G) + 1
Démonstration. Soit s le dernier sommet colorié par l'algorithme Welsh-Powell. Si s n'a
pas été colorié avant, c'est que pour chacune des couleurs précédentes, un sommet adjacent
à s a été colorié de cette couleur. Par suite, le nombre de couleurs utilisées avant de colorier
s ne peut dépasser d(s). Ainsi, en tenant compte de la couleur de s, on déduit que le nombre
total de couleurs utilisées par l'algorithme ne dépasse pas d(s) + 1. 

A-t-on un coloriage optimal avec cet algorithme? Là encore il existe des exemples ou
cet algorithme n'est pas optimal même si dans la majorité des cas il donne un coloriage
optimal.
2.3.3 Encadrement du nombre chromatique

La première question qui peut se poser d'une manière intuitive est celle de l'existence d'un
algorithme qui détermine le nombre chromatique d'un graphe d'une manière exacte?
On cherche un algorithme qui prend en argument un graphe G = (S, A) et renvoie le
nombre chromatique de ce graphe. Pour cela on teste tous les 2-coloriages, il y en a 2 , |S|

on a χ(G) = 2, sinon on teste tous les 3-coloriages et ainsi de suite. L'algorithme termine
car il y a un coloriage à ∆(G) + 1 couleurs et il nous donne un coloriage optimal car on a
essayer toutes les possibilités avec moins de couleurs.
Cependant cet algorithme a une complexité en O((∆(G) + 1) ) dans le pire des cas,
|S|

cette complexité est par exemple atteinte pour le graphe complet. Cette complexité est
exponentielle en la taille du graphe et en pratique, pour des graphes un peu grand, il faut
attendre des temps extrêmement long pour le voir terminer. On estime que les complexités
qui permettent d'avoir un algorithme utilisable sont les complexité en O(n ) pour une
d

valeur d donnée. Pour le problème du nombre chromatique on ne sait pas s'il existe un
algorithme polynomial qui permet de le résoudre. Pour plus de détails, voir les classes
dites de problèmes P , N P et N P − complet.
Cependant, on peut s'intéresser à un encadrement du nombre chromatique. pour cela, on
va introduire deux nouvelles notions.
Youssef Qaraai E-MMIS, FSTE, UMI
2.3. COLORATION 30
Dénition 2.3.2. Soit G un graphe non orienté.
 Une clique est un sous graphe complet de G. On note ω(G) le cardinal d'un sous
graphe complet maximal.
 Un ensemble stable (ou indépendant) est un sous graphe induit de G sans arcs (ou
arêtes). On note α(G) le cardinal maximal obtenu par un ensemble stable.
Ces notions donnes des informations sur le nombre chromatique :
 les sommets d'une même clique doivent être coloriés d'une couleur diérente, ainsi
trouver une clique à k sommets permet d'armer que χ(G) ≥ k ;
 les sommets d'un même ensemble stable peuvent être coloriés de la même couleur.
On a donc l'encadrement suivant :
Proposition 2.3.3. Soit G = (S, A) un graphe simple, on a :
1. ω(G) ≤ χ(G) ≤ ∆(G) + 1
2. [ α(G)
|S|
] ≤ χ(G) ≤ |S| − α(G) + 1

3. χ(G) ≤ max{δ(G )} ≤ ∆(G) + 1 avec G est un graphe induit de G et δ(G ) est le


0 0 0

degré maximum des sommets de G 0

Démonstration. Concernant le point 1 c'est simple à vérier.


Une k-coloration correspond à une partition S , S ,..., S de S où chaque S est un ensemble
1 2 k i

stable donc |S | ≤ α(G). Ainsi |S | ≤ α(G)χ(G) d'où la première inégalité de 2.


i
X
i

D'autre part, si on colorie un ensemble indépendant S de cardinal α(G) avec une couleur,
i
0

on utilise au plus |S|−α(G) couleurs pour colorier S\S . Ainsi, on a χ(G) ≤ |S|−α(G)+1.
0

3. Soit n = |S| et k = max{δ(G )}. On pose G = G et il existe s ∈ S tel que d(s ) =


0
1 1 1

δ(G) ≤ k . On construit par récurrence une suite s ,..., s de sommets et une suite de
1 n

graphes G = G − {s , s , ..., s } tels que d(s ) = δ(G ) ≤ k pour tout i ∈ {2, ..., n}.
i 1 2 i−1 i i

Ainsi en appliquant l'algorithme glouton dans cet ordre, on a besoin au plus de 1 + k


couleurs. 

2.3.4 Exemples et remarques

Exemple 2.3.1. Considérons le graphe G (à gauche) non orienté dont la représentation


sagittale est la suivante : Pour minorer le nombre chromatique de G,on cherche donc
un sous graphe complet d'ordre maximum. On trouve A,C,D,H, représenté ci-dessous (à
Youssef Qaraai E-MMIS, FSTE, UMI
2.3. COLORATION 31
droite), et qui est d'ordre 4.
On a ainsi 4 ≤ χ(G). Pour majorer le nombre chromatique de G, il faut calculer le degré
maximum de ses sommets. Il s'agit de 5 (degré des sommets A et C). On a donc nalement
4 ≤ χ(G) ≤ 6

Appliquons pas à pas l'algorithme de Welsh et Powell pour la coloration de G :


1. Calcul du degré de chaque sommet :
s A B C D E F G H
d(s) 5 4 5 4 4 3 4 3
2. Tri des sommets par ordre décroissant de leur degré :
s A C B D E G F H
d(s) 5 5 4 4 4 4 3 3
3. On choisit une couleur pour le premier sommet de cette liste triée. Colorons ainsi le
sommet A en rouge par exemple.
4. On parcourt ensuite la liste dans l'ordre. On constate que les sommets C, B et D sont
adjacents au sommet A donc on ne les colorie pas encore. Le premier sommet non adjacent
à A est E on le colore donc aussi en rouge.
5. Les trois derniers sommets de la liste sont adjacents soit à A soit à E donc on ne les
colorie pas.
6. On choisit une seconde couleur, le bleu, pour le premier sommet non coloré de la liste,
i.e. le sommet C. On continue à parcourir la liste, on colorie le sommet B aussi en bleu
car il n'est pas adjacent à C. Tous les autres sommets de la liste sont adjacents soit à C
soit à B donc on ne les colore pas.
7. On réitère le procédé en colorant d'une troisième couleur, le vert, le premier sommet
non encore coloré, c'est-à-dire le sommet D. Le sommet G n'est pas adjacent à D donc
Youssef Qaraai E-MMIS, FSTE, UMI
2.3. COLORATION 32
on le colorie aussi en vert. On continue de parcourir la liste, et l'on colorie aussi F en
vert car il n'est ni adjacent à D ou à G. Le dernier sommet de la liste est adjacent à un
sommet déjà coloré en vert, on ne le colore pas encore.
8. On colorie enn le dernier sommet non coloré, i.e. H, avec une autre couleur, par
exemple le jaune. Notre coloration nale est alors :

On a ainsi coloré ce graphe avec 4 couleurs. Comme 4 ≤ χ(G), donc cette coloration est
bien optimale. C'est à dire 4 couleurs susent pour colorier G.
Remarque 2.3.1. Cet encadrement est utile mais peut parfois s'avérer inecace. Déjà,
il est souvent dicile de déterminer le sous graphe complet d'ordre maximum, à part sur
des cas particuliers assez simples.
D'autre part, la majoration peut se révéler très mauvaise comme dans le cas des graphes
dits en étoile :

Youssef Qaraai E-MMIS, FSTE, UMI


2.3. COLORATION 33
Le graphe G comporte 9 sommets, mais l'on peut construire avec ce même principe un
graphe admettant n sommets, que l'on note G . Le sommet central de ce graphe étant
d'ordre n − 1, la majoration du nombre chromatique est alors χ(G ) ≤ n
n

Cependant il est facile de voir qu'en fait χ(G ) = 2


n

L'écart entre χ et son majorant est donc conséquent, et tend même vers l'inni quand
n

l'ordre du graphe tend lui-même vers l'inni.


Remarque 2.3.2. l'algorithme de Welsh et Powell ne retournait pas toujours une colora-
tion optimale. Il s'agit de ce qu'on appelle une heuristique et non pas une méthode exacte.
Illustrons cette particularité par l'exemple suivant. Par application directe de l'algorithme
on trouve 4 couleurs, tandis qu'une approche manuelle (ensembles stables par exemple)
fournit un nombre plus petit qui est égale à 3 couleurs.

Youssef Qaraai E-MMIS, FSTE, UMI


Chapitre 3

Optimisation dans les graphes

Dans cette section on considère un graphe G = (S, A) orienté ou non pour lequel chaque
arête est attribué d'un certain poids λ : A → R appelé valuation. Étant donné un sous
graphe G = (S , A ) (S ⊂ S et A ⊂ A) on dénit le poids du graphe G
0 0 0 0 0 0

0
X
λ(G ) = λ(a)
0
a∈A

Un graphe simple pondéré est donné par la matrice de poids W = (w ) tel que w
i,j (i,j)∈S 2 i,j

est la valeur de l'arc allant de i à j.


On s'intéresse à diérents problème d'optimisation qui consiste à chercher un sous graphe
avec une certaine propriété qui minimise ou maximise son poids. Il s'agit plus précisément
de la recherche d'arbres dits couvrants à poids optimaux, de la recherche des plus courts
chemins, de l'ordonnancement des tâches lors de la gestion d'un projet et de l'optimisation
du ot circulant dans un réseau.
3.1 Arbres couvrants à poids minimum
Quand on travaille sur un graphe connexe, certains problèmes obligent à transformer ce
graphe en un arbre (graphe connexe sans cycle) qui contient tous les sommets du graphe
et quelques arêtes. Un arbre couvrant d'un graphe non orienté G = (S, A) est un sous
graphe de G dont les sommet sont S et qui est un arbre. On a vu au premier chapitre que
tout graphe admet un arbre couvrant.
Si G admet une valuation λ : A → R, parmi les arbres couvrants, il en existe un de poids
34
3.1. ARBRES COUVRANTS À POIDS MINIMUM 35
minimal. Deux algorithmes fondamentaux dûs à Prim et Kruskal permettent de trouver
de tels arbres. On va considérer deux approches pour résoudre ce problème :
 Approche locale : à chaque étapes, parmi les sommets connectés, on rajoute l'arête
optimale qui relie un sommet déjà connecté à un sommet non connecté. On utilisera
cette approche dans l'algorithme de Prim.
 Approche globale : on choisit l'arête optimale de façon que l'arc rajouté ne relie
pas des sommets déjà connectés. On utilisera cette approche dans l'algorithme de
Kurskal.
3.1.1 Algorithme de Prim

L'algorithme de Prim consiste à choisir arbitrairement un sommet et à faire croître un


arbre à partir de ce sommet de telle sorte que chaque augmentation se fait en prenant
l'arête de poids minimal.
Algorithme 3.1.1. (Algorithme de Prim)
Données : Un graphe non orienté G = (S, A, λ) valué et un sommet s ∈ S
Résultat : Un arbre T = (S, A )0

P oids ← 0 (Poids total de l'arbre couvrant);


A ← ∅;
0

Marquer s ;
Tant qu'il reste des sommets non marqués faire
a ← arête de poids minimal joignant un sommet marqué x et un sommet non marqué y ;
Marquer y ;
0 0
A ← A ∪ {a}
P oids ← P oids + λ(a)
Fin Tant que.
Chaque fois que l'on passe dans la boucle on marque un sommet, l'algorithme s'arrête
quand on a marqué tous les sommets. Comme il y a un nombre ni n de sommet l'algo-
rithme se termine à l'étape n.
L'algorithme de Prim repose sur le résultat suivant :
Proposition 3.1.1. Si on cherche un arbre à coût minimal contenant un sous-arbre G 0

imposé, alors il existe parmi les solutions optimales contenant G , une solution qui contient
0

Youssef Qaraai E-MMIS, FSTE, UMI


3.1. ARBRES COUVRANTS À POIDS MINIMUM 36
l'arête (ou une des arêtes) de coût minimal adjacente à G et ne formant pas de cycle avec
0

G (c'est-à-dire une extrémité dans A et l'autre à l'extérieur de G ).


0 0

Démonstration. On va faire un raisonnement par l'absurde. Considérons un graphe G =


(S, A) et considérons un sous graphe G = (S , A ) qui soit un arbre. Soit G = (S, A )
1 1 1 2 2

un arbre de recouvrement de G qui contient l'arbre G , mais qui ne contient aucune des
1

arêtes de coût minimal dont une de ses extrémités est dans S et l'autre extrémité dans
1

S\S .1

Soit a une des arêtes de coût minimal entre S\S et S . Si on l'ajoute à l'arbre G , on crée
1 1 2

obligatoirement un cycle. Ce cycle contient exactement deux arêtes ayant une extrémité
dans S\S et une extrémité dans S , a et une autre arête b. Si on enlève b, on casse ce
1 1

cycle. On a donc un graphe sans cycle de n−1 arêtes, c'est donc un arbre et comme le coût
de a est strictement plus petit que celui de b, on a construit un arbre de recouvrement
de poids strictement inférieur à celui de l'arbre minimal considéré qui n'était donc pas
minimal. Absurde. 

Complexité : On passe |S| fois dans la boucle, et chaque fois que l'on passe dans la boucle,
on teste au plus |A| arêtes. La complexité est donc O(|A||S|).
Cette complexité est obtenue avec une représentation des graphes, comme une simple
liste d'adjacence et des recherches dans celle-ci. Cependant, la complexité de l'algorithme
dépend fortement de la manière dont est implémenté le choix de l'arête/sommet à ajouter
dans l'ensemble à chaque étape. Si l'on utilise un tas minimal binaire, la complexité devient
alors O(|A| log |S|). En utilisant un tas de Fibonacci, on peut encore descendre à O(|A| +
|S| log |S|).

3.1.2 Algorithme de Kruskal

L'algorithme consiste à ranger par ordre de poids croissant ou décroissant les arêtes d'un
graphe, puis à retirer une à une les arêtes selon cet ordre et à les ajouter à l'arbre couvrant
cherché tant que cet ajout ne fait pas apparaître un cycle dans l'arbre couvrant.
Algorithme 3.1.2. (Algorithme de Kruskal)
Données : Un graphe non orienté G = (S, A, λ) valué et un sommet s ∈ S
Résultat : Un arbre T = (S, A )0

P oids ← 0 (Poids total de l'arbre couvrant);

Youssef Qaraai E-MMIS, FSTE, UMI


3.1. ARBRES COUVRANTS À POIDS MINIMUM 37
0
A ←∅ ;
Pour s ∈ S faire
E(s) ← {s} (E(s) : sommets reliés à s)
Pour {s, s } ∈ A dans l'ordre croissant faire
0

Si E(s) 6= E(s ) Alors


0 0
0

0
A ← A ∪ {s, s }
0
P oids ← P oids + λ({s, s })
0
F ← E(s) ∪ E(s )
Pour z ∈ F faire E(z) ← F
Fin Pour;
Fin Si;
Fin Pour;
Fin Pour.
Chaque fois que l'on passe dans la boucle on prend une nouvelle arête. Comme il y a un
nombre ni d'arêtes l'algorithme se termine en un nombre ni d'étapes.
Comme pour celui de Prim, l'algorithme de Kruskal repose à son tour sur le résultat
suivant :
Proposition 3.1.2. Parmi les arbres de recouvrement minimaux du graphe G = (S, A)
pour lesquels le sous ensemble d'arêtes A est imposé, il en existe au moins un qui contient
0

une des plus petites arêtes de A \ A qui ne crée pas de cycle lorsqu'on l'ajoute à A .
0 0

Démonstration. Le théorème est évidemment vrai lorsque A est vide.


0

Supposons maintenant que A soit non vide et contienne moins de n−1 arêtes. On suppose
0

que toutes les arêtes de coût minimal qui ne sont pas déjà dans A tout en ne créant pas
0

de cycles avec A ne soit pas retenue.


0

Considérons un arbre de coût minimal T qui contient A et pas les arêtes refusées pré-
0

cédemment. Soit a une des arêtes refusées précédemment. Si on l'ajoute à T , on crée un


cycle. Comme a ne créait pas de cycle en l'ajoutant à A . Obligatoirement, une des arêtes
0

de ce cycle, adjacente à a, n'est pas dans A et a donc un coût strictement supérieur à a


0

qui était une des arêtes de coût minimal. Soit b l'une des arêtes adjacente à a et ajoutée à
A après avoir refusé a. En ôtant b de T et en ajoutant a, on supprime le cycle et on garde
0

la connexité, ce qui nous fournit un arbre de coût strictement inférieur à l'arbre supposé
de coût minimal. 

Youssef Qaraai E-MMIS, FSTE, UMI


3.2. PROBLÈME DE PLUS COURT CHEMIN 38
La complexité de l'algorithme, dominée par l'étape de tri des arêtes, est O(A log(A)) avec
A le nombre d'arêtes du graphe G.

Exemple 3.1.1. Considérons le graphe non orienté suivant. Les deux algorithmes Kruskal
et Prim aboutissent au même arbre couvrant de poids minimum qui est égale à 18.

3.2 Problème de plus court chemin


3.2.1 Position du problème et principe des algorithmes

Soient G = (S, A, λ) un graphe valué et s, s ∈ S deux sommets de G. On appelle distance


0

de s à s et on note d(s, s ) le minimum des valuations des chemins (resp. chaînes) allant
0 0

de s à s . On recherche le plus court chemin (resp. la plus courte chaîne) de s à s .


0 0

De nombreux problèmes concrets peuvent se modéliser comme des recherches de plus


courts chemins dans des graphes valués. Par exemple :
 recherche de l'itinéraire le plus rapide en voiture entre deux villes, ou n'importe
quel moyen de transport entre deux stations données;
 routage dans des réseaux de télécommunications;
 certains problèmes d'ordonnancement de tâches d'un projet font aussi appel à des
recherches de plus courts (longs) chemins.
On étudiera des algorithmes qui résolvent le problème suivant : étant donné un sommet s,
déterminer pour chaque sommet s la distance et un plus court chemin de s à s . Plusieurs
0 0

cas se présentent :
 il n'y a pas de chemins ( chaînes) de s à s ;
0

 il existe un ou plusieurs plus courts chemins (chaînes) de s à s 0

Youssef Qaraai E-MMIS, FSTE, UMI


3.2. PROBLÈME DE PLUS COURT CHEMIN 39
 il existe des chemins (chaînes) de s à s mais pas de plus court (dans le cas où il y
0

a un cycle négatif).
Remarque 3.2.1.

 Dans un graphe non orienté, on a toujours d(s, s ) = d(s , s) , et toute plus courte 0 0

chaîne de s à s parcourue à l'envers est une plus courte chaîne de s à s.


0 0

 Un circuit absorbant est un circuit de valuation (longueur) négative. On dénit de


la même manière un cycle absorbant dans un graphe non orienté.
Proposition 3.2.1. Soit G un graphe orienté valué n'ayant pas de circuits absorbants, et
s, s deux sommets de G. S'il existe un chemin allant de s à s , alors la distance d(s, s )
0 0 0

est bien dénie et il existe au moins un plus court chemin de s à s . 0

Ce résultat reste vrai en remplaçant chemin par chaîne.


Pour commencer, énonçons le principe d'optimalité dit de Bellman.
Proposition 3.2.2. Tout sous chemin d'un plus court chemin est un plus court chemin.
Démonstration. Soit C = (s , s , s , ..., s ) un plus court chemin entre s et s . Sup-
0 0 1 2 n 0 n

posons qu'il existe C = (s , s , ..., s , s ) un sous chemin de C , avec 0 ≤ p ≤


p p+1 q−1 q 0

q ≤ n qui n'est pas un plus court chemin entre s et s . Il existe un autre chemin p q

C = (s , s , s , ..., s , s , s ) entre s et s , et dont la longueur est strictement plus petite


0 0 0 0 0
p q p q

que celle de C . Or le chemin C = (s , s , ..., s , s , s , s , s , ..., s , s , s , s , ..., s ),


1 2 r−1 r
0 0 0 0
1 0 1 p−1 p p q q+1 n

obtenu en remplaçant C par C dans C , est alors strictement plus court que C , ce qui
1 2 r−1 r
0
0 0

est absurde. 

Proposition 3.2.3. S'il existe un plus court chemin entre deux sommets s et s , alors il 0

existe un plus court chemin élémentaire entre s et s . 0

Démonstration. Soit C = (s , s , s , ..., s ) un plus court chemin entre s et s . Si C


0 0 1 2 n 0 n 0

n'est pas élémentaire, il existe deux indices p et q, 0 ≤ p < q ≤ n, tels que s = s . Le p q

sous chemin C1 = (s , s , ..., s , s ) est alors un circuit, et c'est aussi un plus court
p p+1 q−1 q

chemin d'après la propriété précédente. Il est donc au moins aussi court que le chemin
trivial (s ), de valuation 0. Si la valuation de C est strictement négative, alors C est un
p 1 1

circuit absorbant, et il n'existe pas de plus court chemin entre s = s et s = s , ce qui 0


0
n

est absurde.
Youssef Qaraai E-MMIS, FSTE, UMI
3.2. PROBLÈME DE PLUS COURT CHEMIN 40
Si la valuation de C est nulle, le chemin C = (s , s , ..., s , s , s , s , ..., s , s ) a
1
0
0 1 p−1 p q+1 q+2 n−1 n

la même longueur que C , c'est donc encore un plus court chemin. On construit ainsi un
0

plus court chemin élémentaire entre s et s .


0


Cette proposition implique qu'étant donné un sommet initial, les chemins optimaux pour
aller de ce sommet à tous les autres peuvent être représentés par des arbres enracinés.
Les algorithmes étudiés dans cette partie prennent en entrée un graphe valué et renvoie
tous les plus courts chemin allant d'un sommet initial s à tous les autres sommets. On
stocke toute l'information dans deux listes de taille |S| :
 Dist qui à la n de l'algorithme donne d(s, x) pour tout sommet x ∈ S ;
 P red qui à la n de l'algorithme donne le prédécesseur du sommet x ∈ S dans
l'arbre des plus court chemins.
Les trois algorithmes que nous allons étudier fonctionnent de la façon suivante :
1. On initialise les tableaux Dist et P red
2. On calcule Dist(s) et P red(s) par approximations successives, ce qui signie qu'à
chaque étape, on essaye d'améliorer les valeurs obtenues précédemment;
3. L'amélioration, au niveau local, se vérie ainsi : pour un sommet s et un successeur
s de s, on compare la valeur Dist(s ) obtenue à l'étape précédente avec la valeur
0 0

qu'on obtiendrait en passant par s, c'est-à-dire Dist(s) + W (s, s ) on a alors deux


0

cas :
 Si cette deuxième valeur est plus petite, alors Dist(s ) ← Dist(s) + W (s, s ) et
0 0

P red(s ) ← s ;
0

 Sinon on ne fait rien. Cette technique est appelée technique du relâchement.


Commençons alors par l'élaboration d'un premier algorithme.
3.2.2 Algorithme de Bellman-Ford

Pour un graphe valué donné, généralement orienté et aucune condition sur le signe des
valuations ainsi que l'existence de cycle, l'algorithme de Bellman-Ford permettant la dé-
termination d'un plus court chemin entre un sommet et tous les autres est décrit comme
suit.
Algorithme 3.2.1. (Algorithme de Bellman-Ford)
Données : W matrice des distances d'un graphe orienté G = (S, A) et un sommet s
Résultat : l'algorithme donne deux tableaux de taille 1 × |S| :
Youssef Qaraai E-MMIS, FSTE, UMI
3.2. PROBLÈME DE PLUS COURT CHEMIN 41
 Dist : table des distances telle que Dist(s ) est la distance de s à s ;
0 0

 P red : table des prédécesseurs telle que P red(s ) est le prédécesseur de s dans le
0 0

chemin optimal depuis s ;


P red ← ∅ ;
Dist ← +∞ ;
Dist(s) ← 0 ;
k ← 1;
Tant que k ≤ n et il y' a eu des modications à l'étape précédente faire
Pour x ∈ S faire
Pour y successeur de x faire
Si Dist(x) + W (x, y) < Dist(y) Alors
Dist(y) ← Dist(x) + W (x, y)
P red(y) ← x ;
k ←k+1 ;
Fin Si;
Fin Pour;
Fin Pour;
Fin Tant que.
Terminaison de l'algorithme : On passe au plus |S| fois dans la boucle Tant que.
On fait d'abord les remarques suivantes :
 les valeurs de Dist(x) ne peuvent que diminuer au cours du déroulement de l'algo-
rithme;
 à chaque étape de l'algorithme, pour tout sommet x, la valeur Dist(x) est soit +∞,
soit égale à la longueur d'un chemin de s à x.
 à chaque étape de l'algorithme Dist(x) ≥ d(s, x).
 quand Dist(x) atteint la valeur d(s, x), elle ne varie plus dans la suite de l'algo-
rithme.
Montrons par récurrence la propriété suivante P : si un plus cout chemin élémentaire
k

comporte k arcs alors après k passages dans la boucle Dist(x) = d(s, x).
L'initialisation est claire car seul s peut être atteint avec 0 arcs.
On suppose que P est vrai et soit x un sommet tel que le plus court chemin de s à x
k

comporte au plus k + 1 arcs. Soit p un prédécesseur de x. Le plus court chemin reliant s


Youssef Qaraai E-MMIS, FSTE, UMI
3.2. PROBLÈME DE PLUS COURT CHEMIN 42
à p comporte donc k arcs. Après k passages dans la boucle on a Dist(p) = d(s, p) d'après
l'hypothèse de récurrence. Après le k-ième passage, on compare Dist(s) et Dist(p) +
W (p, x) = d(s, p) + W (p, x) = d(s, x) et on aecte à Dist(s) la valeur d(s, x) si ce n'est
pas le cas. Ceci prouve l'hypothèse de récurrence au rang k + 1.
Complexité : Il y a O(|S| ) étapes nécessaire dans le pire des cas.
3

L'algorithme permet de détecter la présence de circuits absorbants : si les valeurs d(s) ne


sont pas stabilisées après |S| passages de boucles, alors le graphe contient au moins un
circuit absorbant.
Exemple 3.2.1. On cherche les distances et les plus courts chemins depuis le sommet A.

Comment récupérer les plus courts chemins? La source étant le sommet A. Pour récupérer
les plus courts chemins du sommet A vers tous les autres, il sut de procéder comme suit :
On xe un sommet quelconque, par exemple C va vers la dernière ligne des distances qui
correspond à Dist(C) = 3, et on regarde la dernière ligne des prédécesseurs, on trouve
P red(C) = B donc l(B, C) = −5, puis on refait la même chose au sommet B , ainsi on
obtient Dist(B) = 8 et P red(B) = A avec l(A, B) = 8. puisqu'on a atteint la source
A, on obteint alors le PCC de A vers C : A → B → C de longueur 3. Noter qu'il
8 −5

existe d'autres chemins mais pas plus courts A → C et A → D → C de longueurs


6 2 2

respectivement 6 et 4.
Youssef Qaraai E-MMIS, FSTE, UMI
3.2. PROBLÈME DE PLUS COURT CHEMIN 43
3.2.3 Algorithme de Bellman

Si le graphe n'a pas de circuit, il est possible de renuméroter les sommets de façon à ne
jamais revenir en arrière. Pour cela on réalise d'abord un tri topologique. Rappelons ainsi
l'algorithme utilisé au deuxième chapitre :
Données : Un graphe orienté G = (S, A, λ) valué
Résultat : Une numérotation des sommet r : S → N
k ← 1;
Tant que k < n faire
Pour x ∈ S dont tous les prédécesseurs sont numéroté faire
r(x) ← k
k ←k+1 ;
Fin Pour;
Fin Tant que.
L'algorithme de Bellman est un algorithme de type glouton, c'est-à-dire que, contrairement
à l'algorithme de Bellman-Ford, il ne revient jamais en arrière. A chaque étape, on trouve
un plus court chemin pour un nouveau sommet en se basant sur les prédécesseurs qui sont
déjà tous traités. Ceci est possible grâce à la possibilité d'eectuer un tri topologique. On
obtient l'algorithme suivant :
Algorithme 3.2.2. (Algorithme de Bellman)
Données : W matrice des distances d'un graphe orienté G = (S, A), un sommet s et une
fonction niveau r : S → N donné par l'algorithme de tri topologique.
Résultat : l'algorithme donne deux tableaux de taille 1 × |S| :
 Dist : table des distance telle que Dist(s ) est la distance de s à s ;
0 0

 P red : table des prédécesseurs telle que P red(s ) est le prédécesseur de s dans le
0 0

chemin optimal depuis s


P red ← ∅ ;
Dist ← +∞ ;
Dist(s) ← 0 ;
Pour k = r(s) + 1 jusqu'à max(r) faire
Pour y ∈ S : r(y) = k faire
Pour x prédécesseur de y faire
Youssef Qaraai E-MMIS, FSTE, UMI
3.2. PROBLÈME DE PLUS COURT CHEMIN 44
Si Dist(x) + W (x, y) < Dist(y) Alors
Dist(y) ← Dist(x) + W (x, y)
P red(y) ← x ;
Fin Si;
Fin Pour;
Fin Pour;
Fin Pour.
Reprenons le même exemple traité par l'algorithme de Bellman-Ford : On cherche les
distances et les plus courts chemins depuis le sommet A.

On commence par ordonner les sommets puis on applique l'algorithme :

Youssef Qaraai E-MMIS, FSTE, UMI


3.2. PROBLÈME DE PLUS COURT CHEMIN 45
3.2.4 Algorithme de Dijkstra

Après avoir donné un aperçu général sur le mode de fonctionnement des deux algorithmes
de Bellman et Bellman-Ford, nous allons maintenant présenter un troisième, très connu en
théorie des graphe; il s'agit de l'algorithme de Dijkstra. Contrairement aux deux premiers
algorithmes, d'une part, il opère sur des graphes à valuations positives, d'autre part il
permet de chercher les chemins an avançant d'un somment source vers tous les autres en
se basant sur l'examen des successeurs. L'algorithme s'énonce ainsi comme suit.
Algorithme 3.2.3. (Algorithme de Dijkstra)
Données : W matrice des distances d'un graphe orienté G = (S, A) et un sommet s
Résultat : l'algorithme donne deux tableaux de taille 1 × |S| :
 Dist : table des distance telle que Dist(s ) est la distance de s à s ;
0 0

 P red : table des prédécesseurs telle que P red(s ) est le prédécesseur de s dans le
0 0

chemin optimal depuis s


P red ← ∅ ;
Dist ← +∞ ;
Dist(s) ← 0 ;
D ← ∅ (listes des sommets déjà traités);
Tant que D 6= S faire
x ← sommet de S \ D tel que Dist(x) minimal;
D ← D ∪ {x} ;
Si y ∈/ D et y successeur de x faire
Si Dist(x) + W (x, y) < Dist(y) Alors
Dist(y) ← Dist(x) + W (x, y)
P red(y) ← x ;
Fin Si;
Fin Pour;
Fin Tant que
Terminaison : On passe au plus |S| fois dans la boucle Tant que.
Complexité : L'algorithme de Dijkstra sur un graphe valué positivement se termine en un
temps de l'ordre O(|S| ).
2

Exemple 3.2.2. Cette fois-ci on va changer le graphe car celui des exemples précédents
Youssef Qaraai E-MMIS, FSTE, UMI
3.2. PROBLÈME DE PLUS COURT CHEMIN 46
fait intervenir des valuations négatives. Cherchons les distances et les plus courts chemins
depuis le sommet A.

Remarque 3.2.2. Le tableau ci-dessous récapitule les graphes sur lesquels chaque algo-
rithme peut s'appliquer ainsi que leur complexité. On notera n le nombre de sommets et m
le nombre d'arcs du graphe. La complexité de l'algorithme de Dijkstra peut être améliorée
en choisissant une structure de données plus perfectionnée.
Algorithme Type de graphe Complexité
Bellman-Ford tout type de graphe O(n )3

Bellman graphe sans circuit O(n )2

Dijkstra graphe de valuation positive O(n ) 2

Application à l'ordonnancement et gestion de projet Les algorithmes de recherche


du plus court chemin sont très utilisé dans l'ordonnancement des tâches d'un projet par
exemple :

Youssef Qaraai E-MMIS, FSTE, UMI


3.2. PROBLÈME DE PLUS COURT CHEMIN 47
Tâches Opérations et contraintes Durée en jour
A Début du projet 1
commence au plus tôt 7 jour après la n de la tâche A
B
commence au plus tard 5 jour après le début de la tâche C 3
commence au plus tôt 6 jour après le début de la tâche A 1
C
commence au plus tôt 1 jour après la n de la tâche D
D commence au plus tôt 1 jour après la n de la tâche A 1
commence après la n de la tâche C
E commence 4 jours après la n de la tâche B 0
Fin du projet
Si on traduit les contraintes sur un graphe, on obtient :

Si on recherche l'ordonnancement au plus tôt, cela revient à chercher les chemins maxi-
maux. On décompose en niveau et on utilise Bellman simplié. Pour l'exemple on obtient :
A B C D E
Dist 0 8 2 6 15
Pred ∅ A A A B
Si l'on veut réaliser le projet en 17 jours au plus et que l'on cherche l'ordonnancement au
plus tard, on inverse les arêtes et on applique Bellman pour rechercher les chemins les plus
longs (attention les niveaux peuvent changer).

Youssef Qaraai E-MMIS, FSTE, UMI


3.3. PROBLÈME DE FLOTS 48
A B C D E
Dist 15 7 1 3 0
Pred B E E C ∅
Ainsi la tâche A doit être faite dans [0, 2], la tâche B doit être faite dans [8, 10], la tâche
C doit être faite dans [2, 16], la tâche D doit être faite dans [6, 15] et la tâche E doit être
faite dans [15, 17].
Remarque 3.2.3. Il existe des méthodes spécialement conçues à la modélisation et à la ré-
solution des problèmes d'ordonnancement. Elles se basent essentiellement sur les graphes :
 MPM (Méthode des Potentiels Metra), on représente le problème à l'aide d'un
graphe (qu'il ne fait intervenir aucun circuit) :
1. On associe à chaque tâche un sommet du graphe.
2. On dénit l'arc (i, j) de valuation ou de longueur d si la tâche i a une durée d
et si la tâche i doit être terminée avant que la tâche j ne puisse commencer.
i i

3. On introduit deux tâches ctives, la tâche début des travaux représentée par un
sommet source et la tâche n des travaux représentée par un sommet puits; ces
deux tâches ayant chacune une durée nulle.
4. On relie le sommet source par un arc de valuation nulle à tout sommet i repré-
sentant une tâche ne possédant pas de contrainte d'antériorité.
5. On relie le sommet i au sommet puits par un arc de valuation égale à la durée
de la tâche i si la tâche i ne possède pas de contrainte de postériorité.
 PERT(Preview Evaluation Research Task). Une tâche n'est pas représentée par
un sommet mais par un arc. Les sommets sont appelés des étapes. L'arc a ; qui
représente la tâche i ; précède l'arc a si la tâche i doit être terminée avant que
i

la tâche j ne puisse commencer. Chaque arc est valué par la durée de la tâche à
j

laquelle il correspond. Chaque étape (chaque sommet) dénit un ensemble de tâches


déjà eectuées, on introduit une étape début et une étape n.
3.3 Problème de Flots
3.3.1 Position du problème

Dénition 3.3.1. Un réseau de transport R = (S, A, s, p, c) est dénit par :


 un graphe orienté G = (S, A) sans circuit,
Youssef Qaraai E-MMIS, FSTE, UMI
3.3. PROBLÈME DE FLOTS 49
 un sommet s ∈ S appelé source,
 un sommet p ∈ S appelé puits,
 une fonction capacité c : A →]0, +∞[,
 l'existence d'au moins un chemin de s à p.
Ce type de graphe permet de modéliser de nombreuses situations :
 Réseau routier; les capacités représentent le nombre maximal de voitures par heure.
 Réseau de distribution d'eau, électricité, télécommunications, etc; les capacités re-
présentent alors le débit maximal pouvant être fourni par chaque partie du réseau.
Exemple 3.3.1. Le graphe suivant est un réseau de transport :

Le problème qui nous intéresse est alors d'optimiser le parcours global du réseau en tenant
compte des contraintes données par les capacités limitées de chaque partie du réseau.
Dénition 3.3.2. Soit un réseau de transport R = (S, A, s, p, c).
1. Un ot sur R est une fonction f : A → R telle que :
 pour tout arcs a ∈ A, f (a) ≤ c(a) ;
+

 pour tout s ∈ S et x ∈ S \ {s, p} on a


X X
f (z, x) = f (x, y)
z∈P red(x) y∈Succ(x)
| {z } | {z }
f lot entrant dans x f lot sortant de x

2. On appelle valeur du ot la quantité


X X
v(f ) = f (s, y) = f (z, p)
y∈Succ(s) z∈P red(p)

3. Un arc a ∈ A est saturé par le ot f si f (a) = c(a).


Exemple 3.3.2. On indique sur chaque arc la valeur du ot à côté de la capacité. Le
graphe ci-dessous représente un ot f dans le réseau de transport de l'exemple précédent
qui a pour valeur v(f ) = 2.
Youssef Qaraai E-MMIS, FSTE, UMI
3.3. PROBLÈME DE FLOTS 50

Dénition 3.3.3. (Coupe)


Une coupe sur un réseau de transport R est un sous-ensemble X de S tel que : s ∈ X et
/ X.
p∈
On dénit alors la capacité d'une coupe comme la somme des capacités des arcs allant de
X à S \ X , noté par
X
C(X) = c(x, y)

Les coupes possibles dans le graphe de l'exemple précédent sont :


(x,y)∈A, x∈X, y∈X

Exemple 3.3.3.
X X C(X)
{s} {a, b, p} 3
{s, a} {b, p} 5
{s, b} {a, p} 3
{s, a, b} {p} 4
Il est clair qu'un ot ne pourra pas avoir une valeur supérieure à la capacité d'une coupe. La
recherche d'une coupe de capacité la plus petite possible nous permettra donc de connaître
les limites du réseau. La réciproque est vraie, on a le résultat suivant.
Théorème 3.3.1. Soit R = (S, A, s, p, c) un réseau de transport, il existe un ot maximal
f tel que
v(f ) = min C(X)
coupe X

3.3.2 Algorithme de Ford-Fulkerson

On peut alors se demander comment calculer concrètement un ot de valeur maximale


ainsi qu'une coupe de capacité minimale associée. L'idée est de considérer un chemin et
Youssef Qaraai E-MMIS, FSTE, UMI
3.3. PROBLÈME DE FLOTS 51
d'augmenter progressivement les valeurs du ots jusqu'à arriver à saturation. On continue
ensuite sur les autres chemins.
Dénition 3.3.4. Étant donné un réseau de transport R = (S, A, s, p, c) et un ot f , un
chemin γ de s à p est appelé chemin augmentant si pour tout arc a du chemin γ, on a
f (a) < c(a).
On peut alors augmenter le ot sur ce chemin. On appelle valeur résiduelle d'un chemin
γ de s à p le nombre r(γ) = min {c(a) − f (a)}.
a∈γ

On peut donner un extrait de l'algorithme fondamental de cette partie comme suit.


Algorithme 3.3.1. (Algorithme de Ford-Fulkerson)
Données : Un réseau de transport R = (S, A, s, p, c)
Résultat : Un ot maximal
f ← ot de départ (éventuellement nul);
Tant qu'il existe un chemin γ augmentant faire
augmenter f le long du chemin γ ;
Fin Tant que.
Exemple 3.3.4. Le graphe (à gauche )est un réseau avec ses capacités et un ot (à droite)
dit réalisable dans ce graphe. On constate bien que le ot respecte les capacités de G et que
pour les n÷uds a et b, le ot entrant est bien égale au ot sortant. On dira que la valeur
du ot est égale à 3. C'est la somme des ots sortants de s (ou entrants dans t).

Voilà ce que donne l'algorithme de Ford-Fulkerson après exécution.


Première itération : supposons que le chemin augmentant trouvé soit p =< s, a, b, t >,
avec un ot maximum sur ce chemin de 1. On obtient alors le ot (à gauche) et le graphe
résiduel (à droite).

Youssef Qaraai E-MMIS, FSTE, UMI


3.3. PROBLÈME DE FLOTS 52

Deuxième itération : supposons que le chemin augmentant trouvé soit p =< s, a, t >,
avec un ot maximum sur ce chemin de 1. On obtient alors le ot et le graphe résiduel.

Troisième itération : supposons que le chemin augmentant trouvé soit p =< s, b, t >,
avec un ot maximum sur ce chemin de 1. On obtient alors le ot et le graphe résiduel.

Enn, à la quatrième itération, le chemin augmentant restant est p =< s, b, a, t >, avec
un ot maximum sur ce chemin de 1. On obtient alors le ot et le graphe résiduel comme
suit.

Il n'y a plus de chemin augmentant dans le graphe résiduel, on est donc à l'optimum.

Youssef Qaraai E-MMIS, FSTE, UMI


Chapitre 4

Réseaux de Pétri

L'objectif de cette section est de s'initier à un outil de modélisation très puissant et


très répondu notamment dans le monde recherche et développement : Réseaux de Pétri
(RdP). Cet outil permet essentiellement la modélisation des systèmes quelque soit leurs
domaines d'application (Informatique, Télécommunication, Production, etc). Nous pré-
senterons dans un premier temps quelques dénitions et formalismes concernant cet outil.
Ensuite nous discuterons de quelques propriétés très utiles dans l'analyse des RdPs et
des techniques de simplication permettant de les dégager facilement. Nous présenterons
également quelques structures de base fréquemment utilisées en applications.
4.1 Dénitions et formalismes
Le formalisme des réseaux de Pétri est un outil permettant l'étude de systèmes dynamiques
et discrets. Il permet d'obtenir une représentation mathématique modélisant le système.
L'analyse de cette représentation du réseau de Pétri peut révéler des caractéristiques im-
portantes du système concernant sa structure et son comportement dynamique.
Les Caractéristiques principales des RdP sont :
 Distribution des états et des changements d 'états dans le réseau.
 Dépendance et indépendance d'ensembles d'événements représentées explicitement.
 Représentation à diérents niveaux d 'abstraction.
 Vérication des propriétés possibles basées sur un formalisme mathématique.
Avant de passer à la dénition d'un RdP, rappelons les notions de base suivantes :
 Une condition est un prédicat logique d'un état du système. Elle est soit vraie, soit
53
4.1. DÉFINITIONS ET FORMALISMES 54
fausse.
 Les événements sont des actions se déroulant dans le système. Le déclenchement
d'un événement dépend de l'état du système.
 Un état du système peut être décrit comme un ensemble de conditions.
Un système peut être modélisé par événement-condition :
 Condition : modélisée à l'aide d'une place.
 Événement : modélisé à l'aide d'une transition.
 Satisfaction d'une condition : modélisée à l'aide de la présence ou non d'un nombre
de jetons à l'intérieur d'une place.
Formellement, un RdP se dénit comme étant un graphe biparti (deux familles diérentes
de sommets) :
 Les places p qui permettent de décrire les états du système modélisé. L'ensemble
i

de ces places est noté P


 Les transitions t qui représentent les changements d'états. L'ensemble de ces tran-
j

sitions est noté T


 Les places et transitions sont reliées par des arcs orientés.
Comme le graphe est biparti, on ne peut jamais relier deux places ou deux transitions.
La liaison existe uniquement entre place et transition ou l'inverse. D'où la terminologie
Réseaux de places et transitions.
Chaque place contient un nombre entier (positif ou nul) de marques ou jetons. Le nombre
de marque contenu dans une place p sera noté soit M (p ).
i i

Le marquage du réseau à l'instant k, noté M est déni par le vecteur de ces marquages
k

(M (p ), M (p ), ..., M (p )). Le marquage initial décrivant l'état initial du système mo-


k 1 k 2 k m

délisé est noté par M .0

Le marquage à un instant donné dénit l'état du RdP, ou plus précisément l'état du sys-
tème décrit par le RdP. L'évolution de cet état correspond donc à l'évolution du marquage.
Dénition 4.1.1. Un PdP est un quadruplet {P, T, P re, P ost} où :
 P est un ensemble ni de places (m = |P | nombre de places),
 T est un ensemble ni de transitions (n = |T | ; nombre de transitions),
 P re : P × T −→ N est une application dite d'incidence avant,
 P ost : P × T −→ N est une application dite d'incidence arrière.

Youssef Qaraai E-MMIS, FSTE, UMI


4.1. DÉFINITIONS ET FORMALISMES 55

Dénition 4.1.2. Un réseau marqué est un couple (R, M ) où R est un RdP et M est une
application de P dans N. Plus précisément M (p) sera égale au nombre de marques dans
une place p ∈ P .
Dans ce cadre M pourra être représentée par un vecteur de dimension m = |P |, P re et
P ost par des matrices de m = |P | lignes et n = |T | colonnes.
P re(., t) et P ost(., t) représenteront les colonnes des matrices P re et P ost relatives a la
transition t ∈ T .
P re(p, .) et P ost(p, .) représenteront les lignes des matrices P re et P ost relatives a la
transition p ∈ P .
On utilise également W = P ost − P re, appelée matrice d'incidence du réseau de Pétri.
Exemple : P = {1, 2, 3, 4, 5}, T = {a, b, c, d, e}
     
1 0 0 0 0 0 0 0 1 0 1
     
 0 1 0 0 0   1 0 0 0 0   0 
     
P re =  0 0 1 0 0  P ost =  1 0 0 0 1  et M =  0 
     
     
 0 0 0 1 0   0 1 0 0 0   0 
     
0 0 0 1 1 0 0 1 0 0 0
Ces matrices, ensembles et vecteurs dénissent un RdP N = {P, T, P re, P ost, M }.
Un RdP peut être représenté par un graphe biparti (c'est un graphe dont les sommets se
répartissent en deux ensembles disjoints : ici P et T et où aucun arc ne relie deux sommets
du même ensembles).
Dénition 4.1.3. Le graphe G = (P, T ; T , V ) biparti associé au RdP R = {P, T, P r, P ost}
est déni comme suit :
 ∀p ∈ P on a : T (p) = {t ∈ T : P re(p, t) > 0}
 ∀t ∈ T on a : T (p) = {p ∈ T : P ost(p, t) > 0}
 ∀(p, t) ∈ P × T on a : V (p, t) = P re(p, t) et V (t, p) = P ost(p, t).
où T permet d'obtenir les successeurs d'une place ou d'une transition, et V les poids des
arcs entre les places et transitions.
Youssef Qaraai E-MMIS, FSTE, UMI
4.1. DÉFINITIONS ET FORMALISMES 56

T −1 (p) = {t ∈ T : P ost(p, t) > 0}: ensemble des prédécesseurs de p


T (t) = {p ∈ T : P re(p, t) > 0} : ensemble des prédécesseurs de t.
−1

Les entrées d'une transition t sont les places de T (t) et les sorties d'une transition t sont
−1

les places T (t).


Les entrées d'une place p sont les transitions de T (p) et les sorties d'une place de p sont
−1

les transitions de T (p).


−1

Lorsqu'aucune valuation n'est précisée sur un arc, cela veut dire qu'elle sera égale par
défaut à 1.
Exemple 4.1.1. R = (P, T, P re, P ost, M ) et G = (P, T ; T , V )
T (p) = {t ∈ T : P re(p, t) > 0} :
T (1) = {a}
T (2) = {b}
T (3) = {c}
T (4) = {d}
T (5) = {d, e}
T (t) = {t ∈ T : P ost(p, t) > 0}
T (a) = {2, 3}
T (b) = {4}
T (c) = {5}
T (d) = {5}
T (e) = {3}

Youssef Qaraai E-MMIS, FSTE, UMI


4.2. DYNAMIQUE D’UN RDP 57

 
1
 
 0 
 
M = 0 
 
 
 0 
 
0

Considérons le RdP suivant :

Il est déni par : P = {p , p , p }, T = {a, b, c, d}, m = 3, n = 4 et :


1 2 3
       
0 1 0 0 1 0 0 0 1 −1 0 0 0
       
P re = 
 1 0 3 0  , P ost =  0 1 0 3  , W =  −1
    1 −3 3  , M =  3 
 
0 0 0 1 0 0 1 0 0 0 1 −1 0

4.2 Dynamique d'un RdP


Pour rendre compte de l'évolution du système modélisé, les réseaux de Pétri intègrent un
formalisme permettant de passer d'un marquage à un autre : c'est le franchissement des
transitions.
Dénition 4.2.1. Une transition t est franchissable si et seulement si :
∀p ∈ T −1 (t) : M (p) ≥ P re(p, t)

avec M (p) est le marquage de la place p et P re(p, t) le poids de l'arc reliant p à t.


Cette inégalité est appelée la pré-condition de franchissement de la transition t.

Youssef Qaraai E-MMIS, FSTE, UMI


4.2. DYNAMIQUE D’UN RDP 58
Si t est franchissable à partir de M , on notera : M (t > ou encore M → . t

Supposons que t est franchissable pour M . Si on franchie t, on obtient un nouveau mar-


quage M déni par :
0

0
∀p ∈ P : M (p) = M (p) − P re(p, t) + P ost(p, t)

Dans ce cas on note : M (t > M ou M → M . 0 t 0

Exemple : M = (1, 0, 0, 0, 0) , M = (0, 1, 1, 0, 0) , M


0
t
1
t
2 ,
= (0, 0, 1, 1, 0)t M3 = (0, 1, 0, 0, 1)t
M (a > ? oui
0

M (a > M ? oui
0 1

M (b > ? non
0

M (b > M ? oui
1 2

M (c > M ? oui
1 3

Si M (t1 > M 1 et que M 1(t2 > M 2, alors M (t1t2 > M 2 et on dira que s = t1t2 est une
séquence de franchissement pour le marquage M .
Dénition 4.2.2. Une séquence de transitions s ∈ T est franchissable pour M et donne ∗

le marquage M si et seulement si :
00

 s = θ =⇒ M = M avec θ désigne la séquence vide (aucune transition),


00

 s = s t avec s ∈ T et t ∈ T et (∃M ) : (M (s > M et (M (t > M )


0 0 ∗ 0 0 0 0 00

Dans ce cadre, nous utiliserons les notations suivantes :


 M (s) pour dire que s est une séquence de franchissement pour M
 M (s > M pour dire que M est le marquage résultant du franchissement de s.
0 0

Nous noterons s l'image commutative d'une sequence de transitions s. C'est le vecteur à


indices dans T tel que s(t) est le nombre d'occurrences de t dans s. s est appelée aussi
vecteur caractéristique de s.
Exemple T = {t , t , t }, s = t t t t t t t t t t ∈ T donc : s = (4 , 2 , 4 ) .
1 2 3 1 1 2 1 3 1 2 3 3 3

t1 t2 t3
t

Remarque 4.2.1. La donnée de la séquence de franchissement s détermine d'une manière


unique son image commutative s. La réciproque n'est pas pas vraie.
La succession des franchissements obtenus à partir d'un marquage initial peut être illustrée
et résumée sous forme de ce que l'on appelle "Equation d'état" ou "Equation fondamen-
tale".
Youssef Qaraai E-MMIS, FSTE, UMI
4.2. DYNAMIQUE D’UN RDP 59
Théorème 4.2.1. Soit R un RdP marqué et sk une séquence de transitions franchissables
à partir du marquage initial M . Le marquage M est obtenu à partir de M à l'aide de
l'équation fondamentale suivante :
0 k 0

Mk = M0 + W ∗ sk

avec : W est la matrice d'incidence du RdP R et M (s > M .


0 k k

L'équation d'état permet de calculer en une seule opération, sans parcourir le réseau, le
marquage obtenu après le franchissement de la séquence complète. De plus, les résultats
de l'équation fondamentale, même s'ils sont toujours calculables, n'ont de sens que si la
séquence représentée par s est eectivement réalisable. Ainsi, l'obtention d'un marquage
k

à partir d'un autre ne signie pas forcément l'unicité du vecteur caractéristique.


Remarque 4.2.2. M = M + W ∗ s n'implique pas que s soit une séquence de franchis-
0

sement pour M . Exemple :

 
1 −1 !
  1
W = −1 1  s = t1 t2 st = (1t1 , 1t2 ) =
 1
−1 1
     
1 1 −1 ! 1
0     1  
M =  0 ≥O
 +  −1 =
 0 1  
   1
1 −1 1 1
0
M = M + W (., t) ≥ 0 et t n'est pas franchissable avant de franchir t .
1 2

Principe de franchissement : Le franchissement (ou le tir) d'une transition ne peut


s'eectuer que si chacune des places en amont (en entrée) de cette transition contient
susamment de jetons (supérieur au poids de l'arc correspondant).
Soit t une transition franchissable (ou validée). Le principe de franchissement de t consiste
à retirer de chacune des places d'entrée un nombre de jetons qui est égale au poids de l'arc
correspondant, et à ajouter dans chacune des places en aval de sortie un nombre de jetons
Youssef Qaraai E-MMIS, FSTE, UMI
4.2. DYNAMIQUE D’UN RDP 60
qui est égale à la valuation de l'arc correspondant.

Après franchissement de t 1

- Une transition source est une transition qui ne comporte aucune place d'entrée; c'est une
transition toujours franchissable et le franchissement a lieu lorsque l'événement associé se
produit.
- Une transition puits est une transition qui ne comporte aucune place de sortie; le fran-
chissement d'une transition puits enlève des jetons de toutes les places d'entrée de la
transition.
t transition source et t transition puits
1 3

Après franchissement de t 1

Après franchissement de t 3

Youssef Qaraai E-MMIS, FSTE, UMI


4.2. DYNAMIQUE D’UN RDP 61

La transition t dans cet exemple n'est pas franchissable car M (p ) = 2 < 3. La condition
1

n'est pas vériée.

Franchissement de t
Lorsqu'une transition est validée, cela n'implique pas qu'elle sera immédiatement franchie;
cela ne représente qu'une possibilité de franchissement ou d'évolution du RdP.
Pour les RdP, il y a un seul franchissement à la fois : le réseau ne peut évoluer que par
franchissement d'une seule transition à la fois, transition choisie parmi toutes celles qui
sont validées à cet instant.
Exemple 4.2.1. On considère le RdP suivant muni d'un marquage initial M = (1, 0, 0, 0, 0) .
0
t

Youssef Qaraai E-MMIS, FSTE, UMI


4.2. DYNAMIQUE D’UN RDP 62
Pour ce marquage M , seule la transition T qui est validée et son franchissement conduit
au marquage M = (0, 1, 1, 0, 0) :
0 1
t
1
T1
M0 −→ M1
Pour M , il y a deux transitions validées T et T . On aura donc :
1 2 3
T2 t
M1 −→ M2 = (0, 0, 1, 1, 0)
M1 −→T3 M3 = (0, 1, 0, 0, 1)t
Pour M , seule la transition T est validée, son franchissement conduit à M :
Pour M2, seule la transition T3 est validée, son franchissement conduit à M4 : M
2 3 4

2 −→T3
M4 = (0, 0, 0, 1, 1)t
Pour M , seule la transition T est validée, son franchissement conduit également à M :
3 2 4
T2 t
M3 −→ M4 = (0, 0, 0, 1, 1)
Pour M , seule la transition T est validée et on a : M
4 4 4 −→T4 M5 = (1, 0, 0, 0, 0)t = M0 .
Donc l'ensemble des marquages accessibles à partir du marquage initia M est : 0

{M0 , M1 , M2 , M3 , M4 }

D'autre part, on peut retrouver n'importe quel marquage accessible à partir de M en


appliquant l'équation fondamentale. En eet cela est toujours possible car la séquence de
0

franchissement (et par conséquent son image commutative) est connue. Par exemple M est
accessible en franchissant la séquence s = T T T , donc s = (1, 1, 1, 0) . En déterminant
4
t

la matrice d'incidence W = P ost − P re, on aura :


4 1 2 3 4

     
1 −1 0 0 1   0
    1  
 0   1 −1 0
0 
   0 
  
  
  1 
M4 = M0 + W ∗ s4 =  0  +  1 0 −1 0  ∗  = 0 
   

     1 
  
 0   0 1 0 −1   1 

0
     
0 0 0 1 −1 1

Graphe de marquage : C'est une représentation graphique des possibilités d'évolution


du RdP. Elle est obtenue en partant du marquage initial et en étudiant à chaque marquage
obtenu M après le franchissement d'une transition t les diérentes possibilités d'évolution
i j

du RdP. Ceci correspond aux diérentes transitions validées par le marquage M . C'est un i

graphe dont :
 les sommets sont les marquages M i

Youssef Qaraai E-MMIS, FSTE, UMI


4.3. PROPRIÉTÉS DES RDP 63
 les liaisons sont les transitions franchies au cours de l'évolution.
Le graphe de marquage du RdP ci-dessus est représenté comme suit :

4.3 Propriétés des RdP


L'analyse des réseaux de Pétri est fondée sur plusieurs propriétés fondamentales permet-
tant de suivre et de maîtriser son comportement. Parmi ces propriétés, citons par exemple :
Bornitude : c'est une propriété dépendante du marquage initial. Pour un RdP borné,
on dira également que le nombre d'états accessibles à partir de l'état initial est ni.
Dénition 4.3.1. Soit R un RdP muni d'un un marquage initial M .
- Une place p de R est dite k-bornée si pour tout marquage M accessible depuis M , on
0

a : M (p ) ≤ k. Dans le cas contraire, la place p est dite non bornée.


i 0

Autrement dit, au cours de toutes les évolutions possibles de R, la plus grande valeur du
i i

marquage de p est égale à k.


- Le RdP R est dit borné pour le marquage M si quel que soit le marquage accessible M ,
i

ces places sont toutes bornée.


0

- Lorsque k = 1 on parle d'un RdP sauf ou binaire.


Exercice : Parmi ces RdPs, quel sont ceux qui sont bornés ou non.

Youssef Qaraai E-MMIS, FSTE, UMI


4.3. PROPRIÉTÉS DES RDP 64
Vivacité : La vivacité indique que le système représenté est sans blocage, mais également
qu'il n'existe pas de branche morte dans le modèle graphique donc pas de spécication.
incomplète.
Dénition 4.3.2. - Une transition t est vivante pour un marquage initial M , si pour tout
marquage accessible M accessible, il existe une séquence de franchissement s qui contient
j 0

la transition t à partir de M . Autrement dit quelque soit l'évolution, il subsistera toujours


une possibilité de franchir t à nouveau.
j

- Un RdP est vivant pour un marquage initial M si toutes ses transitions sont vivantes
j

pour M .
0

- Un RdP sauf et vivant est dit conforme.


0

- Un blocage est un marquage tel qu'aucune transition n'est validée.


La vivacité d'un RdP se voit comme notion trop forte : il existe plusieurs situations où
toutes les transitions participent un nombre limité de fois sans quelles soient vivantes. On
parle dans ce cas de la quasi vivacité.
Dénition 4.3.3. Une transition t est quasi vivante pour un marquage initial M , s'il
existe une séquence de franchissement qui contient t à partir de M . Un RdP est quasi
j 0

vivant si toutes ses transitions sont quasi vivantes.


j 0

Sur l'exemple suivant les transitions T et T sont vivantes alors que T ne l'est pas, en
2 3 1

eet, elle est franchissable uniquement au démarrage. Par contre, elles sont toutes quasi
vivantes. Par conséquent le RdP est uniquement quasi vivant.

RdP Propre Cette propriété indique le retour au marquage initial dans le réseau. En
eet, la plupart des processus ont un fonctionnement répétitif. Il est donc très important
de vérier si les réseaux de Pétri qui les représentent sont propres.
Youssef Qaraai E-MMIS, FSTE, UMI
4.3. PROPRIÉTÉS DES RDP 65
Dénition 4.3.4. Un RdP est propre si pour tout marquage M accessible à partir du
marquage initial M , il existe une séquence de franchissement s qui ramène au marquage
initial.
0

Parallélisme et Synchronisation : Sur le RdP suivant, nous remarquons qu'après


le franchissement de T et jusqu'au franchissement de T , nous avons des évolutions en
1 5

parallèle, de la place P à la place P d'une part et de la place P à la place P d'autre part.


1 4 2 5

Chacune de ces deux évolutions peut se faire à son rythme propre (la durée de l'exécution
d'un processus est indépendante de celle de l'autre). Cette structure permet de représenter
le fonctionnement des systèmes parallèles.
Bien que les places P et P peuvent être marquées l'une avant l'autre, le franchissement
5 4

de T ne peut s'eectuer que lorsque les deux places P et P sont marquées toutes les
5 4 5

deux ce qui correspond au fait que la poursuite de l'évolution du RdP ne peut s'eectuer
que lorsque les deux évolutions à savoir celle de P à P et celle de P à P sont terminées.
2 4 3 5

On parle dans ce cas de synchronisation.

Invariants : On cherche des propriétés indépendantes du marquage initial, donc décou-


lant directement de la structure du réseau. Un invariant de places (p-invariant) est une
fonction du marquage des places, ne dépendant pas du marquage initial du réseau et dont
la valeur est une constante. Il correspond à une contrainte sur les états du système qui
sera toujours vériée, quelles que soient ses évolutions.
Soit F un vecteur. A partir de l'équation fondamentale : M = M + W ∗ s, on aura
T 0
0
0
F T M = F T M0 + F T W ∗ s

La seule façon de se rendre indépendant des séquences de franchissement s, c'est d'annuler


le terme F W .
T

Youssef Qaraai E-MMIS, FSTE, UMI


4.3. PROPRIÉTÉS DES RDP 66
Une composante conservative d'un RdP est une solution de l'équation : F W = 0, avec W T

la matrice d'incidence du réseau. Une composante conservative, du point de vue graphique,


dénit un sous réseau de Petri.
Si F est solution de l'équation précédente, alors : F M = F M . F est appelé p-invariant
T 0 T
0

correspondant.
Exemple 4.3.1. : Déterminons les composantes conservatives et les invariants de places
du RdP suivant.

La matrice d'incidence du RdP est donnée par :


 
−1 1 0 0
 
 1
 −1 0 
 0
C =  −1 1 −3 3 
 
 
 0
 0 1 −1 

0 0 −1 1
 
f1
 
 f2 
Posons Donc : F on en déduit :
(
 
T
f1 − f2 + f3 = 0
F =  f3  .C = 0 ⇒
 

 f 
 3.f3 − f4 + f5 = 0
 4 
f5
     
1 0 0
     
 1   0   1 
     
F1 =  0  F2 =  0  F3 =  1 
     
     
 0   1   3 
     
0 1 0

Youssef Qaraai E-MMIS, FSTE, UMI


4.3. PROPRIÉTÉS DES RDP 67
   
m1 1
   
 m2   0
On a : Donc :

   
M =  m3  et M0 =  3
   

   
 m   0 
 4   
m5 1
T T
F1 M = F1 M0 ⇒ m(p1 ) + m(p2 ) = 1
F2T M = F2T M0 ⇒ m(p4 ) + m(p5 ) = 1
F3T M = F3T M0 ⇒ m(p2 ) + m(p3 ) + 3m(p4 ) = 3
D'où, il s'agit de 3 p-invariants F , F et F .
1 2 3

Un invariant de transition est une séquence de franchissements de transitions qui ne mo-


die pas le marquage du réseau. Un tel invariant correspond à une séquence cyclique
d'événements qui peut être répétée indéniment. Tout invariant de transition doit être une
séquence s vériant : W ∗s. Toute solution de de cette équation est appelée composante ré-
pétitive stationnaire. Si s est le vecteur caractéristique d'une séquence de franchissements
s, eectivement franchissable à partir d'un marquage accessible, alors cette séquence est
un invariant de transitions.
Exercice d'application : Deux feux tricolores coordonnent la circulation à l'intersection
de deux boulevards. Un feu de circulation ne peut être vert que si l'autre feu se trouve au
rouge. On considère initialement que le premier feu est rouge alors que le second est vert.
1. Donner une représentation sagittale du RdP associé.
2. Étudier l'évolution de ce réseau.
3. Vérier la satisfaction ou non de toutes les propriétés vues dans ce chapitre.
4. Déterminer les invariants du RdP.
5. Interpréter les résultats obtenus.
Indication : commencer par la modélisation d'un seul feu, puis étendre ce résultat au cas
de deux feux.

Youssef Qaraai E-MMIS, FSTE, UMI

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy