You are on page 1of 50

IFT1575 Modles de recherche oprationnelle (RO)

3. Optimisation de rseaux
a. Graphes et rseaux
b. Plus courts chemins
c. Arbres de poids minimum
d. Flot maximum
3. Optimisation de rseaux 2
Graphe orient
Exemple : rseau de distribution
Sommets : A, B, C, D, E
Arcs : (A,B), (A,C), (A,D), (B,C), (C,E), (D,E), (E,D)
3. Optimisation de rseaux 3
Graphe [non orient]
Exemple : Parc Seervada (H&L sec. 9.1)
Sommets : O, A, B, C, D, E, T
Artes : {O,A}, {O,B}, {O,C}, {A,B}, {A,D}, {B,C},
{B,D}, {B,E}, {D,E}, {D,T}, {E,T}
Le nombre sur chaque arte reprsente la distance
entre les deux sommets relis par cette arte
3. Optimisation de rseaux 4
Transformations
Graphe orient driv dun graphe non orient :
obtenu en introduisant deux arcs pour chaque arte,
un dans chaque direction
Graphe sous-jacent un graphe orient : obtenu en
enlevant lorientation des arcs
Si G est un graphe non orient, le graphe sous-
jacent au graphe orient driv de G nest pas G !
De mme, si G est un graphe orient, le graphe
driv du graphe sous-jacent G nest pas G !
3. Optimisation de rseaux 5
Chemins et circuits
Chemin [chane] : suite darcs [dartes] distinct[e]s
reliant deux sommets
Chemin non orient : suite darcs distincts qui relient
deux sommets lorsquon ne considre pas
lorientation des arcs
En dautres mots, un chemin non orient est une
chane dans le graphe sous-jacent
Circuit [cycle] : chemin [chane] qui commence et
finit au mme sommet
Circuit non orient : cycle dans le graphe sous-jacent
3. Optimisation de rseaux 6
Chemins et circuits (exemples)
A->C->E->D = chemin (= chemin non orient)
A->D->E->C->B = chemin non orient ( chemin)
D->E->D = circuit (= circuit non orient)
A->B->C->A = circuit non orient ( circuit)
3. Optimisation de rseaux 7
Connexit
Deux sommets sont connexes sil existe au moins un
chemin non orient les reliant
Un graphe est connexe si toute paire de sommets est
connexe
Le plus petit graphe connexe n sommets possde
n-1 artes
On lappelle un arbre
Dfinition alternative : un arbre est un graphe
connexe sans cycle
Arbre partiel : arbre obtenu partir dun graphe
connexe en incluant tous les sommets
3. Optimisation de rseaux 8
Arbre partiel
Pas un arbre partiel :
non connexe
Pas un arbre partiel :
possde des cycles
Arbre partiel
3. Optimisation de rseaux 9
Flot dans un rseau
Rseau : graphe orient ayant
des capacits sur les arcs
des sommets doffre (ou sources)
des sommets de demande (ou puits)
des sommets de transfert
Flot dans un rseau : nombre dunits circulant sur
les arcs du rseau de faon respecter les capacits
et les contraintes de conservation de flot
En chaque sommet, flot sortant flot entrant =
Offre (si le sommet est une source)
-Demande (si le sommet est un puits)
0 (en un sommet de transfert)
3. Optimisation de rseaux 10
Flot en langage mathmatique
x
ij
= quantit de flot qui passe sur larc (i,j)
b
i
= 0 (transfert), offre (source), -demande (puits)
V = ensemble des sommets
A = ensemble des arcs du rseau
A
+
(i) = ensemble des arcs sortants du sommet i
A
-
(i) = ensemble des arcs entrants au sommet i
A j i u x
V i b x x
ij ij
i ji ij
i A i j i A j i

=

