55
Graphes II Stéphane Grandcolas - Yann Vaxès Aix-Marseille Université 2019-2020

Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Graphes II

Stéphane Grandcolas - Yann Vaxès

Aix-Marseille Université

2019-2020

Page 2: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Graphes

Plan du cours :

I définitions, exemples,

I plus courts chemins : Dijkstra,

I plus courts chemins : Bellman-Ford,

I plus courts chemins : Floyd et Warshall,

I arbres couvrants de poids minimal (ACM) : (Prim, Kruskal),

Page 3: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins dans un graphe

G = (S ,A,w) un graphe pondéré.

La longueur du chemin (u1, . . . , uk) est

k−1∑i=1

w(ui , ui+1)

Notation :δ(u, v)

la longueur d’un plus court chemin de u à v .

Page 4: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins dans un graphe

Arcs de poids positifs :I algorithme de Dijkstra (source unique)

Circuits de longueur négative :I pas de plus courts chemins,

Arcs de poids quelconques :I algorithme de Bellman-Ford (source unique)I algorithme de Floyd-Warshall (tous les PCC)

utilisent le principe de la programmation dynamique

Page 5: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

Si le graphe G ne contient aucun cycle de longueur négative,alors il existe un plus court chemin élémentaire entre s et t.

s

t

Chemin élémentaire :I chaque sommet apparaît au plus une fois (pas de cycle

dans le chemin)

Page 6: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

Si le graphe G ne contient aucun cycle de longueur négative,alors il existe un plus court chemin élémentaire entre s et t.

s

t

Chemin élémentaire :I chaque sommet apparaît au plus une fois (pas de cycle

dans le chemin)

Page 7: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

Si le graphe G ne contient aucun cycle de longueur négative,alors il existe un plus court chemin élémentaire entre s et t.

≤ n − 1 arcs

t

s

Chemin élémentaire :I au plus n sommets =⇒ au plus n − 1 arcs,

Page 8: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

Entrée : un graphe G , un sommet source s,

Sortie : les longueurs des plus courts chemins issus de s,(constitués d’au plus n − 1 arcs)

Page 9: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

Entrée : un graphe G , un sommet source s,

Sortie : les longueurs des plus courts chemins issus de s,(constitués d’au plus n − 1 arcs)

Sous-problèmes OPT (i , v) : longueur minimale d’un cheminde s à v constitué de au plus i arcs,

Objectif final : OPT (n − 1, v)

(plus courts chemins issus de s constitués de au plus n − 1arcs : OPT (n − 1, v) = δ(v))

Page 10: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

Entrée : un graphe G , un sommet source s,

Sortie : les longueurs des plus courts chemins issus de s,(constitués d’au plus n − 1 arcs)

Algorithme :

calculer OPT (0, v) pour tout v ,

calculer OPT (1, v) pour tout v ,

. . .

calculer OPT (n − 1, v) pour tout v .

Page 11: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

Soit P un chemin optimal pour le sous-problème OPT (i , v)

I si P contient au plus i − 1 arcs alors OPT (i , v) = OPT (i − 1, v),

I si P contient exactement i arcs, alors il existe un sommet u tel que

OPT (i , v) = OPT (i − 1, u) + w(u, v)

OPT (i − 1, u)

OPT (i , v)

Ps

v

w(u, v)u

Page 12: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

Définition récursive de OPT (i , v) :

OPT (0, s) = 0

OPT (0, v) = +∞ si v 6= s,

OPT (i , v) = min(OPT (i − 1, v),minu∈V (OPT (i − 1, u) + w(u, v))

)si i > 0.

Page 13: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

algorithme BELLMAN-FORD(G , s)in : G = (S ,A,w) un graphe pondéré, s un sommet de S ,

pour v ∈ S faired [0, v ] :=∞,

d [0, s] := 0,pour i := 1, . . . , n − 1 faire

pour v ∈ S faired [i , v ] := min

(d [i − 1, v ],

minu∈S(d [i − 1, u] + w(u, v))),

