Le problème du plus court chemin Énoncé du problème et construction d’un modèle...

50
Le problème du plus court chemin oncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans circuit héorème d’optimalité de Bellman-Pontryagin Algorithme de type Futur-Passé gorithme de type Passé-Futur (version graphique) Approche vorace – Algorithme de DIJKSTRA herche du pcc entre chaque paire de sommets – Algor FLOYD & WARSHALL

Transcript of Le problème du plus court chemin Énoncé du problème et construction d’un modèle...

Page 1: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin

Énoncé du problème et construction d’un modèle

Partitionnement des sommets par niveaux d’un graphe fortement connexe sans circuit

Théorème d’optimalité de Bellman-Pontryagin

Algorithme de type Futur-Passé

Algorithme de type Passé-Futur (version graphique)

Approche vorace – Algorithme de DIJKSTRA

Recherche du pcc entre chaque paire de sommets – Algorithmede FLOYD & WARSHALL

Page 2: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 2

Énoncé du problème :

Considérons n villes V1, V2, …, Vn reliées entre elles par un réseauroutier.

Bob séjournant en V1 désire se rendre à la ville Vn. En examinant leréseau routier reliant ces 2 villes et, parmi toutes les possibilités quis’offrent à lui, il retient quelques villes intermédiaires V2, V3, …, Vn-1

par lesquelles il pourrait passer.

Bob a un budget limité et désire se rendre de V1 à Vn par le plus courtchemin sans nécessairement passer par toutes les villes intermédiaires.

Par quelles villes, Bob doit-il passer pour minimiser la distancetotale parcourue ?

Page 3: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 3

Construction d’un modèle :

Le réseau de transport de Bob peut se traduire facilement sous laforme d’un graphe :

V1

V2

V3

V4

Vn-2

Vn-1

Vn

où les sommets représentent les villes et où les arcs représentent lesroutes possibles pour aller d’une ville à l’autre.

Note : En l’absence d’arcs entre 2 villes, cela signifie qu’il n’y a pasde route directe entre celles-ci.

Page 4: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 4

Matrice associée au graphe :

Nous définissons un graphe orienté G = (S, U)où

U = {(x, y) S x S | il existe une route directe allant de x à y},l’ensemble des arcs du graphe.

S = {s1, s2, …, sn}, l’ensemble des sommets du graphe,

Une matrice A = (aij), i = 1, 2, …, n associée au graphe Gj = 1, 2, …, n

est définie comme suit :

1 si (si, sj) U aij =

0 autrement.

Page 5: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 5

Exemple :

1

2

6

3

5

4

1 0 1 1 0 0 02 0 0 1 1 0 03 0 0 0 1 1 04 1 0 0 0 1 05 1 1 0 0 0 16 0 0 0 0 0 0

1 2 3 4 5 6

Matrice associée à G :

Page 6: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 6

Matrice des distances :

Soit D = (dij) la matrice des distances entre chacune des villes où

dij représente la distance de la route reliant directement laville Vi à la ville Vj.

On suppose par convention que :

dij = + si i j et (si, sj) U 0 si i = j.

Note : Cette matrice des distances peut représenter une mesure detemps, de coût, de probabilité ou autre chose.

Page 7: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 7

Exemple d’un graphe arc-valué :

A

B

G

E

C

F

D

H

9

8

3 7

137

4

3

4

6

2

6

2

Page 8: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 8

Exemple d’un graphe arc-valué :

Soit le réseau routier suivant et le graphe correspondant,

Page 9: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 9

Formulation du problème :

Min dij zij

i = 1, 2, …, nj = 1, 2, …, ntel que (si, sj) U

sujet à zij

j = 1, 2, …, ntel que (si, sj) U

zki

k = 1, 2, …, ntel que (sk, si) U

- = 0 i.

zn1 = 1

zij 0 i = 1, 2, …, n; j = 1, 2, …, n tel que (si, sj) U.

En ajoutant un arc fictif (sn, s1), on obtient :

Cela équivaut à envoyer une unité de flot de 1 à n au moindre coût.C’est donc un cas particulier du problème de flot à coût minimal.

Page 10: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 10

Remarque :