+

) , ( 0

) ( ) , ( ) ( ) , (
3. Optimisation de rseaux 11
Problme du chemin le plus court
On a un graphe non orient et connexe
Il y a deux sommets spciaux
Source (ou origine) O
Puits (ou destination) T
A chaque arte {i,j}, on associe une distance c
ij
0
On cherche le chemin non orient (ou chane) le plus
court reliant O T
Chemin le plus court : celui dont la distance totale
(somme des distances des artes du chemin) est
minimale parmi tous les chemins de O T
3. Optimisation de rseaux 12
Algorithme de Dijkstra
Mthode itrative
chaque itration, on choisit le sommet j le plus prs de O
et on fixe d(j), la variable calculant la distance entre O et j
(on dit que le sommet j est marqu)
Au dpart, O est marqu et d(O) = 0
Le sommet le plus prs est choisi parmi les sommets non
marqus relis au moins un sommet marqu
Le sommet choisi j est celui qui atteint
min
sommets k non marqus
{ min
sommets i marqus
d(i) + c
ik
}
d(j) est fixe cette valeur
On arrte lorsque T est marqu
3. Optimisation de rseaux 13
Dijkstra (1930 2002)
Un membre trs influent de la premire
gnration des informaticiens
Expertises:
Conception dalgorithmes
Langages de programmation
Conception de programmes
Systmes doprations
Calcul distribu
Spcification formelle et vrification de programmes
Conception darguments mathmatiques
Pour plus dinformation:
http://www.cs.utexas.edu/users/EWD/
3. Optimisation de rseaux 14
Algorithme de Dijkstra (tape 1)
O
D
B
A
C
E
T
4
5
2
2
1
4
3
4
7
1
7
5
OO
2
5
4
A
B
C
0
3. Optimisation de rseaux 15
Algorithme de Dijkstra (tape 2)
O
D
B
A
C
E
T
4
5
2
2
1
4
3
4
7
1
7
5
O
min {2+2, 5} = 4
4
B
C
2
0
D
9
3. Optimisation de rseaux 16
Algorithme de Dijkstra (tape 3)
O
D
B
A
C
E
T
4
5
2
2
1
4
3
4
7
1
7
5
O
4
min {4, 1+4} = 4
C
2
0
D
min {7 +2, 4+4} = 8
E
3 + 4 = 7
3. Optimisation de rseaux 17
Algorithme de Dijkstra (tape 4)
O
D
B
A
C
E
T
4
5
2
2
1
4
3
4
7
1
7
5
O
4
4
2
0
D
min {7+2, 4+4} = 8
E
min {3 + 4, 4 + 4 } = 7
3. Optimisation de rseaux 18
Algorithme de Dijkstra (tape 5)
O
D
B
A
C
E
T
4
5
2
2
1
4
3
4
7
1
7
5
O
4
4
2
0
min{7+2, 4+4, 7+1} =8
7
T
7 + 7 = 14
D
3. Optimisation de rseaux 19
Algorithme de Dijkstra (tape 6)
O
D
B
A
C
E
T
4
5
2
2
1
4
3
4
7
1
7
5
O
4
4
2
0
8
7
T
min {8 + 5,
7 + 7} = 13
3. Optimisation de rseaux 20
Algorithme de Dijkstra (tape 7)
O
D
B
A
C
E
T
4
5
2
2
1
4
3
4
7
1
7
5
O
4
4
2
0
8
7
13
3. Optimisation de rseaux 21
Exemple sous forme tableau
13
8
8
7
4
4
2
Dist
min
D T 13
14
T
T
D
E
B
E E
D
D D
9
8
8
D
D
D
A
B
E
B E
9
7
8
D
E
E
A
B
C
O
A
C
B
4
4
C
B
O
A
O A 2 A O
p(j) j le
plus
prs
Dist j non
marqu le
plus prs
i marqus
relis j
non marqu
3. Optimisation de rseaux 22
Modle de flot
Chemin le plus court = flot dans un rseau
Rseau = graphe orient driv
On enlve les arcs entrant O et les arcs manant
de T
O est la seule source, avec une offre = 1
T est le seul puits, avec une demande = 1
Le flot sur chaque arc (i,j) est soit 1, si larc
appartient au chemin le plus court, soit 0, sinon
Voir lexemple modlis avec Excel Solver
3. Optimisation de rseaux 23
Autres variantes
Graphe orient : lalgorithme de Dijkstra sapplique
Trouver les chemins les plus courts entre la source
et tous les autres sommets : lalgorithme de Dijkstra
sapplique
Trouver les chemins les plus courts entre toutes les
paires de sommets : n applications de lalgorithme
de Dijkstra (mais il est possible de faire mieux)
Si certaines distances sont ngatives :
lalgorithme de Dijkstra ne sapplique pas (essayez
de voir pourquoi sur un exemple 3 sommets)
3. Optimisation de rseaux 24
Problme de larbre partiel minimum
On a un graphe non orient et connexe
A chaque arte {i,j}, on associe une distance c
ij
0
On cherche construire un arbre partiel (plus petit
graphe connexe contenant tous les sommets) dont
la somme des distances soit minimum parmi tous les
arbres partiels du graphe
Exemple simple de problme de conception de
rseaux (network design) : choisir une
configuration de rseau (sous-ensemble darcs) qui
optimise un certain critre
3. Optimisation de rseaux 25
Algorithme de Prim (1957)
Initialisation: choisir un sommet i (arbitrairement) et
le relier au sommet j le plus prs : ajouter {i,j}
chaque itration: choisir le sommet non reli j le
plus prs dun des sommets dj relis i et ajouter
{i,j}
Arrter lorsque tous les sommets ont t relis
En cas dgalit, on peut choisir arbitrairement
De telles galits indiquent quil pourrait y avoir
plusieurs solutions optimales
3. Optimisation de rseaux 26
Algorithme de Prim : exemple
Initialisation: choisir le sommet O et le relier au
sommet le plus prs : ajouter {O,A}
3. Optimisation de rseaux 27
Exemple (suite)
Le sommet non reli le plus prs de O ou de A est B;
comme il est plus prs de A, on ajoute {A,B}
Le sommet non reli le plus prs de O, de A ou de B
est C; puisquil est plus prs de B, on ajoute {B,C}
3. Optimisation de rseaux 28
Exemple (suite)
Le sommet non reli le plus prs dun des sommets
relis est E; on ajoute larte {B,E}
3. Optimisation de rseaux 29
Exemple (suite)
Le sommet non reli le plus prs dun des sommets
relis (E) est D; on ajoute larte {E,D}
Le sommet non reli le plus prs dun des sommets
relis (D) est T; on ajoute larte {D,T}
3. Optimisation de rseaux 30
Exemple (suite et fin)
On arrte car tous les sommets ont t relis
La valeur optimale correspond la somme des
distances des artes ajoutes, soit 14
3. Optimisation de rseaux 31
Problme du flot maximum
On a un graphe orient et connexe
A chaque arc (i,j), on associe une capacit u
ij
> 0
Il y a deux sommets spciaux
Source (ou origine) O
Puits (ou destination) T
Tous les autres sont des sommets de transfert
Loffre en O et la demande en T sont variables
Offre en O = demande en T = valeur du flot entre O
et T
On cherche maximiser la valeur du flot entre O et T
3. Optimisation de rseaux 32
Exemple : parc Seervada
En priode de grande affluence, on dispose dune
flotte dautobus pour faire visiter les diffrents postes
dobservation du parc
La rglementation limite le nombre dautobus
pouvant circuler sur chaque tronon de route
Comment faire circuler les autobus dans le parc de
faon maximiser le nombre total dautobus allant de
lorigine (O) la destination (T)?
3. Optimisation de rseaux 33
Exemple: parc Seervada (suite)
3. Optimisation de rseaux 34
Graphe rsiduel
Supposons quon a dj affect un flot sur les arcs
Capacit rsiduelle dun arc (i,j) : u
ij
x
ij
Graphe rsiduel :
Graphe non orient sous-jacent
Sur chaque arte, on associe deux valeurs :
Capacit rsiduelle
Flot dj affect
Exemple : on a affect 5 units de flot sur larc (O,B)
3. Optimisation de rseaux 35
Interprtation du graphe rsiduel
On a affect 5 units de flot sur larc (O,B)
Si on traverse O B
2 = capacit rsiduelle
5 = flot sur (O, B)
Si on traverse B O
5 = capacit rsiduelle
2 = flot sur (B, O)
O B
2
5
O B
5
0 7
3. Optimisation de rseaux 36
Chemin daugmentation
Chemin allant de la source au puits dans le graphe
orient driv du graphe rsiduel
Pour chaque arte {i,j}
Larc (i,j) possde une capacit rsiduelle = u
ij
x
ij
Larc (j,i) possde une capacit rsiduelle = x
ij
Chaque arc du chemin possde une capacit
rsiduelle > 0
Capacit rsiduelle dun chemin daugmentation :
minimum des capacits rsiduelles de tous les arcs
du chemin
3. Optimisation de rseaux 37
Algorithme de Ford-Fulkerson
1. Initialiser le flot: 0 unit sur chaque arc
2. Si aucun chemin daugmentation ne peut tre
identifi, arrter: le flot est maximum
3. Identifier un chemin daugmentation P ; soit c sa
capacit rsiduelle
4. Sur chaque arc de P
a. Augmenter le flot de c
b. Diminuer la capacit rsiduelle de c
5. Retourner ltape 2
3. Optimisation de rseaux 38
Identifier un chemin daugmentation
1. Marquer la source O (aucun autre sommet nest
marqu); tous les sommets sont non visits
2. Sil ny a aucun sommet marqu non visit, arrter :
il nexiste aucun chemin daugmentation
3. Choisir un sommet marqu non visit i
4. Visiter i : pour chaque (i,j) de capacit rsiduelle >0
dans le graphe orient driv du graphe rsiduel,
marquer j
5. Si T est marqu, arrter: un chemin daugmentation
a t identifi
6. Retourner ltape 2
3. Optimisation de rseaux 39
Exemple : parc Seervada
Graphe rsiduel initial
Identifier un chemin daugmentation : O->B->E->T
Capacit rsiduelle = min{7,5,6} = 5
3. Optimisation de rseaux 40
Exemple (suite)
Augmenter le flot et diminuer la capacit rsiduelle
de 5 units sur tous les arcs de O->B->E->T
Identifier un chemin daugmentation : O->A->D->T
Capacit rsiduelle = min{5,3,9} = 3
3. Optimisation de rseaux 41
Exemple (suite)
Augmenter le flot et diminuer la capacit rsiduelle
de 3 units sur tous les arcs de O->A->D->T
Chemin daugmentation : O->A->B->D->T
Capacit rsiduelle = min{2,1,4,6} = 1
3. Optimisation de rseaux 42
Exemple (suite)
Augmenter le flot et diminuer la capacit rsiduelle
de 1 unit sur tous les arcs de O->A->B->D->T
Chemin daugmentation : O->B->D->T
Capacit rsiduelle = min{2,3,5} = 2
3. Optimisation de rseaux 43
Exemple (suite)
Augmenter le flot et diminuer la capacit rsiduelle
de 2 units sur tous les arcs de O->B->D->T
Chemin daugmentation : O->C->E->D->T
Capacit rsiduelle = min{4,4,1,3} = 1
3. Optimisation de rseaux 44
Exemple (suite)
Augmenter le flot et diminuer la capacit rsiduelle
de 1 unit sur tous les arcs de O->C->E->D->T
Chemin daugmentation : O->C->E->T
Capacit rsiduelle = min{3,3,1} = 1
3. Optimisation de rseaux 45
Exemple (suite)
Augmenter le flot et diminuer la capacit rsiduelle
de 1 unit sur tous les arcs de O->C->E->T
Chemin daugmentation : O->C->E->B->D->T
Capacit rsiduelle = min{2,2,5,1,2} = 1
3. Optimisation de rseaux 46
Exemple (suite)
Augmenter le flot et diminuer la capacit rsiduelle
de 1 unit sur tous les arcs de O->C->E->B->D->T
Aucun chemin daugmentation possible
Flot maximum
3. Optimisation de rseaux 47
Exemple (suite et fin)
3. Optimisation de rseaux 48
Flot maximum - Coupe minimum
Supposons quon partitionne lensemble des
sommets en deux sous-ensembles X,Y
Coupe : sous-ensemble darcs allant dun sommet
de X vers un sommet de Y
Capacit dune coupe : somme des capacits des
arcs de la coupe
Coupe minimum : coupe dont la capacit est
minimum parmi toutes les coupes possibles
Thorme flot max - coupe min : la valeur du flot
maximum est gale la capacit dune coupe
minimum
3. Optimisation de rseaux 49
Flot max Coupe min : exemple
Les sommets marqus lors de la dernire itration de
lalgorithme de Ford-Fulkerson dfinissent la coupe min
3. Optimisation de rseaux 50
Flot maximum avec Excel Solver
Flot maximum = modle de flot
Tous les sommets, sauf O et T, sont des sommets
de transfert
Il y a une capacit sur chaque arc
Lobjectif est de maximiser la valeur du flot, soit le
flot net en O
Voir lexemple modlis avec Excel Solver

You might also like