fin pour,fin pour,renvoyer d ,

avec w(u, v) = +∞ si (u, v) 6∈ A.

Page 14: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

algorithme BELLMAN-FORD(G , s)in : G = (S ,A,w) un graphe pondéré, s un sommet de S ,

pour v ∈ S faired [0, v ] :=∞,

d [0, s] := 0,pour i := 1, . . . , n − 1 faire

pour v ∈ S faired [i , v ] := min

(d [i − 1, v ],

minu∈S(d [i − 1, u] + w(u, v))), O(n)

fin pour,fin pour,renvoyer d ,

Complexité : O(n3) (n × n calculs, chacun en O(n)).

Page 15: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 1

Calcul de minu∈S(d [i − 1, u] + w(u, v))

si (u, v) 6∈ A alors w(u, v) = +∞,

=⇒ inutile de considérer u si (u, v) 6∈ A

Page 16: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 1

Calcul de minu∈S(d [i − 1, u] + w(u, v))

si (u, v) 6∈ A alors w(u, v) = +∞,

=⇒ inutile de considérer u si (u, v) 6∈ A

donc

minu∈S

(d [i − 1, u] + w(u, v)) = minu∈Adj−1(v)

(d [i − 1, u] + w(u, v))

avec Adj−1(v) = {u ∈ S tel que (u, v) ∈ A}

Page 17: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 1

algorithme BELLMAN-FORD-a1(G , s)in : G = (S ,A,w) un graphe pondéré, s un sommet de S ,

pour v ∈ S faired [0, v ] :=∞,

d [0, s] := 0,pour i := 1, . . . , n − 1 faire

pour v ∈ S faired [i , v ] := min

(d [i − 1, v ],

minu∈Adj−1(v)(d [i − 1, u] + w(u, v))),

fin pour,fin pour,renvoyer d ,

A l’étape i , on considère chaque arc une fois :

Complexité : O(m × n) (n = |S |, m = |A|)

Page 18: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 1

algorithme BELLMAN-FORD-a1(G , s)in : G = (S ,A,w) un graphe pondéré, s un sommet de S ,

pour v ∈ S faired [0, v ] :=∞,

d [0, s] := 0,pour i := 1, . . . , n − 1 faire

pour v ∈ S faired [i , v ] := d [i − 1, v ],

pour (u, v) ∈ A fairesi d [i , v ] > d [i − 1, u] + w(u, v) alors

d [i , v ] := d [i − 1, u] + w(u, v),fin pour,

fin pour,renvoyer d ,

Peu importe l’ordre dans lequel on considère les arcs.

Page 19: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : exemple

s

3-3

2-2

-1 4

-3

-4

8

b

a

d

c

e

9 0 1 2 3 4 5s 0a ∞b ∞c ∞d ∞e ∞

(a) (b)

Page 20: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : exemple

s

3-3

2-2

-1 4

-3

-4

8

b

a

d

c

e

9 0 1 2 3 4 5s 0 0a ∞ −3b ∞ ∞c ∞ 3d ∞ 4e ∞ 2

(a) (b)

Page 21: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : exemple

s

3-3

2-2

-1 4

-3

-4

8

b

a

d

c

e

9 0 1 2 3 4 5s 0 0 0a ∞ −3 −3b ∞ ∞ 0c ∞ 3 3d ∞ 4 4e ∞ 2 0

(a) (b)

Page 22: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : exemple

s

3-3

2-2

-1 4

-3

-4

8

b

a

d

c

e

9 0 1 2 3 4 5s 0 0 0 0a ∞ −3 −3 −4b ∞ ∞ 0 −2c ∞ 3 3 3d ∞ 4 4 4e ∞ 2 0 0

(a) (b)

Page 23: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : exemple

s

3-3

2-2

-1 4

-3

-4

8

b

a

d

c

e

9 0 1 2 3 4 5s 0 0 0 0 0a ∞ −3 −3 −4 −6b ∞ ∞ 0 −2 −2c ∞ 3 3 3 3d ∞ 4 4 4 4e ∞ 2 0 0 0