Nous sommes amenés à résoudre 3 types de problèmes impliquantdes plus courts chemins :

(i) un pcc entre un sommet i et un sommet j;(ii) un pcc entre un sommet i et tous les autres sommets du graphe;(iii) un pcc entre chaque paire de sommets dans un graphe.

Les méthodes proposées pour résoudre le premier problème sontappropriées pour les 2 autres problèmes également.

On peut utiliser la méthode du simplexe en programmation linéairepour résoudre ce problème mais il existe des méthodes beaucoupplus efficaces.

Page 11: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 11

Rappel de quelques définitions sur la structure de graphe :

Chemin : Une suite d’arcs u1, u2, …, uk telle que l’extrémité terminalede chaque arc coïncide avec l’extrémité initiale de l’arcsuivant dans la suite.

Chemin de longueur k : Un chemin comprenant k arcs.

Exemple : Chemin de longueur 5 du graphe G(1,2) – (2, 3) – (3, 5) – (5, 2) – (2, 4).

Circuit : Un chemin de longueur finie dont le sommet origine estidentique au sommet extrémité du chemin.

Exemple : Circuit de longueur 4 du graphe G (2, 3) – (3, 5) – (5, 1) – (1, 2).

Page 12: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 12

Si un graphe orienté contient un circuit dont la longueur est < 0(un cycle négatif), il se peut que le plus court chemin n’existe pas.

1 5

2

4

3

61

3

-5 1

2-1

On exclut d’emblée ce type de graphe de la discussion subséquente.

Page 13: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 13

Graphe non orienté :

U désigne plutôt un ensemble d’arêtes i.e.un ensemble de paires non ordonnées de sommets de S.

Exemple : (3, 2) – (3, 5) – (1,5) – (2, 1) sont des arêtes du graphe.

Chaîne d’un graphe non orienté :

Une suite d’arêtes distinctes u1, u2, …, uk avec la propriété qu’ilexiste k + 1 sommets x1, x2, …, xk+1 tels que ui (xi, xi+1), 1 i k.

Exemple : (3, 2) – (3, 5) – (1,5) – (2, 1) est une chaîne.

Graphe connexe :

Graphe non orienté dans lequel il est toujours possible de relier entreeux 2 sommets quelconques par une chaîne.

Cycle : Une chaîne où x1 = xk+1.

Page 14: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 14

Graphe fortement connexe :

Graphe orienté où il existe tjrs un chemin allant de x à y x, y S.

Nous allons nous intéresser dans ce qui suit aux graphesfortement connexes sans circuit.

Résolution du plus court chemin sur un graphe non orienté :

Cela se ramène au même problème que celui posé sur un grapheorienté, à condition que les dij 0 pour tout (i,j).

Il s’agit de remplacer chaque arête (i, j) dans le graphe par 2 arcs(i, j) et (j, i) portant tout deux la même mesure dij = dji.

Si l’un des dij était < 0, ceci créerait des cycles négatifs.

Page 15: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 15

Relation d’ordre strict R

Soit un graphe orienté G fortement connexe et sans circuit,soit x, y S et x y,considérons la relation suivante :

(R) x y il existe un chemin de longueur non nulle de x vers y.

Note : R est dite aussi relation d’antériorité :si x y , on dira que x est un ancêtre de y et

que y est un descendant de x.

R est transitive : x y et y z x z.

R est antisymétrique : x y non (y x).

Page 16: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 16

Partitionnement des sommets par niveaux d’un graphe fortementconnexe sans circuit

Tous les éléments d’un même niveau n’ont pas d’ancêtres dans leniveau qui suit, ni de descendants dans le niveau qui précède.

Les éléments du premier niveau n’ont pas d’ancêtres et ceux dudernier niveau n’ont pas de descendants.

L’ordre des sommets d’un même niveau est indifférent i.e.les sommets d’un même niveau ne sont pas reliés entre eux par desarcs.

Une décomposition par niveaux existe toujours maiselle n’est pas nécessairement unique.

Page 17: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 17

Illustration de la méthode de partitionnement des sommets parniveaux d’un graphe fortement connexe sans circuit

Exemple :

1

8

7

4

3

2

6

5

Ai la iième ligne de la matrice associée au graphe.

