Vous êtes sur la page 1sur 71

Introduction

Généralités sur les graphes


Parcours et coloration des graphes
Optimisation dans les graphes

Théorie des graphes

Pr. Youssef QARAAI

Filière Master: Systèmes d’information décisionnels et imagerie,


Module M16: Théorie des graphes et Techniques d’optimisation

A.U. 2022 / 2023

Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma


Introduction
Généralités sur les graphes
Parcours et coloration des graphes
Optimisation dans les graphes

Plan de l’exposé

1 Introduction

2 Généralités sur les graphes

3 Parcours et coloration des graphes

4 Optimisation dans les graphes

Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma


Introduction
Généralités sur les graphes
Parcours et coloration des graphes
Optimisation dans les graphes

La théorie des graphes : discipline mathématique et informatique


qui étudie les graphes, lesquels sont des modèles abstraits de
dessins de réseaux reliant des objets.
L’étude des graphes se réalise sous deux points de vues
complémentaires :
1 Propriétés structurelles de graphes ou de familles de graphes
2 L’étude algorithmique de certaines propriétés
On distingue les sommets et les arcs ou arêtes (communication
entre sommets) qui mettent en relation les sommets. On associe
parfois aux arcs des caractéristiques, qui permettent d’exprimer
des distances, des coûts, des temps, des flux, ....

2/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes
Parcours et coloration des graphes
Optimisation dans les graphes

Plusieurs problèmes : informatique, ingénierie, biologie, sciences


sociales, intelligence artificielle, peuvent se représenter en termes de
relations (binaires) entre objets :
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.
réseaux de régulation génétique.
ordonnancement d’un projet : les sommets représentent les
différentes tâches composant le projet, deux tâches sont reliées
par une flèche si la deuxième ne peut pas commencer avant que
la première soit terminée.
3/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes
Parcours et coloration des graphes
Optimisation dans les graphes

Le formalisme des graphes permet de décrire de nombreux problèmes


souvent de manière simple, mais qui peuvent s’avérer difficile à
résoudre.
étant donné un graphe, vérifier s’il possède certaines propriétés
étant donné un graphe, déterminer une partie possédant
certaines propriétés.
construire des graphes possédant certaines propriétés.
étant donné un graphe, formuler et résoudre certains problèmes
d’optimisation bien précisés.

4/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Définition
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.
0 0 0
Un arc a = (s, s ) est aussi noté s → s , s est l’origine de a et s
l’extrémité.
0 0
On dit que s est le successeur de s et s le prédécesseur de s .

Remarque
Il se peut qu’il y ait plusieurs arcs entre deux mêmes sommets. On
parle alors de graphe orienté multi-arcs : G = (S , A, p, q ), avec
p : A → S et q : A → S qui à chaque arc a ∈ A associe son
prédécesseur p(a) et son successeur q (a).

5/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

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

6/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Définition
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éfinir 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

7/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

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}
8/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

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) toute fonction 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é.
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é.

9/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Soit G = (S , A) un graphe (orienté ou non).


0 0 0 0
Un sous graphe de G est un graphe G = (S , A ) tel que S ⊂ S
0
et A ⊂ A.
0 0 0
Un sous graphe G = (S , A ) d’un graphe G = (S , A) est un sous
0
graphe induit si A est formé de tous les arcs (ou arêtes) de G
0
ayant leurs extrémités dans S :
0 0 0 0 0
∀s, s ∈ S , (s, s ) ∈ A ⇔ (s, s ) ∈ A.
0 0 0
Un sous-graphe G = (S , A ) d’un graphe G = (S , A) est
0
couvrant s’il contient tous les sommets de G (c’est à dire S = S).
Exemple de graphe, sous-graphe quelconque et sous-graphe induit.

10/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Différents modes de représentation peuvent être envisagées suivant la


nature des traitements que l’on souhaite appliquer aux graphes
considérés.
Représentation sagittale : c’est la représentation sous forme d’un
dessin. Un même graphe peut avoir des représentations
sagittales en apparence très différentes.
Définition par propriété caractéristique : une même propriété
caractérise les relations entre les différents sommets.
Exemple : On considère le graphe G = (S , A) avec
0 0
S = {1, 2, 3, 4, 5, 6} et ∀s, s ∈ S on a : (s, s ) ∈ A ⇐⇒ s divise
0
strictement s . Sa représentation sagittale est :

