TH Graphes
TH Graphes
TH Graphes
Support de Cours
Licence: L3
Contents
Introduction générale 7
3
1.12 Connexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.13 Composante connexe (cc) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.13.1 Graphe k-connexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.14 Forte Connexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.14.1 Composantes fortement connexes (cf c) . . . . . . . . . . . . . . . . . . . 21
1.15 Algorithmes de calcul des composantes fortement connexes . . . . . . . . . . . . 22
1.15.1 Graphe réduit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.16 Cocycles et Cocircuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.16.1 Représentation vectorielle d’un cocycle . . . . . . . . . . . . . . . . . . . . 24
1.17 Parcours Eulériens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.18 Parcours Hamiltoniens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4 Problèmes d’ordonnancement 39
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3 Les tâches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4 Diagramme de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.5 Représentation par un graphe potentiels-tâches . . . . . . . . . . . . . . . . . . . 41
4.6 Recherche d’un ordonnancement optimale . . . . . . . . . . . . . . . . . . . . . . 42
4.7 Marges totales et chemin critique . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5 Arbres et Arborescences 45
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2 Codage de Prüfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.1 Codage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2.2 Déodage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3 L’arborescence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4 Arbre couvrant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5 Arbre couvrant de poids minimun . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5
6 Les flots 49
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2 Flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.3 Propriétés fondamentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.3.1 Flot maximal et coupe minimale . . . . . . . . . . . . . . . . . . . . . . . 50
6.3.2 Graphe d’écart et chemin augmentant . . . . . . . . . . . . . . . . . . . . 51
6
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 de la recherche fondamentale 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éré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
7
Introduction générale
de l’existence d’un tel chemin (appelé chemin Hamiltonien) dans un graphe quelconque.
La théorie des graphes a connu un développement plus important lors de la deuxième guerre
mondiale, et la contribution de l’armée américaine est considérable.
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 importante en
algorithmique. On peut citer:
8
Chapter 1
1.1 Introduction
Les graphes représentent de manière simple et naturelle des relations entre les objets. Les out-
ils mathématiques et les algorithmes mises au point en théorie des graphes permettent de ré-
soudre une multitude de problèmes, tels que les problèmes de cheminement, d’ordonnancement,
d’affectation, etc.
Les sommets représentent les objets et les arcs ou les arêtes représentent la relation ou le lien
entre les différents objets.
9
Concepts fondamentaux des graphes
x2
x1
x3
x4
x5
Ce graphe est défini par l’ensemble des sommets X = {x1 , x2 , x3 , x4 , x5 } et l’ensemble des
arêtes E = {{x1 , x2 }, {x1 , x4 }, {x1 , x5 }, {x2 , x2 }, {x3 , x4 }, {x3 , x5 }, {x4 , x5 }}
x2 x3
x1
x4
x6 x5
1.2 Définitions
• L’ordre d’un graphe G est le nombre de sommets dans le graphe G.
• 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 possèdent les mêmes extrémités initiales et mêmes extrémités terminales, on
dit alors qu’ils sont parallèles.
10
Concepts fondamentaux des graphes
• x et y sont incidents à l’arc u (resp. à l’arête e), l’arc u (resp. l’arête e) est aussi incident(e)
aux sommets x et y.
• Deux arcs (resp. arêtes) sont dits adjacents s’ils ont une extrémité en commun.
11
Concepts fondamentaux des graphes
Notations
• Le degré minimal d’un graphe G, noté par δ(G), est le plus petit degré dans le graphe
G. δ(G) = min{dG (x)}
• Le degré maximal d’un graphe G, noté par ∆(G), est 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).
preuve: On peut prouver cette égalité par récurrence. En effet, pour un graphe G0 ayant n
sommets et aucune (zéro) arêtes
P l’égalité est vérifiée. On suppose maintenant que l’égalité est
vraie pour m arêtes, c-à-d x∈X dG (x) = 2m, il est facile de voir que d’une part l’ajout d’une
arête augmentera de un le degré de deux sommets (ou de deux le degré d’un même sommet si
l’arête est une boucle) ce qui implique que la somme (membre gauche de l’égalité) augmentera
de deux, d’autre part le nombre d’arêtes augmente de 1, le second membre augmente donc de 2.
L’égalité est donc préservée, ce qu’il fallait montrer.
Cas orienté:
Pour tout graphe orienté G = (X, U ), on a:
X X X
dG (x) = 2|U | et d+
G (x) = d−
G (x) = |U |
x∈X x∈X x∈X
12
Concepts fondamentaux des graphes
x2 x3
x1
x4
x6 x5
x2 x3
x1
x4
x6 x5
13
Concepts fondamentaux des graphes
x1
y1
x2
y2
x3
y3
x4
Un graphe biparti complet et simple G = (X1 ∪X2 , U ) (resp. G = (X1 ∪X2 , E)) avec |X1 | = p
et |X2 | = q est noté Kp,q .
14
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
• La somme d’une ligne k = la somme d’une colonne k = dG (k). La boucle est comptée deux
fois.
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.
Remarque 3
15
Concepts fondamentaux des graphes
0 0 0 0 0 1
0 0 0 0 1 1
0 1 0 1 0 1
M =
0
1 0 1 0 0
0 0 0 0 0 0
0 0 0 0 1 0
A tout graphe orienté G = (X, U ), 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’arcs dans G.
Une colonne nulle représente une boucle. Dans ce cas, toute boucle dans le graphe est détectée
mais son emplacement ne peut pas être précisé à partir de cette matrice.
1.7.3 Listes
A tout graphe orienté G=(X, U) avec |X| = n et |U | = m, on peut associer deux tableaux
(vecteurs) P S et LS:
P S : tableau de pointeurs à n+1 éléments, où: P S[i] : pointe sur l’éléments (la case) de LS
contenant le premier successeur du sommet i.
On pose P S[1] = 1, On pose P S[n + 1] = m + 1.
Pour tout n > i > 2 : P S[i] = k, où k = P S[i − 1]+ nombre de successeurs de i-1
Si un sommet i n’a pas de successeurs, on aura P S[i] = P S[i + 1]
LS : tableau de m éléments, où :
Les successeurs d’un sommet i se trouvent dans LS entre la case indiquée dans P S[i] et la case
P S[i + 1] − 1.
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.8: Représentation par les listes de successeurs du graphe de la fig. 1.2
Il existe encore d’autres représentations, les performances des algorithmes manipulant les
16
Concepts fondamentaux des graphes
graphes peuvent en dépendre. une représentation peut donc être plus ou moins adaptée.
1.8 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 4 La réciproque n’est pas toujours vraie. On peut trouver deux graphes non isomor-
phes ayant le même nombre de sommets et le même nombre d’arc (ou arêtes).
Pendant l’exploration du graphe un sommet peut être dans l’un des états:
- Non visité, ce sommet n’a pas encore été rencontré.
- Visité, sommet rencontré mais ces succésseurs n’ont pas été traités.
- Exploré, sommet visité et ses successeurs ont été traités.
On peut numéroter les sommet, pour chaque sommet x, ρ(x) correspond à l’ordre dans lequel
on a rencontré x. Pour chaque sommet x on peut aussi garder le sommet père pere(x) par lequel
on est passer pour rencontrer x.
17
Concepts fondamentaux des graphes
Algorithme Exploration
Entrées
Graphe G = (X, E), (ou G = (X, U ) si le graphe est orienté) ;
Sommet de départ s ;
Début
N on-visites = X \ {s} ;
V isites = {s} ;
Explores = ∅ ;
i = 1;
Tant que V isites 6= ∅ faire
Choisir un sommet x ∈ V isites ;
Pour Chaque sommet y adjacent à x faire
Si y ∈ N on − visites Alors
N on − visite = N on − visite \ {y} ;
V isite = V isite ∪ {y} ;
Explore = Explore ∪ {x} ;
pere(y) = x ;
ρ(x) = i;
Fin si
Fait
Fait
Fin
Il existe deux grandes stratégies "opposées" pour sélectionner à chaque étape le sommet à mar-
quer:
1.10.1 Chaîne
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.
C1 = x1 e2 x4 e5 x3 e6 x5 est une chaine de longueur 3
18
Concepts fondamentaux des graphes
e1 x2
x1 e7
e4
e2 x3
e5
e6
x4
e3 x5
Figure 1.10: Un graphe non orienté
u6 x3
x2
u7
u8
x1 u2 u9
u4 u5 x4
u1
u3
x6 x5
1.10.2 Chemin
On appelle chemin dans un graphe orienté G = (X, U ), une suite alternée de sommets 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.
On dit que γ est un chemin de x0 vers xk de longueur k.
Remarque 5
- 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
Concepts fondamentaux des graphes
1.11.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.
1.11.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 com-
posent sont distincts.
Remarques La longueur d’un cycle ou d’un circuit est aussi égale au nombre de sommets
formant ce cycle ou circuit.
Dans un graphe simple, un cycle ou un circuit peuvent être déterminés juste en énumérant
la suite des sommets qui les composent.
1.12 Connexité
Un graphe est dit connexe s’il existe une chaîne joignant chaque paire de sommets x et y (x 6= y).
20
Concepts fondamentaux des graphes
La relation
soit x = y
xRy ⇔ (1.2)
soit ∃ une chaine reliant x et y
est une relation d’équivalence, les classes d’équivalence X1 , X2 , . . . Xk induites par R sur l’ensemble
de sommets X engendre les composantes connexes de G.
G comporte alors k composantes connexes.
Un graphe qui contient une seule composante connexe est dit graphe connexe.
La relation
soit x = y
xRy ⇔ (1.3)
soit ∃ un chemin de x vers y et un chemin de y vers x
est une relation d’équivalence, les classes d’équivalence X1 , X2 , . . . Xk induites par R sur l’ensemble
de sommets X engendre les composantes fortement connexes de G.
G comporte alors k composantes fortement connexes.
Un graphe qui contient une seule composante fortement connexe est dit graphe fortement
connexe.
21
Concepts fondamentaux des 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:
– 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
22
Concepts fondamentaux des 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
23
Concepts fondamentaux des graphes
Un parcours Eulérien passe une et une seule fois par chaque arête (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
(m arcs) :
Une chaîne simple, un chemin simple, un cycle simple ou un circuit simple de longueur m est
appelé Eulérien.
Définition 13
Un graphe non orienté G admet une chaîne Eulérienne si et seulement si il est connexe (à des
points isolés près) et le nombre de sommets de degré impair est 0 ou 2.
Conséquences Un graphe non orienté G admet une chaîne Eulérienne d’un sommet x à un
sommet y (x 6= y) si et seulement si dG (x) et dG (y) sont impairs et ∀z sommet de G (z 6= x et
z 6= y), on a dG (z) pair.
Un graphe G admet un cycle Eulérien si et seulement ∀x sommet de G, on a dG (x) pair.
Proposition 6
Définition 14
24
Concepts fondamentaux des graphes
Il existe une condition nécessaire et suffisante pour déterminer si un graphe est eulérien. En
revanche, pour prouver qu’un graphe est hamiltonien, on ne dispose d’aucune condition néces-
saire et suffisante. Du point de vue algorithmique aussi on dispose d’un algorithme efficace pour
vérifier qu’un graphe est eulérien mais il n’y a pas d’algorithme efficace pour vérifier qu’un graphe
est hamiltonien.
Le théorème ci-dessous est utilisé pour démontrer qu’un graphe n’est pas Hamiltonien (ne
contient pas de cycle Hamiltonien), Condition nécessaire.
Théorème 2
Un graphe simple à n ≥ 3 sommets, tel que le degré minimum est d’au moins n/2 est hamiltonien.
un autre théorème qui est dû à John Adrian Bondy et Václav Chvátal (1976) basé sur la
construction de la fermeture transitive du graphe
Définition 15
Tant qu’il reste des sommets u et v non adjacents tels que deg(u) + deg(v) ≤ n, on ajoute l’arête
{u, v} au graphe. Quand on ne peut plus en ajouter, on a obtenu ce qu’on appelle la fermeture
du graphe.
Théorème 4
x2 x2
x1 x3 x1 x3
x5 x4 x5 x4
25
Concepts fondamentaux des graphes
Sa fermeture transitive est un graphe complet (K5 ), qui est hamiltonien, le graphe de départ
est donc hamitonien.
Malgré tous les résultats concernant l’existence de parcours hamiltoniens, dans de nombreux
cas, on ne dispose pas d’outils mathématiques efficace permettant de voir si un graphe donné
est hamiltonien ou ne pas. Ainsi, aucun des théorèmes précédents ne fournit de critère qui
permettrait de déterminer automatiquement que le graphe de la figure suivante est hamiltonien
26
Chapter 2
2.1 Introduction
La question de coloration, datant du 19ème siècle, revêt une importance particulière en théorie
des graphes, tant sur le plan théorique que sur le plan pratique. En effet, la question célèbre du
nombre minimum de couleurs nécessaires pour colorier un graphe planaire (carte géographique)
suscite toujours autant d’intérêt. Sur le plan pratique, la coloration dans les graphes permet de
résoudre des problèmes de planification et d’emplois du temps pour ne citer que cela.
Exemple 1
x2
x1
x3
x4
x5
Figure 2.1: Les sommets de ce graphe peuvent être colorié avec 2 couleurs.
27
Coloration dans les graphes
Preuve: Considérons {S1; S2; . . . ; Sk} une partition de X en k parties stables avec k = γ(G)
P
( G ) étant des entiers naturels, l’inégalité de gauche est établie.
Théorème 2 Le nombre chromatique d’un graphe est supérieur ou égal à celui de chacun de ses
sous-graphes.
Preuve:
Minoration
Théorème 3 Le nombre chromatique d’un graphe est supérieur ou égal au cardinal de la clique
d’ordre maximal.
Preuve: Puisque par définition les sommets d’une clique sont tous adjacents, il faudra donc
autant de couleurs que de sommets de cette clique. Le nombre chromatique du graphe sera donc
supérieur ou égal à l’ordre de cette clique.
28
Coloration dans les graphes
Etape 1 Attribuer une couleur non encore utilisée au sommet non encore coloré de degré maxi-
mum, et attribuer cette même couleur à chaque sommet non encore coloré et non adjacent
à un sommet de cette couleur.
Etape 2 S’il reste des sommets non colorés dans le graphe, revenir à l’étape 1. Sinon, la col-
oration est terminée.
29
Coloration dans les graphes
30
Chapter 3
Les problèmes de cheminement dans les graphes, en particulier la recherche du plus court chemin,
comptent parmi les problèmes les plus anciens de la théorie des graphes et les plus importants par
leurs applications: coût de transport, temps de parcours, problème de trafic,. . . Les algorithmes
de recherche de plus court chemin seront différents selon les caractérisitiques du graphe.
Proposition 7 Un graphe orienté G = (X, U ) est dit sans circuits si et seulement si toute
composante fortement connexe est réduite à un sommet.
Proposition 8 Un graphe orienté G = (X, U ) est dit sans circuits si et seulement si tout
chemin dans G est élémentaire.
Le graphe précédent est un graphe sans circuits, les sommets x1 et x6 sont des sommets sources
et le sommet x8 est un sommet puits.
31
Problèmes de cheminement dans les Graphes
x2 x4 x6
x1 x8
x3 x5 x7
Proposition 11 G=(X,U) est un graphe sans circuits si et seulement si X admet une parti-
tion {N0 ∪ N1 ∪ . . . ∪ Np } tel que x ∈ Ni ⇔ v(x) = i
L’une des méthodes permettant d’obtenir l’ordre topologique d’un graphe, est de numéroter
les sommets par niveau, en commençant par les sommets de N0 , puis ceux de N1 , etc ...
32
Problèmes de cheminement dans les Graphes
L’ordre topologique est utilisé dans l’algorithme de Bellman pour déterminer le plus court
chemin dans un graphe.
x1 x8
(0) (7)
Soit G=(X,U) un graphe orienté, On définit p : U −→ R une application qui associe pour chaque
arc u ∈ U de G une valeur réelle p(u) appelée poids de l’arc u. Un tel graphe, représenté par
G = (X, U, p), est appelé graphe pondéré, graphe valué ou réseau.
Ces poids peuvent correspondre à des coûts, des distances, des temps, . . .
Soit un graphe G = (X, U, p) un graphe orienté pondéré sans circuits, et soit s ∈ X, un som-
met de départ, l’algorithme détermine le chemin de poids minimum vers tous les autres sommets
atteignables à partir du sommet s.
33
Problèmes de cheminement dans les Graphes
L’algorithme se base sur un graphe dont les sommets sont numérotés selon l’ordre topologique
tel que n(s) = 0.
Algorithme de Bellman:
π(x0 ) = 0;
π(xi ) = +∞, ∀1 ≤ i ≤ n ;
pour j = 1 à n faire
pour tout xi ∈ Γ− (xj ) faire
si π(xj ) > π(xi ) + p(xi xj ) alors
π(xj ) = π(xi ) + p(xi xj ) ;
opt(xj ) = xi ;
fait
fait
opt(j) correspond au sommet précédant le sommet j sur le plus court chemin allant de s à j.
La boucle interne est équivalente à π(y) = min (π(y), π(x) + p(xy)).
∀x∈Γ− (y)
Exemple 2
On considère le graphe orienté sans circuits suivant, on veut déterminer les plus court chemins
partant du sommet x0 vers tous autres sommets:
x3 4 x4 4 x1
5 5
6
x0 3 3 2 x7
7
1 5 8 3
x2 x5 x6
Initialisation π(x0 ) = 0;
π(xi ) = +∞, ∀1 ≤ i < n ;
Iteration pour j = 1
Γ− (x1 ) = ∅ ;
π(x1 ) = min(+∞) = +∞; Il n’y a pas de chemin de x0 vers x1 .
Iteration pour j = 2
Γ− (x2 ) = {x0 } ;
π(x2 ) = min(π(x2 ), π(x0 ) + p(x0 x2 )) = min(∞, 0 + 1) = 1 ;
opt(x2 ) = x0 ;
Iteration pour j = 3
Γ− (x3 ) = {x0 , x2 } ;
34
Problèmes de cheminement dans les Graphes
Iteration pour j = 4
Γ− (x4 ) = {x2 , x3 } ;
π(x4 ) = min(π(x4 ), π(x2 ) + p(x2 x4 ), π(x3 ) + p(x3 x4 )) = min(+∞, 1 + 6, 4 + 4) = 7;
opt(x4 ) = x2 ;
Iteration pour j = 5
Γ− (x5 ) = {x2 , x3 } ;
π(x5 ) = min(π(x5 ), π(x2 ) + p(x2 x5 ), π(x3 ) + p(x3 x5 )) = min(+∞, 1 + 5, 4 + 7) = 6;
opt(x5 ) = x2 ;
Iteration pour j = 6
Γ− (x6 ) = {x1 , x4 , x5 } ;
π(x6 ) = min(π(x6 ), π(x1 ) + p(x1 x6 ), π(x4 ) + p(x4 x6 ), π(x5 ) + p(x5 x6 ))
= min(+∞, +∞ + 2, 7 + 3, 6 + 8) = 10 ;
opt(x6 ) = x4 ;
Iteration pour j = 7
Γ− (x7 ) = {x6 } ;
π(x7 ) = min(π(x7 ), π(x6 ) + p(x6 , x7 )) = min(+∞, 10 + 3) = 13 ;
opt(x7 ) = x6 ;
Le plus court chemin allant de x0 à x7 est en vert, qu’on peut déduire grâce à opt. En effet:
opt(x7 ) = x6 , opt(x6 ) = x4 , opt(x4 ) = x2 , opt(x2 ) = x0 . Le poids du chemin x0 x2 x4 x6 x7 est
π(x7 ) = 13
De même on peut déterminer le plus court chemin allant de x0 à x3 :
opt(x3 ) = x2 , opt(x2 ) = x0 , c’est donc x0 x2 x3 , son poids est π(x3 ) = 4.
Un circuit γ est dit absorbant si son poids est négatif (p(γ) < 0).
35
Problèmes de cheminement dans les Graphes
On reprend le graphe de la figure 3.1 pour déterminer les plus court chemin à l’aide de
l’algorithme de Dijkstra. Nous allons utiliser un tableau où chaque ligne correspond à une itéra-
tion où le minimum choisit est l’élément souligné à la ligne précédente.
x0 x1 x2 x3 x4 x5 x6 x7
0 +∞ +∞ +∞ +∞ +∞ +∞ +∞
x0 · +∞ 1 5 +∞ +∞ +∞ +∞
x2 · +∞ · 4 7 6 +∞ +∞
x3 · +∞ · · 7 6 +∞ +∞
x5 · +∞ · · 7 · 14 +∞
x4 · +∞ · · · · 10 +∞
x6 · +∞ · · · · · 13
x7 · +∞ · · · · · ·
x1 · · · · · · · ·
La complexité de cet algorithme est O(m) qui correspond donc à une complexité en O(n2 ).
Principe: L’algorithme consiste à calculer dkx correspondant au plus court chemin entre s et x
comportant au plus k arcs.
• d0x = +∞, ∀x 6= s, d0s = 0.
36
Problèmes de cheminement dans les Graphes
Algorithme de Bellman-Ford:
d0s = 0 ; d0x = +∞, ∀x 6= s,
pour k = 1 à n − 1 faire
pour chaque arc (x, y) faire
si dy > dx + p(xy) alors
dy = dx + p(xy) ;
opt(y) = x ;
fsi
fait
fait
pour chaque arc (x, y) faire
si dy > dx + p(xy) alors
afficher("Existence d’un circuit absorbant") ;
fsi
fait
fin.
La complexité de cet algorithme est O(n × m) qui correspond à une complexité en O(n3 ).
Remarque 7
On peut effectuer la recherche du plus long chemin dans un graphe de deux manières: Soit en
adaptant les algorithmes de recherche du plus court chemin (initialisation, comparaison, ...), soit
en replaçant le poids de chaque arc par sa négation.
Dans le cas de la recherche du plus long chemin, un circuit est dit absorbant si son poids est
positif.
37
Problèmes de cheminement dans les Graphes
38
Chapter 4
Problèmes d’ordonnancement
4.1 Introduction
On a affaire à un problème d’ordonnancement lorsque l’on est confronté à un problè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écessaire 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éalisation 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:
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 :
• Déterminer les dates de début au plus tôt et au plus tard des tâches.
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).
39
Problèmes d’ordonnancement
ti ≥ tj + dj ou encore ti − tj ≥ dj
Exemple 3
40
Problèmes d’ordonnancement
Tâches
f
e
d
c
b
a
t
1 2 3 4 5 6 7 8 9
• On ajoute à cela deux sommets α et ω représentant les tâches fictives début et fin de
projet
6
a f
2
0 3
3 d
0
α b 4 ω
3 e
0
6
c
41
Problèmes d’ordonnancement
• La durée minimale du projet qui correspond à la date au plus tôt de fin du projet.
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.
La date de début au plus tôt ti d’une tâche i est égale à la longueur du plus long
chemin allant 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 ω).
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ω
42
Problèmes d’ordonnancement
M i = ti − ti
Définition 8 Les tâches critiques ont une marge nulle, tout retard sur leur exécution entraîne
un retard global dans le projet.
Un chemin est critique s’il relie α et ω et s’il ne contient que des tâches critiques.
Définition 9 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)
43
Problèmes d’ordonnancement
44
Chapter 5
Arbres et Arborescences
5.1 Introduction
Les arbres sont des graphes particuliers, très utilisés en algorithmiques et en informatique.
Définition 10 Un arbre est un graphe connexe sans cycle. Une forêt est un graphe sans cycle.
x2
x1
x3
x4 x5
• Si nous regardons la propriété de connexité, les arbres apparaîssent comme des graphes
connexes minimaux, au sens où retirer la moindre arête les déconnecte.
• 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.
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.
45
Arbres et Arborescences
1. T est un arbre
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.1 Codage
L’algorithme ci-dessous fournira le code de T , c’est-à-dire une suite S de n − 2 termes employant
(éventuellement plusieurs fois) des nombres choisis parmi {1, ..., n}.
Pas général de l’algorithme de codage (à répéter tant qu’il reste plus de deux sommets dans
l’arbre courant T )
• identifier la feuille x de l’arbre courant ayant le numéro minimum ;
5.2.2 Déodage
Etant donnée une suite S de n−2 nombres, chacun provenant de {1, ..., n}. Posons I = {1, ..., n}.
Pas général de l’algorithme de décodage (à répéter tant qu’il reste des éléments dans S et plus
de deux éléments dans I)
46
Arbres et Arborescences
• relier par une arête de T le sommet i avec le sommet s correspondant au premier élément
de la suite S ;
• enlever i de I et s de S.
Les deux éléments qui restent dans I à la fin de l’algorithme constituent les extrémités de la
dernière arête à ajouter à T .
Théorème 9 (Cayley, 1857) Le nombre d’arbres que l’on peut construire sur n (n > 1) sommets
numérotés est égal à nn−2 .
5.3 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.
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.
Définition 11 Un arbre couvrant pour un graphe G = (V, E) est un arbre construit unique-
ment à partir des arêtes de E et qui connecte ("couvre") tous les sommets de V . Un arbre
couvrant d’un graphe G est donc un graphe T tel que:
47
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.
48
Chapter 6
Les flots
6.1 Introduction
Les flots permettent de modéliser une très large classe de problèmes. Leur interprétation corre-
spond à 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).
On distingue sur un réseau R deux sommets particuliers : un sommet dit source s et un autre
dit destination t.
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
49
Les flots
6
a f
2
7 4
3 d
4 4
s b 5 t
3 e
5
3 4
c
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).
P P
P comme le flux net sortant de s ( x ϕ(s, x) − x ϕ(x, s)) ou
La valeur duPflot est définie
entrant dans t ( x ϕ(x, t) − x ϕ(t, x)) .
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)
50
Les flots
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) + δ
4
a f
1
4 4
1 d
4 1
s b 5 t
3 e
5
1 4
c
51
Les flots
52