Modèles de Flot - Cours 1 - Institut de Mathématiques de Bordeaux

Transcription

Modèles de Flot - Cours 1 - Institut de Mathématiques de Bordeaux
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Modèles de Flot - Cours 1
P. Pesneau
[email protected]
Université de Bordeaux
Bât A33 - Bur 265
P. Pesneau [email protected]
Modèles de Flot - Cours 1
1 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Ouvrage de référence
R. K. Ahuja, T. L. Magnanti and J. B. Orlin - “Network Flows : Theory,
Algorithms, and Applications” - Prentice Hall, 1993.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
2 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Sommaire
1
Introduction
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
2
Quelques opérations sur les réseaux
3
Plus courts chemins (PCC)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
3 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Un exemple de flot de coût minimum
Une entreprise désire définir le plan de transport du produit qu’elle
fabrique depuis ses usines vers ses points de vente. Ce plan de
transport doit respecter des contraintes de capacités définies sur
les différents axes empruntés, et minimiser une fonction coût défini
comme étant la somme des coûts d’utilisation de chaque axe
routier. Ces derniers varient linéairement en fonction de la quantité
transportée sur l’axe.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
4 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Modélisation du réseau routier
On va représenter le réseau routier sous la forme d’un graphe
orienté G = (N, A) :
L’ensemble N des nœuds du graphe va représenter l’ensemble
des croisements du réseau routier, des usines et des vendeurs.
L’ensemble A des arcs du graphe va représenter l’ensemble des
axes possibles au sein du réseau routier.
A chaque arc (i, j) ∈ A on associe :
une capacité maximale uij pouvant être transportée.
un coût cij de transport d’un produit sur cet axe.
A chaque sommet i ∈ N on associe une valeur b(i) représentant :
si b(i) > 0, une quantité de produit fabriquée à ce nœud.
si b(i) < 0, une quantité de produit demandée à ce nœud.
si b(i) = 0, un nœud de transit.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
5 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Modélisation du plan de transport
Soit xij le nombre de produits transportés sur l’axe (i, j) ∈ A.
Le plan de transport doit respecter :
les contraintes de conservation de flot à chaque nœud du
réseau. Penser qu’un nœud avec du stock ou de la demande,
peut également servir de nœud de transit pour d’autres
produits.
si b(i) = 0 (nœud de transit), alors
quantité quittant le nœud = quantité arrivant au nœud.
si b(i) > 0 (nœud d’approvisionnement), alors
quantité quittant le nœud = quantité arrivant au noeud +b(i)
si b(i) < 0 (nœud de demande), alors
quantité quittant le nœud = quantité arrivant au noeud
−(−b(i)).
les contraintes de capacités.
les contraintes de positivité.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
6 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Modèle mathématique
Min
X
cij xij
(i,j)∈A
t.q.
X
j:(i,j)∈A
xij −
X
xji = b(i)
∀i ∈ N,
j:(j,i)∈A
lij (= 0) ≤ xij ≤ uij
∀(i, j) ∈ A.
Ecriture sous forme matricielle :
Min c.x
t.q. N x = b,
l (= 0) ≤ x ≤ u,
N : matrice d’incidence du graphe orienté G représentant le réseau.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
7 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Caractéristiques
La matrice N est totalement unimodulaire : le déterminant de
toutes sous-matrices carrées extraites de N vaut −1, 0 ou 1.
Conséquence : Si les données du problème (c, b, l, u) sont entières
alors toutes solutions de base (et en particulier les solutions de
base optimales) sont entières
Pourquoi regarder des algorithmes combinatoires ?
Complexité polynomiale assurée.
Pas besoin d’avoir un solveur linéaire.
Peuvent être plus rapide que les solveurs linéaires.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
8 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Cas particuliers
Si b(i) = 0 pour tout i ∈ N, le flot est appelé circulation.
Problème du(des) plus court(s) chemin(s) : Rechercher
dans un réseau
le plus court chemin d’un sommet s à un sommet t.
les plus courts chemins d’un sommet s vers tous les autres
sommets.
Problème du flot maximum : Quelle est la quantité
maximum de produits que l’on peut envoyer dans le réseau
entre un sommet s et un sommet t.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
9 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Notations
G = (N, A) : le graphe représentant le réseau,
N = {1, . . . , n = |N|} l’ensemble des nœuds,
A l’ensemble des arcs, et m = |A|
b(i) quantité de stock (positif) ou de demande (négatif) au
sommet i ∈ N.
cij coût unitaire de l’arc (i, j) ∈ A,
lij la borne inférieure du flot circulant sur l’arc (i, j) ∈ A.
uij la borne supérieure du flot circulant sur l’arc (i, j) ∈ A.
xij la quantité (variable) de flot circulant sur l’arc (i, j) ∈ A.
Hypothèse :
on a une seule commodité (c-à-d un seul type de produit).
P. Pesneau [email protected]
Modèles de Flot - Cours 1
10 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Sommaire
1
Introduction
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
2
Quelques opérations sur les réseaux
3
Plus courts chemins (PCC)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
11 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Rappel sur la complexité
La complexité d’un algorithme correspond à l’effort fournit
par celui-ci pour résoudre un problème.
Comment evaluer la complexité ?
Temps de calcul : mauvaise idée, il dépend de la machine.
Nombre d’opérations élémentaires (addition, multiplication,
comparaison, ...) : execution en temps constant.
Le nombre d’opérations effectuées (la complexité) est fonction
de la taille du problème.
Plus particulièrement, on s’intéresse à l’ordre de grandeur de
l’effort de calcul requis quand la taille du problème devient
grande.
La taille d’un problème peut se définir comme la quantité
d’information nécessaire pour spécifier le problème à résoudre
(taille du fichier de données).
P. Pesneau [email protected]
Modèles de Flot - Cours 1
12 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Différentes complexités
Analyse empirique : la complexité est estimée en pratique
(tests intensifs).
Analyse du meilleur des cas : calcule une borne inférieure
de la complexité (représente rarement la réalité).
Analyse de la complexité moyenne : estime l’effort de
calcul moyen (basée sur des hypothèses probabilistes, analyse
complexe).
Analyse du pire des cas : calcule une borne supérieure sur le
nombre d’opérations.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
13 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Comparaison asymptotique : notation de Landau
O(g (n)) = {f (n) : ∃C0 ∈ IR + , N0 ∈ IN /
|f (n)| ≤ C0 |g (n)|, ∀n > N0 }
Ω(g (n)) = {f (n) : ∃C0 ∈ IR + , N0 ∈ IN /
C0 |g (n)| ≤ |f (n)|, ∀n > N0 }
Θ(g (n)) = {f (n) : ∃C1 , C2 ∈ IR + , N0 ∈ IN /
C1 |g (n)| ≤ |f (n)| ≤ C2 |g (n)|, ∀n > N0 }
P. Pesneau [email protected]
Modèles de Flot - Cours 1
14 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Complexité d’un algorithme
Notations :
T (i) : nombre d’opérations pour résoudre une instance I .
l(I ) : taille du fichier de données décrivant I .
T (n) : nombre max d’opération pour résoudre un problème de
taille n.
T (n) = maxI {T (I ) : l(I ) = n}
Complexité :
Algorithme polynômial : T (n) ∈ O(nk )
Bon algorithme, algorithme efficace.
Algorithme exponentiel : T (n) ∈ Ω(αn ), α > 1.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
15 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Taux de croissance
Temps pour un ordinateur de 1GHz
Compl.
n
n2
n3
n5
2n
3n
10
1 10−8
sec.
1 10−7
sec.
1 10−6
sec.
1 10−3
sec.
20
2 10−8
sec.
4 10−7
sec.
8 10−6
sec.
3.2 10−3
sec.
1 10−6
sec.
5.9 10−5
sec.
1 10−3
sec.
3.5
sec.
taille n
30
40
3 10−8
4 10−8
sec.
sec.
9 10−7
16 10−7
sec.
sec.
27 10−6
64 10−6
sec.
sec.
24.3 10−3
1 10−1
sec.
sec.
1
sec.
2.4
jours
P. Pesneau [email protected]
18
min.
3.8
siècles
50
5 10−8
sec.
25 10−7
sec.
125 10−6
sec.
3.1 10−1
sec.
60
6 10−8
sec.
36 10−7
sec.
216 10−6
sec.
7.8 10−1
sec.
313
heures
22.7 103
mill.
36.5
ans
1.3 109
mill.
Modèles de Flot - Cours 1
16 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Sommaire
1
Introduction
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
2
Quelques opérations sur les réseaux
3
Plus courts chemins (PCC)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
17 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Matrice d’incidence
Le réseau est représenté

 1