(a) (b)

Page 24: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : exemple

s

3-3

2-2

-1 4

-3

-4

8

b

a

d

c

e

9 0 1 2 3 4 5s 0 0 0 0 0 0a ∞ −3 −3 −4 −6 −6b ∞ ∞ 0 −2 −2 −2c ∞ 3 3 3 3 3d ∞ 4 4 4 4 3e ∞ 2 0 0 0 0

(a) (b)

Page 25: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 2

Tableau à une dimension D[] pour représenter les distances

D[v ] : longueur d’un chemin entre s et v

initialement :I ∀v , v 6= s, D[v ] = +∞,I D[s] = 0.

mise à jour :I D[v ] = min

(D[v ],minu∈Adj−1(v)(D[u] + w(u, v))

)Justification : après i mises à jour D[v ] ≤ d [i , v ].D[v ] est au plus la longueur d’un plus court chemin entre s et vcontenant au plus i arcs.

Page 26: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 2

Tableau à une dimension D[] pour représenter les distances

D[v ] : longueur d’un chemin entre s et v

initialement :I ∀v , v 6= s, D[v ] = +∞,I D[s] = 0.

mise à jour :I D[v ] = min

(D[v ],minu∈Adj−1(v)(D[u] + w(u, v))

)Justification : après i mises à jour D[v ] ≤ d [i , v ].D[v ] est au plus la longueur d’un plus court chemin entre s et vcontenant au plus i arcs.

Page 27: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 2

Tableau à une dimension D[] pour représenter les distances

D[v ] : longueur d’un chemin entre s et v

initialement :I ∀v , v 6= s, D[v ] = +∞,I D[s] = 0.

mise à jour :I D[v ] = min

(D[v ],minu∈Adj−1(v)(D[u] + w(u, v))

)

Justification : après i mises à jour D[v ] ≤ d [i , v ].D[v ] est au plus la longueur d’un plus court chemin entre s et vcontenant au plus i arcs.

Page 28: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 2

Tableau à une dimension D[] pour représenter les distances

D[v ] : longueur d’un chemin entre s et v

initialement :I ∀v , v 6= s, D[v ] = +∞,I D[s] = 0.

mise à jour :I D[v ] = min

(D[v ],minu∈Adj−1(v)(D[u] + w(u, v))

)Justification : après i mises à jour D[v ] ≤ d [i , v ].D[v ] est au plus la longueur d’un plus court chemin entre s et vcontenant au plus i arcs.

Page 29: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford : amélioration 2

algorithme BELLMAN-FORD-a2(G , s)in : G = (S ,A,w) un graphe pondéré, s un sommet de S ,

pour v ∈ S faireD[v ] :=∞,

D[s] := 0,pour i := 1, . . . , n − 1 faire

pour v ∈ S faireD[v ] := min

(D[v ], minu∈Adj−1(v)(D[u] + w(u, v))

),

fin pour,fin pour,renvoyer D,

Espace : O(n)

Page 30: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algo. de Bellman-Ford : reconstruction des PCC

si D[v ] est modifiée à l’étape i :

D[v ] := D[u] + w(u, v)

alors mémoriser u, dernier sommet intermédiaire

pred [v ] := u

quand l’algorithme est terminé :I le graphe constitué des arcs (pred [v ], v) est acyclique,I dans ce graphe, le chemin entre s et v est un plus court

chemin dans G .

Page 31: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algo. de Bellman-Ford : reconstruction des PCC

s

3-3

2-2

-1 4

-3

-4

8

b

a

d

c

e

9

s a b c d eD 0 −6 −2 3 3 0

pred − b e s a c

Page 32: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Algorithme de Bellman-Ford

algorithme BELLMAN-FORD-PATHS(G , s)in : G = (S ,A,w) un graphe pondéré, s un sommet de S ,

pour v ∈ S faireD[v ] :=∞,pred [v ] := NONE ,

fin pour,D[s] := 0,pour i := 1, . . . , n − 1 faire

