optimisation dans les réseaux recherche opérationnelle gc-sie
TRANSCRIPT
![Page 1: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/1.jpg)
Optimisation dans les réseaux
Recherche OpérationnelleGC-SIE
![Page 2: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/2.jpg)
Le problème du plus court chemin
![Page 3: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/3.jpg)
Plus courts chemins
Michel Bierlaire 3
Introduction
Plusieurs versions :– d’un nœud vers un nœud – de tous les nœuds vers un nœud – d’un nœud vers tous les nœuds– de tous les nœuds vers tous les nœuds
Nous allons étudier le problème du plus court chemin d’un nœud vers tous les autres.
Souvent, on supposera que =1.
![Page 4: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/4.jpg)
Plus courts chemins
Michel Bierlaire 4
Introduction
Idée générale : Parcourir le réseau à partir de
l’origine Appliquer et mettre à jour des
étiquettes (d1,…,dN) à chaque nœud. Chaque étiquette est soit un
scalaire soit +.
![Page 5: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/5.jpg)
Plus courts chemins
Michel Bierlaire 5
Conditions d’optimalité
Soient d1,d2,…,dN des scalaires tels que
dj di + aij (i,j) A Soit P un chemin entre un nœud et un
nœud . Si
dj di + aij (i,j) P Alors P est un plus court chemin entre
et .
![Page 6: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/6.jpg)
Plus courts chemins
Michel Bierlaire 6
Conditions d’optimalité
Preuve : P est composé des arcs
(,i1),(i1,i2),…,(iP,) Longueur de P =
a,i1+ai1,i2
+…+aiP,
Comme aij = dj di (i,j) P, on a Longueur de P =
(d – diP) + (diP
– diP-1)+…+(di2
-di1)+(di1
-d)=
d-d
![Page 7: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/7.jpg)
Plus courts chemins
Michel Bierlaire 7
Conditions d’optimalité
Soit Q un chemin quelconque entre et . Q est composé des arcs
(,j1),(j1,j2),…,(jQ,) Longueur de Q =
a,j1+aj1,j2
+…+ajQ,
Comme aij dj di (i,j) Q, on a Longueur de Q
(d – djQ) + (djQ
– djQ-1)+…+(dj2
-dj1)+(dj1
-d)=
d–d= Longueur de P.CQFD
![Page 8: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/8.jpg)
Plus courts chemins
Michel Bierlaire 8
Algorithme générique
Idée : On démarre avec un vecteur d’étiquettes
(d1,…,dN) On sélectionne un arc (i,j) qui viole les
conditions d’optimalité, c-à-d tel que dj di + aij
On met à jour l’étiquette de jdj di + aij
Et ainsi de suite jusqu’à ce que tous les arcs vérifient la condition.
![Page 9: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/9.jpg)
Plus courts chemins
Michel Bierlaire 9
Algorithme générique
A tout moment, l’étiquette d’un nœud i peut être interprétée comme la longueur d’un chemin reliant à i.
Si dj di + aij, cela signifie que le chemin arrivant en j à partir de i est plus court que le chemin actuel reliant à j.
Il est plus facile d’effectuer le traitement nœud par nœud.
Pour chaque nœud considéré, on traitera tous ses arcs sortant.
V= liste des nœuds à traiter
![Page 10: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/10.jpg)
Plus courts chemins
Michel Bierlaire 10
Algorithme générique
Algorithme : Initialisation :
– V={}– d = 0, di = i
Itérations. Tant que V – Sélectionner un nœud i dans V et l’en retirer– Pour chaque arc (i,j) sortant de i,
Si dj di + aij, alors – dj di + aij
– Ajouter j à V
![Page 11: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/11.jpg)
3
2
1 4
3
d2=+
1 1
1 3
2
d3=+
d4=+d1=0 1
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
![Page 12: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/12.jpg)
3
2
1 4
3
d2=3
1 1
1 3
2
d3=+
d4=+d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
![Page 13: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/13.jpg)
3
2
1 4
3
d2=3
1 1
1 3
2
d3=1
d4=+d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 2
![Page 14: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/14.jpg)
3
2
1 4
3
d2=3
1 1
1 3
2
d3=1
d4=+d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 2
![Page 15: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/15.jpg)
3
2
1 4
3
d2=3
1 1
1 3
2
d3=1
d4=+d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 2
![Page 16: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/16.jpg)
3
2
1 4
3
d2=3
1 1
1 3
2
d3=1
d4=5d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 2
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 3
![Page 17: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/17.jpg)
3
2
1 4
3
d2=3
1 1
1 3
2
d3=1
d4=5d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 2
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 3
![Page 18: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/18.jpg)
3
2
1 4
3
d2=3
1 1
1 3
2
d3=1
d4=4d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 2
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 3
![Page 19: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/19.jpg)
3
2
1 4
3
d2=2
1 1
1 3
2
d3=1
d4=4d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 3
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 4
![Page 20: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/20.jpg)
3
2
1 4
3
d2=2
1 1
1 3
2
d3=1
d4=4d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 2
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 3
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 4
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 45 {2} 0 2 1 4 2
![Page 21: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/21.jpg)
3
2
1 4
3
d2=2
1 1
1 3
2
d3=1
d4=4d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 4
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 45 {2} 0 2 1 4 2
![Page 22: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/22.jpg)
3
2
1 4
3
d2=2
1 1
1 3
2
d3=1
d4=4d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 4
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 45 {2} 0 2 1 4 2
![Page 23: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/23.jpg)
3
2
1 4
3
d2=2
1 1
1 3
2
d3=1
d4=4d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 45 {2} 0 2 1 4 2
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 45 {2} 0 2 1 4 2
{} 0 2 1 4
![Page 24: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/24.jpg)
3
2
1 4
3
d2=2
1 1
1 3
2
d3=1
d4=4d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 3 1 23 {3,4} 0 3 1 5 34 {4,2} 0 2 1 4 45 {2} 0 2 1 4 2
{} 0 2 1 4
![Page 25: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/25.jpg)
Plus courts chemins
Michel Bierlaire 25
Algorithme générique
Propriétés à la fin de chaque itération
Si dj < , alors dj est la longueur d’un chemin reliant à j.
Si i V, alors soit di = + , soit
dj di + aij j tel que (i,j) A
![Page 26: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/26.jpg)
Plus courts chemins
Michel Bierlaire 26
Algorithme générique
Propriétés si l’algorithme se termine j t.q. dj < ,
– dj est la longueur du plus court chemin entre et j. – dj = min(i,j) A di+aij si j [Eq. de Bellman]– d = 0
dj = + ssi il n’y a pas de chemin reliant et j.
L’algorithme se termine ssi il n’y a aucun chemin commençant en et contenant un cycle à coût négatif
![Page 27: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/27.jpg)
Plus courts chemins
Michel Bierlaire 27
Algorithme générique
Les équations de Bellman permettent de reconstituer les plus courts chemins à partir des étiquettes.
Le prédécesseur du nœud j dans le plus court chemin est celui qui réalise le minimum de l’équation de Bellman.
![Page 28: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/28.jpg)
3
2
1 4
3
d2=2
1 1
1 3
2
d3=1
d4=4d1=0
3
2
1 4
3
d2=2
1 1
1 3
2
d3=1
d4=4d1=0
![Page 29: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/29.jpg)
Plus courts chemins
Michel Bierlaire 29
Algorithme de Dijkstra
L’algorithme générique ne spécifie pas comment choisir dans V le nœud à traiter.
L’algorithme de Dijkstra impose que le nœud i à traiter soit tel que
di = minjV dj
![Page 30: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/30.jpg)
Plus courts chemins
Michel Bierlaire 30
Algorithme de Dijkstra
Algorithme : Initialisation :
– V={}– d = 0, di = i
Itérations. Tant que V – Sélectionner un nœud i dans V tel que
di = minjV dj
– Retirer i de V– Pour chaque arc (i,j) sortant de i,
Si dj di + aij, alors – dj di + aij
– Ajouter j à V
![Page 31: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/31.jpg)
3
2
1 4
2
d2=
1 1
1 3
1
d3=
d4=
d1=0 5
0
0
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 1
d5=
![Page 32: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/32.jpg)
3
2
1 4
2
d2=
1 1
1 3
1
d3=
d4=
d1=0 5
0
0
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 1
d5=
![Page 33: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/33.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3=
d4=
d1=0 5
0
0
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 1
d5=
![Page 34: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/34.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4=
d1=0 5
0
0
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 1
d5=
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 3
![Page 35: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/35.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4=
d1=0 5
0
0d5=
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 3
![Page 36: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/36.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4=
d1=0 5
0
0d5=
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 3
![Page 37: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/37.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 4
d1=0 5
0
0d5=
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 3
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 2
![Page 38: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/38.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 4
d1=0 5
0
0d5=
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 2
![Page 39: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/39.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 4
d1=0 5
0
0d5=
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 2
![Page 40: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/40.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 3
d1=0 5
0
0d5=
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 2
![Page 41: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/41.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 3
d1=0 5
0
0d5= 2
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 2
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 24 {4,5} 0 2 1 3 2 5
![Page 42: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/42.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 3
d1=0 5
0
0d5= 2
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 24 {4,5} 0 2 1 3 2 5
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 24 {4,5} 0 2 1 3 2 55 {4} 0 2 1 3 2 4
![Page 43: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/43.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 3
d1=0 5
0
0d5= 2
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 24 {4,5} 0 2 1 3 2 55 {4} 0 2 1 3 2 4
![Page 44: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/44.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 3
d1=0 5
0
0d5= 2
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 24 {4,5} 0 2 1 3 2 55 {4} 0 2 1 3 2 4
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 24 {4,5} 0 2 1 3 2 55 {4} 0 2 1 3 2 4
{} 0 2 1 3 2
![Page 45: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/45.jpg)
3
2
1 4
2
d2=2
1 1
1 3
1
d3= 1
d4= 3
d1=0 5
0
0d5= 2
Iter V d1 d2 d3 d4 d5 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 4 24 {4,5} 0 2 1 3 2 55 {4} 0 2 1 3 2 4
{} 0 2 1 3 2
![Page 46: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/46.jpg)
Plus courts chemins
Michel Bierlaire 46
Algorithme de Dijkstra
Propriété des étiquettes permanentes Si les coûts sur tous les arcs sont non
négatifs Considérons W={i¦di < et iV} Alors, pour chaque itération,
– aucun nœud appartenant à W au début de l’itération n’entrera dans V pendant l’itération
– à la fin de l’itération, didj si iW et jW.
![Page 47: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/47.jpg)
Plus courts chemins
Michel Bierlaire 47
Notes
Si l’on désire calculer le plus court chemin de à , on peut arrêter l’algorithme de Dijkstra dès que le nœud est dans W.
Si au moins un arc a un coût négatif, rien ne garantit le caractère permanent des étiquettes
![Page 48: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/48.jpg)
3
2
1 4
2
d2=
-2
1 1
1
d3=
d4=
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
![Page 49: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/49.jpg)
3
2
1 4
2
d2=
-2
1 1
1
d3=
d4=
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
![Page 50: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/50.jpg)
3
2
1 4
2
d2=
-2
1 1
1
d3=
d4=
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
![Page 51: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/51.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3=
d4=
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
![Page 52: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/52.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3= 1
d4=
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 1
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 3
![Page 53: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/53.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3= 1
d4=
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 3
![Page 54: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/54.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3= 1
d4= 2
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 3
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 2 2
![Page 55: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/55.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3= 1
d4= 2
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 2 2
![Page 56: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/56.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3= 1
d4= 2
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 2 2
![Page 57: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/57.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3= 0
d4= 2
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 2 2
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 2 24 {3,4} 0 2 0 2 3
Nœud 3 rentre à nouveau dans V
![Page 58: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/58.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3= 0
d4= 2
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 2 24 {3,4} 0 2 0 2 3
![Page 59: Optimisation dans les réseaux Recherche Opérationnelle GC-SIE](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9d91497959293b8c6fb6/html5/thumbnails/59.jpg)
3
2
1 4
2
d2= 2
-2
1 1
1
d3= 0
d4= 1
d1=0
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 2 24 {3,4} 0 2 0 2 3
Iter V d1 d2 d3 d4 traiter1 {1} 0 12 {2,3} 0 2 1 33 {2,4} 0 2 1 2 24 {3,4} 0 2 0 2 35 {4} 0 2 0 1 4