−1
ni,(j,k) =

0
2
(25,30)
(15,40)
par une matrice N ∈ {−1, 0, 1}n×m où
si i = j,
si i = k,
sinon
4
(35,50)
(45,10)
(45,60)
1
(35,50)
(15,30)
3
(25,20)
∀i ∈ N, ∀(j, k) ∈ A.
5
1
2
3
4
5
(1, 2)
1
−1
0
0
0
(1, 3)
1
0
−1
0
0
(2, 4)
0
1
0
−1
0
(3, 2)
0
−1
1
0
0
(4, 3)
0
0
−1
1
0
(4, 5)
0
0
0
1
−1
(5, 3)
0
0
−1
0
1
(5, 4)
0
0
0
−1
1
(cij , uij )
i
j
P. Pesneau [email protected]
Modèles de Flot - Cours 1
18 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Matrice d’adjacence
Le réseau est représenté par une matrice N ∈ {0, 1}n×n où
1 si (i, j) ∈ A,
ni,j =
∀i, j ∈ N.
0 sinon
2
(25,30)
(15,40)
4
(35,50)
(45,10)
(45,60)
1
(35,50)
(15,30)
3
(25,20)
5
(cij , uij )
i
1
2
3
4
5
1
0
0
0
0
0
2
1
0
1
0
0
3
1
0
0
1
1
4
0
1
0
0
1
5
0
0
0
1
0
j
P. Pesneau [email protected]
Modèles de Flot - Cours 1
19 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Flot de coût minimum
Introduction à la complexité
Représentation informatique d’un réseau
Liste d’adjacence
2
(25,30)
(15,40)
i
4
(45,60)
(35,50)
(15,30)
3
(25,20)
5
(cij , uij )
i
cij uij
(35,50)
(45,10)
1
j
j
P. Pesneau [email protected]
1
2 25 30
2
4 15 40 0
3
2 45 10 0
4
3 15 30
5 45 60 0
5
3 25 20
4 35 50 0
Modèles de Flot - Cours 1
3 35 50 0
20 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Sommaire
1
Introduction
2
Quelques opérations sur les réseaux
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
3
Plus courts chemins (PCC)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
21 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Orienter le réseau
Dans certains cas, il arrive que le réseau étudié contient des arêtes
(arcs non orientés) permettant ainsi au flot de circuler dans les
deux sens.
Soit {i, j} une arête. Si le coût c{i,j} de l’arête est positif et si la
capacité inférieure l{i,j} de l’arête est nulle, alors on remplace
l’arête {i, j} par deux arcs (i, j) et (j, i) de coût cij = cji = c{i,j} et
de capacité supérieure uij = uji = u{i,j} .
i
(c{i,j} , u{i,j} )
j
i
(cij , uij )
j
(cji , uji )
P. Pesneau [email protected]
Modèles de Flot - Cours 1
22 / 54
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Supprimer les bornes inférieures
Lorsqu’un flot minimum est requis sur un arc (i, j) ∈ A (c-à-d
lij > 0), on effectue le changement de variable
xij0 = xij − lij
⇔
xij = xij0 + lij .
Cela revient à
augmenter la demande (diminuer b(i)) du nœud i de lij .
augmenter la production (augmenter b(j)) du nœud j de lij .
diminuer la capacité uij de l’arc (i, j) de lij .
i
b(i)
(cij , uij )
xij
j
b(j)
P. Pesneau [email protected]
i
(cij , uij − lij )
b(i) − lij
Modèles de Flot - Cours 1
xij0
j
b(j) + lij
23 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Diviser les nœuds
Il arrive que l’on ait un coût ci et/ou une capacité maximum ui sur
un nœud i ∈ N. Dans ce cas, on divise le nœud i en deux nœuds
i − et i + correspondants respectivement au point d’entrée et au
point de sortie du nœud i. On ajoute un arc (i − , i + ) de coût ci et
de capacité maximum ui .
i
b(i), ci , ui
P. Pesneau [email protected]
i−
(ci , ui )
i+
b(i)−
xi − j +
b(i)+
Modèles de Flot - Cours 1
24 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Sommaire
1
Introduction
2
Quelques opérations sur les réseaux
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
3
Plus courts chemins (PCC)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
25 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Algorithme de parcours
Soient G = (N, A) un graphe orienté et s ∈ N. Un algorithme de
parcours va explorer le graphe à partir du nœud s afin de
déterminer les nœuds ateignables par un chemin à partir de s.
Algorithme générique :
Démarquer tous les nœuds de N
Marquer s
Pred(s) = −1
Liste = {s}
tant que Liste non vide faire
Prendre un élément i de Liste
si i est adjacent à un nœud j non marqué alors
Marquer nœud j
Pred(j) = i
Ajouter j à Liste
sinon
Retirer i de Liste
fin si
fin tant que
P. Pesneau [email protected]
Complexité :
Matrice d’adjacence → O(n2 )
Liste d’adjacence → O(m)
Modèles de Flot - Cours 1
26 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Algorithme de parcours
Un algorithme de parcours permet (entre autre) de :
vérifier la connexité d’un graphe non-orienté.
vérifier la forte connexité d’un graphe orienté.
déterminer les composantes connexe d’un graphe.
détecter la présence de cycles.
déterminer si un graphe est biparti.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
27 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Parcours en largeur / profondeur
Parcours en largeur (breadth-first search) :
La liste des nœuds de l’algorithme de parcours est géré comme une
file (le premier arrivé est le premier servi - first in, first out - FIFO).
Parcours en profondeur (depth-first search) :
La liste des nœuds de l’algorithme de parcours est géré comme une
pile (le dernier arrivé est le premier servi - last in, first out - LIFO).
P. Pesneau [email protected]
Modèles de Flot - Cours 1
28 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Sommaire
1
Introduction
2
Quelques opérations sur les réseaux
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
3
Plus courts chemins (PCC)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
29 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Ordre topologique
Un ordre (ou permutation) des nœuds de N est une fonction qui à
tout sommet de N associe un entier distinct de {1, . . . , n}.
Un ordre σ est dit topologique si pour tout arc (i, j) ∈ A on a
σ(i) < σ(j).
Un graphe orienté possède un ordre topologique sur ses nœuds si
et seulement si il ne contient pas de circuits.
Pour un graphe orienté sans circuit, il peut exister plusieurs ordres
topologiques.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
30 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Ordre topologique
Algorithme permettant de trouver un ordre topologique :
pour tout i ∈ N faire
DegEnt(i) = 0
fin pour
pour tout (i, j) ∈ A faire
DegEnt(j) = DegEnt(j) + 1
fin pour
List = ∅, next = 0
pour tout i ∈ N faire
si DegEnt(i) == 0 alors
Ajouter i à list
fin si
fin pour
tant que List n’est pas vide faire
Prendre et retirer un nœud i de List
next = next + 1, Ordre(i) = next
pour tout voisin j de i faire
DegEnt(j) = DegEnt(j) − 1
si DegEnt(j) == 0 alors
Ajouter j à List
fin si
fin pour
fin tant que
si next < n alors
Le graphe contient un circuit
sinon
Ordre définit un ordre topologique
fin si
Complexité en O(m).
P. Pesneau [email protected]
Modèles de Flot - Cours 1
31 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Sommaire
1
Introduction
2
Quelques opérations sur les réseaux
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
3
Plus courts chemins (PCC)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
32 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Représentation des flots
Un flot peut être représenté de deux façons :
flot sur les arcs (arc flow) : variables xij , (i, j) ∈ A
représentant la quantité de flot circulant sur cet arc.
flot sur les chemins et cycles (path and cycle flow) : Soit P =
ensemble des chemins du réseau et W = l’ensemble des
circuits. Variables fp , p ∈ P, et fw , w ∈ W, indiquant la
quantité de flot circulant sur le chemin ou le circuit.
4
2
6
4
2
4
4
4
1
2
0
2
3
2
6
1
6
3
3
3
5
3
5
3
P. Pesneau [email protected]
Modèles de Flot - Cours 1
33 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Représentation des flots
A chaque flot sur les chemins et cycles correspond un unique flot
sur les arcs donné par :
X
X
xij =
fp +
fw .
p∈P:(i,j)∈p
w ∈W:(i,j)∈w
En revanche, à un flot sur les arcs peuvent correspondre plusieurs
flot sur chemins et cycles.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
34 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Algorithme de décomposition de flots
pour chaque arc (i, j) ∈ A faire
Excess(i) = Excess(i) − xij , Excess(j) = Excess(j) + xij
fin pour
pour chaque nœud i ∈ N tel que Excess(i) < 0 faire
Ajouter i à ListDef
fin pour
tant que ListDef n’est pas vide faire
Prendre un nœud s de ListDef, i = s
Prendre un arc (i, j) ∈ A avec xij > 0, F = {(i, j)}
tant que j n’a pas été visité et Excess(j) ≤ 0 faire
i = j,
Prendre un arc (i, j) ∈ A avec xij > 0, F = F ∪ {(i, j)}
fin tant que
si Excess(j) > 0 alors
δ = min(−Excess(s), Excess(j), min(i,j)∈F xij ), fF = δ
xij = xij − δ pour tout (i, j) ∈ F
Excess(s) = Excess(s) + δ, Excess(j) = Excess(j) − δ
si Excess(i) == 0 alors
Retirer s de ListDef
fin si
sinon
δ = min(i,j)∈F xij , fW = δ
xij = xij − δ pour tout (i, j) ∈ W
fin si
fin tant que
pour tout arc (i, j) ∈ A tel que xij > 0
faire
Ajouter (i, j) à ListPos
fin pour
tant que ListPos n’est pas vide faire
Prendre un arc (s, t) de ListPos,
W = {(s, t)}, i = t
Prendre un arc (i, j) ∈ A avec xij > 0,
W = {(i, j)}
tant que j n’a pas été visité faire
i = j,
Prendre un arc (i, j) ∈ A avec
xij > 0,
W = W ∪ {(i, j)}
fin tant que
δ = min(i,j)∈W xij , fW = δ
pour tout (i, j) ∈ W faire
xij = xij − δ
si xij = 0 alors
Retirer (i, j) de ListPos.
fin si
fin pour
fin tant que
Complexité en 0(nm)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
35 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Simplification du réseau
Parcours de graphe
Ordre topologique
Décomposition de flots
Théorème de décomposition de flots
Théorème 1
Tout flot sur les chemins et cycles a une unique représentation
en un flot sur les arcs.
Tout flot sur les arcs possède au moins une représentation en
un flot sur chemins et cycles avec les propriétés :
1
2
Chaque chemin connecte un nœud de stock à un nœud de
demande.
le flot est décomposé en au plus n + m chemins et cycles dont
au plus m cycles.
Propriété 2
Toute circulation définie par un flot sur les arcs peut être
décomposé en un flot sur au plus m cycles.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
36 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Sommaire
1
Introduction
2
Quelques opérations sur les réseaux
3
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
P. Pesneau [email protected]
Modèles de Flot - Cours 1
37 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Problème des plus courts chemins
Soient G = (N, A) un réseau, c une fonction coût sur les arcs, et s
un sommet. Le problème consiste à trouver les plus courts chemins
de s vers tous les sommets de N \ {s}.
Intérêts :
Problème simple illustrant l’intérêt de l’optimisation de flot
dans les réseaux.
Nombreuses applications directes.
Intervient dans beaucoup problèmes plus généraux.
Problème facile à résoudre mais demandant de l’ingéniosité
pour être vraiment efficace.
C’est un cas particulier du problème de flot de coût minimum :
b(s) = n − 1,
b(i) = −1
∀i ∈ N \ {s}.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
38 / 54
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Modèle mathématique
Min
X
cij xij
(i,j)∈A
t.q.
X
xsj −
j:(s,j)∈A
X
j:(i,j)∈A
X
xjs = n − 1,
j:(j,s)∈A
xij −
X
xji = −1
∀i ∈ N \ {s},
j:(j,i)∈A
xij ≥ 0
P. Pesneau [email protected]
∀(i, j) ∈ A.
Modèles de Flot - Cours 1
39 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Hypothèses
On suppose les éléments suivants :
Les coûts cij , (i, j) ∈ A, sont entiers.
Le réseau contient un chemin de s vers tous les autres nœuds.
Le réseau ne contients pas de cycles de coût négatif.
Le réseau est orienté.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
40 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Sommaire
1
Introduction
2
Quelques opérations sur les réseaux
3
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
P. Pesneau [email protected]
Modèles de Flot - Cours 1
41 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Arbre des plus courts chemins
Propriété 3
Si le chemin P = {s, i1 , i2 , . . . , ik−1 , ik } est un plus court chemin
de s vers ik , alors pour tout q ∈ {1, . . . , k − 1} le sous-chemin
Ps,iq = {s, i1 , i2 , . . . , iq } est un plus court chemin de s à iq .
Preuve.
Supposons que P est un plus court chemin de s à ik mais, au contraire, qu’il existe
q ∈ {1, . . . , k − 1} tel que Ps,iq ne soit pas un plus court chemin de s à iq . Notons par
Piq ,ik le sous-chemin de P allant de iq à ik .
0
Soit Ps,i
un chemin strictement plus court que Ps,iq pour aller de s à iq . La
q
0
concaténation des chemins Ps,i
et Piq ,ik définit un cheminement de s à ik de longueur
q
strictement plus petite que celle de P.
Ce cheminement est composé d’un chemin P 0 de s à ik et de possibles circuits.
Comme par hypothèse on n’a pas de circuit de coût négatif, le chemin P 0 est un
chemin de s à ik plus court que le chemin P, une contradiction.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
42 / 54
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Arbre des plus courts chemins
Propriété 4
Si le chemin P = {s, i1 , i2 , . . . , ik−1 , ik } est un plus court chemin
de s vers ik , alors pour tout q ∈ {1, . . . , k − 1} le sous-chemin
Ps,iq = {s, i1 , i2 , . . . , iq est un plus court chemin de s à iq .
iq
Ps,iq
Piq ,ik
s
0
Ps,i
q
P. Pesneau [email protected]
ik
Modèles de Flot - Cours 1
43 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Arbre des plus courts chemins
Propriété 5
Soit d ∈ Nn un vecteur représentant pour chaque nœud i ∈ N la
longueur du plus court chemin de s à i. Alors un chemin P de s à
un sommet k ∈ N \ {s} est un plus court chemin si et seulement si
pour tout arc (i, j) ∈ P on a d(j) = d(i) + cij .
Preuve.
⇒ Si P est un plus court chemin de s à k, alors par la propriété 3 on a
d(j) = d(i) + cij pour tout arc (i, j) ∈ P.
⇐ Supposons que P = {s, i1 , i2 , . . . , ik−1 , k} et que d(j) = d(i) + cij pour tout arc
(i, j) ∈ P. On a alors
d(k) = (d(k)−d(ik−1 ))+(d(ik−1 )−d(ik−2 ))+· · ·+(d(i2 )−d(i1 ))+(d(i1 )−d(s)),
en notant que d(s) = 0. Il s’ensuit que
P
d(k) = ck,ik−1 + cik−1 ,ik−2 + · · · + ci2 ,i1 + ci1 ,s = (i,j)∈P cij .
La longueur du chemin P est donc égale à la longueur du plus court chemin de
s à k.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
44 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Arbre des plus courts chemins
Propriété 6
Il existe un arbre couvrant T du réseau G enraciné en s tel que
pour tout sommet i ∈ N \ {s}i, l’unique chemin de s à i dans T
est un plus court chemin de s à i.
Preuve. Soit d ∈ Nn un vecteur représentant pour chaque nœud i ∈ N la longueur du
plus court chemin de s à i. Par la propriété 5, on sait que les plus courts chemins de la
source s vers un sommet i appartient au réseau G 0 induit par les arcs (i, j) ∈ A tels
que d(j) = d(i) + cij . Un parcours en largeur de ce graphe à partir de s va donner un
arbre des plus courts chemins issus de s.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
45 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Sommaire
1
Introduction
2
Quelques opérations sur les réseaux
3
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
P. Pesneau [email protected]
Modèles de Flot - Cours 1
46 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
PCC dans les graphes acycliques
Soit G = (N, A) un réseau ne contenant pas de circuit. On
suppose que les nœuds sont numérotés suivant un ordre
topologique. Soient s un nœud source et c une fonction coût sur
les arcs de A. Les arcs peuvent avoir des coûts négatifs.
L’algorithme suivant calcule l’arbre des plus courts chemins issus
de s dans G .
d(s) = 0, d(i) = +∞ pour tout i ∈ N \ {s}
pred(i) = −1 pour tout nœud i ∈ N
pour i allant de 1 à n faire
pour tout les arcs (i, j) ∈ A faire
si d(j) > d(i) + cij alors
d(j) = d(i) + cij
pred(j) = i
fin si
fin pour
fin pour
Compléxité en O(m)
P. Pesneau [email protected]
Modèles de Flot - Cours 1
47 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
PCC dans les graphes acycliques
Assertion 7
L’algorithme précédent est correct.
Preuve.
On montre par récurrence qu’à chaque itération le nœud traité a une distance d(.) qui
est optimale.
Selon nos hypothèses, le réseau contient un chemin de s vers tous les autres nœuds.
Par conséquent, le nœud s est le premier nœud de l’ordre topologique. Ainsi
d(1 = s) = 0.
Supposons que l’on a traité les nœuds {1, . . . , k} et que l’on va traiter le nœud k + 1.
Soit j le nœud précédent k + 1 dans le plus court chemin de s à k + 1. Du fait de
l’ordre topologique, j < k + 1 et donc a déjà été traité. Lors du traitement du nœud j,
la valeur de d(k + 1) a été mise à jour avec la valeur d(j) + cj,k+1 . d(k + 1) contient
donc la valeur du plus court chemin de s à k + 1.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
48 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Sommaire
1
Introduction
2
Quelques opérations sur les réseaux
3
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
P. Pesneau [email protected]
Modèles de Flot - Cours 1
49 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Algorithme de Dijkstra
L’algorithme de Dijkstra permet de trouver les plus courts chemins
issus d’un nœud source dans un réseau quelconque. En revanche,
les coûts sur les arcs doivent tous être positifs.
L’algorithme maintient pour chaque nœud un label de distance
d(.) donnant une borne supérieure sur la longueur du plus court
chemin de la source vers ce nœud.
Il maintient également une partition des nœuds en deux
sous-ensembles :
les nœuds avec un label permanent : ce sont les nœuds traités
ayant un label correspondant à la valeur du plus court chemin
à partir de s.
les nœuds avec un label temporaire. Le label correspond à la
distance du plus court chemin de s vers ce nœud ne passant
que par des nœuds avec un label permanent.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
50 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Algorithme de Dijkstra
A chaque itération, l’algorithme va
choisir le nœud avec le label temporaire le plus petit.
le désigner comme un nœud avec un label permanent.
mettre à jour le label de ses voisins.
Perm = ∅, Temp = N
d − s) = 0, d(i) = +∞ pour tout i ∈ N \ {s}
pred(s) = 0
tant que Temp n’est pas vide faire
i ∗ = argmin{d(i) : i ∈ Temp}
Temp = Temp \ {i ∗ }
Perm = Perm ∪ {i ∗ }
pour tout arc (i ∗ , j) ∈ A faire
si d(j) > d(i ∗ ) + ci ∗ j alors
d(j) = d(i ∗ ) + ci ∗ j
pred(j) = i ∗
fin si
fin pour
fin tant que
P. Pesneau [email protected]
Modèles de Flot - Cours 1
51 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Correction de l’algorithme
Assertion 8
L’algorithme de Dijkstra est correct.
Preuve.
Les hypothèses de récurrence sont les suivantes :
1
Les labels des nœuds de Perm sont optimaux
2
Les labels des nœuds de Temp correspond à la longueur du plus court chemin ne
contenant que des nœuds de Perm.
La preuve se fait par récurrence sur la cardinalité de Perm. On doit montrer qu’à
l’itération suivante les deux hypothèses seront toujours satisfaites.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
52 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Correction de l’algorithme
Preuve (suite).
Pour l’hypothèse 1 :
Soit i ∗ = argmin{d(i) : i ∈ Temp}. Soit P un chemin de s vers i ∗ passant par des
nœuds de Temp. Notons par k le premier nœud de Temp visité par P, par Ps,k le
sous-chemin de P entre s et k et par Pk,i ∗ le sous-chemin de P entre k et i ∗ .
La longueur de P est donnée par la longueur de Ps,k plus la longueur de Pk,i ∗ . Par
l’hypothèse de récurrence 2, la longueur de Ps,k est plus grande que d(k). De plus,
comme les coûts sont positifs, la longueur de Pk,i ∗ est positive. Comme d(k) ≥ d(i ∗ ),
il s’ensuit que la longueur de P est ≥ d(i ∗ ).
Ainsi d(i ∗ ) représente bien la longueur du plus court chemin de s à i ∗ .
La preuve pour l’hypothèse 2 est similaire à la preuve de l’assertion 7.
P. Pesneau [email protected]
Modèles de Flot - Cours 1
53 / 54
Introduction
Quelques opérations sur les réseaux
Plus courts chemins (PCC)
Introduction
Arbre des plus courts chemins
PCC dans les graphes acycliques
Algorithme de Dijkstra
Complexité de l’algorithme
Théorème 9
La complexité de l’algorithme de Dijkstra est en O(n2 )
Preuve.
Complexité =
# itérations × (recherche i ∗ + mise à jour label)
(# itérations × recherche i ∗ ) + (# itérations × mise à jour label)
O(n × n) + O(m)
O(n2 )
P. Pesneau [email protected]
Modèles de Flot - Cours 1
54 / 54

Documents pareils