algr 4 pcc origine unique - laboratoire d'informatique de...

68
Plus courts chemin Théorie des graphes Cours de Lélia Blin 3eme année de Licence 1

Upload: others

Post on 10-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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