Cours TG LSTI
Cours TG LSTI
Cours TG LSTI
Polycopié de cours :
Graphes et réseaux de Pétri
A.U. 2020-2021
Sommaire
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.
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}
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
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
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
A est formé de tous les arcs (ou arêtes) de G ayant leurs extrémités dans S (c'est
0 0
Soit G = (V, E) un graphe (orienté ou non). On note G = G−v le graphe induit lorsqu'on
0
l'arête e et G = G + e.
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
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
(
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
0 1 0 0
1 0 0 3
M=
0 0 2 1
0 0 0 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
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
Graphes cycliques :
Le graphe cyclique d'ordre n est le graphe à n sommets S = {s , ..., s } tels que les arêtes
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
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
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
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
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
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
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
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
é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
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.
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 :
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.
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
- 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
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
∗
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
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
δ(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
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 :
L'écart entre χ et son majorant est donc conséquent, et tend même vers l'inni quand
n
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
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
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|).
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
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
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
Considérons un arbre de coût minimal T qui contient A et pas les arêtes refusées pré-
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.
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.
de s à s et on note d(s, s ) le minimum des valuations des chemins (resp. chaînes) allant
0 0
cas se présentent :
il n'y a pas de chemins ( chaînes) de s à s ;
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
q ≤ n qui n'est pas un plus court chemin entre s et s . Il existe un autre chemin p q
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
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
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
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
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
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
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
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
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
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
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
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).
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
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) ;
+
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
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.
Réseaux de Pétri
Le marquage du réseau à l'instant k, noté M est déni par le vecteur de ces marquages
k
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.
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
Les entrées d'une transition t sont les places de T (t) et les sorties d'une transition t sont
−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}
1
0
M = 0
0
0
0
∀p ∈ P : M (p) = M (p) − P re(p, t) + P ost(p, t)
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
Mk = M0 + W ∗ sk
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
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
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
La transition t dans cet exemple n'est pas franchissable car M (p ) = 2 < 3. La condition
1
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
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 }
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
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
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
Autrement dit, au cours de toutes les évolutions possibles de R, la plus grande valeur du
i i
- Un RdP est vivant pour un marquage initial M si toutes ses transitions sont vivantes
j
pour M .
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
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
correspondant.
Exemple 4.3.1. : Déterminons les composantes conservatives et les invariants de places
du RdP suivant.