11/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Listes d’adjacence : représentation à l’aide d’une table où chaque


ligne correspond à un sommet et comporte les successeurs (ou
les prédécesseurs) de ce sommet.
En pratique pour stocker un graphe orienté G = (S , A), on
ordonne les sommets s1 , ..., sn et le graphe G est représenté par
deux listes dites d’adjacence (LS , TS ) définies par :
1 LS : liste de longueur |A| appelée liste des successeurs, elle
contient les successeurs du sommets s1 , puis ceux de s2 jusqu’à
ceux de sn , si un sommet n’a pas de successeur, on passe au
sommet suivant.
2 TS : 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 TS est définie comme suit :
TS (1) = 1
pour si ∈ S, si si possède un successeur alors TS (si ) est le
numéro de la case de LS du premier successeur de si , sinon
TS (si ) = TS (si +1 )
TS (n + 1) = |A| + 1
12/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Pour décrire un graphe, il suffit de donner le dictionnaire des


successeurs ou des prédécesseurs.

Sommets Successeurs Sommets Prédecesseurs


1 2 1 2
2 1, 4 2 1
3 3, 4 3 3
4 0/ 4 2, 3

La représentation sous forme de listes est :


LS = (2, 1, 4, 3, 4) et TS = (1, 2, 4, 6, 6)
13/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Matrice d’adjacence : Soit G = (S , A) un graphe dont les


sommets sont numérotés de 1 à n. La matrice d’adjacence de G
est la matrice carrée (mi ,j )(i ,j )∈[1,n]2 définie par :

k si k arcs de i vers j
mi ,j =
0 sinon

Si le graphe n’est pas orienté, la matrice est symétrique.

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

14/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Quelques classes de graphes non-orientés dont la plupart sont


simples (non multi-arêtes et sans boucle).
Graphe isolé : le graphe isolé d’ordre n est un graphe à n
sommets sans arête, on le note In .
Graphe cyclique : le graphe cyclique d’ordre n est le graphe à n
sommets S = {s1 , ..., sn } tels que les arêtes sont
A = {{si , si +1 } : i ∈ [1, n]} ∪ {{sn , s1 }}, on le note Cn . Avant.calcul

C3 C5 C6

15/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Graphe complet : le graphe complet d’ordre n est le graphe


simple à n sommets dont tous les sommets sont reliés deux à
deux, on le note Kn . Avant.calcul

K5 K7
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 .

16/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Définition
Soit G = (S , A) un graphe orienté (resp. non orienté). Un chemin
(resp. une chaîne) dans G est une suite de sommets
C = (s0 , s1 , s2 , ..., sk ) telle qu’il existe un arc (resp. une arête) entre
chaque couple de sommets successifs de C. Ce qui s’écrit :
si G = (S , A) est orienté alors pour tout i ∈ [0, k − 1] on a
(si , si +1 ) ∈ A
si G = (S , A) est non orienté alors pour tout i ∈ [0, k − 1] on a
{si , si +1 } ∈ A.
On appellera :
Circuit dans un graphe orienté : un chemin simple finissant à son
point de départ.
Cycle dans un graphe non orienté : une chaîne simple qui se
termine à son point de départ.

17/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

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
Dans le cas d’un graphe valué, la longueur d’un chemin correspond à
la somme des valeurs de chaque arc (arête) du chemin (chaîne).

Exemple : On peut calculer le diamètre des graphes classiques :


diamètre de Kn : 1 Arrière.graphe
diamètre de Kn,m : 2 Arrière.graphe
n
diamètre de Cn : [ ] Arrière.graphe
2

18/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Définition
Un graphe non-orienté est connexe si pour tout couple de
0 0
sommets s et s , il existe une chaîne reliant s à s .
Un graphe orienté est connexe si le graphe non orienté associé
est connexe. Un graphe orienté est fortement connexe si pour
0 0
tout couple de sommets s et s , il existe un chemin reliant s à s .

