![Page 1: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/1.jpg)
Plus courts chemin
Théorie des graphes Cours de Lélia Blin3eme année de Licence
1
![Page 2: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/2.jpg)
Lélia Blin Algorithmique des graphes
Plus court chemin
❖ Graphes valués (Pondérés) ❖ Chaque arête e est associée à une
valeur, appelée souvent son poids❖ Notation: w(e).
2
![Page 3: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/3.jpg)
Lélia Blin Algorithmique des graphes
Modélisation
❖ La valuation des arêtes peut représenter ❖ Des coûts de transit, ❖ Des distances kilométriques,❖ Des temps de transit,❖ ...
3
![Page 4: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/4.jpg)
Lélia Blin Algorithmique des graphes
Généralisation
❖ Le graphe ci-contre peut être valué avec les temps de voyage en voitures entre 2 villes.
4
![Page 5: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/5.jpg)
Lélia Blin Algorithmique des graphes
Définition: Graphe valué
❖ On note G=(V,A,w) un graphe simple non orienté valué. V est l’ensemble des sommets du graphe, A l’ensemble des arcs et w une fonction de pondération A→R qui fait correspondre à chaque arc un poids à valeur réelle.
5
![Page 6: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/6.jpg)
Lélia Blin Algorithmique des graphes
Longueur d’un chemin
❖La longueur du chemin p = ⟨v0, v1, . . . , vk⟩ est la somme des poids (longueurs) des arcs qui le constituent
Chapitre 24
Plus courts cheminsà origine unique
Un automobiliste souhaite trouver le plus court chemin possible entre Strasbourg etBordeaux. Étant donnée une carte routière de France, avec les distances de chaqueportion de route, comment peut-il déterminer la route la plus courte ?
Un possibilité consiste à énumérer toutes les routes de Strasbourg à Bordeaux, ad-ditionner les distances de chacune puis choisir la plus courte. Toutefois, on s’aperçoitrapidement que, même en n’autorisant pas les routes qui contiennent des cycles, ilexiste des millions de possibilités, dont la plupart ne valent même pas la peine d’êtreconsidérées. Par exemple, une route allant de Strasbourg à Bordeaux en passant parLille est manifestement une mauvaise option, Lille faisant faire un détour de plusieurscentaines de kilomètres.
Dans ce chapitre, ainsi que dans le chapitre 25, nous allons montrer comment ré-soudre efficacement ce type de problèmes. Dans un problème de plus courts che-mins, on possède en entrée un graphe orienté pondéré G = (S, A), avec une fonctionde pondération w : A → R qui fait correspondre à chaque arc un poids à valeur réelle.La longueur du chemin p = ⟨v0, v1, . . . , vk⟩ est la somme des poids (longueurs) desarcs qui le constituent :
w(p) =k!
i=1
w(vi−1, vi) .
On définit la longueur du plus court chemin entre u et v par
d(u, v) ="
min{w(p) : up! v} s’il existe un chemin de u à v ,
∞ sinon .
c ⃝D
unod
–L
aph
otoc
opie
non
auto
risé
ees
tun
délit
Dans ce qui suit nous appellerons le poids d'un chemin sa longueur.
6
![Page 7: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/7.jpg)
Lélia Blin Algorithmique des graphes
Plus court chemin
❖ Le plus court chemin entre 2 sommets u et v est défini comme le chemin de plus faible poids reliant u et v.
Chapitre 24
Plus courts cheminsà origine unique
Un automobiliste souhaite trouver le plus court chemin possible entre Strasbourg etBordeaux. Étant donnée une carte routière de France, avec les distances de chaqueportion de route, comment peut-il déterminer la route la plus courte ?
Un possibilité consiste à énumérer toutes les routes de Strasbourg à Bordeaux, ad-ditionner les distances de chacune puis choisir la plus courte. Toutefois, on s’aperçoitrapidement que, même en n’autorisant pas les routes qui contiennent des cycles, ilexiste des millions de possibilités, dont la plupart ne valent même pas la peine d’êtreconsidérées. Par exemple, une route allant de Strasbourg à Bordeaux en passant parLille est manifestement une mauvaise option, Lille faisant faire un détour de plusieurscentaines de kilomètres.
Dans ce chapitre, ainsi que dans le chapitre 25, nous allons montrer comment ré-soudre efficacement ce type de problèmes. Dans un problème de plus courts che-mins, on possède en entrée un graphe orienté pondéré G = (S, A), avec une fonctionde pondération w : A → R qui fait correspondre à chaque arc un poids à valeur réelle.La longueur du chemin p = ⟨v0, v1, . . . , vk⟩ est la somme des poids (longueurs) desarcs qui le constituent :
w(p) =k!
i=1
w(vi−1, vi) .
On définit la longueur du plus court chemin entre u et v par
d(u, v) ="
min{w(p) : up! v} s’il existe un chemin de u à v ,
∞ sinon .
c ⃝D
unod
–L
aph
otoc
opie
non
auto
risé
ees
tun
délit
7
![Page 8: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/8.jpg)
Lélia Blin Algorithmique des graphes
Formalisation
❖ Soit G=(V,A,w) un graphe orienté avec des coûts (poids) sur ses arcs.
❖ On note wij le coût de l’arc (i,j)
❖ Définition:
❖ Le coût ou longueur d’un chemin est la somme du coût de ses arcs
❖ Définition:
❖ Un chemin est dit élémentaire s’il ne passe pas deux fois par le même sommet
8
![Page 9: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/9.jpg)
Lélia Blin Algorithmique des graphes
Problèmes
A.Etant donné deux sommets s et t, trouver un plus court chemin (chemin de coût minimal) de s à t.
B.Etant donné un sommet de départ s, trouver un plus court chemin de s vers tout autre sommet
C.Trouver un plus court chemin entre tout couple de sommets
9
![Page 10: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/10.jpg)
Lélia Blin Algorithmique des graphes
Remarques
❖ Un algorithme pour le problème A peut servir à résoudre
❖ le problème B et le problème C
❖ le problème B peut servir à résoudre
❖ le problème A et le problème C
10
![Page 11: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/11.jpg)
Lélia Blin
Plus courts chemin à origine unique
Théorie des graphes Cours de Lélia Blin3eme année de Licence
11
![Page 12: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/12.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant
❖ Définition:
❖ On appelle circuit absorbant un circuit de coût strictement négatif
❖ Proposition:
❖ Il existe un plus court chemin depuis un sommet s jusqu’à tout sommet k si et seulement si il n’existe pas de circuits absorbants dans le graphe.
12
![Page 13: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/13.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant exemple
s 1 2 t3
-6
2
4
d(1)=∞ d(2)=∞ d(t)=∞d(s)=0
13
![Page 14: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/14.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant: Exemple
s 1 2 t3
-6
2
4
d(1)=3 d(2)=∞ d(t)=∞d(s)=0
14
![Page 15: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/15.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant: Exemple
s 1 2 t3
-6
2
4
d(1)=3 d(2)=5 d(t)=∞d(s)=0
15
![Page 16: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/16.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant: Exemple
s 1 2 t3
-6
2
4
d(1)=-1 d(2)=5 d(t)=9d(s)=0
16
![Page 17: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/17.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant: Exemple
s 1 2 t3
-6
2
4
d(1)=-1 d(2)=1 d(t)=9d(s)=0
17
![Page 18: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/18.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant: Exemple
s 1 2 t3
-6
2
4
d(1)=-5 d(2)=1 d(t)=5d(s)=0
18
![Page 19: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/19.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant: Exemple
s 1 2 t3
-6
2
4
d(1)=-5 d(2)=-3 d(t)=5d(s)=0
19
![Page 20: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/20.jpg)
Lélia Blin Algorithmique des graphes
Circuit absorbant: Exemple
s 1 2 t3
-6
2
4
d(1)=-5 d(2)=-3 d(t)=1d(s)=0
20
![Page 21: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/21.jpg)
Lélia Blin Algorithmique des graphes
Représentation des plus courts chemins
❖On souhaite:❖ Calculer les poids des plus courts chemins, ❖Donner les sommets présents sur ces plus courts
chemins❖ Étant donné un graphe G = (S, A,w), ❖ On gère pour chaque sommet v ∈ S un prédécesseur π[v]
❖π[v] est soit un autre sommet, soit NIL. ❖On utilisera la fonction IMPRIMER-CHEMIN pour
afficher tout les sommets:
21
![Page 22: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/22.jpg)
Lélia Blin Algorithmique des graphes
Représentation des plus courts chemins
524 22 • Algorithmes élémentaires pour les graphes
IMPRIMER-CHEMIN(G, s, v)1 si v = s2 alors imprimer s3 sinon si p[v] = NIL
4 alors imprimer " il n’existe aucun chemin de " s " à " v5 sinon IMPRIMER-CHEMIN(G, s, p[v])6 imprimer v
Le temps d’exécution de cette procédure est linéaire par rapport au nombre de som-mets du chemin imprimés, puisque chaque appel récursif s’applique à un chemin pluscourt d’un sommet.
Exercices
22.2.1 Donner les valeurs d et p d’un parcours en largeur sur le graphe orienté de la fi-gure 22.2(a), en prenant pour origine le sommet 3.
22.2.2 Donner les valeurs d et p qui résultent d’un parcours en largeur du graphe non orientéde la figure 22.3, en prenant pour origine le sommet u.
22.2.3 Quel est le temps d’exécution de PL si son graphe d’entrée est représenté par unematrice d’adjacences et que l’algorithme est modifié pour gérer ce type d’entrée ?
22.2.4 Montrer que, dans un parcours en largeur, la valeur d[u] affectée à un sommet u estindépendante de l’ordre dans lequel les sommets apparaissent dans chaque liste d’adjacences.En prenant comme exemple la figure 22.3, montrer que l’arborescence de parcours en largeurcalculée par PL peut dépendre de l’ordre au sein des listes d’adjacences.
22.2.5 Donner un exemple de graphe orienté G = (S, A), de sommet origine s ∈ S et d’en-semble de trois arcs Ap ⊆ A tels que, pour chaque sommet v ∈ S, le chemin unique dans Ap
de s à v soit un plus court chemin dans G, sans que l’ensemble d’arcs Ap puisse être obtenuen exécutant PL sur G, quel que soit l’ordre des sommets dans chaque liste d’adjacences.
22.2.6 Il existe deux types de catcheurs : les « bons » et les « méchants ». Entre deux cat-cheurs donnés, il peut ou non y avoir une rivalité. Supposez que l’on ait n catcheurs et uneliste de r paires de catcheurs telle qu’il y ait rivalité entre les deux membres de chaque paire.Donner un algorithme à temps (n + r) qui détermine s’il est possible de désigner certains cat-cheurs comme étant les bons et les autres comme étant les méchants, de telle sorte que chaquerivalité oppose un bon à un méchant. S’il est possible de faire ce genre de classification, votrealgorithme doit la calculer.
22.2.7 ⋆ Le diamètre d’une arborescence T = (S, A) est donné par
maxu,v∈S
d(u, v) ;
autrement dit, le diamètre est la plus grande de toutes les distances de plus court chemindans l’arborescence. Donner un algorithme efficace permettant de calculer le diamètre d’unearborescence, et analyser son temps d’exécution.
22
![Page 23: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/23.jpg)
Lélia Blin Algorithmique des graphes
Relâchement
❖ Pour chaque sommet v ∈ S, on gère un attribut d[v] ❖ d[v] est un majorant de la longueur d’un plus court
chemin entre l’origine s et v. ❖ On appelle d[v] une estimation de plus court chemin. ❖ On initialise les estimations et les prédécesseurs via la
procédure SOURCE-UNIQUE-INITIALISATION(G, s) Procédure en temps Θ(S).
23
![Page 24: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/24.jpg)
Lélia Blin Algorithmique des graphes
Relâchement
568 24 • Plus courts chemins à origine unique
depuis s. Une arborescence de plus courts chemins ressemble aux arborescences deparcours en largeur vus à la section 22.2, mais les plus courts chemins à partir deson origine sont exprimés non pas en fonction du nombre d’arcs, mais du poids desarcs. Plus précisément, soit G = (S, A) un graphe orienté pondéré, et une fonctionde pondération associée w : A → R. On suppose que G ne contient aucun circuit delongueur strictement négative accessible depuis le sommet origine s ∈ S, de sorte queles plus courts chemins sont bien définis. Une arborescence de plus courts cheminsde racine s est un sous-graphe orienté G′ = (S′, A′), où S′ ⊆ S et A′ ⊆ A, tel que
1) S′ est l’ensemble des sommets accessibles à partir de s dans G,
2) G′ forme une arborescence de racine s, et
3) pour tout v ∈ S′, le chemin unique de s à v dans G′ est un plus court chemin de svers v dans G.
Les plus courts chemins ne sont pas forcément uniques, pas plus que les arbores-cences de plus courts chemins. Par exemple, la figure 24.2 montre un graphe orientépondéré et deux arborescences de plus courts chemins ayant la même racine.
(a) (b) (c)
0
6
6
7212 43
5 3
s
t x
y z
3 9
5 11
0
6
6
7212 43
5 3
s
t x
y z
3 9
5 11
0
6
6
7212 43
5 3
s
t x
y z
3 9
5 11
Figure 24.2 (a) Un graphe orienté pondéré avec des poids des plus courts chemins à partir del’origine s. (b) Les arcs en gris forment une arborescence de plus courts chemins de racine s.(c) Une autre arborescence de plus courts chemins de même racine.
f) Relâchement
Les algorithmes de ce chapitre emploient la technique du relâchement. Pour chaquesommet v ∈ S, on gère un attribut d[v] qui est un majorant de la longueur d’un pluscourt chemin entre l’origine s et v. On appelle d[v] une estimation de plus courtchemin. On initialise les estimations et les prédécesseurs via la procédure en tempsQ(S) que voici.
SOURCE-UNIQUE-INITIALISATION(G, s)1 pour chaque sommet v ∈ S[G]2 faire d[v] ← ∞3 p[v] ← NIL
4 d[s] ← 0
Après initialisation, p[v] = NIL pour tout v ∈ S, d[s] = 0 et d[v] = ∞ pourv ∈ S − {s}.
24
![Page 25: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/25.jpg)
Lélia Blin Algorithmique des graphes
Relâchement
❖ Le processus de relâchement d’un arc (u, v) consiste à ❖ Tester si l’on peut améliorer le plus court chemin vers
v trouvé jusqu’ici en passant par u, ❖ Si tel est le cas, actualisé d[v] et π[v].
❖ Une étape de relâchement peut ❖ Diminuer la valeur de l’estimation de plus court
chemin d[v] ❖ Mettre à jour le champ prédécesseur π[v] de v.
25
![Page 26: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/26.jpg)
Lélia Blin Algorithmique des graphes
Relâchement
Plus courts chemins à origine unique 569
Le processus de relâchement (1) d’un arc (u, v) consiste à tester si l’on peut amé-liorer le plus court chemin vers v trouvé jusqu’ici en passant par u et, si tel est lecas, en actualisant d[v] et p[v]. Une étape de relâchement peut diminuer la valeur del’estimation de plus court chemin d[v] et mettre à jour le champ prédécesseur p[v] dev. Le code suivant effectue une étape de relâchement sur l’arc (u, v).
RELÂCHER(u, v, w)1 si d[v] > d[u] + w(u, v)2 alors d[v] ← d[u] + w(u, v)3 p[v] ← u
La figure 24.3 montre deux exemples de relâchement d’arc, un dans lequel l’estima-tion de plus court chemin diminue et un autre dans lequel il n’y a pas modification del’estimation.
u v
5 92
u v
5 72
RELÂCHER(u,v,w)
(a) (b)
u v
5 62
u v
5 62
(u,v,w)RELÂCHER
Figure 24.3 Relâchement d’un arc (u, v) de poids w(u, v) = 2. L’estimation de plus court cheminde chaque sommet est affichée dans le sommet. (a) Comme d[v] > d[u] + w(u, v) avant relâche-ment, la valeur de d[v] décroît. (b) Ici, d[v] d[u] + w(u, v) avant l’étape de relâchement, de sorteque d[v] ne change pas avec le relâchement.
Chaque algorithme de ce chapitre appelle SOURCE-UNIQUE-INITIALISATION,puis relâche les arcs de manière réitérée. En outre, le relâchement est la seule façon demodifier les estimations de plus court chemin et les prédécesseurs. Les algorithmesde ce chapitre diffèrent par le nombre de fois qu’ils relâchent chaque arc et par l’ordredans lequel ils relâchent les arcs. Dans l’algorithme de Dijkstra et dans l’algorithmede plus court chemin pour graphe sans circuit orienté, chaque arc est relâché une foiset une seule. Dans l’algorithme de Bellman-Ford, chaque arc est relâché plusieursfois.
g) Propriétés de plus courts chemins et relâchement
Pour prouver la conformité des algorithmes de ce chapitre, nous ferons appel à plu-sieurs propriétés des plus courts chemins et au relâchement. Nous énoncerons ces
(1) Il peut paraître étrange que le terme « relâchement » désigne une opération qui affine un majorant. Celatient à des raisons historiques. Le résultat d’une étape de relâchement peut être vu comme un relâchement dela contrainte d[v] d[u] + w(u, v), ce qui, d’après l’inégalité triangulaire (lemme 24.10), est forcément vraisi d[u] = d(s, u) et d[v] = d(s, v). En d’autres termes, si d[v] d[u] + w(u, v), il n’y a pas de « pression » poursatisfaire à cette contrainte, de sorte que la contrainte est « relâchée ».c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
26
![Page 27: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/27.jpg)
Lélia Blin
L’algorithme de Bellman-Ford
Théorie des graphes Cours de Lélia Blin3eme année de Licence
27
![Page 28: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/28.jpg)
Lélia Blin Algorithmique des graphes
Algorithme de Bellman-Ford❖ L’algorithme de Bellman-Ford résout le problème des plus
courts chemins à origine unique dans le cas général où les poids d’arc peuvent avoir des valeurs négatives.
❖ Étant donné un graphe orienté pondéré G = (S, A,w), et une origine s.
❖ L’algorithme de Bellman-Ford retourne une valeur booléenne indiquant s’il existe ou non un circuit de longueur strictement négative accessible à partir de s.
❖ Si un tel circuit n’existe pas, l’algorithme donne les plus courts chemins ainsi que leurs poids.
28
![Page 29: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/29.jpg)
Lélia Blin Algorithmique des graphes
Algorithme de Ford-Bellman
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
29
![Page 30: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/30.jpg)
Lélia Blin Algorithmique des graphes
Exemple
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
A B C D E
0 ∞ ∞ ∞ ∞
#1 0 ∞ ∞ ∞ ∞
#2
#3
#4
#5
#6
#7
#8
i=1
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#3
30
![Page 31: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/31.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 ∞ ∞ ∞ ∞
#1 0 ∞ ∞ ∞ ∞
#2 0 ∞ ∞ ∞ ∞
#3
#4
#5
#6
#7
#8
i=1
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#3
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
31
![Page 32: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/32.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 ∞ ∞ ∞ ∞
#1 0 ∞ ∞ ∞ ∞
#2 0 ∞ ∞ ∞ ∞
#3 0 ∞ ∞ ∞ ∞
#4
#5
#6
#7
#8
i=1
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#3
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
32
![Page 33: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/33.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 ∞ ∞ ∞ ∞
#1 0 ∞ ∞ ∞ ∞
#2 0 ∞ ∞ ∞ ∞
#3 0 ∞ ∞ ∞ ∞
#4 0 -1 ∞ ∞ ∞
#5
#6
#7
#8
-1
i=1
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#3
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
33
![Page 34: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/34.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 ∞ ∞ ∞ ∞
#1 0 ∞ ∞ ∞ ∞
#2 0 ∞ ∞ ∞ ∞
#3 0 ∞ ∞ ∞ ∞
#4 0 -1 ∞ ∞ ∞
#5 0 -1 4 ∞ ∞
#6
#7
#8
-1
4
i=1
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#3
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
34
![Page 35: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/35.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 ∞ ∞ ∞ ∞
#1 0 ∞ ∞ ∞ ∞
#2 0 ∞ ∞ ∞ ∞
#3 0 ∞ ∞ ∞ ∞
#4 0 -1 ∞ ∞ ∞
#5 0 -1 4 ∞ ∞
#6 0 -1 ∞ ∞
#7
#8
i=1
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#3
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
35
![Page 36: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/36.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 ∞ ∞ ∞ ∞
#1 0 ∞ ∞ ∞ ∞
#2 0 ∞ ∞ ∞ ∞
#3 0 ∞ ∞ ∞ ∞
#4 0 -1 ∞ ∞ ∞
#5 0 -1 4 ∞ ∞
#6 0 -1 4 ∞ ∞
#7 0 -1 2 ∞ ∞
#8 0 -1 2 ∞ ∞
i=1
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#3
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
36
![Page 37: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/37.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2
#3
#4
#5
#6
#7
#8
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
37
![Page 38: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/38.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2 0 -1 2 -2 1
#3
#4
#5
#6
#7
#8
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
-2
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
38
![Page 39: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/39.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2 0 -1 2 -2 1
#3 0 -1 2 -2 1
#4
#5
#6
#7
#8
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
-2
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
39
![Page 40: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/40.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2 0 -1 2 -2 1
#3 0 -1 2 -2 1
#4
#5
#6
#7
#8
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
-2
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
40
![Page 41: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/41.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2 0 -1 2 -2 1
#3 0 -1 2 -2 1
#4 0 -1 2 -2 1
#5
#6
#7
#8
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
-2
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
41
![Page 42: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/42.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2 0 -1 2 -2 1
#3 0 -1 2 -2 1
#4 0 -1 2 -2 1
#5 0 -1 2 -2 1
#6
#7
#8
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
-2
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
42
![Page 43: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/43.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2 0 -1 2 -2 1
#3 0 -1 2 -2 1
#4 0 -1 2 -2 1
#5 0 -1 2 -2 1
#6 0 -1 2 -2 1
#7
#8
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
43
![Page 44: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/44.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2 0 -1 2 -2 1
#3 0 -1 2 -2 1
#4 0 -1 2 -2 1
#5 0 -1 2 -2 1
#6 0 -1 2 -2 1
#7 0 -1 2 -2 1
#8
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
-2
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
44
![Page 45: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/45.jpg)
Lélia Blin Algorithmique des graphes
Exemple
A B C D E
0 -1 2 ∞ ∞
#1 0 -1 2 ∞ 1
#2 0 -1 2 -2 1
#3 0 -1 2 -2 1
#4 0 -1 2 -2 1
#5 0 -1 2 -2 1
#6 0 -1 2 -2 1
#7 0 -1 2 -2 1
#8 0 -1 2 -2 1
i=2
-1
2
A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#31
-2
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
45
![Page 46: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/46.jpg)
Lélia Blin Algorithmique des graphes
Exemple
il faut recommencer pour i=3 et i=4
Mais rien ne change
-1
2
1A
B
E
C D
-1
4
31
2
5
-3
2#4 #1
#2
#6
#5
#7
#8
#3
-2
24.1 Algorithme de Bellman-Ford 571
Notre analyse reposera sur quelques conventions permettant d’effectuer desopérations arithmétiques avec les infinis. On supposera que, pour un nombre réela fi −∞ quelconque, on a a + (+∞) = (+∞) + a = +∞. D’autre part, pour queles démonstrations restent valables en présence de circuits de longueur strictementnégative, on fera l’hypothèse que, pour un nombre réel a fi +∞ quelconque,a + (−∞) = (−∞) + a = −∞.
Tous les algorithmes de ce chapitre supposent que le graphe orienté G est repré-senté par des listes d’adjacences. En outre, le poids d’un arc est stocké avec l’arc ;ainsi, quand on parcourt chaque liste d’adjacences, on peut déterminer les poids d’arcavec un temps de O(1) par arc.
24.1 ALGORITHME DE BELLMAN-FORD
L’algorithme de Bellman-Ford résout le problème des plus courts chemins à ori-gine unique dans le cas général où les poids d’arc peuvent avoir des valeurs néga-tives. Étant donné un graphe orienté pondéré G = (S, A), de fonction de pondérationw : A → R, et une origine s, l’algorithme de Bellman-Ford retourne une valeurbooléenne indiquant s’il existe ou non un circuit de longueur strictement négative ac-cessible à partir de s. Si un tel circuit n’existe pas, l’algorithme donne les plus courtschemins ainsi que leurs poids.
L’algorithme utilise la technique du relâchement, diminuant progressivement uneestimation d[v] du poids d’un plus court chemin depuis l’origine s vers chaque som-met v ∈ S jusqu’à atteindre la valeur réelle du poids de plus court chemin, d(s, v).L’algorithme retourne VRAI si et seulement si le graphe ne contient aucun circuit delongueur strictement négative accessible depuis l’origine.
BELLMAN-FORD(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 pour i ← 1 à |S[G]|− 13 faire pour chaque arc (u, v) ∈ A[G]4 faire RELÂCHER(u, v, w)5 pour chaque arc (u, v) ∈ A[G]6 faire si d[v] > d[u] + w(u, v)7 alors retourner FAUX
8 retourner VRAI
La figure 24.4 montre comment l’exécution de l’algorithme de Bellman-Ford fonc-tionne sur un graphe de 5 sommets. Après l’initialisation des valeurs d et p detous les sommets en ligne 1, l’algorithme effectue |S| − 1 passages sur les arcs dugraphe. Chaque passage correspond à une itération de la boucle pour des lignes 2–4et consiste à relâcher chaque arc du graphe une seule fois. Les figures 24.4(b)–(e)montrent l’état de l’algorithme après chacun des quatre passages. Après les |S| − 1c ⃝
Dun
od–
La
phot
ocop
ieno
nau
tori
sée
estu
ndé
lit
46
![Page 47: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/47.jpg)
Lélia Blin Algorithmique des graphes
Autre exemple
572 24 • Plus courts chemins à origine unique
passages, les lignes 5–8 testent la présence d’un circuit de longueur strictement néga-tive et retournent la valeur booléenne appropriée. (Nous justifierons un peu plus tardle fonctionnement de ce test).
(a) (b) (c)
(d)
0
5
9
78
6
7
(e)
t x
s
y z
–4
–3
–22
7
4
–22
0
5
9
78
6
7
t x
s
y z
–4
–3
–22
7
4
22
0
5
9
78
6
7
t x
s
y z
–4
–3
–26
7
4
22
0
5
9
78
6
7
t x
s
y z
–4
–3
–26
7
∞
∞2
0
5
9
78
6
7
t x
s
y z
–4
–3
–2 ∞
∞2
∞
∞
Figure 24.4 L’exécution de l’algorithme de Bellman-Ford. Le sommet origine est s. Les valeurs ded sont représentées dans les sommets, et les arcs en gris indiquent les valeurs prédécesseur : sil’arc (u, v) est en gris, alors p[v] = u. Dans cet exemple particulier, chaque passage relâche les arcsdans l’ordre (t, x), (t, y), (t, z), (x, t), (y, x), (y, z), (z, x), (z, s), (s, t), (s, y). (a) La situation juste avant lepremier passage sur les arcs. (b)–(e) La situation après chacun des passages suivants. Les valeursd et p donnée en partie (e) sont les valeurs finales. L’algorithme de Bellman-Ford retourne VRAI
pour cet exemple.
L’algorithme de Bellman-Ford s’exécute en temps O(SA) : l’initialisation de laligne 1 prend Q(S) ; chacun des |S|−1 passages des lignes 2–4 prend Q(A) ; la bouclepour des lignes 5–7 prend O(A).
Pour démontrer la validité de l’algorithme de Bellman-Ford, on commence parmontrer que, s’il n’existe aucun circuit de longueur strictement négative, l’algorithmecalcule les longueurs de plus court chemin corrects pour tous les sommets accessiblesdepuis l’origine.
Lemme 24.2 Soit G = (S, A) un graphe orienté pondéré, de fonction de pondérationw : A → R et d’origine s ; on suppose que G ne contient aucun circuit de longueurstrictement négative accessible depuis s. Alors, après les |S| − 1 itérations de laboucle pour des lignes 2–4 de BELLMAN-FORD, on a d[v] = d(s, v) pour tous lessommets v accessibles depuis s.
Démonstration : On démontre le lemme en faisant appel à la propriété de relâche-ment de chemin. Soit un sommet v accessible depuis s, et soit p = ⟨v0, v1, . . . , vk⟩, oùv0 = s et vk = v, un plus court chemin élémentaire de s à v. Le chemin p a au plus
47
#1 #2
#3
#4
#5
#6
#7
#8 #9
#10
![Page 48: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/48.jpg)
Lélia Blin
Algorithme de Dijkstra
Théorie des graphes Cours de Lélia Blin3eme année de Licence
48
![Page 49: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/49.jpg)
Lélia Blin Algorithmique des graphes
Remarques
❖ L’algorithme de Dijkstra est un autre algorithme de recherche de distance et de plus court chemin.
❖ Il est plus efficace que Bellman-Ford.
❖ Mais ne fonctionne que dans le cas où toutes les valuations des arcs sont positives.
49
![Page 50: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/50.jpg)
Lélia Blin Algorithmique des graphes
Principe❖ On construit petit à petit, à partir de {x0}, un ensemble M de sommets
marqués.
❖ Pour tout sommet marqués , l’estimation d(s ) est égale à la distance 𝛿(x, s ).
❖ A chaque étape, on sélectionne le (un) sommet non marqué x dont la distance estimé d (x ) est la plus petite parmi tous les sommets non marqué.
❖ On marque alors x (on rajoute x à M ), puis on met à jour à partir de x les distances estimées des successeurs non marqués de x
❖ On recommence, jusqu’à épuisement des sommets non marqués
50
![Page 51: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/51.jpg)
Lélia Blin Algorithmique des graphes
Algorithme de Dijkstra
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
51
![Page 52: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/52.jpg)
Lélia Blin Algorithmique des graphes
Exemple
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
F={s,t,x,y,z}E={}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
52
![Page 53: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/53.jpg)
Lélia Blin Algorithmique des graphes
Exemple
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
F={t,x,y,z}E={s}
s t x y z
0 ∞ ∞ ∞ ∞
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
53
![Page 54: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/54.jpg)
Lélia Blin Algorithmique des graphes
Exemple
F={t,x,y,z}E={s}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
s t x y z
0 ∞ ∞ ∞ ∞
10s ∞ 5s ∞
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
54
![Page 55: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/55.jpg)
Lélia Blin Algorithmique des graphes
Exemple
F={t,x,z}E={s,y}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
s t x y z
0 ∞ ∞ ∞ ∞
10s ∞ 5s ∞
8y 14y 7y
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
55
![Page 56: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/56.jpg)
Lélia Blin Algorithmique des graphes
Exemple
F={t,x}E={s,y,z}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
s t x y z
0 ∞ ∞ ∞ ∞
10s ∞ 5s ∞
8y 14y 7y
8y 13z
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
56
![Page 57: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/57.jpg)
Lélia Blin Algorithmique des graphes
Exemple
F={x}E={s,y,z,t}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
s t x y z
0 ∞ ∞ ∞ ∞
10s ∞ 5s ∞
8y 14y 7y
8y 13z
9t
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
57
![Page 58: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/58.jpg)
Lélia Blin Algorithmique des graphes
Exemple
F={}E={s,y,z,t,x}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
s t x y z
0 ∞ ∞ ∞ ∞
10s ∞ 5s ∞
8y 14y 7y
8y 13z
9t
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
58
![Page 59: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/59.jpg)
Lélia Blin Algorithmique des graphes
Exemple
F={}E={s,y,z,t,x}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
s t x y z
0 ∞ ∞ ∞ ∞
10s ∞ 5s ∞
8y 14y 7y
8y 13z
9t
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
59
![Page 60: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/60.jpg)
Lélia Blin Algorithmique des graphes
Exemple
F={}E={s,y,z,t,x}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
s t x y z
0 ∞ ∞ ∞ ∞
10s ∞ 5s ∞
8y 14y 7y
8y 13z
9t
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
60
![Page 61: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/61.jpg)
Lélia Blin Algorithmique des graphes
Exemple
F={}E={s,y,z,t,x}
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
s t x y z
0 ∞ ∞ ∞ ∞
10s ∞ 5s ∞
8y 14y 7y
8y 13z
9t
578 24 • Plus courts chemins à origine unique
L’algorithme de Dijkstra gère un ensemble E de sommets dont les longueurs finalesde plus court chemin à partir de l’origine s ont déjà été calculées. A chaque itération,l’algorithme choisit le sommet u ∈ S − E dont l’estimation de plus court chemin estminimale, ajoute u à E, puis relâche tous les arcs partant de u. Dans l’implémentationci-après, on gère une file de priorités min F de sommets, en prenant pour clé la valeurde leur attribut d.
DIJKSTRA(G, w, s)1 SOURCE-UNIQUE-INITIALISATION(G, s)2 E ← ∅3 F ← S[G]4 tant que F fi ∅5 faire u ← EXTRAIRE-MIN(F)6 E ← E ∪ {u}7 pour chaque sommet v ∈ Adj[u]8 faire RELÂCHER(u, v, w)
0
∞ ∞
∞ ∞
0
∞
∞
1
2
10
5
(c)
10
5
0
8
5
14
7
0
8
5
13
7
0
8
5
9
7
0
5
9
7
8
6432 9
7
s
t x
y z
1
2
10
5
(f)
6432 9
7
s
t x
y z
1
2
10
5
(b)
6432 9
7
s
t x
y z
1
2
10
5
(e)
6432 9
7
s
t x
y z
1
2
10
5
(a)
6432 9
7
s
t x
y z
1
2
10
5
(d)
6432 9
7
s
t x
y z
Figure 24.6 L’exécution de l’algorithme de Dijkstra. L’origine s est le sommet le plus à gauche.Les estimations de plus court chemin sont représentées à l’intérieur des sommets, et les arcs engris indiquent les prédécesseurs. Les sommets noirs sont dans l’ensemble E, et les sommets blancssont dans la file de priorités min F = S − E. (a) La situation juste avant la première itération dela boucle tant que des lignes 4–8. Le sommet gris contient la valeur minimale de d et est choisicomme sommet u à la ligne 5. (b)–(f) La situation après les itérations successives de la boucletant que. A chaque étape, le sommet gris est celui choisi comme sommet u à la ligne 5 del’itération suivante. Les valeurs d et p représentées en (f) sont les valeurs finales.
L’algorithme de Dijkstra relâche les arcs comme illustré à la figure 24.6. La ligne 1effectue l’initialisation habituelle des valeurs d et p, et la ligne 2 initialise l’ensembleE. L’algorithme conserve l’invariant suivant : F = S − E au début de chaque itération
61
![Page 62: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/62.jpg)
Lélia Blin Algorithmique des graphes
Autre exemple
A
B C
D E
F
2
1
1
5
3 2
1
4
6
62
![Page 63: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/63.jpg)
Lélia Blin
Propriétés des plus court chemins
Théorie des graphes Cours de Lélia Blin3eme année de Licence
63
![Page 64: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/64.jpg)
Lélia Blin Algorithmique des graphes
Inégalités triangulaires
❖ Propriété:❖ Pour tout arc (u,v) ∈ A, on a 𝛿(s,v) ≤ 𝛿(s,u) + w(u,v).
❖ Preuve par l’absurde:❖ Hypothèse: 𝛿(s,v) est le plus court chemin de s au
sommet u.❖ Si il existe 𝛿’(s,v)=𝛿(s,u) + w(u,v) tel que 𝛿(s,v) ‘< 𝛿(s,v)❖ Alors l’hypothèse est fausse
64
![Page 65: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/65.jpg)
Lélia Blin Algorithmique des graphes
Propriété du majorant
❖ Propriété:❖ On a toujours d[v] ≥ 𝛿(s, v) pour tous les sommets v ∈ S
❖ Preuve par récurrence:❖ Cas de base: à l’initialisation d[v]=∞ si G est connexe (ou fortement
connexe) alors il existe un chemin de longues l ∈R si G n’est pas connexe 𝛿(s, v)=∞.
❖ Hypothèse de récurrence: Au relâchement i concernant v on a d[v] ≥ 𝛿(s, v).
65
![Page 66: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/66.jpg)
Lélia Blin Algorithmique des graphes
Propriété du majorant
❖ Hypothèse de récurrence: Au relâchement i concernant v on a d[v] ≥ 𝛿(s, v).❖ Prouvons qu’au relâchement i+1 concernant v on a toujours d[v] ≥ 𝛿(s, v).
❖ Puisque l’on peut faire un relâchement i+1 c’est que l’on a un voisin u de v tel que: d[v]> d[u]+w(u,v).
❖ On a d[v]> d[u]+w(u,v)≥ 𝛿(s, v)
66
![Page 67: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/67.jpg)
Lélia Blin Algorithmique des graphes
Propriété de convergence❖ Propriété:
❖ Si il n’existe plus aucun relâchement possible alors ∀v ∈ S on a d[v]=𝛿(s, v).
❖ Preuve❖ Trivial
❖ Remarque:❖ Un plus court chemin est constitué de plus court
chemin.
67
![Page 68: ALGR 4 PCC Origine unique - Laboratoire d'informatique de ...blin/Enseignement_files/ALGR/ALGR_4_PCC.pdf · Plus court chemin Le plus court chemin entre 2 sommets u et v est défini](https://reader036.vdocuments.site/reader036/viewer/2022070900/5f375d58ed6fed34f45375d5/html5/thumbnails/68.jpg)
Lélia Blin Algorithmique des graphes
Propriété de sous-graphe prédécesseurs
❖ Une fois que d[v] = 𝛿(s, v) pour tout v ∈ S, le sous-graphe des prédécesseur est une arborescence de plus courts chemins de racine s.
68