Vous êtes sur la page 1sur 158

Support de Cours : Algorithmique de graphe &

optimisation

 Enseignante: Naziha Dhibi

 Niveau: 1ére année II (Ingénieur en Informatique)

 Horaire: 1.5 heure par semaine

 Etablissement: École supérieure d’ingénieure privé de Gafsa


dhibi.naziha@gmail.com
Résumé & Objectif
 Résumé du cours :

 Le cours «Théorie des graphes» couvre les notions et les concepts de base de la théorie

des graphes, ainsi que les algorithmes fondamentaux d’optimisation pour résoudre le
problème de recherche d'un plus court chemin.
 Objectifs:

 Introduction aux concepts de la théorie des graphes, des algorithmes fondamentaux sur
les graphes, et à leurs applications
 Définir les Problèmes de coloriage et d’optimisation sur les graphes, algorithmes : arbre
de coût minimum, chemins maximaux ou minimaux.
 Apprendre comment résoudre le problème de recherche d'un plus court chemin par des
algorithmes d’optimisation.
 Présenter les réseaux de transport, flots, circuits, séparateurs; algorithmes de Ford-
Fulkerson, Problèmes d’affectation, couplages maximaux.
2
 Apprendre comment planifier des projets par les réseaux.
Plan du cours

 Chapitre 1 : Concepts fondamentaux de la théorie des graphes

 Chapitre 2 : Cheminements et connexités

 Chapitre 3 : Arbres et arborescences

 Chapitre 4 : Plus courts chemins

 Chapitre 5 : Réseaux de transport

 Bibliographie

3
Chapitre1: Concepts fondamentaux de la théorie
des graphes

4
Concepts fondamentaux de la théorie des graphes

I. Pourquoi la théorie des graphes?


 Modélisation

 Plusieurs problèmes dans différentes disciplines :


• Réseaux informatique,

• Télécommunications,

• Chimie,

• Applications industrielles, …

 Un graphe peut représenter simplement la structure, les connexions, les


cheminements possibles d’un ensemble complexe comprenant un grand nombre
de situations
 Un graphe est une structure de données puissante pour l’informatique 5
Concepts fondamentaux de la théorie des graphes

II. Notions et vocabulaire de théorie des graphes


1. Un graphe orienté
Un graphe orienté est un couple G(X,U) :
 X ensemble de sommets ou noeuds (|X|=n ).
 U ⊂ X × X ensemble d’arcs (|U|=m).

2
4

3 5

X = { 1, 2, 3, 4, 5 }
U = { (1, 2), (1, 3), (2, 3), (3, 2), (4, 4), (4, 5) }
 Pour un arc u = (i, j), i est l’extrémité initiale, j l’extrémité finale
(ou bien origine et destination). 6
Concepts fondamentaux de la théorie des graphes

2. Un graphe non orienté


 Un graphe non orienté est un couple G(X,U) :
 U ⊂ X × X ensemble d’arrêtes.

 C'est a dire que (Xi,Xj) est équivalent a (Xj,Xi). Une paire (Xi,Xj) est appelée
une arrête, et est représentée graphiquement par Xi Xj.
 Par exemple: 1 5 6
4

2
3

Représente le graphe non orienté G = (X, U) avec X = {1, 2, 3, 4, 5,


6} et A = {(1, 2),(1, 5),(5, 2),(3, 6)}
7
Concepts fondamentaux de la théorie des graphes

3. Autre Définitions et concepts de base


 On appelle graphe valué et on note G = (X,U,C) un graphe où on associe une
fonction f : U IR appelée coût ou poids des arcs ou valeur des arcs. Le coût
d'un arc (i, j) est noté c(i, j) ou

 Un Graphe est dit symétrique si :

 Un Graphe est dit complet si :

8
Concepts fondamentaux de la théorie des graphes
 i est successeur ou suivant de j si (j, i) ; l'ensemble des successeurs de i
est noté S(i).
 i est prédécesseur ou précédent de j si (i, j) ; l'ensemble des prédécesseurs
de i est noté P(i).
 Degrés

 Dans un graphe non orienté, le degré d'un sommet est le nombre d'arêtes
incidentes à ce sommet(dans le cas d'un graphe simple, on aura
 Le degré extérieur de i, , est le nombre de sommets suivants de i ;

• Le degré intérieur de i, , est le nombre de sommets précédents de i ;

 Le degré de i est: 9
Concepts fondamentaux de la théorie des graphes

 Deux sommets sont adjacents (ou voisins) s’ils sont joints par un arc.

 Deux arcs sont adjacents s’ils ont au moins une extrémité commune.

 Un arc (i, i) est appelé une boucle.

 L’ordre d’un graphe est le nombre de ses sommets.

 Une boucle est un arc ou une arête reliant un sommet à lui-même.

 Un graphe non-orienté est dit simple s’il ne comporte pas de boucle, et s’il ne

comporte jamais plus d’une arête entre deux sommets.

10
Concepts fondamentaux de la théorie des graphes

 Considérons par exemple le graphe orienté suivant :

 Un chemin élémentaire dans ce graphe est < 1, 4, 2, 5 >.


 Un chemin non élémentaire dans ce graphe est < 3, 6, 6, 6 >.
 Un circuit élémentaire dans ce graphe est < 1, 2, 5, 4, 1 >.
 Un circuit non élémentaire dans ce graphe est < 1, 2, 5, 4, 2, 5, 4, 1 >.
11
Concepts fondamentaux de la théorie des graphes

 i est dit ascendant de j s'il existe un chemin d'origine i et de destination j; j est

alors un descendant de i.
 Soit .On dit qu'un arc de U est incident à A de l'extérieur si son extrémité
terminale est dans A et son extrémité initiale dans X\A
 Il est dit incident à A de l'intérieur s'il est incident à X\A de l'extérieur.

12
Concepts fondamentaux de la théorie des graphes

4. Exercice d’application
 Dessiner un graphe non orienté complet à 4 sommets.

 Quel est le degré des sommets de ce graphe ?

 Combien d’arêtes possède-t-il ?

 Généralisez ces résultats à un graphe simple complet ayant n sommets.

13
Concepts fondamentaux de la théorie des graphes

III. Représentation d’un graphe


 Il existe deux façons classiques de représenter un graphe en machine: par une

matrice d'adjacence ou par un ensemble de listes d'adjacence.

1. Représentation par matrice d'adjacence:


 Soit le graphe G = (X, U). On suppose que les sommets de X sont numérotés de

1 à n, avec n = . La représentation par matrice d'adjacence de G consiste en


une matrice booléenne M de taille n x n telle que:

14
Concepts fondamentaux de la théorie des graphes
2. Représentation par listes d'adjacence
 Soit le graphe G = (X, U). On suppose que les sommets de X sont numérotés de
1 à n, avec . La représentation par listes d'adjacence de G consiste en un
tableau T de n listes, une pour chaque sommet de X. Pour chaque sommet ,
la liste d'adjacence est une liste chainée de tous les sommets tels qu'il
existe un arc ou une arête .
Autrement dit, contient la liste de tous les sommets successeurs de . Les
sommets de chaque liste d'adjacence sont généralement chainés selon un ordre
arbitraire.
Si le graphe est valué (par exemple, si les arêtes représentent des distances), on
peut stocker dans les listes d'adjacence, en plus du numéro de sommet, la valuation
de l'arête.
15
Concepts fondamentaux de la théorie des graphes

3. Représentation par matrice d’incidence


 Pour un graphe orienté G=(X,U),
 La matrice d'incidence C(n,m) est déterminée tel que :

16
Concepts fondamentaux de la théorie des graphes

4. Exercice d'application
 1. Donnez les représentations par matrice d’adjacence et listes d’adjacence du
graphe non orienté suivant :

 2. Donnez les représentations par matrice d’adjacence et listes d’adjacence du


graphe orienté suivant :

 3. Donner la Matrice d’incidence du graphe suivant:

x2
V2
V4
V1
x3 17
x1 V3
Concepts fondamentaux de la théorie des graphes
5. Des définitions
 Longueur d'un chemin (ou d’une chaîne) :nombre d'arcs du chemin (ou d’arêtes

de la chaîne)
 Distance: la distance entre deux sommets d’un graphe est la plus petite longueur

des chaînes, ou des chemins, reliant ces deux sommets.


 Ordre d'un graphe : nombre de sommets du graphe

 Diamètre : Le diamètre d’un graphe est la plus longue des distances entre deux

sommets.
 Sous Graphe : le graphe G' est un sous graphe de G si l'ensemble des sommets

de G' est inclus dans l'ensemble des sommets de G, et si l'ensemble des arcs de G'
est égal au sous-ensemble des arcs de G reliant entre eux tous les sommets de G’ ;
on a donc retiré de G certains sommets, et tous les arcs adjacents à ces sommets.18
Chapitre 2: Cheminements et connexités

19
Cheminements et connexités

I. Notions de chemin, chaine, cycle et circuit


 Un chemin dans un graphe orienté est une suite (x,…,y) de sommets 2 à 2

distincts telle que si i suit j dans cette suite (i,j) est un arc.
 Un chemin est élémentaire si les sommets qu’il contient sont tous distincts.

 Une chaîne est un chemin dans un graphe non orienté

 Un chemin qui se referme sur lui–même est un circuit.

 Une chaîne qui se referme sur elle–même est un cycle.

20
Cheminements et connexités
II. Cheminements et connexités
1. Notions de connexité
 Graphes non orientés:
 Un graphe non orienté est connexe si chaque sommet est accessible à partir de n'importe

quel autre. Autrement dit, si pour tout couple de sommets distincts

il existe une chaine entre ; et . Par exemple, le graphe non orienté


suivant n'est pas connexe car il n'existe pas de chaîne entre les sommets a et e.

21
• En revanche, le sous-graphe défini par les sommets {a, b, c, d} est connexe.
Cheminements et connexités
 Un graphe G = (X,U) est dit simplement connexe ou connexe si :

il existe une chaîne entre i et j.


 Graphes orientés:

• On retrouve ces différentes notions de connexités dans les graphes orientés, en


remplaçant naturellement la notion de chaine par celle de chemin : on parle de
graphe fortement connexe au lieu de connexe, de composante fortement
connexe au lieu de composante connexe.

• un graphe orienté est fortement connexe si chaque sommet est accessible à partir
de n'importe quel autre. Autrement dit, si pour tout couple de sommets distincts

il existe un chemin de vers et un chemin de vers


• Par exemple, le graphe de gauche ci-dessous est fortement connexe, tandis que
22
celui de droite ne l'est pas :
Cheminements et connexités

2. Exercices
 Exercice 1

 Trois pays envoient chacun à une conférence deux espions; chaque espion doit

espionner tous les espions des autre pays.

1) Représentez cette situation par un graphe d’ordre 6 dans lequel chaque