Le graphe à gauche est fortement connexe tandis que celui de droite


est connexe mais non fortement connexe.

19/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Tout graphe peut être décomposer en sous graphes connexes. Soit


G = (S , A) un graphe non orienté, on définit la relation d’équivalence
RG sur S par
0 0
sRG s ⇐⇒ il existe une chaîne reliant s à s

Définition
É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 :
0 0
∀s ∈ C il existe une chaîne (resp. un chemin) reliant s à s
0 0
∀s ∈ S \C, il n’existe pas de chaîne (resp. chemin) reliant s à s

20/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

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
0 0
C = {s ∈ S : il existe une chaîne reliant s à s }
La composante fortement connexe C qui contient un sommet
0 0
s ∈ S est C = {s ∈ S : il existe un chemin reliant s à s et un
0
chemin reliant s à s}

21/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Les composantes connexes de G1 sont {A, C , E } et {B , D , F } tandis


que celles de G2 sont {2, 6}, {3, 5, 7} et {4}.

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

G3 G4
22/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Définition
Un arbre est un graphe non orienté, connexe, sans cycle.
Une forêt est un graphe non orienté sans cycle (chaque
composante connexe 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
Soit G un graphe non orienté à n sommets. On a les équivalences :
G est connexe et sans cycle
G est connexe et a n − 1 arêtes
G est connexe et la suppression d’une 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.

23/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Définition
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
Un graphe orienté est un arbre enraciné si et seulement si
il est connexe,
il a un unique sommet sans prédécesseur (la racine),
tous ses autres sommets ont exactement un prédécesseur.

24/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction Notion de graphe
Généralités sur les graphes Représentation des graphes
Parcours et coloration des graphes Quelques classes de graphes
Optimisation dans les graphes Chemin, connexité et arbre

Proposition
Un arbre à n sommets peut être défini par une liste de n éléments,
appelée liste des prédécesseurs, qui contient le prédécesseur de
 (ou 0/ pour la racine de l’arbre) et on a : ∀s ∈ S
chaque sommet
0/ si s = racine
Pred (s) =
s0 si (s0 , s) ∈ A

La liste Pred = [0,


/ 1, 1, 2, 3, 2, 3, 5, 3, 6, 4, 4, 7, 8, 14, 10] représente :

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).
25/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Principe :

Un parcours de graphe est un algorithme qui consiste à explorer


les sommets de proche en proche à partir d’un sommet initial.
Si G = (S , A) est un graphe et s ∈ S un sommet de S, un
parcours de 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.

26/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Algorithme de parcours :

Algorithme
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= 0/ 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.

27/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

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 une file dans laquelle on
ajoute les voisins non encore explorés par le bas (enfiler) et on
retire les sommets à traiter par le haut (défiler).
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 BFS (Breadth First Search) :

28/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Algorithme de parcours en largeur (BFS) :


Algorithme
Données : Un graphe orienté G = (S , A) et un sommet s ∈ S
L = File des sommets à traiter (vide au départ) ;
P = Liste de taille |S | où toutes les valeurs sont affectées de 0/ (liste
des prédécesseurs dans l’arbre de parcours) ;
Marquer le sommet s et l’enfiler dans L ;
Tant que L 6= 0/ faire
défiler x le premier sommet de L ;
Pour y voisin non marqué de x faire
Marquer y ;
P (y ) ← x
Enfiler y dans L ;
Fin Pour ;
Fin Tant que.
29/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Remarque
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 file,
on retire les éléments par le haut de la file.

Le BFS explore tous les sommets accessibles depuis le sommet


initial.
Il permet de calculer les composantes connexes du graphe.
Lors de ce parcours, les sommets sont explorés par distance
croissante au sommet de départ.
On peut utiliser l’algorithme pour résoudre l’un des problèmes de
cheminement : calculer le plus court chemin entre deux sommets.

30/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Pour 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.

31/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Parcours en profondeur :

La recherche progresse à partir d’un sommet s en s’appelant


récursivement pour chaque sommet voisin de s.
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.
L’algorithme permettant de récupérer l’arbre de parcours en
profondeur porte le non de DFS (Depth First Search) :

