Vous êtes sur la page 1sur 29

INSTITUT SUPÉRIEUR DES ÉTUDES TECHNOLOGIQUES DE BIZERTE

DÉPARTEMENT DE GÉNIE MÉCANIQUE


RECHERCHE OPÉRATIONNELLE
TROISIÈME ANNÉE

COURS ET EXERCICES. (VERSION PROVISOIRE)


ENSEIGNANT : KAABI NIZAR
2
Table des matières

1 Graphes et algorithmes 5
1.1 L’Algorithme de Dijkstra : . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 Définitions et rappels : . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.2 Remarquage d’un sommet : . . . . . . . . . . . . . . . . . . . . . . 6
1.1.3 Principe de l’algorithme : . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 L’algorithme de Bellman-Ford . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1 Principe de l’algorithme : . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 L’algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1 Définitions : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.2 Chemins augmentants et Chaı̂nes augmentantes . . . . . . . . . . . 14
1.3.3 Augmentation de la valeur d’un flot : . . . . . . . . . . . . . . . . . 16
1.3.4 Pricipe de l’algorithme : . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 Correction des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2 Chaı̂nes de Markov et files d’attentes 23


2.1 Rappels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 Chaı̂nes de Markov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.1 Graphe et matrice de Transitions . . . . . . . . . . . . . . . . . . . 24
2.3 Files d’attente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3
4 TABLE DES MATIÈRES
Chapitre 1

Graphes et algorithmes

NB : Ce texte rentre dans le cadre de l’enseignement en ligne. Par conséquent, il n’est


pas définitif. Il est conçu pour être modifié en fonction des questions que poseront les
lecteurs et de leurs remarques (y compris le signalement d’éventuelles érreurs).

1.1 L’Algorithme de Dijkstra :


1.1.1 Définitions et rappels :
1. Soit S = {s1 , s2 , . . . , . . . , sn } un ensemble fini, et soit A ⊂ S ×S. La paire G = (S, A)
est un graphe orienté. S est l’ensemble de ses sommets et A celui de ses arcs.
Exemple : S = {s1 , s2 , s3 } ; A{(s1 , s2 ), (s2 , s3 ), (s3 , s1 )}. Le graphe G = (S, A) peut
être représenté géometriquement de la manière suivante.