arête reliant i et j signifie que i espionne j, et j espionne i.

2) Ce graphe est-il complet? Est-il connexe?

3) a- Quelle est le degrés de chaque sommet?

b- En déduire le nombre d’arêtes du graphe.


23
Cheminements et connexités

 Exercice 2

Etant donné un groupe de dix personnes, le tableau suivant indique les paires de
personnes qui ont une relation d'amitié.

1) Représentez cette situation par un graphe d'ordre 10 dans lequel une arête
entre les sommets i et j signifie qu'il y a une relation d'amitié entre i et j.
2) Ce graphe est-il complet ? connexe ?
3) Si l'adage "les amis de nos amis sont nos amis" était vérifié, que pourrait-on
en conclure sur la structure du graphe ?
24
Cheminements et connexités

III. Notion de graphe eulérien

1. Définition
 Dans un graphe non orienté, une chaine eulérienne est une chaine qui emprunte une

et une seule fois chaque arête du graphe.

 De même, un cycle eulérien est un cycle qui emprunte une et une seule fois chaque

arête du graphe.

 Un graphe comportant une chaine ou un cycle eulérien est appelé graphe eulérien.

 Un graphe (simple ou multiple) connexe admet un cycle eulérien si et seulement s’il

n’a pas de sommet de degré impair.


25
Cheminements et connexités

 Un graphe (simple ou multiple) connexe admet une chaine eulérienne entre

deux sommets u et v si et seulement si le degré de u et le degré de v sont

impairs, et les degrés de tous les autres sommets du graphe sont pairs.

 On retrouve ces différentes notions sur les graphes orientés :

 un chemin eulérien est un chemin qui emprunte une et une seule fois

chaque arc du graphe.

 De même, un circuit eulérien est un circuit qui emprunte une et une seule

fois chaque arc du graphe.

26
Cheminements et connexités

2. Exercices d’application
 Exercice1

• Montrer que le graphe suivant est eulérien

27
Cheminements et connexités

 Exercice 2

 On considère le graphe G suivant:

1- Justifier que G n’admet pas un cycle eulérien mais qu’il admet des chaînes
eulériennes.

2- Déterminer une chaîne eulérienne dans G.

28
Cheminements et connexités

 Exercice 3
Pour les graphes suivants dites s’ils admettent au moins une chaîne eulérienne et
dans l’affirmatique indiquez en une

4-3-2-5-1

29
Cheminements et connexités
 Exercice 4

30
Cheminements et connexités
IV. Notion de graphe hamiltonien
 Dans un graphe simple non orienté comportant n sommets, une chaine

hamiltonienne est une chaine élémentaire de longueur n- 1. Autrement dit, une


chaine hamiltonienne passe une et une seule fois par chacun des n sommets du
graphe. On appelle cycle hamiltonien un cycle élémentaire de longueur n. Un
graphe possédant un cycle ou une chaine hamiltonienne sera dit graphe
hamiltonien.
 Par exemple, le graphe suivant possède un cycle hamiltonien

(< a; e; b; d; c; a >)
 En revanche, le graphe suivant ne possède pas de cycle hamiltonien, mais possède

une chaine hamiltonienne (< a; b; e; d; c >).


31
Cheminements et connexités
V. Coloriage d’un graphe

1. Coloriages
 Un coloriage du graphe G est une manière d’attribuer une couleur à chacun de

ses sommets. On dit qu’un coloriage est propre si deux sommets reliés par une
arête ont des couleurs différentes. Le graphe G étant fini,
 Remarque : le problème du coloriage d’un graphe avec un nombre limité de

couleurs est un problème combinatoire (on dit qu’il s’agit d’un problème NP-
complet). Cela signifie que tout algorithme résolvant ce problème de façon
exacte pourra prendre un temps exponentiel par rapport au nombre de sommets
du graphe (de l’ordre de 2n pour n sommets). Le problème de déterminer le
nombre chromatique d’un graphe est également exponentiel, et est en fait encore
plus difficile. 32
Cheminements et connexités

2. Nombre chromatique
 On peut définir le nombre chromatique X(G) d’un graphe fini G comme le plus

petit nombre n tel que G puisse être colorié avec n couleurs.


 Le nombre chromatique est le plus petit nombre de couleurs permettant de

colorier tous les sommets du graphe sans que deux sommets adjacents soient de
la même couleur.
 Le nombre chromatique d'un graphe est inférieur ou égal au plus grand degré de

ses sommets k majoré par 1: X(G)< K + 1


 Le nombre chromatique d'un graphe est supérieur ou égal à l'ordre de tous ses

sous graphes complets.


33
Cheminements et connexités
3. Exercices
 Exercice 1
 1. A quoi ressemble un graphe de nombre chromatique 1 ?

 2. Quel est le nombre chromatique d’un graphe bipartite ?

 3. Quel est le nombre chromatique d’un graphe complet ?

 Correction:

 1. Dès qu’il y a une arête, il faut au moins deux couleurs. Un graphe de nombre chromatique 1

est donc un graphe sans arêtes.

 2. Soit un graphe bipartite (on suppose qu’il a au moins une arête), et soient I et J les deux

ensembles de sommets indépendants de ce graphe. Alors on peut colorier tous les éléments de