32/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Algorithme de parcours en profondeur :


Algorithme
Données : Un graphe orienté G = (S , A) et un sommet s ∈ S
L = Pile des sommets à traiter (vide au départ) ;
P = Liste de taille |S | où toutes les valeurs sont affectées de 0/ (liste
des prédécesseurs dans l’arbre de parcours) ;
Enfiler s dans L ;
Tant que L 6= 0/ 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.
33/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Les sommets à gauche sur ce graphe seront choisis avant ceux de


droite. Si l’algorithme utilise effectivement un marquage des sommets
pour éviter de tourner indéfiniment en boucle, on aura alors l’ordre de
visite suivant : A, B, D, F , E, C, G.

Si l’on n’utilise 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éfiniment, puisque l’algorithme ne peut sortir de la boucle
A, B , D , F , E et n’atteindra donc jamais C ou G.

34/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Cet algorithme admet aussi une formulation récursive plus simple à


programmer :

Remarque
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.

La complexité en temps de l’algorithme 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.

35/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Motivation :
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 :

Le nombre minimal de groupes nécessaire correspond au nombre


chromatique du graphe des incompatibilités.

36/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Principe et encadrement :

Définition
Soit G = (S , A) un graphe non orienté simple (sans boucle et non
multi-arêtes).
Une coloration des sommets de G consiste à attribuer une
couleur (ou un nombre) à chaque sommet de telle sorte que deux
sommets adjacents soient de couleurs différentes.
Un graphe G est k-coloriable s’il existe une coloration avec k
couleurs.
Le nombre chromatique du graphe G, noté χ(G) est le nombre
minimal de couleurs nécessaire pour colorier un graphe.

37/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Obtenir une coloration à k couleurs d’un graphe G permet d’affirmer


que χ(G) ≤ k . La difficulté réside pour trouver une minoration, on
utilise souvent la proposition suivante :

Proposition
0
Soit G un graphe et G un sous graphe de G, on a
0
χ(G ) ≤ χ(G)

De plus nous avons une majoration sous cette forme

Proposition
Soit ∆(G) le degré maximal d’un graphe G, on a :

χ(G) ≤ ∆(G) + 1

38/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Définition
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.

les sommets d’une même clique doivent être coloriés d’une


couleur différente, ainsi trouver une clique à k sommets permet
d’affirmer que χ(G) ≥ k ;

les sommets d’un même ensemble stable peuvent être coloriés


de la même couleur.
39/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

On a donc l’encadrement suivant :


Proposition
Soit G = (S , A) un graphe simple, on a :
1 ω(G) ≤ χ(G) ≤ ∆(G) + 1
|S |
2 [ ] ≤ χ(G) ≤ |S | − α(G) + 1
α(G)
0 0
3 χ(G) ≤ max{δ(G )} ≤ ∆(G) + 1 avec G est un graphe induit de
0 0
G et δ(G ) est le degré maximal des sommets de G

39/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Algorithme glouton :

coloration comme une fonction des sommets dans l’ensemble


des entiers.
Prendre les sommets les uns après les autres et pour chaque
sommet s, affecter la couleur minimale qui n’apparait pas dans
les voisins coloriés de s.

Algorithme
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.

40/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Algorithme de Welsh-Powell :
On colorie les sommets qui imposent le plus de contraintes (plus haut
degré) et on utilise la même couleur là ou cela est possible.

Algorithme
Données : Un graphe G = (S , A) avec couleur-courante ;
Résultats : Une coloration Éliminer s de L ;
φ :→ N∗ de G V ← voisins de s ;
L ← liste des sommets ordonnés Pour x ∈ L faire
par degré décroissant ; Si x ∈
/ V alors
couleur-courante ← 0 ; Colorier x avec la
Tant que L 6= 0/ faire couleur-courante ;
couleur-courante ← Éliminer x de L ;
couleur-courante +1 Ajouter les voisins de x à V ;
Colorier s le premier sommet de L Fin Si ; Fin Pour ; Fin Tant que.