pour (u, v) ∈ A fairesi D[v ] > D[u] + w(u, v) alors

D[v ] := D[u] + w(u, v),pred [v ] := u,

fin si,fin pour,

fin pour,renvoyer (D, pred),

Page 33: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Routage dans les réseaux de communication

Une application importante des algorithmes de plus courts chemins :Déterminer le meilleur chemin pour router les messages

Graphe Réseau de CommunicationsSommets RouteursArcs Lignes de communicationsLongueurs Délais

Algorithme de Dijkstra : fonctionnement globalchoix du sommet le plus proche parmis tous les sommets.

Algorithme de Bellman-Ford : fonctionnement local

chaque noeud a juste besoin de connaître les marques de ses voisins∗.

Page 34: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Bellman-Ford : amélioration pour le routage

Calcul de D[v ] à l’étape i :

I calcul à partir des distances D[u] des voisins∗.Si aucune distance n’a changé le calcul estinutile.

v

u

Page 35: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Bellman-Ford : amélioration pour le routage

Calcul de D[v ] à l’étape i :

I calcul à partir des distances D[u] des voisins.Si aucune distance n’a changé le calcul estinutile.

I nouvelle approche : chaque sommet dont ladistance change informe ses voisins.

I si aucune distance n’est modifiée alorsl’algorithme s’arrête.

v

u

Page 36: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Bellman-Ford : amélioration pour le routage

algorithme BELLMAN-FORD-R1(G , s) G = (S ,A,w)pour chaque v ∈ S : D[v ] :=∞,D[s] := 0,pour i := 1, . . . , n − 1 faire

pour chaque sommet u tel que D[u] a changé à l’étape i − 1pour chaque arc (u, v) faire

D[v ] := min(D[v ],D[u] + w(u, v)

),

si D n’a pas été modifié à l’étape i alorsbreak,

fin pour,

renvoyer (D, pred),

Page 37: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Bellman-Ford : amélioration pour le routage

Notifications :I avertir les noeuds voisins d’un changement,I les notifications ne sont pas synchronisées,I version asynchrone de l’algorithme : noeuds

actifs/inactifs.

Page 38: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Bellman-Ford : amélioration pour le routagealgorithme BELLMAN-FORD-Asynchrone(G , s) G = (S ,A,w)

pour chaque v ∈ S : D[v ] :=∞, pred [v ] := NONE ,D[s] := 0,F := {s}, F : ensemble des noeuds actifstant que F 6= ∅ faire

choisir et enlever un sommet u de F ,pour chaque arc (u, v) faire

si D[v ] > D[u] + w(u, v) alorsD[v ] := D[u] + w(u, v),pred [v ] := u,F := F ∪ {v}, v devient actif

fin si,fin pour,

fin tant que,

renvoyer (D, pred),

Page 39: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

I graphes orientés,I arcs de poids négatifs,I calcul de tous les plus courts chemins.

Page 40: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

On suppose les sommets numérotés de 1 à n

Définition. (s, v1, . . . , vm, t) est un chemin C (k) si tout sommet vi vérifievi ≤ k .

114

11

13

8

154

10

2 6

5 73

1712

9

16

14 ; 7 : Chemin C (11) 2 ; 15 : Chemin C (9)

Page 41: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

Remarque. Tout chemin C (k), avec k ≥ 1,

I est un chemin C (k−1)

t

s

C (k−1)

I ou contient le sommet k , il est alors composé de deuxchemins C k−1

s

t

k

C (k−1)C (k−1)

Page 42: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

La propriété est vraie pour les plus courts chemins.

Propriété. Soit P un plus court chemin C (k) entre les sommets s et t :

I soit P est un (plus court) chemin C (k−1) entre s et t,

I soit P contient le sommet k , il est alors composé de deux cheminsP1 et P2 :

(a) P1 est un plus court chemin C (k−1) entre s et k ,(b) P2 est un plus court chemin C (k−1) entre k et t.

Plus court chemin C (k) : chemin C (k) le plus court.