I avec une même couleur, et tous les éléments de J avec une autre couleur. Le nombre

chromatique d’un graphe bipartite est donc égal à 2.

3. Dans un graphe complet, deux sommets quelconques sont reliés. Son nombre chromatique
34
Cheminements et connexités

 Exercice 2

 Colorier un graphe en respectant les contraintes suivantes ?

 Utiliser le minimum de couleurs ;

 Faire en sorte que deux sommets ayant une arc commune soient coloriés de deux

couleurs différentes...

35
Cheminements et connexités
4. Algorithme de Welch-Powell: algorithme glouton
Colorer un graphe c'est colorer les sommets de telle façon que deux sommets distincts et adjacents

aient toujours des couleurs différentes.

• Méthode :
1- Ranger les sommets par ordre décroissant de leurs degrés ;

2- Choisir une couleur ;

3- Affecter cette couleur au premier sommet de la liste non encore coloré ;

4- Suivre la liste en attribuant cette même couleur à tout sommet qui:

- n'est pas encore coloré ;

- et qui n'est pas adjacent à un sommet coloré avec cette couleur.


 Continuer jusqu'à ce que la liste soit finie.
 Si tous les sommets ne sont pas colorés, choisir une couleur qui n'est pas encore utilisée et

recommencer les étapes 3 et 4 ; 36


Cheminements et connexités

VI. Exercices d’application


 Exercice 1

Déterminer le nombre chromatique des graphes suivants:

Correction
Tout graphe contenant un triangle (K3) ne peut être colorié en moins de trois
couleurs.
37
Cheminements et connexités
 Exercice 2

 Déterminer le nombre chromatique des graphes suivants:

38
Cheminements et connexités

 Exercice 3
 Recopier le graphe ci-dessous et utiliser l’algorithme de welch-Powell pour le

colorier.

39
Cheminements et connexités
 Exercice 4
 T est le graphe ci-contre:
 1) On note G (T) le nombre chromatique de T.
a- Pourquoi le sous graphe constitué des sommets C, D, E et F est complet.
b- Démontrer que 4 ≤ G (T) ≤ 6.
c- Déterminer la valeur de G (T)
 2) On considère un groupe d’élèves notés A, B, C, D, E, F et G.
Pour un exposé, les élèves se mettent en équipes, mais il faut respecter les
incompatibilités entre les élèves.
Dans le tableau ci-après, chaque croix indique une incompatibilité entre les élèves
correspondants.
a- Si l’on décide de modéliser ce tableau d’incompatibilité par le graphe T, quel sens
faut-il donner à l’existence d’une arrête entre deux sommets?
b- Combien d’équipes faudra-t-il créer en minimum?
Proposer une répartition des élèves en équipes :
(une équipe peut comporter un seul élève).
40
Cheminements et connexités
 Exercice 5

41
Cheminements et connexités
 Exercice 6
 Dans la ville de GRAPHE, on s’intéresse aux principales rues permettant de
relier différents lieux ouverts au public, à savoir la mairie (M), le centre
commercial (C), la bibliothèque (B), la piscine (P) et le lycée (L). Chacun de
ces lieux est désigné par son initiale. Le tableau ci-dessous donne les rues
existant entre ces lieux.

 a) Dessiner un graphe représentant cette situation.


 b) Montrer qu’il est possible de trouver un trajet empruntant une fois et une
seule toutes les rues de ce plan. Justifier?
 c) Proposer un tel trajet.
 d) Est-il possible d’avoir un trajet partant et arrivant du même lieu et passant
une fois et une seule par toutes les rues ? 42
Cheminements et connexités
 Exercice 7
Soit le graphe ci-dessous constitué des sommets A, B, C, D, E, F et G.

1) Quel est son ordre et le degré de chacun de ces sommets ?


2) Construire un tableau indiquant les distances entre deux sommets de G :
3) En déduire le diamètre de ce graphe.
4) Donner un sous-graphe complet de G d’ordre 3. Qu’en déduire pour le nombre
chromatique de G ?
5) Proposer une coloration du graphe G et en déduire son nombre chromatique.
6) Donner la matrice M associée à G (vous numéroterez les lignes et les colonnes dans
l’ordre alphabétique). 43
Chapitre 3:Arbres et arborescences

44
Arbres et arborescences
I. Définition
 Les arbres et les arborescences sont des graphes particuliers très souvent utilisés en

informatique pour représenter des données.


 Etant donné un graphe non orienté comportant n sommets, les propriétés suivantes sont

équivalentes pour caractériser un arbre :

1. G est connexe et sans cycle,

2. G est sans cycle et possède n -1 arêtes,

3. G est connexe et admet n -1 arêtes,

4. G est sans cycle, et en ajoutant une arête, on crée un et un seul cycle élémentaire,

5. G est connexe, et en supprimant une arête quelconque, il n’est plus connexe,

6. Il existe une chaine et une seule entre 2 sommets quelconques de G.


45
Arbres et arborescences
 Par exemple, le graphe suivant est un arbre :

On appelle forêt un graphe dont chaque composante connexe est un arbre.


 Un arbre est un graphe non orienté connexe sans cycle simple

46
Arbres et arborescences
 Dans un graphe G=(X,U), on appelle racine, un point a tel que tout autre sommet du

graphe puisse être atteint par un chemin issu de a. Une racine n’existe pas toujours.

 La racine r de l'arbre est l'unique nœud ne possédant pas de parent

47
Arbres et arborescences

 Tout sommet x qui n’est pas la racine a.

 un unique parent, noté parent(x) (appelé père parfois)

 0 ou plusieurs fils. fils(x) désigne l’ensemble des fils de x

 Si x et y sont des sommets tels que x soit sur le chemin de r à y alors

- x est un ancêtre de y

- y est un descendant de x

Un sommet qui n’a pas de fils est une feuille


 Quand il n’y a pas d’ambiguïté, on regarde les arêtes d’un arbre comme étant orienté

de la racine vers les feuilles

48
Arbres et arborescences

1 est la racine
9,10,6,3,11,12,8 sont les feuilles
11 est un descendant de 4, mais pas de 2
2 est un ancêtre de 10

49
Arbres et arborescences

1 est la racine
2,3,4 sont à la profondeur 1
5,6,7,8 à la profondeur 2
La hauteur de 2 est 2, celle de 9 est 4, celle de 3 est 2, celle
de 1 est 1.
50
Arbres et arborescences
 Exercice
 On considère le graphe non orienté suivant :

Combien faut-il enlever d’arêtes à ce graphe pour le transformer en arbre ?


Donnez un graphe partiel de ce graphe qui soit un arbre.
 Correction
Le graphe comporte 7 sommets et 11 arêtes. Pour le transformer en arbre il faudra
donc enlever 5 arêtes.
Par exemple, les arêtes (f; g), (b; g), (b; c), (b; d)
et (g; c).
51
Arbres et arborescences

II. Les Arborescences


 Une arborescence est un graphe orienté sans circuit admettant
une racine
telle que, pour tout autre sommet , il existe un
chemin unique allant de vers . Si l'arborescence comporte n
sommets, alors elle comporte exactement n-1 arcs.
 Par exemple, le graphe suivant est une arborescence de racine a :

52
Arbres et arborescences
 Exercice

 L’ile du Nivéou, en Camargue, se consacre à la culture du riz. Sur cette ile se trouvent 9

champs entourés de murs et disposés de la façon suivante :

 La culture du riz suppose que l’on puisse périodiquement inonder l’ensemble des champs.

Cela est réalisé en ouvrant des vannes placées dans les murs séparant les champs et le
Rhône ou les champs entre eux. Etant donné que l’installation d’une vanne est coûteuse,
 il s’agit de déterminer le nombre minimum de vannes et leur emplacement pour pouvoir,

quand on le désire, inonder tous les champs. 53


Arbres et arborescences

 Correction :

 Pour résoudre ce problème, on peut considérer le graphe non orienté comportant

un sommet pour chaque intersection de mur, et une arête pour chaque mur :

54
Arbres et arborescences
 En considérant que lorsqu’on place une vanne sur un mur, on supprime l’arête