41/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Exemple :
Considérons le graphe G (à gauche) :
Pour minorer χ(G),on cherche un sous graphe complet d’ordre
maximum. On trouve A,C,D,H (à droite), il est d’ordre 4.
On a ainsi 4 ≤ χ(G). Pour majorer χ(G), il faut calculer le degré
maximum de ses sommets. Il s’agit de 5 (degré des sommets A
et C). On a finalement 4 ≤ χ(G) ≤ 6

42/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

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 colorie 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.

43/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

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 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 enfin le dernier sommet non coloré, i.e. H, avec une
autre couleur, par exemple le jaune.

44/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Notre coloration finale 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 suffisent
pour colorier G.

45/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Généralités sur les graphes Parcours de graphes
Parcours et coloration des graphes Coloration de graphes
Optimisation dans les graphes

Remarque
l’algorithme de Welsh et Powell ne retournait pas toujours une
coloration optimale.
Par application directe de l’algorithme sur cet exemple, on trouve 4
couleurs, tandis qu’une approche manuelle (ensembles stables par
exemple) fournit un nombre plus petit qui est égale à 3 couleurs.

46/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

G = (S , A) un graphe valué de poids λ : A → R.


0 0 0 0
Le poids d’un sous graphe G = (S , A ) : λ(G ) = ∑ λ(a)0
a∈A
Un graphe simple valué est donné par la matrice des poids
W = (wi ,j )(i ,j )∈S 2 avec wi ,j est la valeur de l’arc allant de i à j.
Objectif : Chercher un sous graphe avec une certaine propriété qui
minimise ou maximise le poids du graphe.
arbres couvrants à poids optimaux
plus courts chemins
ordonnancement des tâches lors de la gestion d’un projet
flot circulant dans un réseau

47/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

But : transformer un graphe en un arbre bien précisé.

Définition
Un arbre couvrant d’un graphe non orienté G = (S , A) est un sous
graphe de G dont les sommets sont S et qui est connexe et sans cycle.

Parmi les arbres couvrants, il en existe un de poids minimal.


Deux approches pour résoudre ce problème :
1 Approche locale : à chaque étape, 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.
2 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.

48/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Algorithme de Prim :
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
Données : Un graphe non orienté marqués faire
G = (S , A, λ) valué et un sommet a ← arête de poids minimal
s∈S joignant un sommet marqué x et
0
Résultat : Un arbre T = (S , A ) un sommet non marqué y ;
Poids ← 0 (Poids total de l’arbre Marquer y ;
0 0
couvrant) ; A ← A ∪ {a }
0
A ← 0/ ; Poids ← Poids + λ(a)
Marquer s ; Fin Tant que.
Tant qu’il reste des sommets non

49/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Algorithme de Kruskal :

Ranger les arêtes d’un graphe, puis retirer une à une selon cet ordre
et les ajouter à l’arbre couvrant en ne créant pas de cycle.