Page 18: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 18

V0 – A5 =V1 – A2 =V2 – A6 =

V3 – A1 – A3 =V4 – A7 =V5 – A4 =

Page 19: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 19

Procédé :

Déterminons d’abord les sommets qui n’ont pas d’ancêtres :

V0 = A1 + A2 + … + A8.

On constate que le sommet 5 n’admet aucun arc du type (- , 5).Le sommet 5 forme donc le niveau I.

Pour déterminez le niveau II, il faut chercher tous les sommetsdont le seul ancêtre est 5 :

V1 = V0 – A5.

Le sommet 2 n’a pas d’autres ancêtres que le sommet 5.Le sommet 2 forme donc le niveau II.

Comme on peut le constater, pour obtenir les sommets d’un niveau,il suffit d’enlever au vecteur précédent les lignes associées auxsommets du niveau précédent.

Page 20: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

20

Le graphe peut alors se mettre sous la forme :

Note :

Le sommet 1 peut être indifféremment placé dans l’un quelconquedes niveaux IV, V ou VI.

En supposant les sommets 1 et 3 au niveau IV, on peut choisir commeordonnancement : 5 – 2 – 6 – 1 – 3 – 7 – 4 – 8 ou encore

5 – 2 – 6 – 3 – 1 – 7 – 4 – 8.

Page 21: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 21

Note :

Le PCC de V1 à V8 se résume au graphe :

81 Solution triviale.

Le PCC de V2 à V8 se résume au graphe suivant(il faut négliger V5 et les arcs qui en sont issus) :

18

7 4

3

2 6

Page 22: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 22

Théorème d’optimalité de Bellman-Pontryagin :

Il s’énonce sous l’une des 2 formes suivantes :

Passé - Futur

Tout chemin reliant la ville V1 à la ville Vn est optimal sitout chemin partiel de V1 à Vk issu de ce chemin est lui-mêmeoptimal de V1 à Vk et ce pour tous les indices k de ce chemin.

Futur - Passé

Tout chemin reliant la ville V1 à la ville Vn est optimal sitout chemin partiel de Vk à Vn issu de ce chemin est lui-mêmeoptimal de Vk à Vn et ce pour tous les indices k de ce chemin.

Page 23: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 23

A

B

G

E

C

F

D

H

9

8

3 7

137

4

3

4

6

2

6

2

Reprenons l’exemple présenté antérieurement :

En énumérant tous les chemins possibles de A à H, on en déduit quela distance minimale est 17 et que le PCC est AEFH.

Note : On peut vérifier que le théorème est satisfait pour E et F.

Page 24: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 24

Présentation d’un algorithme de type Futur-Passé :

Renumérotons les villes selon un ordonnancement obtenu à l’aide del’approche précédente.

A B G E C D F H. . . . . . . .. . . . . . . .. . . . . . . .1 2 3 4 5 6 7 8

1

2

6

5

3

7

4

8

9

8

3

613

7

4

3

4

2

2

6

7

Page 25: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 25

Il s’agit d’énumérer les chemins de longueur au plus k = 1, puis auplus k = 2, et ainsi de suite, dont l’extrémité terminale est la ville n.

Posons vk(i) longueur du PCC de i à n ayant au plus k arcs, i = 1, 2, …, n.

k = 1 v1(i) = din, i = 1, 2, …, n - 1.

Remarque : vk(n) = 0, k = 1, 2, …, n.

Posons pk(i) indicateur servant à retracer le PCC de i à nayant au plus k arcs, i = 1, 2, …, n.

p1(i) = i, i = 1, 2, …, n.

k > 1 vk(i) = MIN (dij + vk-1(j) ) i = 1, 2, …, n - 1.1jn

pk(i) = la valeur j pour laquelle MIN est atteint.

Page 26: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 26

À quel moment s’arrête-t-on ?

Étant donné qu’il est toujours possible d’ordonnancer un grapheconnexe et sans circuit et de classer ses sommets par niveaux,s’il y a N niveaux,

le sommet 1 appartient au premier niveau,le sommet n au dernier niveau,les chemins reliant le sommet 1 au sommet n sont au plusde longueur N – 1.