correspondante dans le graphe, le problème revient à supprimer des arêtes jusqu’à


ce que le graphe ne comporte plus de cycles (autrement dit, placer des vannes
jusqu’à ce qu’il n’y ait plus de champ entouré de murs sans vanne). Comme on
souhaite poser le moins de vannes possible, on cherche un graphe partiel sans
cycle tel que si l’on rajoute une arête on crée un cycle : selon la proposition 4, il
s’agit d’un arbre. Ici, étant donné que le graphe a 12 sommets et 20 arêtes, l’arbre
devra posséder 12-1= 11 arêtes (selon la proposition 2), et on devra donc installer
20-11=9 vannes. On obtiendra (par exemple) l’arbre suivant :

55
Arbres et arborescences
III. Le problème de recherche d'un arbre de poids minimum
 Le problème de recherche d'un arbre de poids minimum (minimum tree of pods) Si on

associe à chaque arc d'un graphe G=(X,U) une valeur (un poids).
 Le problème de l'arbre de coût minimum consiste à trouver un sous graphe qui est un

arbre, dont la somme des poids des arcs est minimale.


 Par exemple: minimiser le coût d'installation des lignes téléphoniques dans une localité

peut être représenté comme un problème de recherche d'un arbre de coût minimum. En
effet, on veut relier tous les points de la localité sans avoir de lignes inutiles, d'où la
recherche d'un arbre.
 Ensuite on veut avoir un coût d'installation minimum, alors on associera à chaque

possibilité d'installation d'une ligne le coût nécessaire et on cherchera à minimiser le


coût total de toute l'installation. 56
Arbres et arborescences

En 1956, Kruskal a donné un algorithme qui permet de résoudre ce problème.

 Algorithme de kruskal pour construire un arbre de poids


minimum:

57
Arbres et arborescences
1. Algorithme de kruskal
 Le principe: L'idée de l'algorithme de Kruskal est tout d'abord de numéroter les
arcs par ordre des poids croissants. Ensuite de construire progressivement l'arbre A
en rajoutant dans leurs ordre, les arcs un par un. Un arc est ajouté seulement si son
adjonction à A ne détermine pas de cycle, c'est-à-dire si A ne perd pas sa notion
d'arbre, sinon on passe à l'arc suivant dans l'ordre de la numérotation.
Application: Soit G=(X,U) un graphe connexe représentant le projet d'installation
de lignes téléphoniques. Les poids représentent le coût d'installation des lignes. On
veut donner un plan d'installation minimisant le coût total de l'installation .

58
Arbres et arborescences
2. Algorithme de Prim
 Principe: Construction incrémentale d'un arbre de poids minimum:

 Au départ, un sommet est choisi arbitrairement, ce sommet constitue l'arbre


couvrant de poids minimum.

 Parmi toutes les arêtes incidentes à ,choisir celle de plus faible poids .
 Le nouvel arbre obtenu est constitué des sommets et et de l'arête
 Tant qu'il reste des sommets en dehors de l'arbre :

 Parmi l'ensemble des arêtes incidentes aux sommets de l'arbre et ayant une

extrémité hors de l'arbre, choisir celle dont le poids est le plus faible.
 On construit un arbre en partant d'un sommet initial et en ajoutant chaque fois une

arête du poids min qui le touche par une extrémité.

59
Arbres et arborescences

60
Arbres et arborescences

61
Arbres et arborescences
3. Parcours de graphes

Beaucoup de problèmes sur les graphes nécessitent que l’on parcourt l’ensemble
des sommets et des arcs/arêtes du graphe. On étudie dans la suite les deux
principales stratégies d’exploration :
 Le parcours en largeur consiste à explorer les sommets du graphe niveau par
niveau, à partir d’un sommet donné.
 Le parcours en profondeur consiste, à partir d’un sommet donné, à suivre un
chemin le plus loin possible puis à faire des retours en arrière pour reprendre tous
les chemins ignorés précédemment.

62
Arbres et arborescences
a. Arborescence couvrante associée à un parcours
 On parcourt un graphe à partir d'un sommet donné . Ce parcours va
permettre de découvrir tous les sommets accessibles depuis , c'est à dire tous
les sommets pour lesquels il existe un chemin depuis .
 En même temps que l'on effectue ce parcours, on construit l'arborescence de

découverte des sommets accessibles depuis , appelée arborescence couvrante


de .
 Cette arborescence contient un arc si et seulement si le sommet a

été découvert à partir du sommet (autrement dit, c'est le sommet qui a fait
entrer dans la file d'attente).
 Ce graphe est effectivement une arborescence, dans la mesure où chaque

sommet a au plus un prédécesseur, à partir duquel il a été découvert. La racine


de cette arborescence est , le sommet à partir duquel on a commencé63le
Arbres et arborescences
b. Parcours en profondeur (Depth-FirstSearch)

 Un parcours en profondeur (DFS) d’un graphe G:


 Un parcours en profondeur (DFS) d’un graphe G
 Visite tous les sommets et toutes les arêtes de G
 Détermine si G est connexe ou non
 Calcule les composantes connexes de G
 Calcule une forêt couvrante pour G

 L’algorithme de parcours en profondeur (DFS) d’un graphe G prend un temps O(n+m)

 L’algorithme de parcours en profondeur peut être étendu pour résoudre d’autres

problèmes sur les graphes:


 Trouver un chemin entre 2 sommets 64
Arbres et arborescences

65
Arbres et arborescences

 Propriétés du parcours en profondeur:

Propriété 1: DFS(G,S) visite tous les sommets et les


arêtes de la composante connexe de s

Propriété 2: Les arêtes sélectionnées lors du parcours


DFS(G,s) forme un arbre couvrant pour la composant
connexe de s

66
Arbres et arborescences
 Complexité en temps du parcours en profondeur:

 Étiquetter ou "lire" l'étiquette d'un sommet ou d'une arête Ο(1)

 Chaque sommet est étiquetté deux fois

 une fois "non exploré " O(n)


 une fois "visité "

 Chaque arête est étiquettée deux fois

 une fois "non explorée " O(m)


 une fois "sélectionnée" ou "de retour "

 L'opération incidents (U) est appelée une fois pour chaque sommet U

 Si notre graphe est représenté par une liste d'adjacences, la complexité en temps
67
de l'algorithme DFS est O(m+n)
Arbres et arborescences
c. Applications du parcours en profondeur

 On peut étendre l’algorithme DFS en


un algorithme pour trouver un chemin
entre 2 sommets donnés v et z.
 L’idée est d’appeler DFS(G,v), sur v
le premier sommet.
 On utilise une pile P qui garde en
mémoire un chemin entre le sommet de
départ et le sommet courant.
 Quand le sommet final z est atteint on
retourne le contenu de la pile qui
contient le chemin cherché.
68
Arbres et arborescences

 On peut étendre l’algorithme DFS


en un algorithme pour trouver un
cycle dans un graphe (s’il en existe
un).
 On utilise une pile P qui garde en
mémoire un chemin entre le
sommet de départ v et le sommet
courant.
 Si on trouve une arête de retour vers
v, on retourne le cycle trouvé qui est
contenu dans la pile.
69
Arbres et arborescences

 Parcours en profondeur

 Ordre de visite préfixé


On marque quand on atteint le nœud.
1, 2, 5, 9, 10, 6, 3, 4, 7, 11, 12, 8

 Ordre de visite postfixé


On marque quand on quitte le nœud.
9, 10, 5, 6, 2, 3, 11, 12, 7, 8, 4, 1

70
Arbres et arborescences
 Exercices d'application

 Exercice 1

 Indiquer l’ordre de visite et de post-visite des sommets du graphe non orienté ci-

dessous dans un parcours en profondeur.

71
Arbres et arborescences

 Exercice 2

 Existe-t-il un graphe G de huit sommets, numérotés de 1 à 8, de façon que, dans

un parcours en profondeur de G l’ordre de visite des sommets soit


1,2,3,4,5,6,7,8 et l’ordre de post-visite soit:

i) 5, 3, 2, 4, 7, 6, 8, 1?

