Académique Documents
Professionnel Documents
Culture Documents
(UPN)
Par :
Introduction. .................................................................................................... 5
Chapitre III. Graphes valués, et, Méthodes de recherche des chemins et arbres. .. 34
2|Page
V.2. TD1 : « Décrire les problèmes d’ordonnancement ». ........................ 74
VI.3. Exercices........................................................................................ 83
Références ....................................................................................................... 84
3|Page
Objectif et contenu du cours.
Pour atteindre notre objectif, nous allons développer ce cours en six chapitres,
hormis l’introduction, chaque chapitre terminant par une série d’exercices
d’application, de la manière ci-après :
Introduction.
Chapitre III. Graphes valués ; et, Méthodes de recherche des chemins et arbres.
4|Page
INTRODUCTION.
S’étant développée dans diverses disciplines telles que la chimie, la biologie, les
sciences sociales, la théorie des graphes constitue, depuis le début du XXème
siècle, une branche à part entière des mathématiques, grâce aux travaux de
König, Menger, Cayley puis de Berger et d’Erdös.
Les derniers travaux en théorie des graphes sont souvent effectués par des
informaticiens, du fait de l’importance qu’y revêt l’aspect algorithmique.
5|Page
Chapitre I : Définitions et premiers exemples
A. Définition 1
-Un ensemble X={x1, x2,..., xn} dont les éléments sont appelés sommets, et
-Un ensemble A={a1, a2,..., am} dont les éléments sont appelés arêtes car
A Ƥ2(X) ensemble des parties à deux éléments de X.
On notera G = (X,A).
Exemple
x z t
a1 a2 a4 a3 fig. 1.1
y a5 s
B. Définition 2
6|Page
Exemples
x a4 y x a3 y
a1 a5 a1 a2 a4
a2 z
a3 Fig. 1.3
t a6 z
Fig. 1.2
On a : On a :
A={a1 ,a2 ,a3 ,a4 ,a5 ,a6} A={a1 ,a2 ,a3 ,a4 ,a5}
f (a4)={x, y} f (a3)={x, y}
C .Définition 3.
Exemples
(1) Soit le cycle Cn où X= {1, 2,..., n} et A= {{1,2}, {2 3},..., {n-1, n}, {n, 1}}
Si on a x ϵ Cn alors deg(x)=2.
7|Page
D .Définition 4
Un graphe simple est dit régulier de degré r, lorsque tous ses sommets sont de
ce degré.
N.B : Ce Lemme reste valable pour les multigraphes, même en cas de boucles
tout en convenant que la boucle contribue pour 2 dans le calcul du degré d’un
sommet.
A. Définition 5.
-Un ensemble X= {x1, x2 ,x3 ,..., xn} dont les éléments sont appelés sommets, et
-Un ensemble A= {a1, a2,..., am} X2 (produit cartésien de X par X) dont les
éléments sont appelés arcs. On notera G=(X,A)
Exemple
Fig.1.4
B .Définition 6.
Soit x un sommet d’un graphe orienté. On note deg+(x) le nombre d’arcs ayant
x comme extrémité initiale, et deg-(x) le nombre d’arcs ayant x comme
extrémité finale. Ainsi deg(x) = deg+(x)+deg-(x).
8|Page
I.3. Exercices.
8. Existe-t-il un graphe simple d’ordre 5 dont les sommets ont les degrés
suivants ? Si oui, tracer un tel graphe.
a) 3, 3, 3, 3, 2.
b) 1, 2, 3, 4, 5.
9|Page
Chapitre II. Eléments de la théorie des graphes.
a7 a6 ⑤
① a5 a8
a1 a4
② a2
10 | P a g e
B. Définition 8 (Matrice d’adjacence).
Considérons un graphe G = (X,A) comportant n sommets.
( )
uij = {
U=
( )
N.B. :
mij = {
N.B. : Pour un graphe non orienté sans boucle la matrice d’incidence (aux
arêtes) est définie par la matrice M = (mij) telle que :
mij = {
11 | P a g e
Exemple 1. La matrice d’incidence du graphe de la figure 2.1 est :
a1 a2 a3 a4 a5 a6 a7 a8
M = (mij ) =
( )
Exemple 2. Soit le graphe G ci-après :
A a1 B
a2 a3 a4 E
a5
C D
Fig. 2.2.
M = (mij) =
( )
12 | P a g e
TS(1) = 1
Pour x X :
Si x a des successeurs alors TS(x) = numéro de la case de LS du premier
successeur de x.
Sinon, TS(x) = TS(x+1)
TS(n+1) = m+1.
Par exemple, le graphe de la figure 2.1 peut être représenté par des listes
d’adjacence (LS,TS) comme ci-après :
LS = 2 3 4 5 3 4 1 4
TS = 1 5 6 0 7 9
1 2 3 4 5
N.B. :
- Une chaine élémentaire est une chaine telle que qu’aucun des sommets
composant la séquence n’apparait plus d’une fois.
13 | P a g e
- une chaine simple est une chaine telle qu’aucune des arêtes composant la
séquence n’apparait plus d’une fois.
-Un cycle simple est une chaine simple dont les extrémités coïncident.
A.2. Exemples.
- Un chemin simple est un chemin tel qu’aucun des arcs composant la séquence
n’apparait plus d’une fois
- Un circuit simple est celui tel qu’en le parcourant on ne rencontre pas deux
fois le même arc.
B.2. Exemples.
14 | P a g e
Un graphe G =(X,A) est connexe s’il existe au moins une chaine entre une paire
quelconque de sommets de G.
(a). Remarque.
xi R xj {
Est une relation d’équivalence. Les classes d’équivalences induites sur X par
cette relation forment une partition de X en X1, X2, ..., Xp.
D’où :
A B
C D
C.2.Définition 14.
15 | P a g e
- Un point d’articulation d’un graphe est un sommet dont la suppression
augmente le nombre de composantes connexes.
Exemple :
Un graphe orienté est dit fortement connexe s’il existe un chemin joignant
deux sommets quelconques.
Remarque :
La relation R définie sur X par :
xi R xj {
est une relation d’équivalence et les classes d’équivalence induites sur X par
cette relation forment une partition de X en X1, X2, ..., Xq.
D’où les sous-graphes G1, G2, ..., Gq engendrés par les sous-ensembles X1, X2, ...,
Xq sont appelés les composantes fortement connexes du graphe.
Exemple.
Soit le graphe G = (X,A) ci-contre.
Fig. 2.3
16 | P a g e
La relation de forte connexité définie sur le graphe G induit sur X les classes
d’équivalences ci-après :
C1 = * + ; C2 = * + et C3 = * +.
N.B. :
- On vérifie que Gr est sans circuit.
Exemple.
Le graphe G de la figure 2.3 a pour graphe réduit le graphe Gr = (Xr,Ar) tel que
Xr = * + et Ar =*( )( )( )+.
17 | P a g e
Si le graphe possède m arcs désignés par a1, a2, ..., am, on peut faire
correspondre à tout cycle µ un vecteur µ = (µ1, µ2, ..., µm) tel que :
1 Si +
-
µi = -1
+ -
0 si
Par exemple, à partir du graphe G de la figure 2.1, nous avons les cycles ci-
après avec leurs vecteurs associés :
On dit que p cycles 1, 2, ..., p sont dépendants s’il existe entre leurs vecteurs
associés une relation vectorielle de la forme :
1 1+ 2 2 + ... + p p =0
Une base de cycles est un ensemble minimal de cycles indépendants tel que
tout vecteur représentatif d’un cycle puisse s’exprimer comme combinaison
linéaire des leurs vecteurs représentatifs.
( ) = m – n + p.
18 | P a g e
Exemple : Trouver le nombre cyclomatique du graphe G de la figure 2.1.
Solution
1 5 2 3 4
Relation R
A. Problèmes eulériens.
Il s’agit d’une généralisation du jeu consistant à dessiner toutes les arêtes d’un
graphe avec un crayon sans jamais le soulever, ni passer deux fois sur la même
arête.
1. Définition 19.
Une chaine eulérienne est une chaine empruntant une et une seule fois
seulement chaque arête de G.
Un cycle eulérien est une chaine eulérienne dont les extrémités coïncident.
Un chemin eulérien est un chemin empruntant une et une seule fois chaque
arc de G.
19 | P a g e
2. Théorème 1.
Un graphe non orienté G = (X,A) connexe possède une chaine eulérienne si, et
seulement si, le nombre de sommets de degré impair est égal à 0 ou 2. Il admet
un cycle eulérien si, et seulement si, tous ses sommets ont un degré pair.
3. Théorème 2.
4. Exemples.
1. Le graphe G1 de la figure 2.4 n’admet pas de cycle eulérien car les degrés des
sommets suivants ne sont pas pairs : 1, 4, 5 et 6.
1 a2 2 a8 3 a11 4
a1 a3 a4 a9 a5 a10 a7 a12
5 a6 6
a-b-c-d-c-e-d-b-e-a-e-a
a a4 b
a3 a5 a9
a1 a6 d a10
e a1 c
a
20 | P a g e
3. Le graphe G3 de la figure 2.6 admet un chemin eulérien et non un circuit
eulérien qui est :
(c2, c1, c3, c5, c4, c2, c2) car dege(c3) = degs(c3) + 1 et dege(c2) = degs(c2) – 1.
c1 a1 c2
a2 a3
a4
c5
c3 a5 a6 c4
1. Définition 20.
Un graphe orienté (non orienté) est dit eulérien s’il possède un circuit (cycle)
eulérien.
2. Exemples.
« Parcourir les rues d’une ville en passant au moins une fois dans chaque
rue ».
21 | P a g e
Le graphe n’étant pas nécessairement eulérien, on cherche bien sûr à
minimiser la longueur totale du parcours.
Dans le cas d’un graphe orienté, le problème se ramène à la recherche d’un flot
à coût minimum.
D’où :
3. Théorème 3.
Un graphe (orienté) non orienté admet un (circuit chinois) cycle chinois si, et
seulement si, il est (fortement) connexe.
B. Problème hamiltoniens.
Il s’agit ici de la généralisation du jeu inventé par Hamilton, Sir (1805-1865) en
1959. Ce jeu a consisté en un dodécaèdre régulier (Fig. 2.7) où trois arêtes sont
donc issues de chaque sommet et un clou est fiché sur chaque sommet marqué
d’un nom des vingt-quatre grandes villes mondiales. Le casse-tête a consisté à
enrôler une ficelle passant une et une seule fois chacune des villes (sommets).
Fig. 2.7
22 | P a g e
B.1. Parcours hamiltoniens.
1. Définition 21.
2. Exemples.
Le graphe de la figure 2.6 a un chemin hamiltonien (c1, c3, c5, c4, c2) et un
circuit hamiltonien (c1, c3, c5, c4, c2, c1), mais le circuit (c2, c1, c5, c4, c2)
n’est pas hamiltonien.
Le graphe de la figure 1.1 n’a pas de chaine hamiltonienne, ni de cycle
hamiltonien.
3. Définition 22.
1. Définition 23.
On dit que G est hamiltonien s’il contient un cycle hamiltonien (cas non
orienté) ou un circuit hamiltonien (cas orienté). Il est sémi-hamiltonien
lorsqu’il admet une chaine (un chemin) hamiltonienne (hamiltonien).
On dit que G est préhamiltonien s’il admet un cycle (un circuit) préhamiltonien.
2. Propriétés.
P.2. Si un sommet dans un graphe est de degré 2, alors les deux arêtes
incidentes à ce sommet doivent faire partie du cycle hamiltonien.
Si pour toute paire de sommets non adjacents, on a : d(x) + d(y) n, alors G est
hamiltonien.
3. Exemples.
25 | P a g e
La matrice des distances du graphe G est la matrice D définie par :
D = (dij) = (d(xi,xj)).
A.2. Exemple.
Fig. 2.8 2
D=( )
Le diamètre de G est :
diam(G) = max * ( )| ( ) ( ) +.
= max* +.
= 1.
2°/ Exemple.
26 | P a g e
Soit G = (X,A) le graphe ci-dessous. Calculons d(x,y) avec x et y deux sommets
donnés de G, en appliquant l’algorithme de Moore.
On a d(x,y) = 3.
0 1 2 y
Fig. 2.9. 1 2 2 3
3 3
3°/ Remarque.
(b). La coloration des arêtes (arcs) de G consiste à affecter toutes les arêtes
(tous les arcs) de ce graphe d’une couleur de telle sorte que deux arêtes (arcs)
adjacentes (adjacents) ne portent pas la même couleur. L’indice chromatique,
noté (G), est le plus petit nombre entier k de couleurs permettant de colorer
toutes les arêtes (tous les arcs) de G.
27 | P a g e
B.2. Algorithme de coloriage.
Couleur courante = 1
Fin
Fin faire.
Le nombre chromatique de G est donc le plus petit entier k pour lequel il existe
une partition de X en k sous-ensembles stables.
(b). Proposition 1.
⌈ ⌉ ( ) ( ( ) ⌈ ⌉ +1)
( ) ( )
28 | P a g e
Preuve : en exercice.
(c). Proposition 2.
Alors ( )+ ( ) n + 1.
Preuve : en exercice.
(d). Exemples.
1. ( ) = 2.
2. ( ) = 3 pour n 1.
3. ( ) = 1.
4. ( ) = n.
a 3 b
1 2 7 9 11
4 c 5 d 10
e 6 f
Fig. 2.10.
Solution : on a ( ) = 3 et ( )= 4.
B.4. Applications.
1. Problème d’aquariophilie.
29 | P a g e
A B C D E F G H
A X X X X X
B X X X X
C X X X X X
D X X X X
E X X X X
F X X X
G X X X X
H X X X
Fig. 2.11.
Solution : en exercice.
Une université doit organiser les horaires des examens. On suppose qu’il y a 7
épreuves à planifier, correspondant aux cours numérotés de 1 à 7 et que les
paires de cours suivants ont des étudiants communs : 1 et 2 ; 1 et 3 ; 1 et 4 ; 1
et 7 ; 2 et 3 ; 2 et 4 ; 2 et 5 ; 2 et 7 ; 3 et 4 ; 3 et 6 ; 3 et 7 ; 4 et 5 ; 4 et 6 ; 5 et 6 ;
5 et 7 ; et , 6 et 7.
Solution : en exercice.
30 | P a g e
II. 5. Exercices.
G S
E B
C F
M=
( )
31 | P a g e
M4 =
( )
b c d
a
g f e
Alors :
x5 x3
x4
Alors :
32 | P a g e
a. Déterminer le nombre de circuits de longueur 4 dans ce graphe.
b. Le graphe G est-il hamiltonien ? Pourquoi ?
c. Le graphe G est-il semi-hamiltonien ? Pourquoi ?
d. Le graphe G est-il préhamiltonien ? Pourquoi ?
e. Le graphe G est-il eulérien ? Pourquoi ?
f. Le graphe G est-il semi-eulérien ? Pourquoi ?
5. un individu vit dans un milieu où il est susceptible d’attraper une maladie
par piqûre d’insecte. Il peut être dans l’un des trois états suivants :
immunisé (I), malade (M), non malade et non immunisé (S). D’un mois à
l’autre, son état peut changer selon les règles suivantes :
- étant immunisé, il peut le rester avec une probabilité 0,9 ou passer à
l’état S avec une probabilité 0,1 ;
- étant dans l’état S, il peut le rester avec une probabilité 0,5 ou passer à
l’état M avec une probabilité 0,5 ;
- étant malade, il peut le rester avec une probabilité 0,2 ou passer à l’état I
avec une probabilité 0,8.
a). Tracer un graphe probabiliste pour décrire cette situation et écrire la
matrice de transition.
33 | P a g e
Chap. III Graphes valués, et méthodes de recherche des chemins et arbres.
A. Définition 27.
Un graphe valué est un graphe orienté G= (X, A), muni d’une fonction :A , appelée
fonction de coût.
Exemple. 15 2
Soit le graphe ci-contre 3
1 10
3
G= (x, a, ) est un 4 4
5
2
graphe valué. 5 Fig.3.1
7
3
B. Définitions 28.
Le coût d’un chemin c est la somme des coûts des arcs de ce chemin. On le note ( ).
C= (ci,j) où :
o si i= j
ci,j= ∞ si i ≠ j et (xi, xj) A
𝛾(xi, xj) si i ≠ j et (xi, xj) A.
Exemple
∞ 3 0 2 ∞
10 3 ∞ 0 ∞
III.2. Problème du court chemin.
∞ ∞ 7 5 0
Le problème de la recherche du plus court chemin dans un graphe se rencontre dans de
nombreuses applications. On peut citer entre autres :
34 | P a g e
Les problèmes d’optimisation de réseaux (routiers, télécommunications).
Certaines méthodes de traitement numérique du signal, de codage et de décodage
de l’information.
Les problèmes de labyrinthe et de récréations mathématiques.
« Etant donné un graphe orienté G=(X,A), on associe à chaque arc a A un nombre (a)
ϵ appelé ‘’longueur ‘’ de l’arc. On dit alors que G est valué par les longueurs (a). Si a =
(i,j), on utilisera également la notation ij pour la longueur de l’arc a.
Le problème du plus court chemin entre deux sommets i et j sera de trouver un chemin
µ(i,j) reliant i et j dont la longueur totale
(µ)= ∑ ( )
( )
soit minimum. »
Nb : (a) peut s’interpréter comme un coût de transport sur l’arc a, comme les dépenses de
construction de l’arc a, comme le temps nécessaire pour parcourir l’arc a, etc. Ce qui donne
lieu a plusieurs applications.
A. Définition 29.
Un chemin c dans G de x à y est dit minimum lorsque pour tout chemin c’ dans G allant de
x à y on a : (c’) (c).
La matrice de coût minimum de G est par définition la matrice M = (mi,j) telle que :
o si i= j
mi,j= ∞ s’il n’existe pas de chemin de x à y
Min { 𝛾 (c ) /c est un chemin de x à y }
Exemple
(Cfr fig.3.1) 1 12 11 4
3 0 2 16
10 3 0
B. Méthodes de recherche de chemins
7 5 0
Nous décrivons deux algorithmes de recherche de chemin dans cette partie comme ci-après.
35 | P a g e
B.1. Algorithme de Dijkstra (1959)
Cet algorithme calcule les plus courts chemins du sommet 1 à tous les sommets du graphe
(il donnera donc la 1ère ligne de la matrice de coût minimum).
on construit un vecteur = ( (1), (2), … (n)) ayant n composantes tel que (i) soit
égal à la longueur du plus court chemin allant de 1 au sommet i. On initialise ce vecteur à
(c1,i ) c’est-à-dire à la première des coûts du graphe.
1. Description de l’algorithme
Initialisations
Itérations
Tant que ̅ ≠
Retirer i de ̅ et l’ajouter à S.
2. Exemple
15 2
3
1
10 3 4
4 5
2
5 7
Initialisation 3
36 | P a g e
1ère itération i= 5 car (5) = min (0, 15 , ,4) = 4 pour i dans ̅
S={1,5,4,3,2}, ̅ = , =(0,12,11,9,4).
Cet algorithme permet de trouver la matrice des plus cours chemins dans un graphe à
longueurs positives
1. Description de l’algorithme
Pour k de 1 à n
Pour tout i et j de 1 à n faire
ij = min ( ij, ik + ik)
2. N.B. :
Comme pour l’algorithme précédent, si l’on souhaite, en plus de la longueur des
chemins, exhiber explicitement le chemin, on mettra à jour, au fur et à mesure de
l’introduction d’un nouveau sommet k, une matrice de prédécesseurs.
A. Arbres et arborescences
A.1. Définitions 30.
Une forêt est un graphe sans cycle qui n’est pas connexe. (Chaque composante connexe
est un arbre).
37 | P a g e
Une arborescence est un graphe G=(X,A) pour lequel il existe un sommet R appelé racine
de G tel que, sommet S de G, il exisste un chemin et un seul de R vers S (R≠S).
Une racine s du graphe G=(X,A) est un sommet tel que x X\* + il existe un chemin de s
vers x.
N.B. :
Etant donné un graphe quelconque G = (X,A), un arbre de G est un graphe partiel connexe
et sans cycles.
Exemples.
G et G’ sont des :
Arborescences
Arbres
A.2. Algorithme de construction d’un arbre de recouvrement.
1. description de l’algorithme
Si la chaine (chemin) ainsi construite (construit) contient tous les sommes du graphe, la
chaine (le chemin) est un arbre de recouvrement. Sinon, on retourne à l’avant–dernier
sommet de la chaine (du chemin) et à partir de celle-ci (celui-ci), et si c’est possible, on
construit une nouvelle chaine (un nouveau chemin) simple aussi longue que possible et ne
contenant aucun sommet de la première chaine construite (du premier chemin construit). Si
ce n’est pas possible, il faut remonter à l’antépénultième sommet et recommencer.
Si le graphe est connexe, on peut réitérer ce processus jusqu’à l’épuisement des sommets
pour obtenir un arbre de recouvrement.
38 | P a g e
2. Exemple.
h
a i
b e j
g
c d k
l
f
Fig.3.4
Solution
(1) a b c d e g h i j k f
(2)
h
a e i
b
j
g
c k
d
l
f
est aussi un arbre de recouvrement de G.
A.3. Propriétés.
Propriété 1.
39 | P a g e
Les assertions suivantes sont équivalentes et caractérisent un arbre :
Preuve : En exercice.
On considère le réseau routier représenté par le graphe ci-dessous. Les sommets sont les
villages et les liens sont les routes.
Fig.3.5
Le graphe contient 6 sommets, le sous-graphe cherché doit contenir donc 5 arêtes. Il s’agit
donc de construire un arbre de recouvrement du graphe.
40 | P a g e
Par exemple l’arbre suivant
Fig.3.6
Cet algorithme concerne la recherche d’arbre couvrant de poids (coût) minimum lorsque le
graphe est simple, connexe et valué.
1. Description de l’algorithme
2. Exemple d’application
1
a4 2 a3
2 3
3 1
a2
1 2
Fig.3.7
2 5
a1 1
Solution. 4
- (1) soit a1 = {4,5} une arête de poids minimum. On pose S = {4,5}, T= {a1}, et ̅=
{1,2,3}. Et on va à (2).
- (2) on a S = {4,5) ≠ X et on passe donc à (3).
- (3) on prend a2 = {5,3} une arête de poids minimum.
41 | P a g e
- (2) S= {3,4,5} ≠ X et on va donc à (3).
- (3) on choisit a3= {3,2} une arête de poids minimum
On obtient S = S {3,2}={3,4,5,2}, T = {a1,a2,a3} et ̅={1}. Et on va à (2).
- (2) S={2,3,4,5} ≠ X et on va donc à (3).
- (3) on choisit a4 ={2,1} une arête de poids minimum.
On obtient S = S {2,1}={3,4,5,2,1}, T = {a1,a2,a3,a4} et ̅={}. Et on va à (2).
- (2) S={1,2,3,4,5} X. Donc A = (X,T) est l’arbre cherché i.e
l’arbre couvrant de poids minimum.
2 1
2 a4 a3 3
1
1
a2
a1 5
1
4
Et le coût de cet arbre est 1+1+1+2=5.
B.3. REMARQUE
A. Introduction.
A.1. Remarque.
Parcourir un graphe G=(X, A) donné revient à traiter ses sommets en tenant compte des
liens entre eux. Nous allons voir comment peut-on parcourir un graphe quelconque à partir
d’un de ses sommets.
a) Définition 32.
42 | P a g e
Fin du traitement de y.
Fin faire
b) Exemple
Soit le graphe G=(X, A) ci-après
4 3
Fig. 3.8
5
1 2
Le parcours du graphe G à partir du sommet 4, nous donne les arbres de parcours ci-après :
d’après l’ordre croissant des sommets.
1 2 2) 4 1 2 5
1)
4
3 5 3
1
3) 4 3 2 5
Détails des l’algorithme
X Traités Г+ (x) L
4 4 1,3 [1,3]
1 4,1 2 [3,2]
3 4,1,3 2,5 [2,5]
2 4,1,3,2 4,5 [5]
5 4,1,3,2,5 1 [ ]
Tableau 3.1.
L’ordre de parcours des sommets du graphe est donné par la liste des sommets traités
[4,1,3,2,5].
C) Remarque
Cet algorithme de recherche, par ses variantes différentes, permet de résoudre tous les
problèmes que nous pouvons nous poser : recherche des composantes connexes, recherche
d’un arbre couvrant, détermination des plus courts chemins,….
43 | P a g e
B. Types de parcours de graphe.
Nous allons étudier deux types de parcours de graphe dont chacun permet de résoudre des
problèmes particuliers et différents.
a) Définition 33.
C) Remarques.
d) Exemple.
44 | P a g e
5 3
8
4
6 1 Fig.3.9
2
1 9 7
4(5) 5(6)
2(3)
8(1) 10(2
1(8)
)
7(6)
9(4)
3(9)
6(10)
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩
P= 7 10 7 2 4 7 9 0 10 8 Prédécesseurs à partir de la
racine 8.
D= 4 2 4 3 4 4 3 0 2 1 Distances à partir de la
racine 8 (en termes de
niveau).
Voici les détails de l’algorithme de parcours en largeur de G par ordre croissant des sommets
à partir des sommets 8.
On a : L = {8} ≠ Ø.
45 | P a g e
X Г+ (x) Marqués L
Tableau 3.2
a. Définition 34.
c. Remarques
46 | P a g e
2. Il y a la possibilité de construire les chemins les plus longs possibles depuis
un sommet donné.
3. La liste L des sommets à traiter est l’exemple type d’une pile de type LIFO
(Last In, First Out) car on ajoute tous les éléments par le haut et on retire les
éléments par le haut de la pile.
d. Exemple.
8 1 9 7 6 4
2 1 3
P= 6 7 1 6 6 7 9 0 10 8
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
à à à à à à à à
e. Définitions 35.
47 | P a g e
Fonction P = parcours_ profondeur (G,x)
Marquer x
Numérotation préfixe de x
V= successeurs non traités de x
Pour tout y ϵ V faire
P(y)=x
P = parcours_profondeur (G,y)
Fin faire
Numérotation suffixe de x
f. Exemple.
Numérotation préfixe = 8 10 9 7 6 5 4 1 3 2
8( 10( 9( 7( 6( 5(
4(
1( 3(
2(
Numérotation suffixe = 4 6 3 2 1 5 7 10 8 9
8(1 10( 9( 7( 6( 5(
4(
1( 1( 3(
48 | P a g e
III. 5. EXERCICES.
1. La matrice qui suit donne en heures des vols entre certaines villes V1 ,V2, …., V6.
0 3 ∞ ∞ ∞
0 ∞
∞ 4 0 ∞ 3
6 2 ∞ 0 4
(b). S’il y a une escale obligatoire de respectivement 2, 3, 1, 1, 4, 5 heures aux villes V1, V2,
…, v6, quel est alors l’itinéraire le plus rapide de V1 à V6 ?
5 7 3
(a). Trouver le plus court chemin du sommet 1 à tous les sommets du graphe.
A D
G
S B H
E
C F
I
49 | P a g e
a) Donnez dans l’ordre les sommets visités au moyen de la recherche en profondeur
depuis S, ainsi que l’arbre de parcours.
b) Donnez dans l’ordre les sommets visités au moyen de la recherche en largeur
depuis S, ainsi que l’arbre de parcours.
6. Deux joueurs disposent de deux tas de trois allumettes, à tour de rôle chaque joueur
peut enlever une ou deux allumettes dans un des tas. Le joueur qui retire la dernière
allumette perd la partie.
a) Modéliser le jeu à l’aide d’un graphe.
b) Que doit jouer le premier joueur pour gagner à coup ?
c) Trouver un arbre de parcours en profondeur du graphe à partir d’un sommet au
choix convenablement fait.
d) Trouver un arbre de parcours en largeur du graphe à partir d’un sommet au choix
convenablement fait.
7. Trouvez les arbres couvrants de poids minimum, dans chacun des cas ci-après, du
graphe G = (X,A,C) ( les chiffres sur les arêtes représentant leurs poids) :
3
V
V 2
1 5
2
2 V5
a) V
2 V
2 1 1
2
V4
V 3
1 5 5
b) 2 3
3 2 4 2 1
4 5 6
1 3
50 | P a g e
Chapitre IV. Problèmes de flot dans un réseau.
1.1. Définitions 36
On appelle réseau un graphe fortement connexe, sans boucle et ayant plus d’un sommet.
On appelle nœud d’un réseau un sommet qui a plus de deux arcs incidents. Les autres
sommets sont appelés antinœuds.
On appelle boucle tout chemin pour lequel seuls les premiers et derniers sommets des
nœuds.
2.1. Définitions
Soit l’ensemble des arcs sortants du somme x, et l’ensemble des arcs entrants du
sommet x.
On appelle un flot pour le réseau de transport (X, A,C ) une fonction définie par :
:A telle que:
a ( )
51 | P a g e
2. x ϵ X tel que x ≠ x1 et x≠ n on a :
∑ ( ) ∑ ( )
( vérifie la loi des nœuds de Kirchhoff. i.e. est conservatif de la quantité de flux de la
réseau.)
3. a A : (a) C (a)
( ne dépasse pas la capacité des arcs i.e. le flot est compatible dans le réseau).
2.2. Remarques :
Si est un flot sur un réseau de transport G, alors on a :
1. x X, x ≠ x1 et x ≠ xn : = ∑ ( ) ∑ ( ).
2. = et cette quantité est appelée la valeur du flot.
3. La notation ci-après pour chaque arc de G :
a =(x,y)
x y
C (a); 𝝋 (a)
2.3. Exemple
1;1
x x 6;1
2;2
1 3,1 3
S P
4;2 x
x2 2;2 7;3
4
Fig-4.1
On a un flot dans le réseau R.
La principale question qui se pose pour un réseau de transport donné est de déterminer un
flot de valeur maximale ainsi que les flots le long de chaque arc. Il arrive fréquemment
également que l’on doive considérer des réseaux avec des capacités localisées non
seulement sur les arêtes mais également sur les sommets.
C’est notamment le cas pour les réseaux téléphoniques dans lesquels la limite de capacité
est autant due aux lignes qu’aux centraux. On peut ramener facilement ce problème au
52 | P a g e
précédent : il suffit de dédoubler chaque sommet en une entrée et une sortie liées par un
arc ayant pour capacité celle qu’on attribuait précédemment au sommet. On peut, de plus,
se donner un coût de transport d’une unité de flot sur chaque arc et chercher le flot
maximal de coût minimal.
1. Définition 38.
2. Exemple.
Dans la figure de l’exemple précédent, on a 3 chemins qui mènent de S à P pour
lesquels on a au moins un arc saturé. Le flot est donc complet car :
Arc saturé
Le premier chemin 4;2 2;2 7;3
S x2 x4 P
Arcs saturés
2;2 1;1
6;1
Le deuxième chemin
S x1 x3 P
Arc saturé
2;2 3;1 7;3
Le troisième chemin S x1 x4 P
3. Amélioration du flot.
a) Définition 39.
Une procédure itérative pour identifier et marquer tous les sommets du graphe où il est
possible de faire transiter une unité de flot supplémentaire avec pour objectif la détection
d’une chaine µ marquée de x1, à xn est définie comme suite :
53 | P a g e
On marque avec une étiquette +x tout successeur y non marqué de x pour
lequel le flot n’est pas à son maximum [(x,y) A et (x,y)< C (x,y)].
N.b. : Si l’on parvient jusqu’au marquage du sommet xn avec cette procédure, il existe
certainement une chaine µ de x1 à xn dont tous les sommets sont marqués, et le rôle de
l’étiquette reste celui de donner le nom d’un successeur ou d’un prédécesseur d’un
sommet donné en indiquant si le flot peut être augmenté dans le sens de parcours
(étiquette ) ou diminué dans le sens contraire (étiquette ).
+x -x
Toute chaine µ ainsi trouvée est appelée chaine augmentante, et le nouveau flot y
associé sera défini ainsi :
𝜑 (a)= 𝜑 (a) si a µ.
𝜑 (a)= 𝜑 (a) +1 si a µ et a est orienté dans le sens de µ.
𝜑 (a)= 𝜑 (a) - 1 si a µ et a est orienté dans le sens contraire de µ.
b) Exemple
Voici une chaine µ reliant les sommets S et P d’un réseau de transport dont le flot peut être
augmenté :
Dans la chaine on a :
- Les arcs dans le sens direct µ = { (s, ), (x1, x2), (x3,p)} qui n’ont pas atteint
leur limite i.e (a) <C (a).
- Les arcs dans le sens indirect µ- = {(x3, x2)} qui a un flux non nul i.e. (a) >0.
D’où la chaine µ est augmentante, et le flot sur cette chaine peut être augmenté de la
valeur suivante :
= Min {2, 2, 3, 1} = 1.
54 | P a g e
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.
S x1 x2 x3 P
On remarque que pour les arcs en sens inverse, améliorer le flot signifie réduire le flux les
traversant. Entre x3 et x2, le flux est réduit d’une unité pour permettre l’arrivée d’une unité
de flux sur x2 par x1 en augmentant le flux entre x1 et x2 d’une unité et ceci conservant la
loi de Kirchhoff au sommet x2 .
Soit un réseau de transport G= (X, A,C ) possédant un flot complet . On appelle graphe
d’écart ou réseau résiduel le réseau ̅ ( ) = (X, ̅, ̅ ) tel que :
Le réseau résiduel indique le long de quels arcs on peut augmenter ou diminuer le flot, et
son intérêt apparait dans le théorème suivant :
Une condition nécessaire et suffisante pour que le flot soit maximal est qu’il n’existe pas
de chemin de x1 et xn dans ̅ ( ).
55 | P a g e
a) Itération k=0.
Partir d’un flot initial 0 (compatible avec les contraintes de capacité)
par exemple 0 = (0,0,….,0).
b) A l’itération k, soit k le flot courant.
Rechercher un chemin µk de x1 à xn dans le graphe d’écart ̅ ( K).
S’il n’en existe pas. FIN : le flot K est maximal.
c) Soit k la capacité résiduelle du chemin µk
(Minimum des capacités résiduelles des arcs du chemin)
Définir le flot k+1 par :
k+1 k K
(a) = (a) + si a µ et si a est orienté dans le sens de µ.
k+1 k K
(a) = (a) - si a µ et si a est orienté dans le sens contraire de µ.
2. Exemple (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.
3
x x 8
5
3
1
7 4
g V
6 x
x2 4
5 4
On voudrait connaitre la quantité maximale que peut écouler l’usine. Ce qui revient à
chercher un flot maximum sur le réseau.
Nous allons appliquer l’algorithme de Ford et Fulkerson, pour trouver un flot maximal entre
les sommets g et V. On a ce qui suit en mettant en pointillé chaque chemin µk choisi à
chaque itération k dans le graphe d’écart ̅ ( k) :
Soit 0 = (0,0,…,0) toutes les composantes du flot initial sont considérées nulles (cfr. fig.
4.3a) et le graphe d’écart ̅ ( 0) est représenté par la figure 4.3b.
56 | P a g e
0 3
X
X 0 X X
1
1
0 3 5 3
8
0 V
0
g g 7 4 V
0 0
6
X2 X
0 4
4 X2 X
5
4
Soit 1
et le graphe d’écart ̅ ( 1
) ci –dessous
3
X X
3 1 3
3
g 0 0 P x
3
0
0
2 3
g x
X2 X
3
7 5
0 4
6 4 V
5
x2 x 4
4
On a : 1
= (g, x2, x3, V) dans ̅ ( 1
) et 1
= Min {(6-0), (7-0), (8-3)} = 5.
2 2 2
(g, x2) = 0+5 = 5, (x2,x3) = 0+5 = 5 et (x3,V) = 3+5 = 8.
57 | P a g e
(c). Itération k=2.
Soit 2
et le graphe d’écart ̅ ( 2
) ci-dessous.
3 X
X X X
3 3
8
1 1
3 3
g 5 0 2 5
V
4 V
5 5 2
0 g
X2 X
0 4
4 5
1 X2
X
4
On a : 2
= (g, x2, x3, x4 , V) dans ̅ ( 2
) , et 2
= Min {(6-5), (7-5), (4-0), (4-0)} = 1.
3 2 2 3
(g,x2)=5+1=6, (x2,x3) = 5+1=6 et (x3,x4)= 0+1=1, (x4,V)= 0+1=1.
Soit 3
et le graphe d’écart ̅ ( 3
) ci-dessous.
3
X X X
3 1 3
X
8 3
1 6 1
6 3 1 V
g 1
2 3
V 1
6 3
X
X 1
X2 g X2 5
4
0 4
Donc, le flot maximum sur le réseau de distribution par l’usine à gaz en tenant compte des
capacités de transport est :
3;3 X
X 8,8
5;3 3
1
7;6 Fig.4.7- Flot maximum sur
4;1
g V le graphe G=(X, A,C ).
6;6
X2 X 4;1
5;0 58 | P a g e
4
La valeur de flot 3 est 9 ; donc, la quantité maximale que l’usine peut écouler pour
alimenter une ville V par l’intermédiaire du réseau de distribution G=(X, A,C ) donné est 9.
3. Remarque.
La recherche d’un flot maximal à cout minimal peut être résolue à l’aide de l’algorithme de
Busacker-Gowen qui permet de déterminer la famille complète de tous les flots de coût
minimal d’un sommet x1 à un sommet xn et de valeur =1,2,…, v. Nous prenons ici cet
algorithme itératif sous forme littérale et laissons le soin au lecteur d’en effectuer une
description plus « informatique ».
A l’itération k, le flot courant k est supposé être un flot de valeur et de coût minimal
parmi l’ensemble de tous les flots de valeur .
- Si a=(xi, xj) A et (a) c (a), l’arc a+ = (xi, xj) a un coût ̅̅̅(a) = w(a) et une
capacité ̅(a)= c (a) - (a) > 0.
- Si a=(xi, xj) A et (a) > 0, l’arc a- = (xj, xi) a un coût ̅ (a) = - w(a) et une
capacité ̅(a) = (a)>0.
Soit alors k un chemin de coût minimal relativement aux coûts ̅ entre x1 et xn sur le
graphe d’écart ̅ ( k) ; on note k la capacité résiduelle de ce chemin. On définit alors le flot
k+1
comme dans l’algorithme de Ford et Fulkerson. Si µ est le vecteur associé au chemin µk
(i.e. tel que µa = 1 si a+ µk et µa = -1 si a- µk), on a k+1 = k+ kµ et le flot k+1 est un
flot de coût minimal de valeur + k.
N.B : A chaque itération on doit rechercher le plus court chemin (au sens du chemin de
coût minimal) de x1 à xn dans un graphe où la longueur (le coût) des arcs peut être
négative ; il conviendra donc d’employer un algorithme adapté à cette situation (l’algorithme
de Dijkstra ne convient pas). Il existe cependant une amélioration de cet algorithme
proposée par Edmonds et karp et basée sur une technique de modification des coûts
59 | P a g e
permettant de les rendre tous positifs en conservant cependant la même hiérarchie de
chemin sur le graphe d’écart, dans cette situation l’algorithme de Dijkstra peut être utilisé.
Dans les problèmes de réseau de transport les flots entrants et sortants d’un ensemble de
sommets jouent un rôle très important, ce qui amène à définir la notion de coupe.
1) Définition 41.
CW ∑( ) ( )
2) Remarque.
Une coupe est donc un ensemble qui « coupe » en deux le graphe avec d’un coté la
source et de l’autre le puits.
Le coupe permet de définir la valeur du flot, c’est –à-dire la quantité qui a été transportée
de la source jusqu’au puits. La capacité des différentes coupes impose une limite maximale
au flot dans un réseau de transport.
3) Lemme de la coupe
Cette valeur est appelée valeur du flot, et est notée V ( ), et pour toute coupe on a :
V( ) CW .
60 | P a g e
5) Autre formulation de l’algorithme de Ford et Fulkerson.
augmenter de µ le long de µ
fin faire
N.B :
Les problèmes de couplage dans les graphes quelconques (ou dans les graphes bipartis)
ont un double intérêt. Le premier, le plus évident, vient de leurs applications : ils
généralisent directement les problèmes d’affectations et ils interviennent dans certains
problèmes importants de la théorie des graphes : problèmes des tournées, détermination de
plus courtes chaines dans un graphe non orienté, etc. Le second, d’ordre théorique, vient de
ce qu’ils se rattachent à une classe de problèmes de programmation linéaire en nombres
entiers.
Etant donné un graphe simple non orienté G= (X, A), un couplage est un sous-ensemble
d’arêtes K A tel que deux arêtes quelconques de K ne sont pas adjacentes.
Un sommet i X est dit saturé par le couplage K A s’il existe une arête de K incidente à
i, sinon il est insaturé.
Un couplage K qui sature tous les sommets du graphe est appelé couplage parfait.
Exemple (1) 1
2 5
3
4
Fig. 4,8
61 | P a g e
En gras, un couplage maximum de G. Les sommets 1, 3, 4 et 5 sont saturés par le couplage
{{3,1}, {4,5}}.
1 2 1 2
5 6 5 6
1. Définition 43.
On appelle chaine alternée une chaine élémentaire de G dont les arêtes sont
alternativement dans K et hors de K.
On appelle Chaine augmentante une chaine alternée qui relie deux sommets insaturés.
Par exemple (ci-dessus à gauche cfr. Fig. 4.9), la chaine 1-4-3-6 est une chaine
augmentante car elle est alternée et relie deux sommets insaturés 1 et 6 par le couplage K.
En « invertissant les épaisseurs » des arêtes le long de cette chaine, on obtient un meilleur
couplage (ci-dessus à droite cfr. Fig. 4.10)
3. Remarque :
Pour déterminer un couplage maximal sur un graphe biparti G=(X,Y,Г), on peut recourir à
l’artifice suivant.
On construit un réseau de transport en ajoutant au graphe une origine S liée à tous les
sommets de X et une destination P liée à tous les sommets de Y (voir figure 4.11). On fixe à
1 les capacités de tous les arcs de ce réseau.
62 | P a g e
Un couplage permet de sélectionner un certain nombre d’arêtes du graphe biparti. Si l’on
fait passer une unité de flot par ces arêtes et sur les arêtes correspondantes vers S et P (en
faisant passer un flot nul sur les autres arêtes) , on obtient bien un flot sur le réseau.
X Y X Y
X Y X Y
S P S X Y P
X Y
X Y X Y
X Y X Y
Le problème du couplage de poids maximal est la recherche d’un couplage tel que son
poids soit maximal sur l’ensemble de tous les couplages de G. On remarquera qu’un
couplage de poids maximal n’est pas nécessairement un couplage maximal (couplage de
cardinalité maximale).
1. Définition 44.
On rappelle qu’une chaine alternée augmentante est une chaine alternée joignant deux
sommets insaturés.
63 | P a g e
Une chaine alternée réductrice est une alternée impaire dont les arêtes extrêmes sont
dans K.
Une chaine alternée conservative est une chaine alternée paire dont une extrémité est un
sommet isolé.
2. Définition 45.
(L)= (L ̅) – (L K).
Un cycle alterné pair est une chaine alternée paire dont les extrémités coïncident.
3. Théorème 7 (caractérisation).
Un couplage K est de poids maximal si, et seulement si, il n’existe pas de chaine alternée,
ni de cycle alterné pair de coût réduit strictement positif relativement à K.
Le théorème ci-dessous montre que l’on peut construire de proche en proche des couplages
K1,K2,…, KP cardinalité 1,2,…, p et de poids maximal par des transferts successifs le long de
chaines alternées augmentantes et de coût réduit maximal. On a généralisé ainsi le résultat
de Busacker-Gowen sur la recherche de flot maximal de coût minimal.
b) Théorème 8.
IV.5. Exercices.
1. Une assemblée est formée de personnes parlant plusieurs langues différentes (voir
tableau ci-après). On veut former des binômes de personnes qui pourront dialoguer
entre elles. Comment maximiser le nombre de binômes ?
64 | P a g e
Allemand Anglais Arabe Chinois Français Espagnol Russe
Alfred X X
Bernard X X
Claude X X
Denis X
Ernest X
Fabien X X X
Georges X X
Henri X X X
Isidore X X
Joseph X X
Kurt X X
Louis X
Alfred X X X X
Bernard X
Claude X X X X
Denis X X X
Ernest X X
Fabien X X X X
65 | P a g e
« Tout arbre fini avec au moins deux sommets comporte au moins deux sommets
pendants ».
5 5
1 2 3
3 2 4 2 1
4 5 6
1 3
3
V V
1
2 5 2
V2 2
V V
2
2
2 1 1
V V
3
(a). Trouver les arbres couvrants de poids minimum du graphe G. (les chiffres sur les arêtes
représentent leurs poids).
7. Trouver le flot maximum ainsi que la coupe maximale et celle minimale de ce réseau
R=(X,A,C ).
a d
3,2
3,2
1,1 5,1
2,2 1,1
s b 1,1 4,1
1,1 t
1,0 e
2,2
c 3,2
66 | P a g e
8. Trouver le flot maximum et la coupe minimale du réseau R = (X, A,C ) ci-dessous :
4 30;18
26;16
15;2
2
1 8;0 3 7 14;10
10;8
10;10 11;2 12;8
30;10
6
5
20;10
10. Déterminer le flot maximal entre le sommet 1 et le sommet 7 dans le graphe ci-
dessous où les nombres associés aux arcs représentent les capacités. Trouver
également la coupe minimale.
2 4 4
7
2
5
5
3 7
1
5 3
8
3 2 6
67 | P a g e
Chap. V. Problèmes d’ordonnancement : Gestion de projets.
1) Le principe
Ordonner un graphe revient à disposer dans un certain ordre ses sommets tels que les arcs
soient dans des le même sens. On définit ainsi les différents niveaux des sommets du
graphe.
2) Exemple
Soit le graphe G = (X,A) suivant
x2
x4 x1 Fig. 5.1
x3
N0 N1 N2 N3
x1 x2 x3
x4
68 | P a g e
3) Le procédé.
Résultat : les différents niveaux de sommets du graphe ainsi que le graphe ordonné.
(2.2) On barre dans la colonne (x) tous les sommets de niveau N1, on obtient une
nouvelle colonne (x) avec le sous-graphe engendré par X\ N0 N1.
4. Exemple
b
c
d
e Fig. 5.2
Le sommet a n’a pas des prédécesseurs, il est donc de niveau nul N0 = {a}.
69 | P a g e
X (x)
a Ø
b a
Fig. 5.3
c a-b
C c-b
e d
X (x)
a _
Fig. 5.4 b Ø
c b
c c-b
e d
X (x)
a _
Fig. 5.5 b _
c Ø
c c
e d
70 | P a g e
4) Le sommet d n’a plus de prédécesseurs, il est donc de niveau 3 N3 = {d}.
X (x).
a _
Fig.5.6 b _
c _
d Ø
e d
X (x).
a _
b _
Fig. 5.7
c _
d _
e Ø
a b c d e
N0 N1 N2 N3 N4
A une étape donnée de l’ordonnancement d’un graphe, la définition des niveaux se bloque
(i.e. il n’existe pas de sommets sans prédécesseurs), donc la mise en ordre du graphe est
impossible, on dit alors que le graphe possède un circuit.
71 | P a g e
Comment faire pour déterminer ce circuit ?
1). On repère dans la colonne (x) un sommet quelconque x0. Ce sommet nous revoie à
sa position dans la colonne X.
Remarque :
L’écriture de la suite des sommets se fait de gauche à droite [i.e. (x0, x1, ..., xi, ..., xp, ..., x1)]
et la lecture du circuit se fait de droite à gauche.
Application
d
a
Fig. 5.8
c
e
Le sommet a n’a pas des prédécesseurs, il est donc de niveau nul N0 = {a}.
X (x)
a Ø
c a-b
d c-b
e d
72 | P a g e
On barre le sommet a de la colonne (x), on obtient le dictionnaire suivant
X (x)
a _
Fig. 5.10 b e
c b
d c-b
e d
On choisit un sommet dans (x), soit e ce sommet, celui-ci nous renvoie à sa ligne
dans X.
X (x)
a _
b e
Fig. 5.11
c b
d c-b
e d
a _
b e
Fig. 5.12
c b
d c-b
e d
73 | P a g e
On choisit un sommet dans la ligne de d, soit b ce sommet, celui-ci nous renvoie à sa
ligne dans X.
X (x)
a _
b e
Fig. 5.13
c b
d c-b
e d
X (x)
a -
Fig. 5.14
b e
c b
d c-b
e d
La suite des sommets trouvés est la suivante (e, d, b, e), et on obtient ainsi le circuit (e, b,
d, e) car la lecture du circuit se fait de droite à gauche.
74 | P a g e
B. Le graphe potentiels-Tâches (ou MPM) : Description et illustration concrète de son
application.
V.4. Exercices.
A _ 3
B _ 9
C _ 5
D A 8
E B 4
F B 7
G B 20
H C, F 6
I D, E 5
2. La construction d’un entrepôt est divisée en dix tâches dont les caractéristiques sont
données dans le tableau ci-dessous. Trouver le chemin critique.
Durée
Tâches Nature Précédences
(jours)
75 | P a g e
Durée
Tâches Nature Précédences
(jours)
B Préparation du terrain _ 2
Durée
Tâches Libellé Précédences
(durée)
H Peinture du plafond G 2
K Arrachage de la moquette H, I, J ½
76 | P a g e
Durée
Tâches Libellé Précédences
(durée)
L Ponçage du parquet K 1
N Peinture du balcon _ 2
2). Déterminer une durée totale minimale de rénovation en exhibant un chemin critique.
77 | P a g e
VI. problèmes d’affectation.
∑ ()
Afin d’expliquer la démarche suivie, nous allons considérer l’exemple décrit par
la matrice des coûts suivante :
1 2 3 4 5
A 7 3 5 7 10
B 6 8 7
C 6 5 1 5
D 11 4 11 15
E 4 5 2 10
Fig. 6.1.
A tous les éléments de chacune des colonnes, on enlève le plus petit élément
de cette colonne ; puis, dans la matrice ainsi obtenue, on enlève à tous les
éléments d’une même ligne, le plus petit élément de la ligne. On obtient de la
sorte une matrice Cij ayant au moins un zéro par ligne et par colonne.
Pour l’exemple précédent (cfr. Fig. 6.1.), on obtient, après traitement des
colonnes puis des lignes, les deux matrices suivantes :
1 2 3 4 5 1 2 3 4 5
A 1 0 4 5 3 A 1 0 4 5 3
B 0 6 0 B 0 6 0
C 0 2 0 3 C 0 2 0 3
D 5 1 9 8 D 4 0 8 7
E 1 4 0 3 E 1 4 0 3
A partir de la matrice (C1,ij), on cherche à former une solution de coût nul (un
seul zéro dans chaque ligne et dans chaque colonne). Si c’est le cas, on a la
79 | P a g e
solution optimale, sinon on cherche un ensemble maximum de
zéros « indépendants » : ceci revient à chercher un flot maximal sur le graphe
G’ constitué par les arcs de coût (réduit) nul. Sur la matrice (C1,ij), cela
correspond au traitement suivant : On considère la ligne ayant un nombre
minimal de zéros (pour l’exemple, cela peut être la première). On encadre l’un
des zéro de cette ligne (ici, C1,A2), puis on barre les zéros qui se trouvent sur la
même ligne ou la même colonne que les zéros encadrés (ici, C1,D2). On procède
de même pour toutes les lignes, en tenant compte des étapes précédentes. On
obtient, pour l’exemple, la matrice suivante :
1 2 3 4 5
A 1 0 4 5 3
B 0 6 0
C 0 2 0 3
D 4 0 8 7
E 1 4 0 3
Fig. 6.4.
On marque les lignes qui ont un zéro encadré dans une colonne marquée
(ligne A de l’exemple) ;
On marque les colonnes qui ont un ou plusieurs zéros barrés dans une
ligne marquée-possibilité non exploitée- (colonne 2 de l’exemple).
On répète ces trois marquages successivement jusqu’à ce que l’on ne puisse
plus effectuer de nouveaux marquages (pour l’exemple, une seule »passe »
suffit).
80 | P a g e
1 2 3 4 5
A 1 0 4 5 3 *
B 0 6 0
C 0 2 0 3
D 4 0 8 7 *
E 1 4 0 3
*
Fig. 6.5.
Dans le tableau réduit ainsi obtenu (cases non barrées), on cherche ensuite
l’élément le plus petit, nécessairement non nul par construction (pour
l’exemple, il s’agit de l’élément C1,A1) : on retranche sa valeur aux colonnes non
barrées et on l’ajoute aux lignes barrées. On obtient les tableaux successifs
suivants :
1 2 3 4 5 1 2 3 4 5
A 0 0 3 4 2 A 0 0 3 4 2
B -1 5 -1 B 0 6 0
C -1 2 -1 2 C 0 3 0 3
D 3 0 7 6 D 3 0 7 6
E 1 3 -1 2 E 2 4 0 3
Sur le tableau (C2,ij) de l’exemple, on est amené à encadrer C2,D2 et barrer C2,A2,
encadrer C2,E4, encadrer C2,A1 et barrer C2,B1 et C2,C1, encadrer C2,B5 et enfin
encadrer C2,C3 . Ce qui nous conduit à la situation ci-après, en reprenant à partir
de la deuxième phase de l’algorithme Hongrois :
81 | P a g e
1 2 3 4 5
A 0 0 3 4 2
B 0 6 0
C 0 3 0 3
D 3 0 7 6
E 2 4 0 3
Fig. 6.8.
Et la permutation ( )
B 1
2
C A
5
D
4 E
82 | P a g e
VI.3. Exercices.
Ville
1 2 3
2. Des voitures sont transportées depuis trois centres de distributions vers cinq
revendeurs. Le coût de transport dépend de la distance entre les sources et les
destinations ainsi que du fait que le camion est plein ou seulement à moitié rempli.
La table ci-dessous reprend les distances (en km) entre les centres de distributions et
les revendeurs ainsi que les capacités d’approvisionnement mensuelles des centres
des distributions et les demandes, mensuelles aussi, des revendeurs. Un camion plein
peut transporter jusqu’à 18 voitures. Le coût de transport est de $us 25 par camion
par km.
Ville Demande
1 2 3 4 5
Centr 2 50 70 60 65 80 20
e
40 90 100 150 130 15
3
83 | P a g e
Références.
[1]. M.L. Assas, Analyse de la tolérance aux fautes : approches fonctionnelle et structurelle.
Thèse de doctorat de l’université des Sciences et Technologies de Lille, 2002.
[2]. K. Appel et W. Haken, Every planar map is 4-colorable, Bulletin of the AMS, volume 82,
711-712, 1976.
[7]. N. Deo, Graph theory with applications to engineering and computer Science, Prentice-
Hall, Englewood cliffs (N.J.), 1975.
84 | P a g e