En pratique, on arrête à l’itération k où vk(i) = vk-1(i) i.

Comment retracer le chemin optimal de i à n ?

(i, pk-1(i), pk-2(pk-1(i)), …, p1(p2(p3(… pk-1(i))), n)

en éliminant les valeurs identiques.

Page 27: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Considérons l’exemple précédent :

i 1 2 3 4 5 6 7 8v1(i) 6 2 0p1(i) 1 2 3 4 5 6 7 8

v2(i) 15 9 8 6 2 0p2(i) 1 2 7 7 7 6 7 8

v3(i) 17 11 15 9 8 6 2 0p3(i) 4 5 7 7 7 6 7 8

v4(i) 17 11 15 9 8 6 2 0p4(i) 4 5 7 7 7 6 7 8

L’algorithme s’arrête car v4(i) = v3(i) i.

Exemple : Chemin optimal du sommet 1 au sommet 8 :(1 – 4 – 7 – 8) avec une longueur = 17.

Page 28: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 28

Énoncé de l’algorithme de Bellman – Kalaba (Type Futur – Passé)

(0) Renuméroter les sommets suivant l’ordonnancement précédent.Réécrire la matrice des distances.

(1) Poser v1(i) = din, i = 1, 2, …, n,p1(i) = i, i = 1, 2, …, n.

Poser k = 2.vk(i) = MIN (dij + vk-1(j) ) i = 1, 2, …, n - 1.

1jn

pk(i) = la valeur j pour laquelle MIN est atteint.

(2) Faire

Poser vk(n) = 0, pk(n) = n.

(3) Si vk(i) = vk-1(i) i alors aller à (4)sinon faire k = k + 1

aller à (2).(4) vk-1(1) représente la valeur optimale du problème posé.

Page 29: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 29

(5) Poser t = k – 1 et x(t) = 1.

Il reste à retracer le chemin optimal.

(6) Faire x(t – 1) = pt(x(t)).

(7) Si t > 1alors faire t = t – 1,aller à (6)

sinon le chemin optimal est le suivant :(1, x(k-2), x(k-3), …, x(2), x(1), n)

où on élimine tous les sommets qui se répètentsauf un.Il reste à renuméroter les indices comme ilsétaient initialement.

FIN

Page 30: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 30

Remarque :

Il n’est pas nécessaire d’ordonnancer les sommets du grapheavant d’appliquer l’algorithme, mais cela est préférable, car il nouspermet d’avoir des sous la diagonale de la matrice des distances.

Cela permet de simplifier l’algorithme précédent !

1 2 3 4 5 6 7 81 0 9 3 8 2 0 4 3 3 0 7 13 4 0 2 7 5 0 4 6 6 0 67 0 28 0

Page 31: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 31

Énoncé de l’algorithme de type Passé – Futur

(0) Renuméroter les sommets suivant l’ordonnancement précédent.Réécrire la matrice des distances.

(1) Poser u1(j) = d1j, j = 1, 2, …, n,p1(j) = j, j = 1, 2, …, n.

Poser k = 2.

uk(j) = MIN (dij + uk-1(i) ) j = 2, 3, …, n.1in

pk(j) = la valeur i pour laquelle MIN est atteint.

(2)

faire

Poser uk(1) = 0, pk(1) = 1.

(3) Si uk(j) = uk-1(j) j alors aller à (4)sinon faire k = k + 1, aller à (2).

Soit uk(j) longueur du PCC de 1 à j ayant au plus k arcs, j = 1, 2, …, n.

Page 32: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 32

(5) Poser t = k – 1 et x(t) = n.

Il reste à retracer le chemin optimal.

(6) Faire x(t – 1) = pt(x(t)).

(7) Si t > 1alors faire t = t – 1,aller à (6)

sinon le chemin optimal est le suivant :(1, x(1), x(2), …, x(k - 2), n)

où on élimine tous les sommets qui se répètentsauf un.Il reste à renuméroter les indices comme ilsétaient initialement.

FIN

(4) uk-1(n) représente la valeur optimale du problème posé.

Page 33: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 33

Critère d’arrêt de cet algorithme :

u1(j) u2(j) u3(j) u4(j) … uk(j) longueur du pcc entre 1 et j j.

Si le graphe contient au moins un chemin entre 1 et j et il n’y a pasde cycles négatifs, alors un pcc contiendrait au plus n-1 arcs ce quiimplique que un-1(j) longueur du pcc entre 1 et j j.

En fait, l’algorithme arrête lorsque uk(j) = uk-1(j) j.

Page 34: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Considérons l’exemple précédent :

i 1 2 3 4 5 6 7 8u1(j) 0 9 3 8 p1(j) 1 2 3 4 5 6 7 8

u2(j) 0 9 3 8 10 15 p2(j) 1 2 3 4 4 6 4 8

u3(j) 0 9 3 8 10 14 15 17p3(j) 1 2 3 4 4 5 4 7

u4(j) 0 9 3 8 10 14 15 17p4(j) 1 2 3 4 4 5 4 7

L’algorithme s’arrête car u4(j) = u3(j) j.

Exemple : Chemin optimal du sommet 1 au sommet 8 :(1 – 4 – 7 – 8) avec une longueur = 17.

Page 35: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 35

Version « graphique » de l’algorithme de type Passé – Futur

Il est possible d’appliquer directement ces algorithmes sur le graphelui-même au moyen d’un marquage des sommets.

À chaque sommet j est associé une double case :

Valeur minimale des chemins allant du sommet 1 à ce sommet j.

Indicateur servant à retracer le PCC de 1 à j.

Reprenons le même exemple.

Page 36: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 36

1

2

6

5

3

7

4

8

9

8

3

613

7

4

3

4

2

2

6

7

k = 1

0

98

3

1

2

3

4 5

6

8

7

Pour déterminer les valeurs minimales associées aux sommets, il estpréférable de procéder à leurs évaluations selon un ordonnancementconnu : 1 – 2 – 3 – 4 – 5 – 6 – 7 – 8.

Page 37: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 37

1

2

6

5

3

7

4

8

9

8

3

613

7

4

3

4

2

2

6

7

k = 2

0

98

3

10

14

17

15

1

2

3

4 4

5

7

4

k = 3 Idem.

Page 38: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 38

Reprenons le même exemple sans ordonnancement des sommets.

A

B

G

E

C

F

D

H

9

8

3 7

137

4

3

4

6

2

6

2

L’ordre A - B - C - D - E - F - G – H sera respecté.

0 A

9 B

3 G

8 E

C

D

H

F

k = 1

Page 39: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 39

A

B

G

E

C

F

D

H

9

8

3 7

137

4

3

4

6

2

6

2

0 A

9 B

3 G

8 E

10 E

14 C

17 F

15 E

k = 2

k = 3 Idem.

Note : Lorsqu’il n’existe pas de cycles de longueur négative, cetteméthode convient.

Page 40: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 40

Arborescence des plus courts chemins avec comme origine A

A

B

G

E

C

F

D

H

9

8

3 7

137

4

3

4

6

2

6

2

0 A

9 B

3 G

8 E

10 E

14 C

17 F

15 E

À partir des résultats obtenus, on peut construire facilement une tellearborescence.

Page 41: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

41

Approche vorace – Algorithme de DIJKSTRA (dij > 0)

Posons LC(s) longueur du pcc entre 1 et s dont les sommets intermédiaires font partie de C, s S.

pC(s) le sommet qui précède s dans ce pcc.

(1) Poser C = {1}. LC(i) = d1i, i = 2, …, n 0, i = 1.

Poser pC(s) = 1 s 1 S.

(2) Trouver k S – C tel que MIN LC(j) est atteint.j S – C

Poser C = C {k}.

(3) Si C <> S alorsposer LC(j) = MIN{LC(j) , LC(k) + dkj} j S–Csi MIN est atteint à LC(k) + dkj, pC(j) = k j S–C

Retournez à l’étape 2.

Page 42: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

42

Théorème :

À chaque itération de l’algorithme, lorsque k est ajouté à C,LC(k) est la longueur du pcc de 1 à k, sans restriction.

Exemple :

1

2

3 4 7

5 6

2 25

4 1

43

5

7

17

5

Note : L’algorithme fournit le pcc de 1 à tout autre sommet. Si l’oncherche le pcc entre 1 et un sommet s, alors on peut arrêterl’algorithme au moment où s entre dans C.

Page 43: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 43

1 2 3 4 5 6 7 C

{1}0 2 5 4 1 1 1 1 1 1

LC

pC

{1, 2}0 2 4 9 4 1 2 2 1 1 1

LC

pC

{1, 2, 3}0 2 4 9 4 7 1 2 2 1 3 1

LC

pC

{1, 2, 3, 5}0 2 4 9 4 7 1 2 2 1 3 1

LC

pC

{1, 2, 3, 5, 6}0 2 4 8 4 7 14

1 2 6 1 3 6LC

pC

Page 44: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 44

{1, 2, 3, 5, 6, 4}0 2 4 8 4 7 13

1 2 6 1 3 4LC

pC

pcc entre 1 et 7 :

7, pC(7), pC(4), pC(6), …, 1 ou encore

7, 4, 6, 3, 2, 1.

Le tracé du pcc est obtenu en procédant à reculons.

Note : S’il n’y a pas de chemin entre 1 et j dans le graphe, alorsLC(j) = à la fin de l’algorithme.

Page 45: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 45

Recherche du pcc entre chaque paire de sommets

L’algorithme de FLOYD – WARSHALL admet des arcs delongueur négative mais pas de cycles négatifs.

On pourrait appliquer l’un des algorithmes précédents n fois pourobtenir ce résultat mais l’algorithme suivant est plus efficace.

PosonsLij

(m) = longueur d’un pcc entre i et j, sujet à la condition quele chemin ne passe pas par les sommets m, m+1, …, n(i et j exceptés),

nous avons l’équation de récurrence suivante :

Lij(m+1) = min {Lij

(m), Lim(m) + Lmj

(m)}.

Le pcc ne passe pas par m. Le pcc passe par m.

Page 46: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 46

Énoncé de l’algorithme FLOYD - WARSHALL

Poser Lij(1) = dij, i,j = 1, 2, …, n.

pij(1) = j, j = 1, 2, …, n.Poser k = 1.

(2)

(3) Si k == n alors aller à (4)sinon faire k = k + 1,

aller à (2).

(1)

Faire Lij(k+1) = min {Lij

(k), Lik(k) + Lkj

(k)},Si le pcc passe par k alors pij(k + 1) = k

sinon pij(k + 1) = pij(k)

i,j = 1, 2, …, n,

Page 47: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 47

(4) Poser x(1) = j, x(2) = pij(n+1) et t = 3.

Il reste à retracer le chemin optimal entre i et j.

(5) Faire x(t) = pix(t-1)(n+1).

(6) Si t <> n - 1alors faire t = t + 1,

aller à (5)sinon le chemin optimal est le suivant :

(i = x(t+1), x(t), …, x(1) = j).

FIN

Page 48: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Exemple :

1

2

3

4

4

31

-2

4

L(1)

0 4 0 1 4-2 0 1 3 0

p(1)1 2 3 41 2 3 41 2 3 41 2 3 4

L(2)

0 4 0 1 4-2 2 0 1 3 0

p(2)1 2 3 41 2 3 41 1 3 41 2 3 4

L(3)

0 4 5 8 0 1 4-2 2 0 1 3 4 0

p(3)1 2 2 21 2 3 41 1 3 41 2 2 4

L(4)

0 4 5 6-1 0 1 2-2 2 0 12 3 4 0

p(4)1 2 2 33 2 3 31 1 3 23 2 2 4

1

Page 49: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 49

L(5)

0 4 5 6-1 0 1 2-2 2 0 12 3 4 0

p(5)1 2 2 33 2 3 31 1 3 23 2 2 4

xChemin optimal entre 1 et 4 :

1 3 2 4

Page 50: Le problème du plus court chemin Énoncé du problème et construction d’un modèle Partitionnement des sommets par niveaux d’un graphe fortement connexe sans.

Le problème du plus court chemin 50

Conclusion

Ce sujet a été traité dans la plupart des livres portant sur larecherche opérationnelle.

Toutefois, je vous réfère au livre suivant :

« Ronald L. Rardin, Optimization in Operations Research.Prentice Hall, 1998, 919p. »