ii) 4, 3, 5, 2, 7, 6, 8, 1?
 S’il y a une solution, est-elle unique?

72
Arbres et arborescences
d. Parcours en largeur (Breadth-First Search)

 Un parcours en largeur (BFS) d’un graphe G

 Visite tous les sommets et toutes les arêtes de G

 Détermine si G est connexe ou non

 Calcule les composantes connexes de G

 Calcule une forêt couvrante pour G

 L’algorithme de parcours en largeur (BFS) d’un graphe G prend un temps

O(n+m)
 L’algorithme de parcours en largeur peut être étendu pour résoudre d’autres

problèmes sur les graphes:


 Trouver le plus court chemin entre 2 sommets
73
 Trouver un cycle simple dans un graphe
Arbres et arborescences

74
Arbres et arborescences

 Propriétés du parcours en largeur:

Propriété 1: BFS(G,s) visite tous les sommets


et les arêtes de la composante connexe de s
Propriété 2: Les arêtes sélectionnées lors du
parcours DFS(G,s) forme un arbre couvrant
pour la composant connexe de s
Propriété 3: Pour tous sommets u dans L ,le
chemin de s à u suivant les arêtes de l’arbre
couvrant contient exactement i arêtes et i+1
sommets. C’est un plus court chemin de s à u.
75
Arbres et arborescences
• Complexité en temps du parcours en largeur:
 Étiquetter ou “lire” l’étiquette d’un sommet ou d’une arête O(1)

 Chaque sommet est étiquetté deux fois:


O(n)
 une fois “non exploré
 une fois “visité
 Chaque arête est étiquettée deux fois

 une fois “non explorée O(m)

 une fois “sélectionnée” ou “de traverse”


Chaque arête est insérée au plus une fois dans un ensemble Li

L’opération Incidents (U) est appelée une fois pour chaque sommet U

Si notre graphe est représenté par une liste d’adjacences, la complexité en temps de
76
Arbres et arborescences
e. Applications du parcours en largeur

77
Arbres et arborescences
 Exemple
 En fait, c’est une généralisation des parcours hiérarchiques des arbres (on regarde la
racine puis les voisins, puis les voisins des voisins, . . .). On va donc gérer la variable à
traiter comme une file FIFO (First In First Out).
 Pour parcourir le graphe en largeur, on va ajouter deux règles : on fait défiler les sommets