Page 43: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

Définition récursive :

d(0)(s, t) = w(s, t) ou +∞d(k)(s, t) = min

[d(k−1)(s, t),

d(k−1)(s, k) + d(k−1)(k , t)]

d(k)(s, t) : longueur d’un plus court chemin C (k) entre s et t.

d(n)(s, t) : longueur du plus court chemin entre s et t dans G .

Page 44: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

algorithme de Floyd et Warshall :

I entrée : graphe orienté sans circuit de poids négatif,(matrice d’adjacence avec les poids des arcs,)

I sortie : les longueurs des plus courts chemins entretoutes les paires de sommets.

Méthode de programmation dynamique.

Page 45: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

algorithme FLOYD-WARSHALL(G )in : G = (S ,A,w) et S = {1, . . . , n},

1 pour (u, v) ∈ S × S , u 6= v faire2 d(0)[u, v ] := w(u, v), (+∞ si (u, v) 6∈ A)

3 pour k := 1 à n faire4 d(k) := CalculCheminsCk (d(k−1), k) ,5 fin pour,6 renvoyer d(n),

Calcul des longueurs des plus courts chemins C (0),C (1), . . . ,C (n).

d(k) : longueurs des plus courts chemins C (k).

Page 46: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

algorithme FLOYD-WARSHALL(G )in : G = (S ,A,w), avec S = {1, . . . , n},

1 pour (u, v) ∈ S × S , u 6= v faire2 d(0)[u, v ] := w(u, v), (+∞ si (u, v) 6∈ A)

3 pour k := 1 à n faire4 pour u := 1 à n faire5 pour v := 1 à n faire6 d(k)[u, v ] := min{d(k−1)[u, v ],d(k−1)[u, k] + d(k−1)[k, v ]},7 fin pour,8 fin pour,9 fin pour,10 renvoyer d,

d(k)[u, k] = d(k−1)[u, k] et d(k)[k, v ] = d(k−1)[k, v ] =⇒ même calculavec une table unique d.

Page 47: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

algorithme FLOYD-WARSHALL(G )in : G = (S ,A,w), avec S = {1, . . . , n},

1 pour (u, v) ∈ S × S , u 6= v faire2 d(0)[u, v ] := w(u, v), (+∞ si (u, v) 6∈ A)

3 pour k := 1 à n faire4 pour u := 1 à n faire5 pour v := 1 à n faire6 d(k)[u, v ] := min{d(k−1)[u, v ],d(k−1)[u, k] + d(k−1)[k, v ]},7 fin pour,8 fin pour,9 fin pour,10 renvoyer d,

d(k)[u, k] = d(k−1)[u, k] et d(k)[k , v ] = d(k−1)[k , v ] =⇒ même calculavec une table unique d.

Page 48: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

algorithme FLOYD-WARSHALL(G )in : G = (S ,A,w), avec S = {1, . . . , n},

1 pour (u, v) ∈ S × S , u 6= v faire2 d[u, v ] := w(u, v), (+∞ si (u, v) 6∈ A)

3 pour k := 1 à n faire4 pour u := 1 à n faire5 pour v := 1 à n faire6 d[u, v ] := min{d[u, v ],d[u, k] + d[k , v ]},7 fin pour,8 fin pour,9 fin pour,10 renvoyer d,

Coût total O(n3).

Page 49: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

1

2

3

4

5

6

12 4

1

-10

1

-74

12

133

11

-4

-5

1 2 3 4 5 6

1 0 12 ∞ 4 ∞ ∞2 ∞ 0 -10 1 ∞ 13 3 ∞ 0 ∞ 13 ∞4 ∞ ∞ -7 0 4 125 -4 ∞ ∞ ∞ 0 116 ∞ ∞ ∞ ∞ -5 0

d (0)

1 2 3 4 5 6

1 0 12 ∞ 4 ∞ ∞2 ∞ 0 -10 1 ∞ 13 3 15 0 7 13 ∞4 ∞ ∞ -7 0 4 125 -4 8 ∞ 0 0 116 ∞ ∞ ∞ ∞ -5 0

