Académique Documents
Professionnel Documents
Culture Documents
Introduction générale 4
1
1.6.6 Graphe Transitif . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6.7 Graphe Biparti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6.8 Graphe Multiparti . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.7 Stable / Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.8 Exploration d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.9 Isomorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4 Problèmes d’ordonnancement 32
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2 contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Les tâches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4 Diagramme de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5 Représentation par un graphe potentiels-tâches . . . . . . . . . . . . . . . 34
4.6 Recherche d’un ordonnancement optimale . . . . . . . . . . . . . . . . . . 35
4.7 Marges totales et chemin critique . . . . . . . . . . . . . . . . . . . . . . . 36
5 Arbres et Arborescences 37
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2 L’arborescence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.3 Arbre couvrant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4 Arbre couvrant de poids minimun . . . . . . . . . . . . . . . . . . . . . . 39
6 Les flots 41
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.2 Flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.3 Propriétés fondamentales . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.3.1 Flot maximal et coupe minimale . . . . . . . . . . . . . . . . . . . 43
6.3.2 Graphe d’écart et chemin augmentant . . . . . . . . . . . . . . . . 43
Introduction générale
La théorie des graphes est un très vaste domaine, en évolution constante tant du
point de vue des applications que de celui des recherches fondamentales et constitue
aujourd’hui un corpus de connaissances très important. Ce cours ne constituera donc
qu’une introduction à cette théorie.
La théorie des graphes est née au dix-huitième siècle en essayant de trouver des
solutions à des exercies considŕés comme étant des curiosités mathématiques.
En 1736 Euler présenta une communication dans laquelle il proposait une solution
au célèbre problème des ponts de Kônigsberg. Le problème posé était le suivant. Deux
deltas C et D sur la rivière Pregel à Kônigsberg (Actuellement Kaliningrad) étaient
reliées entre elles ainsi qu’aux rivages A et B à l’aide de sept ponts comme le montre la
figure 1.
C D
4
Introduction générale
isent pour colorier n’importe quelle carte plane telle que les pays ayant une frontière
commune soient de couleurs différentes. Ce problème est resté très longtemps sans solu-
tion. Il a fallu attendre jusqu’en 1976 pour que Appel et Haken prouvent ce théorème
en réduisant le problème à un nombre fini de situations particulières et en trouvant une
solution pour chacune d’entre elles à l’aide d’un ordinateur.
Le second problème est dû à Sir Hamilton. En 1859, il inventa un casse-tête qui
consiste en un dodécaèdre régulier en bois (un polyèdre à 12 faces et 20 sommets), chaque
face étant un pentagone régulier. Trois arêtes sont donc issues de chaque sommet. Un
clou est fiché sur chaque sommet marqué du nom de vingt grandes villes mondiales. Le
casse-tête consiste à enrouler une ficelle passant une fois et une seule fois par chacune des
villes (sommets). Bien que la solution de ce problème soit aisée à obtenir, personne n’a
encore trouvé de condition nécessaire et suffisante de l’existence d’un tel chemin (appelé
chemin Hamiltonien) dans un graphe quelconque.
Les graphes constituent donc à la fois une théorie et un outils qui permettent de
modéliser une grande variété de problèmes en se ramenant à l’étude de graphes. Les
derniers travaux en théorie des graphes sont aussi effectués par des informaticiens, du
fait de l’importance que revêt l’aspect algorithmique.
Les domaines d’applications des graphes sont diverses, justifiant une recherche im-
portante en algorithmique. On peut citer :
– Les réseaux de communication : réseaux routiers, de chemin de fer, de téléphone,
de relais de télévision, réseaux électriques, réseaux des informations dans une or-
ganisation, etc... ;
– La gestion de la production et les problèmes d’ordonnancement des tâches : Le
graphes potentiels-étapes plus connu sous le nom de graphes PERT (Programme
Evaluation and Research Task) est l’outil de résolution de ce type de problèmes ;
– Les flots dans les rÃľseaux : l’étude des circuits électriques, Kirchhof, qui a étudié
les réseaux électriques, peut être considéré comme un des précurseurs de cette
théorie ;
– La chimie, la sociologie et l’économie : la notion de clique est un exemple de
l’implication de la théorie des graphes dans ces disciplines.
5
Chapitre 1
1.1 Introduction
Les graphes représentent de manière simple et naturelle des relations entre les objets.
Les outils mathématiques et les algorithmes mises au point en théorie des graphes per-
mettent de résoudre une multitude de problèmes, tels que les problèmes de cheminement,
d’ordonnancement, d’affectation, etc.
Un graphe non orienté G = (X, E) est défini par les deux ensembles :
– X = {x1 , x2 , . . . , xn } est l’ensemble fini de sommets, n > 1.
– E = {e1 , e2 , . . . , em } est l’ensemble fini d’arêtes.
Chaque élément ei ∈ E est une paire non ordonnée de sommets, ei = (x, y). x et
6
Concepts fondamentaux des graphes
x3
x2
x1
x4
x6 x5
Figure 1.1 – Un graphe orienté
x2
x1
x3
x4
x5
Figure 1.2 – Un graphe non orienté
1.2 Définitions
– Le nombre de sommets dans un graphe est appelé l’ordre du graphe.
– Si les deux extrémités d’un arc (resp. d’une arête) sont confondues alors cet arc
(resp. cette arête) est appelée boucle.
– Si deux arcs (resp. deux arêtes) possèdent les mêmes extrémités, on dit alors qu’ils
sont parallèles.
7
Concepts fondamentaux des graphes
Pour tout graphe orienté, on définit deux applications donnant l’extrémité initiale et
terminale d’un arc donné :
I : U → X, u = (x, y) → x
T : U → X, u = (x, y) → y
On appelle multiplicité d’un arc (resp. arête) (xi , xj ), la valeur mij correspondant
au nombre d’arcs qui relient xi à xj . La multiplicité d’un graphe G est le nombre m(G)
correspondant au maximum des mij .
Définition 1 (Graphe Simple) Un graphe non orienté est dit simple s’il ne contient
pas de boucles, de plus entre tout couple de sommets il y a au plus une arête.
Dans le cas d’un graphe G = (X, U ) orineté, G est dit simple s’il ne contient pas de
boucles et entre tout couple de sommets x, y ∈ X il y a au plus un arc ayant x comme
extrémité initiale et y comme extrémité terminale.
8
Concepts fondamentaux des graphes
d+
G (x) = |{u ∈ U/I(u) = x}|
d−
G (x) = |{u ∈ U/T (u) = x}|
Remarque Pour tout graphe, nous avons : dG (x) > |V (x)|. Si G est un graphe non
orienté simple alors on a : dG (x) = |V (x)|.
Notations
– On appelle degré minimal d’un graphe G qu’on note par δ(G), le plus petit degré
dans le graphe G. δ(G) = min{dG (x)}
– On appelle degré maximal d’un graphe G qu’on note par ∆(G), le plus grand degré
dans le graphe G. ∆(G) = max{dG (x)}
– Si dG (x) = 0 Alors x est dit sommet isolé.
– Si dG (x) = 1 Alors x est dit sommet pendant.
– Un arc (resp. Une arête) incident(e) à un sommet pendant est aussi dit(e) arc
(arête) pendant(e).
9
Concepts fondamentaux des graphes
preuve Chaque arête a exactement deux extrémité ⇒ Elle est comptée deux fois
dans le degré de chaque sommet ⇒ La somme totale des degrés est égale à deux fois le
nombre total d’arêtes.
Cas orienté :
Pour tout graphe orienté G = (X, U ), on a :
d+
X X X
dG (x) = 2|U | et G (x) = d−
G (x) = |U |
x∈X x∈X x∈X
Preuve Chaque arc a exactement une extrémité initiale et une extrémité termi-
nale ⇒ Chaque arc est comptabilisé une fois dans d+ pour son extrémité initiale et une
autre fois dans d− pour son extrémité finale. Le nombre total d’arcs ayant une extrémité
initiale (resp. terminale) est exactement la somme des demi-degrés extérieurs (resp. in-
térieurs).
A tout graphe d’ordre n on associe une matrice M de n lignes et n colonnes dont les
éléments sont notés Mij .
Pour un graphe non orienté G = (X, E),
1 si xi xj ∈ E
Mij = (1.1)
0 sinon
Remarque 1
Pour un graphe orienté G = (X, U ), Mij représente le nombre d’arcs ayant i comme
extrémité initiale et j comme extrémité terminale.
10
Concepts fondamentaux des graphes
0 1 0 1 1
1 1 0 0 0
M = 0 0 0 1 1
1 0 1 0 1
1 0 1 1 0
Remarque 2
– Les coefficients de M pour un graphe simple est binaire avec la diagonale com-
plètement à 0.
– La somme d’une ligne i = d+ −
G (i). La somme d’une colonne j = dG (j).
A tout graphe non orienté G = (X, E), on peut associer une matrice M de n lignes
et m colonnes. Où n est le nombre de sommets dans G et m est le nombre d’arêtes dans
G.
Mij représente le nombre de fois où le sommet i est incident à l’arête j. Les éléments de
M sont dans {0, 1, 2}
Si deux colonnes j1 et j2 sont identiques alors les arêtes j1 et j2 sont parallèles.
Si un élément Mij = 2 alors l’arête j est une boucle.
11
Concepts fondamentaux des graphes
est détectée mais son emplacement ne peut pas être précisé à partir de cette matrice.
1.4.3 Listes
1 2 3 4 5 6 7
PS
1 2 4 7 9 9 10
1 2 3 4 5 6 7 8 9
LS
6 5 6 2 4 6 2 4 5
Figure 1.5 – Représentation par les listes de successeurs du graphe de la fig. 1.1
12
Concepts fondamentaux des graphes
Un graphe est dit simple s’il ne contient ni boucles ni arcs parallèles. Si G est simple,
on a dG (x) = |V (x)|.
x2 x3
x1
x4
x6 x5
Figure 1.6 – Un graphe complet
13
Concepts fondamentaux des graphes
x2 x3
x1
x4
x6 x5
Figure 1.7 – Un graphe régulier
Cette notion est spécifique aux graphes orientés. G est symétrique ssi ∀x, y ∈ X, (x, y) ∈
U ⇒ (y, x) ∈ U
Cette notion est spécifique aux graphes orientés. G est antisymétrique ssi ∀x, y ∈
X, (x, y) ∈ U ⇒ (y, x) ∈
/U
Cette notion est spécifique aux graphes orientés. G est transitif ssi ∀x, y, z ∈ X, (x, y) ∈
U et (y, z) ∈ U ⇒ (x, z) ∈ U
G est dit biparti ssi l’ensemble de ses sommets X admet une partition en 2 sous
ensembles X1 et X2 avec X1 ∩ X2 = ∅ et X1 ∪ X2 = X.
Dans le cas orienté : ∀(x, y) ∈ U ⇒ x ∈ X1 et y ∈ X2
Dans le cas non orienté : ∀x, y ∈ E(x ∈ X1 et y ∈ X2 )ou(x ∈ X2 ety ∈ X1 ).
G est dit biparti complet ssi G est dit biparti et ∀x ∈ X1 et ∀y ∈ X2 ⇒ (x, y) ∈ U .
14
Concepts fondamentaux des graphes
x1
y1
x2
y2
x3
y3
x4
G est dit multiparti ssi l’ensemble de ses sommets X admet une partition en p sous
ensembles X1 , X2 , . . . Xp (p > 3). Avec Xi ∩ Xj = ∅(i 6= j) et X1 ∪ X2 . . . ∪ Xp = X.
Dans le cas orienté : ∀(x, y) ∈ U ⇒ x ∈ Xk et y ∈ Xk+1 (avec1 6 k 6 p − 1).
Dans le cas non orienté : ∀x, y ∈ E(x ∈ Xk et y ∈ Xk + 1) ou (y ∈ Xk et x ∈
Xk+1 )avec1 6 k 6 p − 1
Si S est le plus grand stable dans G Alors |S| 6 nombre de cliques dans G et |S| =
nombre minimal de cliques dans G.
15
Concepts fondamentaux des graphes
Si C est la plus grande clique dans G Alors |C| 6 nombre de stables dans G et |C| =
nombre minimal de stables dans G.
Algorithme Exploration
Entrées Graphe G=(V,E), Sommet s
M : structure de données ordonnée
Initialiser tous les sommets à non marqué ; Marquer s ;
M ← s;
Tant Que M 6= ∅
choisir un sommet x de M ;
Marquer x ;
M ← M \ {x} ; // Retirer x de l’ensemble M
Pour chaque voisin y non marqué de x
M ← M ∪ {y} ; // Ajouter y à l’ensemble M
Fin Pour
Fin TantQue
Il existe deux grandes stratégies "opposées" pour sélectionner à chaque étape le som-
met à marquer :
1. La recherche en profondeur DFS (Depth First Search)
Dans l’exploration, l’algorithme cherche à aller très vite "profondément" dans le
graphe, en s’éloignant du sommet s de départ. La recherche sélectionne à chaque
étape un sommet voisin du sommet marqué à l’étape précédente. Dans cette explo-
ration, M est une pile et la procédure choisir consiste donc à dépiler un sommet
16
Concepts fondamentaux des graphes
(LIFO).
2. La recherche en largeur BFS (Breath First Search).
Dans l’exploration l’algorithme cherche au contraire à épuiser la liste des sommets
proches de s avant de poursuivre l’exploration du graphe (FIFO).
1.9 Isomorphisme
Définition 4 Soient deux graphes orientés G1 = (X1 , U1 ) et G2 = (X2 , U2 ). On dit que
G1 et G2 sont isomorphes (on note G1 ≡ G2 ) ssi ∃f : X1 → X2 et ∃g : U1 → U2 deux
bijections telles que ∀u ∈ U1 , u = (x, y) ⇔ g(u) = (f (x), f (y)).
Définition 5 Soient deux graphes non orientés G1 = (X1 , E1 )etG2 = (X2 , E2 ). On dit
que G1 et G2 sont isomorphes (on note G1 ≡ G2 ) ssi ∃ϕ : X1 → X2 une bijection telle
que ∀x, y ∈ X1 , e = x, y ∈ E1 ⇒ ϕ(x), ϕ(y) ∈ E2 .
Remarque 3 La réciproque n’est pas toujours vraie. On peut trouver deux graphes non
isomorphes ayant le même nombre de sommets et le même nombre d’arc (ou arêtes).
17
Chapitre 2
On appelle chaîne dans un graphe non orienté (resp. orienté) G = (X, E) (resp.
G = (X, U )), une suite alternée de sommets et d’arêtes (resp. d’arcs) :
µ = x0 e1 x1 . . . xk−1 ek xk (resp. µ = x0 u1 x1 . . . xk−1 uk xk ) Tel que pour tout 1 6 i 6 k, xi
et xi+1 sont extrémités de l’arête ei (resp. de l’arc ui ).
On dit que µ est une chaîne joignant les sommets x0 et xk de longueur k.
e1 x2
x1 e7
e4
e2 x3
e5
e6
x4
e3 x5
Figure 2.1 – Un graphe non orienté
2.1.2 Chemin
On appelle chemin dans un graphe orienté G = (X, U ), une suite alternée de som-
mets et d’arcs :
γ = x0 u1 x1 . . . xk−1 uk xk Tel que pour tout 1 6 i 6 k, le sommet xi est extrémité initiale
de l’arc ui et le sommet xi+1 est son extrémité terminale.
18
Cheminement dans les Graphes
u6 x3
x2
u7
u8
x1 u2 u9
u4 u5 x4
u1
u3
x6 x5
Figure 2.2 – Un graphe orienté
On dit qu’un chemin ou une chaîne est simple si tous les arcs ou les arêtes les
composants sont distincts.
On dit qu’un chemin ou une chaîne est élémentaire si tous les sommets les composants
sont distincts.
Remarque 4
- Toute chaîne (ou chemin) élémentaire est aussi simple. L’inverse n’est pas toujours
vrai.
- Dans un graphe simple, une chaîne ou un chemin peuvent être déterminés juste en
énumérant la suite des sommets qui les composent.
19
Cheminement dans les Graphes
Un chemin (resp. chaîne) dont les extrémités sont confondues est dit chemin fermé
(resp. chaîne fermée).
2.2.2 Cycle
On appelle cycle dans un graphe non orienté (resp. orienté) G = (X, E) (resp. G =
(X, U ) ), toute chaîne fermée simple : µ = x0 e1 x1 . . . xk−1 ek xk (resp. µ = x0 u1 x1 . . . xk−1 uk xk )
Tel que k 0, et x0 = xk . On dit que µ est un cycle longueur k.
2.2.4 Circuit
On appelle circuit dans un graphe orienté G=(X, U), tout chemin fermé simple :
γ = x0 u1 x1 . . . xk−1 uk xk tel que k > 0, et x0 = xk . On dit que γ est un circuit de
longueur k.
Définition 6 On dit qu’un cycle ou circuit est élémentaire si tous les sommets qui les
composent sont distincts.
Remarques La longueur d’un cycle ou d’un circuit est aussi égale au nombre de som-
mets formant ce cycle ou circuit.
20
Cheminement dans les Graphes
2.3 Connexité
Un graphe est dit connexe s’il existe une chaîne joignant chaque paire de sommets x
et y (x 6= y).
Remarque 5 Un graphe qui contient une seule composante connexe est dit graphe con-
nexe.
21
Cheminement dans les Graphes
Données :
– En entrée :
– X : ensemble de n éléments représentant les identificateurs des sommets.
– U : ensemble de m éléments sous forme (i, j) représentant les arcs où i, j ∈ X
– r : identificateur d’un sommet de X qu’on appelle racine.
– En sortie :
– CFC : sous-ensemble de X. Le sous graphe engendré par cet ensemble représente
une composante fortement connexe.
– Autres :
22
Cheminement dans les Graphes
– i, j : variables sommets.
– Marque : vecteur de n éléments booléens.
– A, D : sous-ensembles de X. Ils représentant l’ensemble des ascendants et
l’ensemble des descendants de la racine.
L’algorithme :
(* Initialisation *)
D ← {r} ;
Pour tout i ∈ X M arque[i] ← f aux ;
(* Recherche des descendants de r *)
Tant que (∃i ∈ D)
M arque[i] ← vrai ;
Pour tout (i, j) ∈ U D ← D ∪ {j} ;
(* Réinitialisation *)
A ← {r} ;
Pour tout i ∈ X M arque[i]àf aux ;
(* Recherche des ascendants de r *)
Tant que (∃i ∈ A) et (M arque[i] = f aux)
M arque[i] ← vrai
Pour tout (j, i) ∈ U A ← A ∪ {j} ;
(* Calcul de la C.F.C. *)
CF C ← D ∩ A ;
Remarque 6 Un graphe fortement connexe possède une seule C.F.C. Le graphe réduit
d’un graphe ne possède pas de circuits.
23
Cheminement dans les Graphes
Définition 9
Définition 10 Cocircuit
Un cocircuit dans un graphe orienté G = (X, U ) est un cocycle dans G, dans lequel tous
les arcs sont orientés dans le même sens.
Définition 11
Proposition 5
24
Cheminement dans les Graphes
Un parcours Eulerien passe une fois et une seule fois par chaque arête (resp. arc) du
graphe. Le parcours peut être une chaîne, un chemin, un cycle ou un circuit. Soit G un
graphe contenant m arêtes (resp. m arcs) :
Une chaîne simple, un chemin simple, un cycle simple ou un circuit simple de longueur
m est appelé Eulérien.
Proposition 6
Un parcours Hamiltonien passe une fois et une seule fois par chaque sommet du graphe.
Le parcours peut être une chaîne, un chemin, un cycle ou un circuit. Soit G un graphe
d’ordre n (contenant n sommets) : Une chaîne (resp. un chemin) élémentaire de longueur
n − 1 est appelé chaîne Hamiltonienne (resp. chemin Hamiltonien).
Un cycle (resp. circuit) élémentaire de longueur n est appelé cycle (resp. circuit) Hamil-
tonien.
Théorème 2
25
Cheminement dans les Graphes
Le théorème ci-dessous est utilisé pour démontrer qu’un graphe n’est pas Hamiltonien
(ne contient pas de cycle Hamiltonien).
Si G = (X, E) est un graphe Hamiltonien, alors pour tout ensemble de sommets S ⊂ X,
on a : p(GX−S ) 6 |S| où p(GX−S ) est le nombre de composantes connexes du sous
graphe de G induit par l’ensemble X − S.
26
Chapitre 3
27
Problèmes de cheminement dans les Graphes
Soit G = (X, U ) est un graphe sans circuits. L’ensemble des sommets X peut être
partitionné au maximum en λ(G) + 1 stables. Où chaque sommet de niveau i sera placé
dans le stable Ni. Chaque stable Ni représente un niveau de G.
On définit le poids d’un chemin γ comme la somme des poids des arcs de γ, p(γ) =
X
p(u). On l’appelle aussi distance.
u∈γ
28
Problèmes de cheminement dans les Graphes
Un circuit γ est dit absorbant si son poids est négatif (p(γ) < 0).
3.4.1 Principe
En entrée
X : ensemble des sommets
U : ensemble d’arcs sous forme (x,y)
p : un vecteur de n éléments où p[i] représente le poids du sommet i dans le réseau.
r : un sommet donné de X.
En sortie
π : vecteur de n éléments. π(x) représente le poids du chemin optimal de r vers x
S : ensemble des sommets qui sont extrémité terminale d’un chemin commençant par r
et pour lesquels π(i) est calculé définitivement.
3.4.3 Algorithme
Debut
S ← {r}
Pour tout x ∈ X ; π(x) ← +∞ ; P ré(x) ← N U LL ; π(r) ← 0
Pour tout (x ∈ S) et (∀u ∈ U avec T (u) = x on a I(u) ∈ S) Faire
Pour tout ((x, y) ∈ U ) Faire
Si π(x) > π(y) + p(u) Alors π(x) ← π(y) + p(u) ; P ré(x) ← y
Fait
29
Problèmes de cheminement dans les Graphes
S ←S\x
Fait
Fin
Remarque 7
Si le chemin optimal est le chemin de poids maximal, on change dans l’algorithme min
par max et +∞ par −∞
Si ∀x ∈ X p(x) = 1, l’algorithme calculera le plus court chemin en nombre d’arcs.
La complexité de l’algorithme est O(n2 ).
Les données
En entrée
X : ensemble des sommets
U : ensemble d’arcs sous forme (x, y)
p : un vecteur de n éléments où p[i] représente le poids de l’arc i dans le réseau.
r : un sommet donné de X.
En sortie
π : vecteur de n éléments. Chaque entrée π[x] représente le poids du chemin optimal de
r vers x
S : ensemble des sommets qui sont extrémité terminale d’un chemin commençant par r.
30
Problèmes de cheminement dans les Graphes
Autres
f : vecteur de n éléments. Chaque entrée f [k] contient un sommet de X. le vecteur f à
la fin sera trié dans un ordre croissant par rapport aux valeurs de π[f [k] ].
I(u) : donne l’extrémité initiale de l’arc u. T (u) : donne l’extrémité terminale de l’arc u.
3.5.1 L’Algorithme
Début
s ← r ; k ← 1 ; f [k] ← r
Pour tout x ∈ X faire π[x] ← +∞ fait
π[r] ← 0
Tant que (k < n) et (π[x] < +∞)
Faire
Pour tout u ∈ U/(I(u) = f [k]) et (T (u) ∈
/ S)
faire
x=T(u)
Si π(x) > π[f [k]] + p[u]
Alors π(x) ← π[f [k]] + p[u] ; P ré(x) ← f [k]
Fait
x ← y/y ∈ X − S et π[y] minimal
k ←k+1
f [k] ← x
S ← S \ ∪x
Fait
Fin.
31
Chapitre 4
Problèmes d’ordonnancement
4.1 Introduction
On a affaire à un problème d’ordonnancement lorsque l’on est confronté à un prob-
lème d’organisation. Il faut accomplir de multiples tâches qui demandent un certain
temps d’exécution et qui doivent être exécutées dans un certain ordre. II est donc néces-
saire d’identifier les tâches prioritaires en fonction de l’objectif à atteindre et, lors de
leur exécution, il faut détecter les retards et les dépassements de moyens.
Un problème d’ordonnancement consiste alors à organiser dans le temps la réalisa-
tion de tâches d’un projet, compte tenu de contraintes temporelles (délais, contraintes
d’enchaînement) et de contraintes portant sur la disponibilité des ressources requises afin
de minimiser la durée globale du projet.
Les nombreuses méthodes d’ordonnancement peuvent se regrouper en deux grandes
familles selon le principe de base qu’elles utilisent. On distingue :
– les méthodes du type diagramme à barres : GANTT
– les méthodes à chemin critique : potentiel-tâches, potentielétapes (PERT).
4.2 contexte
Un projet consiste en un ensemble de n tâches liées par des contraintes de succession
ou de précédence, l’objectif est de :
– Calculer la durée minimale du projet.
– Déterminer les dates de début au plus tôt et au plus tard des tâches.
– Déterminer les tâches critiques.
32
Problèmes d’ordonnancement
Il faut donc identifier les tâches, leurs durées et les contraintes de succession ou de
précédence entre ces différentes tâches. Nous ne considérons pas les contraintes liées aux
ressources dans ce cours (les ressources sont supposées illimitées).
33
Problèmes d’ordonnancement
Tâches
f
e
d
c
b
a
t
1 2 3 4 5 6 7 8 9
6
a f
2
0 3
3 d
0
α b 4 ω
3 e
0
6
c
34
Problèmes d’ordonnancement
vji est la valuation de l’arc (j, i) (par exemple la durée dj de j) Γ−1 (i) est l’ensemble des
prédécesseurs de i.
Dans l’exemple précédent, on peut voir que la durée minimale du projet est 9,
qui, correspond au plus long chemin allant de α à ω (αaf ω).
– Les dates au plus tôt ta , tb et tc des tâches a, b et c sont toutes égale à 0.
– Les dates au plus tôt td et te des tâches d et e sont égale à 3.
– La date au plus tôt tf de la tâche f est égale à 6.
On peut aussi déterminer les dates de début au plus tard des taches ti sans retarder
le projet, c-à-d que tω = tω
35
Problèmes d’ordonnancement
Mi = ti − ti
Définition 15 Les tâches critiques ont une marge nulle, tout retard sur leur exécution
entraîne un retard global sur le projet.
Un chemin est critique s’il relie α et ω et s’il ne contient que des tâches critiques.
Définition 16 La marge libre d’une tâche i est le retard total qu’on peut se permettre
sur i sans remettre en cause la date de début des autres taâches.
mi = min (tk − ti − di )
k∈Γ(j)
36
Chapitre 5
Arbres et Arborescences
5.1 Introduction
Les arbres sont des graphes particuliers, très utilisés en algorithmiques et en infor-
matique.
Définition 17 Un arbre est un graphe connexe sans cycle. Une forêt est un graphe sans
cycle.
x2
x1
x3
x4 x5
– Si nous regardons les arbres sous l’angle des graphes acycliques, ils sont maximaux,
au sens où ajouter la moindre arête crée un cycle.
37
Arbres et Arborescences
Il existe également une relation très forte entre le nombre d’arêtes et le nombre de
sommets d’un arbre : un arbre T=(V,E) comporte exactement |V | − 1 arêtes. En effet :
– Un graphe connexe comporte au moins |V | − 1 arêtes.
– Un graphe sans cycle comporte au plus |V | − 1 arêtes.
Preuve Pour montrer l’équivalence entre ces 5 propriétés, le plus simple est d’établir
une série d’implications.
(1) ⇒ (2) Le graphe T étant à la fois connexe et acyclique, il possède exactement
n − 1 arêtes. (cf propriété des graphes connexes et propriété des graphes acycliques).
(2) ⇒ (3) La suppression d’une arête de T donne un graphe à n − 2 arêtes : il ne
peut être connexe (cf propriété des graphes connexes).
(3) ⇒ (4) Par l’absurde si T possèdait un cycle, la suppression d’une arête de ce cycle
ne saurait le déconnecter. Par suite T est acyclique. Puisqu’il est également connexe, il
possède donc exactement n-1 arêtes.
(4) ⇒ (5) L’ajout d’une arête à T donne un graphe à n arêtes : il ne peut être
acyclique (cf propriété des graphes acycliques).
(5) ⇒ (1) Considérons 2 sommets x et y de T . Si il existe l’arête (x, y), alors c’est un
chemin de x à y. Sinon ajoutons cette arête à T : nous créons alors un cycle, de la forme
(x, a, . . . , z, y, x). Ceci montre l’existance du chemin (x, a, . . . , z, y) entre x et y dans T .
Par définition T est donc un graphe connexe.
5.2 L’arborescence
une arborescence est un arbre comportant un sommet particulier r, nommé racine de
l’arborescence à partir duquel il existe un chemin unique vers tous les autres sommets.
La racine ne possède pas de prédécesseurs, les arcs sont tous orientés de la racine
vers les feuilles. Les feuilles sont les sommets n’ayant pas de successeurs.
38
Arbres et Arborescences
Notre problème s’énonce donc : Etant donné un graphe G = (V, E), déterminer un
graphe partiel connexe H = (V, F ) de poids minimum.
Il est facile de voir qu’un tel graphe partiel H doit être un arbre : si H n’est pas
acyclique, on peut supprimer une arête d’un de ses cycles sans le déconnecter et en
faisant diminuer le poids total.
39
Arbres et Arborescences
Algorithme Kruskal
Entrées : Graphe G = (V, E), C une valuation positive des arêtes ;
Sorties : T = (V, F ) un arbre couvrant de poids minimum ;
A←E;
F ← ∅;
i ← 0;
Tant que i < |V | faire
Choisir e ∈ A de poids minimum ;
A ← A − {e} ;
i ← i + 1;
si T = (V, F ∪ {e}) est acyclique alors F ← F ∪ e ;
fait
Retourner T = (V, F ) ;
fin.
Si le graphe G est connexe, l’algorithme de Kruskal délivre bien sûr un arbre couvrant
de poids minimum. sinon il délivre une forêt maximale de point minimum.
40
Chapitre 6
Les flots
6.1 Introduction
Les flots permettent de modéliser une très large classe de problèmes. Leur interpréta-
tion correspond à la circulation de flux physiques sur un réseau : distribution électrique,
réseau d’adduction d’eau ou tout autre liquide, acheminement de paquets sur un réseau
informatique, ...
Il s’agit d’acheminer la plus grande quantité possible de matière entre une source s
et une destination t. Les liens permettant d’acheminer les flux ont une capacité limitée,
et il n’y a ni perte ni création de matière lors de l’acheminement : pour chaque noeud
intermédiaire du réseau, le flux entrant (ce qui arrive) doit être égal au flux sortant (ce
qui repart) (Conservation des flux en chaque sommet : loi de Kirchhoff).
41
Les flots
6
a f
2
7 4
3 d
4 4
s b 5 t
3 e
5
3 4
c
6.2 Flot
Un flot représente l’acheminement d’un flux, de matière par exemple, depuis une
source s vers une destination t.
Un flot vérifie la loi de conservation analogue aux lois de Kirshoff en électricité, c’est
à dire que le flux entrant à une nœud (ce qui arrive) doit être égal au flux sortant de ce
nœud (ce qui repart). Il n’est donc pas possible de stocker ou de produire de la matière
aux nœuds intermédiaires
Le flux transitant sur chacun des arcs du réseau doit être inférieure à la capacité de
cet arc (flot compatible ou admissible).
Un flot est dit compatible si pour tout arc (x, y) ∈ U , 0 ≤ ϕ(x, y) ≤ c(x, y).
42
Les flots
La capacité d’une coupe, notée v(S, T ), est donnée par la somme des capacités
des arcs de la coupe.
X
v(S, T ) = c(u)
u∈ω + (S)
Soit ϕ un flot compatible sur R. Le graphe d’écart associé à ϕ sur R est le graphe
Re (ϕ) = (X, U e (ϕ)) défini comme suit : ∀u = (i, j) ∈ U ,
– Si ϕ(u) < c(u), (i, j) ∈ U e (ϕ) avec la capacité (résiduelle) c′ (i, j) = c(u) − ϕ(u)
– Si ϕ(u) > 0, (j, i) ∈ A avec la capacité c′ (j, i) = ϕ(u)
Soit ϕ un flot admissible sur R et Re (ϕ) = (X, U e (ϕ)) le graphe d’écart associé.
Soit µ un chemin allant de s à t dans Re (ϕ) et δ = minu∈µ c(u). Ce chemin est appelé
chemin augmentant car il est possible d’augmenter la valeur du flot sur R de δ de la
façon suivante ∀(i, j) ∈ µ :
– Si u = (i, j) ∈ U , alors ϕ(u) = ϕ(u) + δ
– Si u = (j, i) ∈ U , alors ϕ(u) = ϕ(u) − δ
43
Les flots
4
a f
1
4 4
1 d
4 1
s b 5 t
3 e
5
1 4
c
44
Les flots
45