dans l’ordre des numéros ; on examine les successeurs d’un sommet dans le même ordre.
 On commence par 1 et ses voisins 2, 4 et 5.
 On regarde le plus petit voisin, c’est 2.
 On regarde les voisins de 2, ce sont 3 et 4. On a déjà vu 4
 (il est déjà dans la pile). On ne tient donc pas compte de l’arc(2,4).
 Le sommet suivant est 4. Son seul voisin est 3, que l’on a déjà vu.
 Le sommet suivant est 5. Son seul voisin est 4, que l’on a déjà empilé ́.
 Le sommet suivant est 3. Le seul voisin, qui est 1, a déjà été traité.
 La file est alors vide. On remonte donc `a un sommet non-atteint, dans l’ordre des
numéros.
 On traite donc le sommet 6. Ses voisins sont 7 et 8.
 On traite le sommet 7 dont le seul voisin est 5, qui a déjà été traité.
 On passe ensuite au sommet 8 dont les voisins 4, 6 et 7 ont tous déjà été traités. 78
Arbres et arborescences
DFS vs BFS

79
Arbres et arborescences
IV. Exercice d'application
 Exercice1

 Effectuez un parcours en largeur/profondeur d’abord en partant de 0 pour construire


une arbre.

80
Arbres et arborescences
 Exercice 2

Effectuez un parcours en largeur en partant de 5 pour construire une arborescence.

81
Chapitre 4: Plus courts chemins

82
Plus courts chemins
I. Définitions
 Un automobiliste souhaite découvrir le plus court chemin possible (en nombre de

kilomètres) pour circuler de Strasbourg à Bordeaux. Etant donnée une carte


routière de France, avec les distances de chaque portion de route, comment peut-il
déterminer la route la plus courte ?
 Un parcours en largeur du graphe associé à la carte de France ne permettra pas de

résoudre ce problème : il permettra de trouver l’itinéraire comportant le moins


d’étapes (traversant le moins de sommets), mais cet itinéraire n’est pas
nécessairement le plus court en nombre de kilomètres.
 Une possibilité consiste à énumérer tous les chemins entre Strasbourg et

Bordeaux, additionner les distances pour chacun d’eux, et distinguer le plus court.
Cependant, on s’aperçoit rapidement que, même en n’acceptant pas les chemins
qui contiennent des circuits, il existe des milliers de possibilités, dont la plupart83ne
Plus courts chemins

Soit G = (S;A) un graphe orienté valué tel que la fonction


Cout: A R associe à chaque arc de A un coût réel cout
• Le coût d'un chemin p =< S0, S1; S2, ... ... ; Sk > est égal à la somme des coûts des
arcs composant le chemin, c'est-à-dire:

 Le coût d'un chemin sera aussi appelé poid du chemin.


 Le coût (ou poid) d'un plus court chemin entre deux sommets et est noté

est défini par :

84
Plus courts chemins

 Considérons par exemple le graphe valué orienté suivant :

on a δ(a; b) = 3, δ(a; e) = 5, δ(a; c) = 9 et δ(a; d) = 11.

85
Plus courts chemins

II. Le problème de recherche d'un plus court chemin


Conditions d'existence d'un plus court chemin :
s'il existe un chemin entre deux sommets u et v contenant un circuit de coût négatif,
alors (u; v) = -oo, et il n'existe pas de plus court chemin entre u et v. Un circuit
négatif est appelé un circuit absorbant.
Considérons par exemple le graphe orienté valué suivant

Le chemin < s ; e; f; e;f; g > contient le circuit < e; f; e > de coût négatif -3.
Autrement dit, à chaque fois que l'on passe dans ce circuit, on diminue de 3 le coût
total du chemin. Par conséquent, et il n'existe pas de plus court chemin
entre s et g. 86
Plus courts chemins

 On va maintenant étudier 2 algorithmes qui permettent de résoudre

des problèmes de recherche de plus courts chemins à origine unique :


 L'algorithme de Dijkstra résout ce problème lorsque tous les coûts sont positifs

ou nuls,
 L'algorithme de Ford-Bellman résout ce problème lorsque les coûts sont positifs,

nuls ou négatifs, sous réserve qu'il n'y ait pas de circuit absorbant (de coût
négatif).
 Les deux algorithmes procèdent de la même façon, selon une stratégie dite

"gloutonne". l'idée est d'associer à chaque sommet une valeur qui


représente une borne maximale du coût du plus court chemin entre et

87
Plus courts chemins

C'est-à-dire ainsi au départ:

• L'algorithme diminue alors progressivement les valeurs d[si] associées aux


différents sommets, jusqu'à ce qu'on ne puisse plus les diminuer, autrement dit,
jusqu' à ce que

88
Plus courts chemins

 Pour réduire les valeurs de d, on va répétitivement examiner chaque arc du


graphe, et observer si on ne peut pas améliorer la valeur de en passant par
Cette opération de diminution est appelée relâchement de l'arc , et s'écrit

• Les algorithmes de Dijkstra et Bellman-Ford découlent tous les deux par


relâchements successifs d’arcs. La différence entre les deux est que dans l’algorithme
de Dijkstra, chaque arc est relâché une et une seule fois, tandis que dans l’algorithme
de Bellman-Ford, chaque arc peut être relâché plusieurs fois. 89
Plus courts chemins

III. Algorithme de Dijkstra


 L'algorithme de Dijkstra ne marche pas toujours quand le graphe contient des arcs

dont les coûts sont négatifs.


 Considérons par exemple le graphe suivant, où l'on cherche les plus courts chemins à

partir du sommet 1. On voit immédiatement que la plus courte distance entre les
sommets 1 et 2 est 2, alors que l'algorithme de Dijkstra donne 3.

90
Plus courts chemins

 Algorithme de MOORE-DUKSTRA : énoncé


 Les données
 un graphe dont les arcs sont valués par des nombres positifs,
 un sommet s racine du graphe à partir duquel on veut déterminer les plus
courts chemins aux autres sommets,
 pour chaque sommet x de X, l'ensemble succ(x) de ses successeurs.
 Initialisation
 Pour tous les sommets x dans S Poser , poser
 Corps de l'algorithme

91
Plus courts chemins

 Les résultats
 Pour chaque sommet, est égal à longueur d'un plus court chemin de S
à X.
 Père(y) = x indique que le sommet x est le prédécesseur de y sur le plus
court chemin de s à y.

 En comparaison avec l'algorithme de Dijkstra l'algorithme de Bellman-


Ford permet de trouver les plus courts chemins à origine unique dans le cas
où le graphe contient des arcs dont le coût est négatif, sous réserve que le
graphe ne contienne pas de circuit absorbant (dans ce cas, l'algorithme de
Bellman-Ford va détecter l'existence de circuits absorbants).

92
Plus courts chemins

IV. Algorithme de Bellman-Ford


 Algorithme de Bellman

 Données

• Un graphe valué sans circuit dont les sommets sont numérotés dans l'ordre du tri
topologique

• Le sommet de départ s est racine du graphe et il est numéroté 1


•On connaît pour chaque sommet x ses prédécesseurs Pred(x).
 Initialisation

Poser λ(1) = 0

93
Plus courts chemins

 Corps de l'algorithme
POUR x de 2 à n
FAIRE (on examine les prédécesseurs du sommet x)
Calculer λ (x) = min ( λ(y) +l(y,x)) pour y dans Pred(x) (on parcourt les
prédécesseurs de x, on calcule ( λ(y) + l(y,x) et on prend le minimum de ces
quantités)
POSER père(x) = y avec y prédécesseur y de x pour lequel ce minimum est
atteint
FINFAIRE
FINPOUR
FIN
 Résultats
λ(x) est égale à la longueur d'un plus court chemin de s à x.
Père(x) détermine le sommet prédécesseur de x sur le plus court chemin de s à
x. 94
Plus courts chemins

 L'algorithme de BelIman-Ford fonctionne selon le même principe que celui de

Dijkstra : on associe à chaque sommet une valeur qui représente une


borne maximale du coût du plus court chemin entre et .
 L'algorithme diminue alors progressivement les valeurs en relâchant les
arcs. Contrairement à Dijkstra, chaque arc va être relâché plusieurs fois. On
relâche une première fois tous les arcs ; après quoi, tous les plus courts
chemins de longueur 1, partant de , auront été trouvés. On relâche alors une
deuxième fois tous les arcs ; après quoi tous les plus courts chemins de
longueur 2, partant de , auront été trouvés ... et ainsi de suite... Après la
kième série de relâchement des arcs, tous les plus courts chemins de longueur
k, partant de , auront ete trouves.

95
Plus courts chemins

V. Synthèse

96
Plus courts chemins

VI. Exercices d'application


 Exercice1
 Cherchons les plus courts chemins d’origine A dans ce graphe:

97
Plus courts chemins

 Exercice 2
• Cherchons les plus courts chemins d’origine E dans ce graphe:

98
Plus courts chemins

 Exercice 3
 Déterminer l’autoroute reliant A et I de cout minimum (Application d’un
algorithme)

99
Plus courts chemins

 Exercice 4
• Cherchons les plus courts chemins d’origine 1 dans ce graphe

100
Plus courts chemins

 Exercice 5

• Cherchons les plus courts chemins d’origine S dans ce graphe en utilisant


l’algorithme de Dijkstra

101
Plus courts chemins

 Correction

102
Plus courts chemins
 Algorithme de Bellman
Il s'agit d'abord de numéroter les sommets du graphe dans l'ordre du tri topologique.
Num(s) = 1 num(c) = 2 num(a) = 3 num(b) = 4 num(d) = 5 num(e) = 6
Pred(s) = ∅, Pred(c) = {s}, Pred(a) = {s, c}, Pred(b) = {a, c}, Pred(d) = {a, b, c},
Pred(e) = {b, d}
On calcule successivement : λ(s) = 0, λ(c) = λ(s) + l(s, c) = 0+ 1 = 1,
père(c) = s
λ(a) = Min(λ(s) + l(s, a), λ(c) + l(c, a)) = min(0 + 5, 1 + 2) = 3 père(a) = c
λ(b) = Min(λ(a) + l(a, b), λ(c) + l(c, b)) = min(3 + 1,1 + 2) = 3 père(b) = c
λ(d) = Min(λ(a) + l(a, d), λ(b) + l(b, d), λ(c) + l(c, d)) = min(3 + 2, 3 + 1, 1 + 5) = 4,
père(d )= b
λ(e) = Min(λ(b) + l(b, e), λ(d) + l(d, e)) = min(3 + 4, 4 + 2) = 6,
père(e) = d

103
Plus courts chemins

 Ces résultats sont reportés sur le graphique suivant :

 Les longueurs des plus courts chemins sont dans les étiquettes et les arcs en gras

montrent pour chaque sommet l'arc le reliant à son père.

104
Plus courts chemins

 Exercice 6

 On recherche les plus courts chemins à partir du sommet a.

105
Plus courts chemins

 Exercice 7
 Considérons l’exemple suivant.
 On recherche les plus courts chemins à partir du sommet a.

106
Chapitre 5: Le problème central de
l'ordonnancement

107
Le problème central de l'ordonnancement

I. Introduction
La réalisation de projets complexes comme par exemple la construction d’un
barrage, l’installation d’une nouvelle chaîne de production, l’installation d’un
nouveau système d’information,… requiert une planification au préalable et un
contrôle au cours de l’exécution. Les problèmes liés à ces objectifs sont des
problèmes d’ordonnancement .

On cherche un ordre d’exécution des


différentes tâches de manière à optimiser un certain critère

Calendrier d’exécution
108
Le problème central de l'ordonnancement

 Résoudre un pb d’ordonnancement = trouver l’ordre et le calendrier suivant lequel

devront être exécutées les tâches afin d’optimiser un projet donné en tenant comptes
d’un certain nbr de contraintes
 Les contraintes sont de type:

 Potentiel : contraintes d’antériorité (ou postériorité), contrainte de localisation

temporelle
 Disjonctif: La non réalisation simultanée de 2 tâches

 Cumulatif : les moyens disponibles (hommes, machines, budgets…)

109
Le problème central de l'ordonnancement

II. Le problème central de l'ordonnancement


 Les seules contraintes considérées dans ce problème sont les contraintes
d’antériorité
 On cherche à réaliser un ensemble de tâches appelé projet, chaque tâche est

caractérisée par sa durée et par les contraintes qui la lie aux autres tâches
 Objectif :Finir le projet le plus tôt possible

 La représentation de ce problème pour un graphe permet d’identifier les tâches

prioritaire et donne pour chaque tâche le temps d’exécution permettant de finir le


projet au plus tôt.

110
Le problème central de l'ordonnancement

III. Le graphe potentiel-Tâches


À partir d’un projet donné on construit le graphe suivant:
À chaque tâche i on associe un sommet du graphe
On définit l’arc (i,j) si la tâche i précède la tâche j
La longueur de l’arc (i,j) représente la durée d’exécution de la tâche i
On rajoute deux sommets fictifs :
 dp correspondant au début du projet et reliés aux sommet sans précédents
 fp correspondant à la fin du projet et relié aux sommet sans suivants
Le graphe ainsi construit doit être sans circuit

111
Le problème central de l'ordonnancement
 Exemple : Situation où l’on doit construire une maison

112
Le problème central de l'ordonnancement

Le graphe potentiel-Tâches
113
Le problème central de l'ordonnancement

1. Exercice

114
Le problème central de l'ordonnancement

Pour chaque tâche, on définit la date du début d’exécution au plus


tôt et au plus tard permettant de finir le projet au plus tôt

Algorithmes:
1- Calcul des dates au plus tôt

1.Prendre les sommet par rang

2.

115
Le problème central de l'ordonnancement

116
Le problème central de l'ordonnancement

117
Le problème central de l'ordonnancement
2. Définitions

1- On appelle marge de la tâche i,

2- Les tâches dont les marges sont nulles sont dites tâches critiques

3- On appelle chemin critique, tout chemin de dp à fp passant par les sommets


critiques et de longueur égale à la durée min du projet.
 Remarques:

1- En cas de présence d’un circuit négatif, pour calculer les il faut calculer la
longueur du plus long chemin μ du i à fp puis

2- Si un retard est pris sur une des tâches critiques, la durée minimale du projet sera
118
augmentée d’autant.
Le problème central de l'ordonnancement

119
Le problème central de l'ordonnancement
3. Le diagramme de gantt
a. Principe:
On représente au sein d’un tableau, en ligne les différentes tâches et en colonne
les unités de temps( exprimées en mois, semaines, jours, heures…) La durée
d’exécution d’une tâche est matérialisée par un trait au sein du diagramme.
b. Réalisation:

1. On détermine les différentes tâches (ou opérations) à réaliser et leur durée.


2. on définit les relations d’antériorité entre tâches.
3. on représente d’abord les tâches n’ ayant aucune antériorité, puis les tâches
dont les tâches antérieures ont déjà été représentées, et ainsi de suite…
4. on représente par un trait parallèle en pointillé à la tâche planifiée la
progression réelle du travail. 120
Le problème central de l'ordonnancement

c. Exemple

Tracer le graphe potentiels-Tâches associé, la date au plus tôt et la date au


plus tard ainsi que le diagramme de Gantt

121
Le problème central de l'ordonnancement

122
Le problème central de l'ordonnancement

123
Le problème central de l'ordonnancement
IV. Traduction des contraintes
 Si les contraintes de type potentiel ne sont pas uniquement des contraintes

d’antériorité, on modifie le graphe potentiel-tâches ainsi:


 La contraint j ne doit pas commencer avant la moitié du temps de

réalisation de la tâche i se représente par un arc (i,j) de valeur di/2

 La contraint j ne doit commencer qu’après un temps t de la fin de i

 un arc(i,j) de valeur di +t

 La contraint j ne doit commencer qu’après la date bj

 arc(dp,j) de durée bj
124
Le problème central de l'ordonnancement

• La contraint j doit commencer avant la date cj un arc entre


dp et j de durée –cj

La contraint j ne doit suivre immédiatement la tâche i se


représente par un arc entre(i,j)

 REMARQUES
1.Attention, l’ajout des contraintes peut introduire des circuits dans le graphe.

125
Le problème central de l'ordonnancement
V. Le graphe potentiel étapes(PERT)

Â partir d’un projet donné on construit le graphe suivant:

►Chaque tâche est un arc de longueur di ( durée de i)

►Les sommets : Étapes du prj , i.e: le début et la fin de chaque tâche


►Si une tâche j succède à une tâche i L’extrémité initiale de j
coïncide avec l’extrémité terminale de i
►On rajoute au graphe deux étapes fictives : dp et fp
On définit ainsi un multigraphe sans circuit

126
Le problème central de l'ordonnancement

 Les dates au plus tôt et au plus tard de l’exécution d’une tâche sont calculées de

la même manière que pour le graphe potentiel-tâche.

►La durée min du projet est la longueur du plus long chemin entre le début et la
fin du projet.

127
Le problème central de l'ordonnancement
REMARQUES:
1.un sommet est une étape signifiant toutes les tâches qui y arrivent sont terminées
toutes les tâches qui en partent peuvent commencer
2.il est quelque fois nécessaire d'introduire des tâches fictives de durée nulle

128
Le problème central de l'ordonnancement

3. deux arcs ne peuvent avoir à la fois la même origine et la même extrémité. Il est
nécessaire de rajouter une tâche fictive dans ces conditions

129
Le problème central de l'ordonnancement

Graphe potentiel étapes(PERT)

130
Le problème central de l'ordonnancement
 Exemple

131
Le problème central de l'ordonnancement

132
Chapitre 6: Réseaux de transport

133
Réseaux de transport
I. Introduction
 Les réseaux de transport peuvent être utilisés pour modéliser l’écoulement de liquide à

l’intérieur de tuyaux, la circulation de pièces dans une chaîne de montage, du courant


dans les réseaux électriques, de l’information à travers les réseaux de
communication, ...
 D’une façon plus générale, un réseau de transport désigne le fait qu’un “matériau” (de

l’eau, de l’électricité, de l’information,...) doit s’écouler depuis une source, où il est


produit, jusqu’à un puits, où il est consommé. La source produit le matériau à un
certain débit, et le puits consomme ce matériau avec le même débit.
 Entre la source et le puits, ce matériau est transporté par des conduits ; chacun de ces

conduits a une capacité qui représente la quantité maximale de matériau pouvant


transiter par le conduit pendant une unité de temps (par exemple, 200 litres d’eau par
heure dans un tuyau, ou 20 ampères de courant électrique à travers un câble). 134
Réseaux de transport

II. Modélisation de réseaux de transport


 Les réseaux de transport peuvent être modélisés par des graphes :

 Chaque arc du graphe correspond à un conduit du réseau de transport, par lequel

le matériau est acheminé.


 Chaque arc est valué par la capacité du conduit correspondant.

 Chaque sommet du graphe correspond à une jonction de plusieurs conduits du

réseau de transport.
 Le graphe possède en plus deux sommets particuliers, notés s et p et correspondant

respectivement à la source et au puits du réseau de transport.

135
Réseaux de transport

 De façon plus formelle, un réseau de transport sera défini par un quadruplet

(G; c; s; p) tel que:


 G = (S;A) est un graphe orienté,

 est une fonction qui associe à chaque arc sa capacité,


 est la source,
 est le puits.

136
Réseaux de transport

 On suppose qu'il n'y a pas de sommet "inutile", c'est-à-dire que pour tout
sommet il existe un chemin de s à p passant par

 Pour des raisons de commodité d'écriture, on supposera que la fonction de

capacité c est définie pour tout couple de sommets , de telle sorte que si

n'est pas un arc du réseau, alors C =0 .

137
Réseaux de transport
 Exemple :
l’usine “Max & Fils”, localisée à Lille, produit des voitures. Ces voitures sont
acheminées en train jusqu’à Lyon, où elles sont stockées dans un entrepôt puis vendues.
Les capacités des trains sont :
 sur la ligne Lille/Reims : 16 voitures par jour,
 sur la ligne Lille/Paris : 13 voitures par jour,
 sur la ligne Paris/Reims : 4 voitures par jour,
 sur la ligne Reims/Paris : 10 voitures par jour,
 sur la ligne Reims/Dijon : 12 voitures par jour,
 sur la ligne Paris/Nevers : 14 voitures par jour,
 sur la ligne Dijon/Paris : 9 voitures par jour,
 sur la ligne Nevers/Dijon : 7 voitures par jour,
 sur la ligne Nevers/Lyon : 4 voitures par jour,
 sur la ligne Dijon/Lyon : 20 voitures par jour.
 Ce réseau de transport sera modélisé par le graphe suivant :
138
Réseaux de transport

La source est Lille, et le puits Lyon.

139
Réseaux de transport
III. Problème du flot maximal
 On s'intéresse ici au problème du flot maximal dans un tel réseau de transport.

 Il s'agit de déterminer la plus grande quantité de matériau pouvant voyager

depuis la source jusqu'au puits, sans violer aucune contrainte de capacité, et tout
en préservant la propriété de "conservation de flot" : excepté la source et le puits,
le matériau doit s'écouler d'un sommet à l'autre sans perte ni gain.
 Autrement dit, le débit à l'entrée d'un sommet doit être égal au débit en sortie.

 De façon plus formelle, un flot d'un réseau de transport

 (G = (S;A); c; s; p) est une fonction telle que :

140
Réseaux de transport

1. Contrainte de capacité :

2. Contrainte de symétrie :

3. Conservation du flot :

 La valeur d'un flot f, notée est égale à la somme des flots partant de la
source, et du fait de la propriété de conservation des flots, est aussi égale à
la somme des flots arrivant au puits :

141
Réseaux de transport
Exemple : Un flot pour le réseau de transport de l’usine “Max & Fils” est :

Ce flot sera généralement représenté en ne faisant figurer que les arcs de valeurs
positives :

14
Réseaux de transport
 Définition du problème du flot maximal : Etant donné un réseau de transport

(G; c; s; p), il s’agit de trouver un flot f tel que |f | soit maximal.


 Modélisation en programmation linéaire : Le problème du flot maximal peut

être exprimé comme un problème de programmation linéaire, c’est-à-dire comme


une fonction linéaire à maximiser tout en respectant un certain nombre de
contraintes linéaires. Etant donné le réseau de transport (G = (S;A); c; s; p), il
s’agit de résoudre le problème linéaire suivant :

143
Réseaux de transport
1. Algorithme de Ford Fulkerson
 On étudie ici l'algorithme de Ford-Fulkerson permettant de résoudre le problème
du flot maximal sans passer par sa modélisation linéaire.

 L'algorithme procède selon une approche "gloutonne", en augmentant


progressivement un flot :

• Au départ, le flot est nul, c'est-à-dire que pour tout couple de


sommets
 On augmente ensuite itérativement le flot f en cherchant à chaque fois un

"chemin améliorant", c'est-à-dire un chemin allant de la source s jusqu'au


puits p et ne passant que par des arcs dont le flot actuel est inférieur à la
capacité. 144
Réseaux de transport

 Pour cela, à chaque itération, on calcule la "capacité résiduelle" de chaque arc,

c'est-à-dire la quantité de flot pouvant encore passer.


 De façon plus formelle, étant donné un réseau de transport (G = (S;A); c; s ; p),

et un flot f, on définit :
 La capacité résiduelle d'un couple de sommets notée
est la quantité de flot pouvant encore passer par sans dépasser la
capacité:

145
Réseaux de transport
 Le réseau résiduel de G, noté est le graphe partiel de G ne
contenant que les arêtes dont la capacité résiduelle est positive:

 Un chemin améliorant est un chemin sans circuit allant de s à p dans le réseau

résiduel
 La capacité résiduelle d'un chemin améliorant ch , notée est la plus
grande quantité de flot transportable par les arcs du chemin.
 Théorème : Soient
 (G; c; s; p), un réseau de transport,
 f, un flot de G,
 Ch un chemin améliorant dans le réseau résiduel
146
Réseaux de transport
 un flot défini par:

 Alors, f ' est un flot de (G; c; s; p) tel que .

147
Réseaux de transport

148
Réseaux de transport
 Principe:

 L'idée de l'algorithme de Ford Fulkerson est de faire passer un flot compatible dans

le réseau, le plus évident est le flot nul, puis l'améliorer jusqu'à ce qu'on obtienne
un flot complet.
 Une chaine pour laquelle le flot peut être augmenté est une chaine dont les arcs

dans le sens direct n'ont pas atteint leur limite et les arcs dans le sens indirect ont
un flux non nul qui les traverse.
 Autrement dit: une chaine C est dite augmentante si:

 Pour tout arc U direct de C, c'est-à-dire:

 Pour tout arc U indirect de C, c'est-à-dire

149
Réseaux de transport

Le flot sur cette chaine C peut être augmenté de la valeur


suivante:

Pour améliorer le flot on ajoute Ɛ . au flot des arcs , c'est-


à-dire les arcs directs dans la chaine.
On retranche au flot des arcs de , c'est-à-dire, les arcs
indirects, dans la chaine.
150
Réseaux de transport
2. Exemple du problème du flot maximal :
 Voici une chaine C reliant les sommets s et p prise d'un réseau de transport dont le
flot peut être augmenté:

On augmentera donc le flot de cette chaine de 1, ce qui signifie:


- Augmenter de 1 le flux entre s et x1.
- Augmenter de 1 le flux entre x1 et x2.
- Diminuer de 1 le flux entre x3 et x2.
- Augmenter de 1 le flux entre x3 et p. On obtient alors le nouveau flot sur la chaine:
151
Réseaux de transport
 Recherche d’un chemin améliorant dans le réseau résiduel : Il s’agit d’un point

critique de l’algorithme, qui peut faire varier considérablement l’efficacité de


l’algorithme. Considérons par exemple le réseau de transport suivant :

 Au départ, on peut trouver plusieurs chemins améliorants différents pour ce réseau, à

savoir <s,s1,s2,p>, ou <s,s1,p>, ou encore <s,s2,p>. Si l’on choisit le premier chemin


(<s,s1,s2,p>), de capacité résiduelle 1, alors le réseau résiduel devient :

152
Réseaux de transport
 On peut alors trouver un deuxième chemin améliorant <s,s2,s1,p>, de capacité

résiduelle 1, et le réseau résiduel devient :

On peut continuer ainsi, de telle sorte qu’à chaque fois on trouve un chemin
améliorant de capacité résiduelle égale à 1. Par conséquent, ce n’est qu’au bout de
2000 étapes successives que l’on trouvera le flot maximal et que l’algorithme
s’arrêtera.). l’algorithme converge plus rapidement, et nécessite au plus n*p calculs
de chemins améliorants successifs (avec n = nombre de sommets et p = nombre
d’arcs). Par conséquent, pour chercher le chemin améliorant à chaque étape de
l’algorithme de Ford-Fulkerson, il faudra utiliser un parcours en largeur d’abord,
153
permettant de trouver un plus court chemin améliorant (en nombre d’arcs).
Réseaux de transport
3. Complexité
 Si on considère un réseau de transport ayant n sommets et p arcs, l'initialisation

(première boucle pour) nécessitera de l'ordre de opérations.


 On passera ensuite au plus n*p fois dans la boucle "tant que". A chaque passage

dans cette boucle, on effectue un parcours en largeur pour chercher le chemin


améliorant, ce qui nécessite de l'ordre de n + p opérations, puis on parcourt les arcs
du chemin améliorant trouvé pour calculer la capacité résiduelle du chemin et mettre
à jour le flot et la capacité résiduelle du réseau. Le chemin améliorant étant
acyclique, il comporte au plus n-1 arcs, et donc cette série de traitements nécessite
de l'ordre de n opérations.
 Au total, on fera de l'ordre de + (n*p)*(n + p) opérations. Etant donné que le
réseau est connexe, on a .
154
 Par conséquent, la complexité globale de l'algorithme est en .
Réseaux de transport

4. Flot compatible et flot complet:


Soit le réseau R=(X,U,C) suivant:

Dans le réseau R, le flot qui traverse chaque arc ne dépasse pas sa capacité, alors se
flot est compatible.
 Flot complet:
Un flot est complet si pour tout chemin allant de la source au puits il y'a au moins un
arc saturé, c'est-à-dire: le flux qui le traverse est égal à sa capacité (f(u)=c(u)).
155
Réseaux de transport
 Exemple:
Dans la figure précédente, on a 3 chemins qui mènent de s à p pour lesquels on a au
moins un arc saturé. Le flot est complet.

156
Réseaux de transport
IV. Exercice d’application
 Une usine à gaz alimente une ville V par l'intermédiaire du réseau de distribution

ci-dessous.
 Les nombres associés aux arcs représentent les capacités de transport.

On voudrait connaitre la quantité maximale que peut écouler l'usine. Ce qui


revient à chercher un flot maximum sur le réseau.
157
bibliographie

[1] Christine Solnon, Théorie des graphes et optimisation dans les graphes.

[2] Aimé Sache, La théorie des graphes, Presse universitaires de France.

[3] Lilia Horchani, algorithmique de graphe et optimisation, ENSI, 2012.

[4] Michel COUPRIE, Graphes et algorithmes Notes de cours et exercices,2017

158

Vous aimerez peut-être aussi