s1 `B / s2
BB ||
BB ||
BB ||
B |~|
s3

2. On associe avec une graphe G (orienté ou pas) une matrice, dite matrice d’adjacence,
qu’on pourra noter par AG . Elle est définie de la manière suivante :

AG = (aij ) 1≤i≤n
1≤j≤n

Où n est le nombre de sommets du graphe. Le nombre aij est définit de la manière
suivante : 
aij = 1 si (si , sj ) ∈ A ((si , sj ) est un arc)
aij = 0 si non
La matrice d’adjacence sert, entre autres, à se faire assister par des programmes
informatiques lorsqu’on travaille avec des graphes.
Exemple :

5
1.1. L’ALGORITHME DE DIJKSTRACHAPITRE
: 1. GRAPHES ET ALGORITHMES

– La matrice d’adjacence du graphe du point 1 est donnée par


 
0 1 0
AG =  0 0 1 
1 0 0
– Soit G un graphe dont la matrice d’adjacence est donnée par :
 
1 0 0 1
 0 0 1 0 
AG =  0 0 0 0


0 1 1 0
Faire la représentation graphique.
Remarque : Un graphe est parfaitement déterminé par sa matrice d’adjacence.
3. Un graphe G = (S, A) est dit pondéré s’il existe une application ω :
ω : A → R, ω(si , sj ) = ωij
qui, à chaque arc associe un nombre réel.
Exemple :
A _@
5 /B
@@ ~~
@@ ~
−3 @@ ~~
~~ −3
C
4. On dira qu’un graphe est marqué s’il existe une application m de l’ensemble de ses
sommets dans R.
Exemple :
A(−2)dH / B(5)
HH xx
HH xx
HH xx
HH
x{ x
C(4)
Voici un exemple de graphe à la fois pondéré et marqué :

A(−2)H 5 / B(7)
dH x
HH xx
HH xx
−3 HH
H x
{xx −3
C(3)

1.1.2 Remarquage d’un sommet :


Soit G = (S, A, ω, m) un graphe orienté, pondéré et marqué. Soit (si , sj ) un arc de
G portant le poids ωij , et tel que ses sommets sont marqués par les nombres mi et mj
respectivement.
ωij
si (mi ) / sj (mj )

K.Nizar (69141720sya@gmail.com) 6 I.S.E.T BIZERTE 2020


CHAPITRE 1. GRAPHES ET ALGORITHMES
1.1. L’ALGORITHME DE DIJKSTRA :

Le remarquage du sommet sj (qui porte initialement la marque mj ) consiste à lui attribuer


une nouvelle marque définie par :

mj ← inf{mj , mi + ωij }

Autrement dit, le sommet sj garde la marque mj (si mj ≤ mi + ωij ) ou bien mj est


remplacée par mi + ωij .
Exemple : L’arc
3 /
A(2) B(1)
devient, après remarquage du sommet B :

A(2)
3 / B(1)

Car 1 < 2 + 3.
Par contre, l’arc
A(2)
3 / B(7)

devient, après remarquage du sommet B :

A(2)
3 / B(5)

Car 2 + 3 < 7

1.1.3 Principe de l’algorithme :


Soient maintenat G = (S, A, ω) un graphe pondéré, et s un sommet de G. On suppose
que tous les poids sont positifs 1 . On se propose de trouver un plus court chemin de s
vers tous les autres sommets qui peuvent être atteints à partir de s.

Notation :
On notera par Γ(s) l’ensemble suivant :

Γ(s) = {si / (s, si ) ∈ A}

Autrement dit, c’est l’ensemble de tous les sommets si de G tel qu’il existe un arc de s
vers si .
1. On attribue au sommet s la marque 0, et à tous les autres la marque +∞.
2. On procède au remarquage de tous les sommets de l’ensemble Γ(s), puis on choisit
celui qui porte (après le remarquage) la plus petite marque, disons sk . Ce sommet est
marqué définitivement, car aucun remarquage ultérieure ne pourra plus l’affecter. 2
1. Nous verrons par la suite que l’algorithme de Dijkstra n’est valable que dans ce cas.
2. Il est facile de s’asurer que les éventuels remarquages ultérieurs ne pourront pas lui attribuer une
marque inférieure à celle qu’il porte déjà.

K.Nizar (69141720sya@gmail.com) 7 I.S.E.T BIZERTE 2020


1.1. L’ALGORITHME DE DIJKSTRACHAPITRE
: 1. GRAPHES ET ALGORITHMES

3. On apllique la procédure de remarquage aux sommets de l’ensemble Γ(sk ). Lorsque


c’est fait, on considère les marques qui figurent sur les sommets du graphe qui n’ont
pas été définitivement marqués (c’est à dire tous les sommets, sauf sk ) et on choisit
celui qui porte la plus petite marque, disons sp . Cette marque est définitive. On
reprend la procédure de remarquage avec les sommets de Γ(sp ), et ainsi de suite,
jusqu’à marquer définitivement tous les sommets du graphe G.

Remarque :

À la fin de l’algorithme la marque de chaque sommet sj est la longueur du plus court


chemin de s à sj .

Exemple :

On se propose de résoudre le problème du plus court chemin de A vers les autres


sommets du graphe suivant.
B
2 /D
~? O O
10 ~~
~~
~~
A@ 2 30
@@ 5
@@6
@@
 
C
1 / E
Voici les itérations de l’algorithme :

B(∞)
2 / D(∞) =⇒ B(10)
2 / D(∞) =⇒ B(8)
2 / D(∞)
v; O O w; O O x; O O
10 vvv 10 www 10 xxx
v w xx
vv ww
vv ww xx
A(0) 2 30 A(0) 2 30 A(0) 2 30
HH GG FF
HH 6 5 GG 6 5 FF 6 5
HH GG FF
HH GG FF
H#  G#  # 
C(∞)
1 / E(∞) C(6)
1 / E(∞) C(6)
1 / E(7)

B(8) 2 / D(37) =⇒ B(8) 2 / D(10)


x; O O x; O O
10 xxx 10 xxx
xx xx
xx xx
A(0) 2 30 A(0) 2 30
FF FF
FF 6 5 FF 6 5
FF FF
FF FF
#  # 
C(6)
1 / E(7) C(6)
1 / E(7)

Ces itérations peuvent être résumées dans le tableau suivant.

K.Nizar (69141720sya@gmail.com) 8 I.S.E.T BIZERTE 2020


CHAPITRE 1. GRAPHES ET ALGORITHMES
1.1. L’ALGORITHME DE DIJKSTRA :

A 0+
C ∞ 6+ ; A
D ∞ ∞ ∞ 37 ; E 10+ ; B
+
E ∞ ∞ 7 ;C
B ∞ 10 ; A 8; C 8+ ; C
Commentaires :
– Deuxième colonne : C’est l’initialisation. On affecte au sommet A la marque 0 et aux
autres ∞. La marque 0 est définitive ; on exprime cela en ajoutant un signe +
– Troisième colonne : On marque les sommets de Γ(A) = {B, C} par la procédure de
remarquage. C’est le point C qui porte la plus petite marque, qui est donc définitive.
On poursuit le remarquage à partir du point C maintenant.
– Quatrième colonne : C’est le point E qui porte la plus petite marque. On continue la
procédure de remarquage à partir de ce point.
– À la fin du chargement de la sixième colonne tous les sommets sont marqués définitivement.
On pourra s’assurer visuellement que la marque que porte chaque sommet n’est autre
que la valeur du plus court 3 chemin de A vers ce sommet.
– Dans chaque case du tableau nous avons un nombre et une lettre. La lettre c’est le
prédécesseur. Par exemple, dans la deuxième ligne, le sommet C porte la marque 6
et son prédécesseur est le sommet A.

Remarques :
– Bien sûr, pour déterminer les plus courts chemins dans le graphe précédent, il n’est
pas nécessaire de drésser ce tableau, ni de faire appel à l’algorithme de Dijkstra.
Cependant, il faut tenir présent à l’esprit que, dans la pratique, on a souvent affaire
à des graphes avec des centaines de sommets et des miliers d’arcs. Dans ces cas là,
seul un ordianteur peut résoudre le problème du plus court chemin, d’où la nécessité
d’un algorithme.
– Pour introduire les données d’un graphe pondéré à une application informatique (par
exemple matlab), on peut utiliser la matrice de pondération P . Elle est définie de la
manière suivante :
P = (ωij ) 1≤i≤n
1≤j≤n

Où n est le nombre de sommets du graphe. Si (si , sj ) est un arc du graphe alors, sur
l’intersection de ligne i avec la colonne j de la matrice P on place le nombre ωij .
Si toutes les pondérations non nulles valent 1, alors la matrice P n’est autre que la
matrice d’adjacence du graphe.

Exercice 1 :
Utiliser l’algorithme de Dijkstra pour trouver un plus court chemin du sommet s vers
les autres.
3. En toute rigueur il faudrait dire : d’un plus court chemin, car ils peuvent être plusieurs.

K.Nizar (69141720sya@gmail.com) 9 I.S.E.T BIZERTE 2020


1.1. L’ALGORITHME DE DIJKSTRACHAPITRE
: 1. GRAPHES ET ALGORITHMES

G=

Exercice 2 :
On considère le graphe ci-bas.

A _@
5 /B
@@ ~
@@ ~~
−3 @@ ~~~−3
~
C

Montrer qu’il n’existe pas de plus court chemin de A vers B.


Parfois le problème du plus court chemin n’a pas de solution.
Le graphe ci-haut est un exemple de cycles négatifs. Un cycle négatif est un circuit fermé
dont la somme des pondérations est négative.

Exercice 3 :
On considère le graphe suivant :

A
2 /B
~~>
1 ~
4
~~~ 1
 ~ 
D /C
−3

– Donner un plus court chemin du sommet A au sommet C.


– Utiliser l’algorithme de Dijkstra pour répondre à cette question. Que remarquez
vous ?
Réponse :

A 0+
B ∞ 2+ ; A
C ∞ ∞ 3+ ; B
D ∞ 4; A 4; A 4+ ; A

On voit bien que l’algorithme de Dijkstra donne 3 comme longueur du plus court chemin
de A vers C. Or il est évident que la vraie valeur est 1.

K.Nizar (69141720sya@gmail.com) 10 I.S.E.T BIZERTE 2020


CHAPITRE 1. GRAPHES ET ALGORITHMES
1.2. L’ALGORITHME DE BELLMAN-FORD

1.2 L’algorithme de Bellman-Ford


L’exercice précédent constitue un exemple de ce que l’algorithme de Dijkstra n’est plus
valable en présence de pondérations négatives. Dans ce cas, l’un des algorithmes les plus
éfficaces pour résoudre le problème du plus court chemin est celui de Bellman-Ford.

1.2.1 Principe de l’algorithme :


Soit G = (S, A, ω) un graphe possédant n sommets, orienté et pondéré. On suppose de
plus que G contient un unique sommet source, noté s 4 .
On s’intéresse à la question de trouver les plus courts chemins de s vers les autres sommets.
– On commence par ordonner les arcs du graphe.
– On applique la procédure de remarquage à tous les arcs (premier tour).
– On refait la même chose une deuxième fois (second tour).
– Si, à la fin de ce second tour les valeurs ne changent pas, cela veut dire que les plus
courts chemins ont été calculés lors du premier tour. C’est l’arrêt.
– Si non, un troisième tour est nécessaire.
– On procède ainsi jusqu’à parvenir à faire un tour qui ne change aucune marque
(des sommets) du tour qui l’a précédé. C’est la fin de l’algorithme. La marque de
chaque sommet est le plus court chemin de s vers ce sommet.
– On peut montrer que l’arrêt - dans le cas où le plus court chemin existe - advient
après au plus n − 1 tours.
Si le nième tour modifie encore les marques, on peut conclure que le graphe contient
un cycle négatif (comme, par exemple, le graphe de l’exercice 2) accéssible depuis s,
et que le problème du plus court chemin n’a pas de solution.

Exemple :
Revenons au graphe de l’exercice 3

G= A 2 /B
~~>
1 ~
4 ~~ 1
 ~~ 
D /C
−3

On ordonnera les arcs de la manière suivante : (AB) ; (BC) ; (DC) ; (AD) ; (DB). (L’ordre
de parcour des arcs ne change aucunement le résultat de l’algorithme).

A 0 0 0
B ∞ 2; A 2; A
C ∞ 3; B 1; D
D ∞ 4; A 4; A

4. Comme son nom l’indique, s est tel qu’aucun arc ne se termine par s.

K.Nizar (69141720sya@gmail.com) 11 I.S.E.T BIZERTE 2020


1.2. L’ALGORITHME DE BELLMAN-FORD
CHAPITRE 1. GRAPHES ET ALGORITHMES

Commentaire :
1. Colonne 3 : C’est le premier tour.
– L’application de la procédure de remarquage à l’arc (AB) change la marque de B
en 2.
– Le remarquage sur l’arc (BC) affecte à C la nouvelle marque 3.
– Le remarquage sur l’arc (DC) ne change pas la mrque de C car ∞ > 3.
– Le remarquage suivant l’arc (AD) change la marque de D (initialement infinie) en
4.
– Le remarquage suivant l’arc (DB) ne change pas la marque de B car
m(B) = 2 < 4 + 1 = 5.
Le premier tour est ainsi terminé.
2. Colonne 4 : C’est le second tour.
– Les remarquages suivants (AB) et (BC) n’apportent aucun changement.
– Le remarquage suivant (DC) change la marque de C en 1.
– Les remarquages suivant les arcs (AD) et (DB) n’apportent aucun changement.
C’est ainsi que le deuxième tour prend fin.
3. On pourra s’assurer, en l’effectuant, que le troisième tour ne change aucune marque.
C’est la fin de l’algorithme. Les plus courts chemins, ainsi que leurs valeurs respec-
tives, peuvent être lus sur la dernière colonne.
Shématiquement, on peut présenter le déroulement de l’algorithme de la manière suivante :

Initiation : A(0) 2 / B(∞) → Tour 1 : A(0) 2 / B(2) → Tour 2 : A(0) 2 / B(2)


u: x ; x ;
1 uuu 1 xxx 1 xxx
u xx xx
4
uu 1 4 1 4 1
 uu   xx   xx 
D(∞) / C(∞) D(4) / C(3) D(4) / C(1)
−3 −3 −3

Exerice 4 :
On considère le graphe suivant :

G=

Appliquer l’algorithme de Bellman-Ford à ce graphe, et trouver les plus courts chemins


respectifs du sommet 1 aux autres.

K.Nizar (69141720sya@gmail.com) 12 I.S.E.T BIZERTE 2020


CHAPITRE 1. GRAPHES ET ALGORITHMES
1.3. L’ALGORITHME DE FORD-FULKERSON

1.3 L’algorithme de Ford-Fulkerson


1.3.1 Définitions :
Soit G un graphe orienté.

1. Capacité : Une capacité sur G est une fonction positive, notée c, qui à chaque arc
(si , sj ) associe un nombre positif c(si , sj ) = cij 5 , appelé capacité de l’arc (si , sj ). En
pratique, on peut imaginer que l’arc (si , sj ) est un conduit qui transporte un flux
quelconque : courant électrique ((si , sj ) est alors un câble électrique), eau (le graphe
G est alors un réseau de distribution d’eau), gaz, véhicules routiers. La capacité cij
est alors le flux maximum supporté par l’arc (si , sj ).
2. Flux : On appellera flux, toute application de l’ensemble des arcs de G dans R. On
notera par fij le flux associé avec l’arc (si , sj ). C’est le flux sortant du sommet si et
rentrant dans le sommet sj .
3. Flot : Un flux qui obéit à la loi de Kirchhof est appelé Flot. On rappelle que la loi de
Kirchhoff stipule que, sur chaque sommet si du graphe, la somme des flux rentrants
est égale à celle des flux sortants.
Autrement dit :
X X
fij = fki
j∈Γ(si ) k∈Ω(si )

Où
Ω(si ) = {sk / (sk , si ) est un arc de G}

4. Sources et Puits : Un sommet s et dit source si Ω(s) = ∅ et Γ(s) 6= ∅. Autrement


dit, il n’existe pas d’arcs rentrants dans s, et il existe des arcs sortants de s.
5. Graphes de type source-puits : On dit d’un graphe qu’il est de type source-puits
(on note parfois s → p) s’il possède un unique sommet source et un unique sommet
puits.
Pour ce genre de graphe on dira qu’un flux est un flot, même s’il ne respecte pas la
loi de Kirchhoff sur les sommets s et p (mais la respecte sur tous les autres, bient
entendu).
6. Flots réalisables : Soit G un graphe orienté muni d’une capacité c. Un flot réalisable
sur G est un flot tel que, sur chaque arc (si , sj ), la condition suivante soit satisfaite :

0 ≤ fij ≤ cij

5. Autrement dit, c’est une fonction de pondération positive

K.Nizar (69141720sya@gmail.com) 13 I.S.E.T BIZERTE 2020


1.3. L’ALGORITHME DE FORD-FULKERSON
CHAPITRE 1. GRAPHES ET ALGORITHMES

Exemple :

G=

– Γ(H) = {J} et Ω(H) = {E, F }.


– Les capacités figurent à droite du symbole /, tandisque les flux sont à sa gauche.
– La capacité de l’arc AD est 20. Le flux associé à cet arc est 14. C’est le flux sortant
de A et rentrant dans D.
– En sommant au niveau de chaque sommet les flux sortants d’une part, et les flux
entrants d’autre part, on pourra s’assurer que le flux considéré sur le graphe G est
un flot.
– Sommet F : on pourra remarquer que la somme des flux rentrants est égale à huit,
ainsi que celle des flux sortants.
– A est un sommet source, et J est un sommet puits.

Remarque :
Soit G un graphe de type s → p, et soit F un flot sur G.
Il est facile de s’assurer que la conservation du flux (loi de Kirchhoff) garantie que la somme
des flux sortants de s est égale à la somme des flux rentrants dans p. Leur valeur commune,
notée v, est la valeur du flot F .
X X
(flux sortants de s) = (flux rentrants dans p) = v
Par exemple, la valeur du flux dans l’exemple précédent vaut 28.
L’objectif de l’algorithme de Ford-Fulkerson est de construire un Flot dont la valeur soit
maximale.

1.3.2 Chemins augmentants et Chaı̂nes augmentantes


On considère un graphe de type s → p muni d’une capacité c, ainsi qu’un flot rélisable
sur G.
– Chemins : On appellera chemin augmentant tout chemin de s vers p dont aucun
arc n’est saturé (sur chaque arc du chemin ona fij < cij )
f12 f23
s = s1 / s2 / ... sn−1 /p = sn
fn−1,n

K.Nizar (69141720sya@gmail.com) 14 I.S.E.T BIZERTE 2020


CHAPITRE 1. GRAPHES ET ALGORITHMES
1.3. L’ALGORITHME DE FORD-FULKERSON

– Chaı̂nes : C’est comme un chemin, sauf que des arcs indirects (à contre-sens du
parcours) peuvent être présents.

f12 f23
s = s1 / s2 / ... ... sk o sk+1 ... sn−1 / p = sn
fk,k+1 fn−1,n

Pour les arcs directs la condition est la même que pour les chemins. Pour les arcs
indirects il faut, en plus, que fij > 0.
– Revenons à l’exemple précédent

A→D→I→J

est un chemin. Mais ce n’est pas un chemin augmentant, car l’arc I → J est saturé.

A→B→E→C→F →I→J
est une chaı̂ne. Mais ce n’est pas une chaı̂ne augmentante, car certains de ses arcs
sont saturés.

Exemple :
Considérons le graphe à capacité suivant :
/3
A /B
~>
~~
/4 ~~ /5
 ~~ /5 
D /C
/3

– Le flot le plus simple est le flot nul (lorsque le flux sur chaque arc est nul, on est
certains que la loi de Kirchhoff est respectée)

0/3
A /B
~~>
~
0/4 ~~ 0/5
 ~~ 0/5 
D /C
0/3

– Voici un autre flot :


1/3
A /B
~~>
~
4/4 ~~ 1/5
 ~~ 0/5 
D /C
4/3

Sa valeur est 4. Il n’est pas maximal.


On remarque, d’ailleurs, que le chemin A → B → C est un chemin augmentant. En
faisant circuler un flux constant tout le long de ce chemin (sans excéder les capacités

K.Nizar (69141720sya@gmail.com) 15 I.S.E.T BIZERTE 2020


1.3. L’ALGORITHME DE FORD-FULKERSON
CHAPITRE 1. GRAPHES ET ALGORITHMES

des arcs), nous pouvons (sans rompre la conservation du flux au niveau de chaque
sommet) transformer ce flot en un flot d’une valeur plus grande.

(1+2)/3 3/3
A /B = A /B
~~> ~~>
~ ~
3/4
~~~0/5 (1+2)/5 4/4
~~~0/5 3/5
 ~   ~ 
D /C D /C
3/3 4/3

La valeur de ce nouveau flot est sept. C’est un flot maximal ; on ne peut plus l’aug-
menter, car tous les arcs sortants de A (le sommet source) sont saturés.
– Considérons un autre flot :
1/3
A /B
~~>
~
4/4
~~~4/5 5/5
 ~ 
D /C
0/3

Sa valeur est 5. Bien sûr, il n’est pas maximal. Nous pouvons l’améliorer en considérant
la chaı̂ne A → B → D → C. Remarquons que l’arc (DB) est parcouru dans le sens
inverse (c’est pour cela que c’est une chaı̂ne, et pas un chemin). Pour améliorer la
valeur de notre flot, il suffit de faire circuler un flux constant le long de cette chaı̂ne.
Ce flux ne peut être que 2, vue la capacité de l’arc (AB). Il y a un détail cependant :
au niveau de l’arc (DB) (qui est parcouru en sens inverse) il va falloir, pour ne pas
perdre la conservation du flux, changer 2 en -2 ; c’est à dire retrancher 2 au lieu de
l’ajouter.
(1+2)/3 3/3
A /B = A /B
~> ~>
~~~ ~~~
4/4 ~ 5/5 4/4 ~ 5/5
 ~~ (4−2)/5  ~~ 2/5 t
D /Ct D /C
(0+2)/3 2/3

Le nouveau flot est maximal, et sa valeur vaut 7, naturellement.

1.3.3 Augmentation de la valeur d’un flot :


Nous allons voir comment augmenter un flot qui n’est pas maximal, en utilisant les
chemins et les chaı̂nes augmentantes.

En utilisant des chemins augmentants

Soit G un graphe orienté muni d’une fonction de capacité de ses arcs. Soit F un flot non
maximal. On considère un chemin augmentant. On peut supposer, sans perte de généralité,
que le voisinage d’un sommet E du graphe ressemble à ceci (la portion du chemin considéré

K.Nizar (69141720sya@gmail.com) 16 I.S.E.T BIZERTE 2020


CHAPITRE 1. GRAPHES ET ALGORITHMES
1.3. L’ALGORITHME DE FORD-FULKERSON

étant désignée par des flèches doubles) 6 :

A AA B C
AA a ~>
AA e ~~
AA ~~
b +3
~~ d
D 3+ F
}>E
c }}
}}}
}
G H I

La conservation du flux au niveau du sommet E implique :

a+b+c=d+e

La circulation d’un flux constant (de valeur x par exemple) le long du chemin considéré,
ne perturbe aucunement la conservation du flux au niveau du sommet E.

A AA B C
AA a ~~>
AA e ~
AA ~~
b+x +3 ~~d+x
D 3+ F
} >E
c }}
} }}
}
G H I

On a, en éffet :
a+b+x+c=d+x+e
Ce x que nous avons fait circuler le long d’un chemin parviendra jusqu’au sommet p et,
par conséquent

En utilisant des chaı̂nes augmentantes :

A AA B >C
AA a
AA ~~~
e
AA ~~
b+x +3 ~~
D E ks
}> d−x
c }}
}}
}}
G H I
Il faut retrancher x sur l’arc indirect, au lieu de l’ajouter, pour respecter la loi de Kirchhoff.

6. Par souci de simplicité nous évitons de faire des shémas généraux, qui risqueraient d’encombrer
inutilement l’exposé.

K.Nizar (69141720sya@gmail.com) 17 I.S.E.T BIZERTE 2020


1.3. L’ALGORITHME DE FORD-FULKERSON
CHAPITRE 1. GRAPHES ET ALGORITHMES

1.3.4 Pricipe de l’algorithme :


– On initialise avec le flot nul. Sa valeur est 0. On cherche à l’auglmenter progressive-
ment, jusqu’à obtenir un flot maximal.
– On commence ensuite par chercher tous les chemins augmentants, puis on passe un
flux maximal constant dans chacun d’entre eux. Autrement dit, sur chaque chemin,
on fait passer la plus petite capacité.
– Lorsque tous les chemins d’augmentation sont saturés, on passe aux chaı̂nes. Sur
certains arcs le flux n’est plus nul (après l’étape précédente) ; il faut donc tenir compte
de la nouvelle capacité de ces arcs (c0ij = cij − fij ). De même qu’avec les chemins
augmentants, on fait circuler la plus petite capacité résiduelle (sans oublier d’inverser
le signe sur les arcs parcourus en sens inverse). Lorsque c’est fait, on a construit un
flot maximal (qui n’est pas unique ; seule sa valeur l’est).

Exemples illustratifs :
1.
0/2 0/4 0/3 0/5
A / B / C / D / E
Le flux maximal que l’on puisse faire circuler est de valeur 2.

2/2 2/4 2/3 2/5


A / B / C / D / E

2.
GO H
4/4 4/4
3/4 3/4  1/5
A / B / Co D / E
1/3
2/4

F
La capacité résiduelle de l’arc (AB), par exemple, vaut c0 = c − f = 4 − 3 = 1.
A → B → C → D → F est une chaı̂ne augmentante. Le flux qui aboutit à F a
pour valeur 2. Nous pouvons l’augmenter en ajoutant 7 le flux constant 1 à chacun
des arcs.

GO H
4/4 4/4
(3+1)/4 (3+1)/4  1/5
A / B / o
C (1−1)/3D / E
(2+1)/4

F
7. On retranche, au lieu de l’ajouter, sur les arcs indirects.

K.Nizar (69141720sya@gmail.com) 18 I.S.E.T BIZERTE 2020


CHAPITRE 1. GRAPHES ET ALGORITHMES1.4. CORRECTION DES EXERCICES

C’est à dire
GO H
4/4 4/4
4/4 4/4  1/5
A / B / Co D / E
0/3
3/4

F
Ce nouveau flux a pour valeur 3.

Exercice 5 :
Trouver un flot maximal.
/4 /3
AO A / B /C
AA /5 ~>
AA /3 ~~
/5 AA ~~ /3
/4 ~~/5 
DO /E /F
> @@
/3 }}} @@
/4 }} @@ /3
}} /3 @@ 
G /H /I
/3 /5

Exercice 6 :
On considère le graphe ci-dessous, muni d’une capacité c et d’un flot F .

a
1/4 
? O ??? 5/5
 ??
 4/4 ??

 5/8 ?
5/5
s / c / p
>> O @
>>
>>4/6
5/5 >> 1/7

b
– Vérifier que F est un flot. Quelle est sa valeur ?
– Y-a-t-il des chemins augmentants ?
– Trouver une chaı̂ne augmentante.
– En déduire un flot maximal.

1.4 Correction des exercices


Exercice 5 :
On voit bien qu’il s’agit d’un graphe de type s → p. G étant le sommet source, et I le
sommet puits.

K.Nizar (69141720sya@gmail.com) 19 I.S.E.T BIZERTE 2020


1.4. CORRECTION DES EXERCICESCHAPITRE 1. GRAPHES ET ALGORITHMES

– Initialisons avec le flux nul (F0 ).


0/4
AO A / B 0/3 / C
AA 0/5 0/3 ~~>
AA ~
0/5 AA ~~~ 0/3
0/4 ~ 0/5 
DO /E /F
} > @@
0/3 }} @@
0/4 }} @@ 0/3
} @@
} 0/3 
G / H /I
0/3 0/5

– Considérons les chemins augmentants suivants :


GDEF I; GEI; et GHI
Nous pouvons augmenter le flot nul en faisant circuler le flot maximal sur le chemin
GDEF I. La valeur de ce flot est 3. Le nouveau flot sur tout le graphe est maintenant
F1 , de valeur 3.
0/4 0/3
AO A / B /C
AA 0/5 0/3 ~~>
AA ~
0/5 AA ~~~ 0/3
3/4 ~ 3/5 
DO /E /F
> @@
0/3 }}} @@
3/4 }} @@ 3/3
}} 0/3 @@ 
G /H /I
0/3 0/5

En faisant circuler le flot maximal sur le chemin GEI, lui aussi de valeur 3, nous
obtenons un flot global F2 de valeur 6.
0/4 0/3
AO A / B /C
AA 0/5 0/3 ~~>
AA ~~
0/5 AA ~~
0/3
3/4 ~ 3/5 
DO /E /F
> @@
3/3 }}} @@
3/4 }} @@ 3/3
}} 3/3 @@ 
G /H /I
0/3 0/5

En faisant circuler le flot maximal lelong de GHI, le flot global augmente de trois
unités supplémentaires. Ainsi, le nouveau flot (F3 ) est de valeur 9.
0/4 0/3
AO A / B /C
AA 0/5 0/3 ~~>
AA ~~
0/5 AA ~~
0/3
3/4 ~ 3/5 
DO /E /F
} > @@
3/3 }} @@
3/4 }} @@ 3/3
} @@
} 3/3 
G / H /I
3/3 3/5

K.Nizar (69141720sya@gmail.com) 20 I.S.E.T BIZERTE 2020


CHAPITRE 1. GRAPHES ET ALGORITHMES1.4. CORRECTION DES EXERCICES

On voit bien qu’il n’y a plus de chemin augmentant, ni de chaı̂ne augmentante. Donc
F3 est maximal.

Exercice 6
scbp est une chaı̂ne augmentante. On peut y faire circuler un flot de valeur 3, ce qui
donne :
a
? O ??
1/4 
4/4 ?? 5/5
 ??
 ??

(5+3)/8 5/5

s / c / p
>> O @
>>
>>(4−3)/6
5/5 >> (1+3)/7

b
C’est à dire :
a
1/4 
? O ??? 5/5
 ??
 4/4 ??
8/8 ?
5/5
s / c / p
>> O @
>>
>>1/6
5/5 >> 4/7

b
On remarque que sacbp est une chaı̂ne augmentante. Nous pouvons y faire circuler un flot
de valeur 1.
a
? O ??
(1+1)/4
(4−1)/4???5/5
 ??
8/8 ?
5/5
s / c / p
>> O @
>>
>>(1−1)/6
5/5 >> (4+1)/7

b
C’est à dire :
a
? O ??
2/4 
3/4 ?? 5/5
 ??
 ??
 8/8 5/5

s / c / p
>> O @
>>
>>0/6
5/5 >> 5/7

b
Ce flot est maximal. Sa valeur est 15.

K.Nizar (69141720sya@gmail.com) 21 I.S.E.T BIZERTE 2020


1.4. CORRECTION DES EXERCICESCHAPITRE 1. GRAPHES ET ALGORITHMES

K.Nizar (69141720sya@gmail.com) 22 I.S.E.T BIZERTE 2020


Chapitre 2

Chaı̂nes de Markov et files d’attentes

L’objectif est d’initier l’étudiant à l’étude d’un genre particulier de files d’attente. Il
s’agit de files dont l’évolution dans le temps se laisse décrire par un modèle probabiliste
connu sous le nom de chaı̂nes de Markov.

2.1 Rappels
– Soit Ω un ensemble munit d’une fonction de probabilité p. Une variable aléatoire
discrète sur Ω est une application à valeurs dans un ensemble en bijection avec N.
– Soient A et B deux évènements. La probabilité que l’évènement A se réalise, sachant
que l’évènement B est réalisé se calcule par la formule suivante :

p(A ∩ B)
p(A|B) = (2.1)
p(B)

Cette formule, bien entendu, éxige que B ne soit pas un évènement impossible
(p(B) 6= 0).
– On voit bien que la probabilité conditionnelle permet de calculer la probabilité de
l’intersection.
p(A ∩ B) = p(B)p(A|B) (2.2)
– Soient A1 et A2 deux évènements qui constituent une partition de Ω ; c’est à dire que
A1 ∪ A2 = Ω et A1 ∩ A2 = ∅. L’équation (2) permet alors d’écire :

p(A) = p(A1 )p(A|A1 ) + p(A2 )p(A|A2 ) (2.3)

2.2 Chaı̂nes de Markov


Soit {Xn }n∈N une suite de variables aléatoires discrètes définies sur un ensemble Ω qu’on
a muni d’une fonction de probabilité p.

23
2.2. CHAÎNES DE CHAPITRE
MARKOV 2. CHAÎNES DE MARKOV ET FILES D’ATTENTES

On suppose que cette suite vérifie la condition suivante :

p(Xn = j|, Xn−1 = j1 , Xn−2 = j2 . . . , X0 = jn ) = p(Xn = j|, Xn−1 = j1 ) (2.4)

Admettons que le pramètre n représente le temps (discrétisé en secondes, minutes, heures,. . .),
dans ce cas la condition précédente signifie que l’état de la variable X à l’instant n ne
dépend que de son état à l’instant n − 1, et pas de ses étas précédents. Cela, bien sûr,
lorsque l’état de la variable à l’instant n − 1 est connu. À défaut, les états de la variable
X aux temps antérieurs à n − 1 peuvent influencer son état à l’instant n.
L’élément principal dans l’étude des chaı̂nes de Markov est le nombre :
pn (i, j) = p(Xn+1 = j|Xn = i)
Lorsque ce nombre est indépendant de n, la chaı̂ne est dite homogène. On a alors
pn (i, j) = p(i, j) = p(X1 = j|X0 = i)

2.2.1 Graphe et matrice de Transitions


Lorsque les variables Xn sont à valeurs dans une partie finie de N, par exemple
E = {1, 2, 3, . . . m}, on peut constituer la matrice Tn , dite matrice des transitions de la
chaı̂ne {Xn }, de la manière suivante :

Tn = (pn (i, j)) 1≤i≤m


1≤j≤m

(2.5)

Bien sûr, lorsque la chaı̂ne est homogène, la matrice Tn ne dépend pas de n (Tn = T ).
De même, on peut associer un graphe - dit graphe de transitions - avec une chaı̂ne de
Markov. Lorsque la chaı̂ne est homogène, le graphe est noté G (et non pas Gn ). Il est tel
que T est sa matrice de pondérations. Autrement dit
– Les sommets de G sont les états 1, 2, 3 . . .m que peuvent prendre les variables Xn .
– Le poids de l’arc (i, j) est le nombre
p(Xn+1 = j|Xn = i) =
|{z} p(X1 = j|X0 = i)
cas homogène

Exemple
Considérons une chaı̂ne de Markov dont les variables Xn sont à valeurs dans l’ensemble
E = {1, 2}.
La matrice de transitions est donnée par :
 
p(Xn+1 = 1|Xn = 1) p(Xn+1 = 2|Xn = 1)
Tn =
p(Xn+1 = 1|Xn = 2) p(Xn+1 = 2|Xn = 2)

K.Nizar (69141720sya@gmail.com) 24 I.S.E.T BIZERTE 2020


CHAPITRE 2. CHAÎNES DE MARKOV ET FILES D’ATTENTES
2.2. CHAÎNES DE MARKOV

Si la chaı̂ne est homogène, la matrice T ne dépend pas de n. Nous pouvons remplacer n


par n’importe quel entier et cela donnera toujours la même chose.
   
p(X1 = 1|X0 = 1) p(X1 = 2|X0 = 1) a b
T = =
p(X1 = 1|X0 = 2) p(X1 = 2|X0 = 2) c d

Le graphe de transitions de cette chaı̂ne prend alors la forme suivante :

b
(
a 91h 2e d
c

Rappelons que La loi de la variable Xn est donnée par



Ln = p(Xn = 1) p(Xn = 2)

Le calcul du produit Ln T donne

 
 p(Xn+1 = 1|Xn = 1) p(Xn+1 = 2|Xn = 1)
Ln Tn = p(Xn = 1) p(Xn = 2)
p(Xn+1 = 1|Xn = 2) p(Xn+1 = 2|Xn = 2)
= (p(Xn = 1)p(Xn+1 = 1|Xn = 1) + p(Xn = 2)p(Xn+1 = 1|Xn = 2)

. p(Xn = 1)p(Xn+1 = 2|Xn = 1) + p(Xn = 2)p(Xn+1 = 2|Xn = 1)

= p(Xn+1 = 1) p(Xn+1 = 2) = Ln+1

Ainsi :
Ln+1 = Ln Tn

Ou encore, si la chaı̂ne est homogène :

Ln+1 = Ln T (2.6)

Or, en vertu du même principe, nous pouvons écrire que :

Ln = Ln−1 T

Enfin, de proche en proche, nous obtenons que :

Ln = L0 T n (2.7)

K.Nizar (69141720sya@gmail.com) 25 I.S.E.T BIZERTE 2020


2.3. FILES D’ATTENTE
CHAPITRE 2. CHAÎNES DE MARKOV ET FILES D’ATTENTES

2.3 Files d’attente


La chaı̂ne de Markov {Xn }n∈N qu’on considère est telle que la variable Xn calcule le
nombre de clients présents dans la file d’attente à l’instant tn .
On formule les hypotheses suivantes :
– On suppose que la probabilité qu’un client parte vaut a, et qu’un client arrive vaut
b.
– On suppose que les deux évènements ”Arrivée d’un client” et départ d’un client sont
indépendants l’un de l’autre.
– On suppose de même qu’entre les instants tn et tn+1 il ne peut y avoir plus d’une
seule arrivée et plus d’un seul départ.
Ces hypothèses permettent de tirer les conclusions suivantes :
– La probabilité qu’à l’instant tn la file augmente d’un client par rapport à l’instant
précédent (tn−1 ) vaut a(1 − b). Autrement dit :

p(Xn = i + 1|Xn−1 = i) = a(1 − b)

En éffet, pour que la file augmente d’un client entre les instants tn−1 et tn il faut qu’il
y est une arrivée et pas de départ. Or les évènements A=une arrivée et B= pas de
départ sont indépendants, d’où :

p(A ∩ B) = p(A)p(B) = a(1 − b)

– La probabilité que la file diminue d’un client entre les instants tn−1 et tn vaut, avec
des arguments similaires, (1 − a)b. En effet, il faut qu’il y est un départ (l’évènement
B) et pas d’arrivée (l’évènement A).
Cette probabilité peut s’exprimer encore par :

p(Xn = i − 1|Xn−1 = i) = (1 − a)b

– La probabilité que le nombre de clients dans la file à l’instant tn soit le même qu’il
était à l’instant tn vaut
p(Xn = i|Xn−1 = i)
En éffet Cette situation advient lorsqu’il y a un départ et une arrivée, ou bien pas
de départ ni d’arrivée. C’est l’évènement (A ∩ B) ∪ (A ∩ B). Sa probabilité est
ab + (1 − a)(1 − b). On a donc

p(Xn = i|Xn−1 = i) = 1 + 2ab − a − b

– La matrice de transitions : T = (p(i, j)) est telle que :




 p(i, i) = 1 + 2ab − a − b
p(i, i + 1) = a(1 − b)


 p(i, i − 1) = (1 − a)b
p(i, j) = 0, si j ∈ / {i, i + 1, i − 1}

K.Nizar (69141720sya@gmail.com) 26 I.S.E.T BIZERTE 2020


CHAPITRE 2. CHAÎNES DE MARKOV ET FILES D’ATTENTES
2.3. FILES D’ATTENTE

Par exemple, en supposant que la file ne puisse pas contenir plus de cinq clients, la
matrice T prend la forme :
 
1 + 2ab − a − b a(1 − b) 0 0 0

 (1 − a)b 1 + 2ab − a − b a(1 − b) 0 0 

T = 0 (1 − a)b 1 + 2ab − a − b a(1 − b) 0 

 0 0 (1 − a)b 1 + 2ab − a − b a(1 − a)b 
0 0 0 (1 − a)b 1 + 2ab − a − b
– Revenons au cas général. La colonne numéro j de la matrice de transitions est égale
au vecteur :
0
 
..
.
 
 
0
 
 
a(1 − b)
 
 
 1 + 2ab − a − b
 

(1 − a)b
 
 
0
 
 
 .. 
 . 
0
a(1 − b) se trouvant sur la ligne numéro j − 1.
– De même la ligne numéro i de cette matrice est égale à

0 . . . 0 (1 − a)b 1 + 2ab − a − b a(1 − b) 0 . . . 0
(1 − a)b se trouvant sur la colonne numéro i − 1.
L’une des raisons pour lesquelles on soumet les files d’attentes à une étude mathématique
rigoureuse réside dans le besoin de prévoir le moment où la file atteint son point de satu-
ration.
Par exemple, prenons les cas d’une file qui ne peut pas supporter plus de mille client en
attente.
Le vecteur numéro 1000 (noté e1000 ) de la base canonique de Rn 1 est égal à
 
0
 .. 
 . 
e1000 =  1 
 
 . 
 .. 
0
Tous les coefficients, sauf le millième, sont nuls, ce dernier valant 1.
On voit facilement que, pour chaque n, p(Xn = 1000) se calcule par la formule :
p(Xn = 1000) = L0 T n e1000
1. Avec n très grand

K.Nizar (69141720sya@gmail.com) 27 I.S.E.T BIZERTE 2020


2.3. FILES D’ATTENTE
CHAPITRE 2. CHAÎNES DE MARKOV ET FILES D’ATTENTES

En calculant les termes de la suite précédente, on peut prévoir le moment auquel la pro-
babilité que la file atteigne mille personnes devient alarmante.

Exercice
1. Ecrire les colonnes C1 , C2 , C3 et C4 de la matrice T .
2. Ecrire les lignes l1 , l2 , l3 et l4 de la matrice T
3. Calculer L0 , la loi de X0 .
4. En déduire L1 .
5. Calculer p(X2 = 1|X0 = 1).

Réponse
1.

0

a(1 − b)
 
1 + 2ab − a − b a(1 − b)
 
 1 + 2ab − a − b
 
  
 (1 − a)b     1 + 2ab − a − b 
   (1 − a)b   
 0     (1 − a)b 
C1 = 
 ..  ; C2 = 
  0  ; C3 = 
  
. .. 0 

..
 
.
  .. 
.
     
 .   ..   
 .   .. 
0  . 
0
0

0
 
 0 
a(1 − b)
 
 
 

 1 + 2ab − a − b 

C4 = 
 (1 − a)b 

 0 
 .. 
.
 
 
 .. 
 . 
0
2. 
l1 = 1 + 2ab − a − b a(1 − b) 0 . . . . . . . . . 0
 
(1 − a)b 1 + 2ab − a − b a(1 − b) 0 . . . . . . . . .
l2 =
0
3. 
L0 = p(X0 = 0) p(X0 = 1) p(X0 = 2) . . . . . . . . .
Or on a

K.Nizar (69141720sya@gmail.com) 28 I.S.E.T BIZERTE 2020


CHAPITRE 2. CHAÎNES DE MARKOV ET FILES D’ATTENTES
2.3. FILES D’ATTENTE

– p(X0 = 0) = 1 − a. La probabilité qu’aucun client n’arrive à l’instant t = 0 vaut


1 − a.
– p(X0 = 1) = a. La probabilité qu’un client arrive vaut a.
Ainsi : 
L0 = 1 − a a 0 0 . . . . . . 0
4.
L1 = L0 T
On a, par exemple :

1 + 2ab − a − b
 

 (1 − a)b 

 0 
p(X1 = 0) = L0 C1 = 1 − a a 0 0 ... ... 0 
 .. 
.

 
 .. 
 . 
0

C’est à dire :
p(X1 = 1) = (1 − a)(1 + 3ab − a − b)
5. Il s’agit de multiplier la deuxième ligne de T par sa deuxième colonne.

a(1 − b)
 

 1 + 2ab − a − b 

 (1 − a)b 
 0

p(X2 = 1|X0 = 1) = (1 − a)b 1 + 2ab − a − b a(1 − b) 0 . . . 0 
 
.. 
.
 
 
 .. 
 . 
0

K.Nizar (69141720sya@gmail.com) 29 I.S.E.T BIZERTE 2020

Vous aimerez peut-être aussi