Algorithme
Données : Un graphe non orienté reliés à s)
0
G = (S , A, λ) valué et un sommet Pour {s, s } ∈ A dans l’ordre
s∈S croissant faire
0 0
Résultat : Un arbre T = (S , A ) Si E (s) 6= E (s ) Alors
0 0 0
Poids ← 0 (Poids total de l’arbre A ← A ∪ {s , s }
0
couvrant) ; Poids ← Poids + λ({s, s })
0 0
A ← 0/ ; F ← E (s) ∪ E (s )
Pour s ∈ S faire Pour z ∈ F faire E (z ) ← F
E (s) ← {s} (E (s) : sommets FinPour ; FinSi ; FinPour ; FinPour.

50/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Exemple :

Les deux algorithmes Kruskal et Prim donnent le même arbre


couvrant de poids minimum qui est égale à 18.

51/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Définition
0
Soient G = (S , A, λ) un graphe valué et s, s ∈ S deux sommets de G.
0 0
On appelle distance de s à s et on note d (s, s ) le minimum des
0
valuations des chemins (resp. chaînes) allant de s à s .
Un circuit absorbant est un circuit de valuation (longueur)
négative. On définit de la même manière un cycle absorbant
dans un graphe non orienté.

Objectif : étant donné un sommet s, déterminer pour chaque sommet


0 0
s la distance et un plus court chemin de s à s .

52/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Proposition
Soit G un graphe orienté valué n’ayant pas de circuits absorbants, et s,
0 0 0
s ∈ G. S’il existe un chemin allant de s à s , alors la distance d (s, s )
0
est bien définie et il existe au moins un plus court chemin de s à 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 fin de l’algorithme donne d (s, x ) pour tout x ∈ S ;
Pred qui à la fin de l’algorithme donne le prédécesseur du
sommet x ∈ S dans l’arbre des plus court chemins.

53/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Principe :

1 On initialise les tableaux Dist et Pred


2 On calcule Dist (s) et Pred (s) par approximations successives,
ce qui signifie qu’à chaque étape, on essaye d’améliorer les
valeurs obtenues précédemment ;
3 L’amélioration, au niveau local, se vérifie ainsi : pour un sommet s
0 0
et un successeur s de s, on compare la valeur Dist (s ) obtenue
à l’étape précédente avec la valeur qu’on obtiendrait en passant
0
par s, c’est-à-dire Dist (s) + W (s, s ) on a alors deux cas :
Si cette deuxième valeur est plus petite, alors
0 0 0
Dist (s ) ← Dist (s) + W (s, s ) et Pred (s ) ← s ;
Sinon on ne fait rien. Cette technique est appelée technique du
relâchement.

54/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Algorithme de Bellman-Ford : Graphe quelconque


Algorithme
Données : W matrice des k ← 1;
distances d’un graphe orienté Tant que k ≤ n et il y’ a eu des
G = (S , A) et un sommet s modifications à l’étape
Résultat : l’algorithme donne précédente faire
deux tableaux de taille 1 × |S | : Pour x ∈ S faire
Dist : table des distances à Pour y successeur de x faire
partir de s ; Si Dist (x ) + W (x , y ) < Dist (y )
Pred : table des Alors
prédécesseurs dans le Dist (y ) ← Dist (x ) + W (x , y )
chemin optimal depuis s ; Pred (y ) ← x ;
Pred ← 0/ ; k ← k +1;
Dist ← +∞ ; FinSi ; FinPour ; FinPour ;
Dist (s) ← 0 ; FinTantque.
55/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

On cherche les plus courts chemins depuis le sommet A.

Pour récupérer les plus courts


chemins du sommet A vers tous
les autres, on remonte de la
dernière ligne en précisant pour
chaque sommet son Préd, et ainsi
de suite jusqu’au sommet source.

56/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Algorithme de Bellman : Graphe sans circuit

Algorithme
Données : W matrice des Pred ← 0/ ;
distances d’un graphe orienté Dist ← +∞ ;
G = (S , A), un sommet s et une Dist (s) ← 0 ;
fonction niveau r : S → N donné Pour k = r (s) + 1 jusqu’à max(r )
par l’algorithme de tri topologique. faire
Résultat : l’algorithme donne Pour y ∈ S : r (y ) = k faire
deux tableaux de taille 1 × |S | : Pour x prédécesseur de y faire
Dist : table des distances à Si Dist (x ) + W (x , y ) < Dist (y )
partir de s ; Alors
Pred : table des Dist (y ) ← Dist (x ) + W (x , y )
prédécesseurs dans le Pred (y ) ← x ;
chemin optimal depuis s FinSi ; FinPour ; FinPour ; FinPour.

57/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Même exemple traité par l’algorithme de Bellman-Ford : plus courts


chemins depuis A. On commence par ordonner les sommets puis on
applique l’algorithme :

58/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Algorithme de Dijkstra : Graphe à valuations positives


Algorithme
Données : W matrice des D ← 0/ (listes des sommets déjà
distances d’un graphe orienté traités) ;
G = (S , A) et un sommet s Tant que D 6= S faire
Résultat : l’algorithme donne x ← sommet de S \ D tel que
deux tableaux de taille 1 × |S | : Dist (x ) minimal ;
Dist : table des distances à D ← D ∪ {x } ;
partir de s ; Si y ∈/ D et y successeur de x
Pred : table des faire
prédécesseurs dans le Si Dist (x ) + W (x , y ) < Dist (y )
chemin optimal depuis s Alors
Pred ← 0/ ; Dist (y ) ← Dist (x ) + W (x , y )
Dist ← +∞ ; Pred (y ) ← x ;
Dist (s) ← 0 ; FinSi ; FinPour ; FinTantque.
59/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Cherchons les plus courts chemins depuis le sommet A.

60/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Remarque
Le tableau ci-dessous récapitule les graphes sur lesquels chaque
algorithme 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 )