d (1)

Page 50: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

1

2

3

4

5

6

12 4

1

-10

1

-74

12

133

11

-4

-5

1 2 3 4 5 6

1 0 12 ∞ 4 ∞ ∞2 ∞ 0 -10 1 ∞ 13 3 15 0 7 13 ∞4 ∞ ∞ -7 0 4 125 -4 8 ∞ 0 0 116 ∞ ∞ ∞ ∞ -5 0

d (1)

1 2 3 4 5 6

1 0 12 2 4 ∞ 132 ∞ 0 -10 1 ∞ 13 3 15 0 7 13 164 ∞ ∞ -7 0 4 125 -4 8 -2 0 0 96 ∞ ∞ ∞ ∞ -5 0

d (2)

Page 51: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

1

2

3

4

5

6

12 4

1

-10

1

-74

12

133

11

-4

-5

1 2 3 4 5 6

1 0 12 2 4 ∞ 132 ∞ 0 -10 1 ∞ 13 3 15 0 7 13 164 ∞ ∞ -7 0 4 125 -4 8 -2 0 0 96 ∞ ∞ ∞ ∞ -5 0

d (2)

1 2 3 4 5 6

1 0 12 2 4 15 132 -7 0 -10 -3 3 13 3 15 0 7 13 164 -4 8 -7 0 4 95 -4 8 -2 0 0 96 ∞ ∞ ∞ ∞ -5 0

d (3)

Page 52: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

1

2

3

4

5

6

12 4

1

-10

1

-74

12

133

11

-4

-5

1 2 3 4 5 6

1 0 12 2 4 15 132 -7 0 -10 -3 3 13 3 15 0 7 13 164 -4 8 -7 0 4 95 -4 8 -2 0 0 96 ∞ ∞ ∞ ∞ -5 0

d (3)

1 2 3 4 5 6

1 0 12 -3 4 8 132 -7 0 -10 -3 1 13 3 15 0 7 11 164 -4 8 -7 0 4 95 -4 8 -7 0 0 96 ∞ ∞ ∞ ∞ -5 0

d (4)

Page 53: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

1

2

3

4

5

6

12 4

1

-10

1

-74

12

133

11

-4

-5

1 2 3 4 5 6

1 0 12 -3 4 8 132 -7 0 -10 -3 1 13 3 15 0 7 11 164 -4 8 -7 0 4 95 -4 8 -7 0 0 96 ∞ ∞ ∞ ∞ -5 0

d (4)

1 2 3 4 5 6

1 0 12 -3 4 8 132 -7 0 -10 -3 1 13 3 15 0 7 11 164 -4 8 -7 0 4 95 -4 8 -7 0 0 96 -9 3 -12 -5 -5 0

d (5)

Page 54: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : Floyd-Warshall

1

2

3

4

5

6

12 4

1

-10

1

-74

12

133

11

-4

-5

1 2 3 4 5 6

1 0 12 -3 4 8 132 -7 0 -10 -3 1 13 3 15 0 7 11 164 -4 8 -7 0 4 95 -4 8 -7 0 0 96 -9 3 -12 -5 -5 0

d (5)

1 2 3 4 5 6

1 0 12 -3 4 8 132 -8 0 -11 -4 -4 13 3 15 0 7 11 164 -4 8 -7 0 4 95 -4 8 -7 0 0 96 -9 3 -12 -5 -5 0

d (6)

Page 55: Graphes IIgcolas/algo-licence/slides/pcc.pdfdes àv constituédeauplusi arcs, Objectiffinal:OPT(n 1;v) (plus courts chemins issus de s constitués de au plus n 1 arcs : OPT(n 1;v)

Plus courts chemins : coûts

source unique tous les chemins

Dijkstra∗ m + n logn m × n + n2 logn

Bellman-Ford m × n m × n2

Floyd-Warshall n3

∗ avec des tas de Fibonacci, pas d’arcs de poids négatif.