61/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Définition
Un réseau de transport R = (S , A, s, p, c ) est définit par :
un graphe orienté G = (S , A) sans circuit,
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.

objectif : optimiser le parcours global du réseau en tenant compte des


contraintes sur les capacités limitées de chaque partie du réseau.
62/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Définition
Soit un réseau de transport R = (S , A, s, p, c ).
1 Un flot sur R est une fonction f : A → R+ :
pour tout arc a ∈ A, f (a) ≤ c (a) ;
pour tout s, p ∈ S et x ∈ S \ {s, p} on a (loi de Kerchoff)

∑ f (z , x ) = ∑ f (x , y )
z ∈Pred (x ) y ∈Succ (x )
| {z } | {z }
flot entrant dans x flot sortant de x

2 On appelle valeur du flot la quantité

v (f ) = ∑ f (s, y ) = ∑ f (z , p)
y ∈Succ (s) z ∈Pred (p)

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

63/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Définition
Une coupe sur un réseau de transport R est un sous-ensemble X
de S tel que : s ∈ X et p ∈
/ X.
La capacité d’une coupe est la somme des capacités des arcs
allant de X à S \ X , notée par

C (X ) = ∑ c (x , y )
(x ,y )∈A, x ∈X , y ∈X

X X C (X )
{s} {a , b , p } 3
{s, a} {b , p } 5
{s, b} {a , p } 3
{s, a, b} {p } 4

64/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Il est clair qu’un flot 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
Soit R = (S , A, s, p, c ) un réseau de transport, il existe un flot maximal
f tel que
v (f ) = min C (X )
coupe X

65/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Algorithme de Ford-Fulkerson :

Définition
Étant donné un réseau de transport R = (S , A, s, p, c ) et un flot f , un
chemin γ de s à p est appelé chemin augmentant si pour tout arc a du
chemin γ, on a f (a) < c (a).
On appelle valeur résiduelle d’un chemin γ de s à p le nombre
r (γ) = mina∈γ {c (a) − f (a)}.

Algorithme
Données : Un réseau de transport R = (S , A, s, p, c )
Résultat : Un flot maximal
f ← flot de départ (éventuellement nul) ;
Tant qu’il existe un chemin γ augmentant faire
augmenter f le long du chemin γ ;
Fin Tant que.
66/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Le graphe (à gauche)est un réseau avec ses capacités et un flot (à


droite) dit réalisable dans ce graphe. On constate bien que le flot
respecte les capacités de G et que pour les nœuds a et b, le flot
entrant est bien égale au flot sortant. On dira que la valeur du flot est
égale à 3. C’est la somme des flots sortants de s (ou entrants dans t).

67/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Itération 1 : supposons que le chemin augmentant trouvé soit


p =< s, a, b, t >, avec un flot maximum sur ce chemin de 1. On
obtient alors le flot (à gauche) et le graphe résiduel (à droite).

Itération 2 : supposons que le chemin augmentant trouvé soit


p =< s, a, t >, avec un flot maximum sur ce chemin de 1. On obtient
alors le flot et le graphe résiduel.

68/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma
Introduction
Arbres de recouvrement
Généralités sur les graphes
Plus court chemin
Parcours et coloration des graphes
Problème du flot
Optimisation dans les graphes

Itération 3 : supposons que le chemin augmentant trouvé soit


p =< s, b, t >, avec un flot maximum sur ce chemin de 1. On obtient
alors le flot et le graphe résiduel.

Itération 4 : le chemin augmentant restant est p =< s, b, a, t >, avec


un flot maximum sur ce chemin de 1. On obtient alors le flot 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.
69/69 Pr. Youssef QARAAI Lab MAIS, Equipe MMIS, FSTE-UMI y.qaraai@fste.umi.ac.ma

Vous aimerez peut-être aussi