La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

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 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 – Algorithme de FLOYD & WARSHALL

2 Le problème du plus court chemin2 Énoncé du problème : Considérons n villes V 1, V 2, …, V n reliées entre elles par un réseau routier. Bob séjournant en V 1 désire se rendre à la ville V n. En examinant le réseau routier reliant ces 2 villes et, parmi toutes les possibilités qui s’offrent à lui, il retient quelques villes intermédiaires V 2, V 3, …, V n-1 par lesquelles il pourrait passer. Bob a un budget limité et désire se rendre de V 1 à V n par le plus court chemin sans nécessairement passer par toutes les villes intermédiaires. Par quelles villes, Bob doit-il passer pour minimiser la distance totale parcourue ?

3 Le problème du plus court chemin3 Construction d’un modèle : Le réseau de transport de Bob peut se traduire facilement sous la forme d’un graphe : V1V1 V2V2 V3V3 V4V4 V n-2 V n-1 VnVn où les sommets représentent les villes et où les arcs représentent les routes possibles pour aller d’une ville à l’autre. Note : En l’absence d’arcs entre 2 villes, cela signifie qu’il n’y a pas de route directe entre celles-ci.

4 Le problème du plus court chemin4 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 = {s 1, s 2, …, s n }, l’ensemble des sommets du graphe, Une matrice A = (a ij ),i = 1, 2, …, nassociée au graphe G j = 1, 2, …, n est définie comme suit : 1 si (s i, s j )  U a ij = 0 autrement.

5 Le problème du plus court chemin5 Exemple : Matrice associée à G :

6 Le problème du plus court chemin6 Matrice des distances : Soit D = (d ij ) la matrice des distances entre chacune des villes où d ij représente la distance de la route reliant directement la ville V i à la ville V j. On suppose par convention que : d ij = +  si i  j et (s i, s j )  U 0 si i = j. Note :Cette matrice des distances peut représenter une mesure de temps, de coût, de probabilité ou autre chose.

7 Le problème du plus court chemin7 Exemple d’un graphe arc-valué : A B G E C F D H

8 Le problème du plus court chemin8 Exemple d’un graphe arc-valué : Soit le réseau routier suivant et le graphe correspondant,

9 Le problème du plus court chemin9 Formulation du problème : Min  d ij z ij i = 1, 2, …, n j = 1, 2, …, n tel que (s i, s j )  U sujet à  z ij j = 1, 2, …, n tel que (s i, s j )  U  z ki k = 1, 2, …, n tel que (s k, s i )  U - = 0  i. z n1 = 1 z ij  0 i = 1, 2, …, n; j = 1, 2, …, n tel que (s i, s j )  U. En ajoutant un arc fictif (s n, s 1 ), 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.

10 Le problème du plus court chemin10 Remarque : Nous sommes amenés à résoudre 3 types de problèmes impliquant des 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 sont appropriées pour les 2 autres problèmes également. On peut utiliser la méthode du simplexe en programmation linéaire pour résoudre ce problème mais il existe des méthodes beaucoup plus efficaces.

11 Le problème du plus court chemin11 Rappel de quelques définitions sur la structure de graphe : Chemin : Une suite d’arcs u 1, u 2, …, u k telle que l’extrémité terminale de chaque arc coïncide avec l’extrémité initiale de l’arc suivant 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 est identique au sommet extrémité du chemin. Exemple :Circuit de longueur 4 du graphe G (2, 3) – (3, 5) – (5, 1) – (1, 2).

12 Le problème du plus court chemin12 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 On exclut d’emblée ce type de graphe de la discussion subséquente.

13 Le problème du plus court chemin13 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 u 1, u 2, …, u k avec la propriété qu’il existe k + 1 sommets x 1, x 2, …, x k+1 tels que u i  (x i, x i+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 entre eux 2 sommets quelconques par une chaîne. Cycle : Une chaîne où x 1 = x k+1.

14 Le problème du plus court chemin14 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 graphes fortement 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 graphe orienté, à condition que les d ij  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 d ij = d ji. Si l’un des d ij était < 0, ceci créerait des cycles négatifs.

15 Le problème du plus court chemin15 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).

16 Le problème du plus court chemin16 Partitionnement des sommets par niveaux d’un graphe fortement connexe sans circuit Tous les éléments d’un même niveau n’ont pas d’ancêtres dans le niveau 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 du dernier 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 des arcs. Une décomposition par niveaux existe toujours mais elle n’est pas nécessairement unique.

17 Le problème du plus court chemin17 Illustration de la méthode de partitionnement des sommets par niveaux d’un graphe fortement connexe sans circuit Exemple : A i  la i ième ligne de la matrice associée au graphe.

18 Le problème du plus court chemin18 V 0 – A 5 = V 1 – A 2 = V 2 – A 6 = V 3 – A 1 – A 3 = V 4 – A 7 = V 5 – A 4 =

19 Le problème du plus court chemin19 Procédé : Déterminons d’abord les sommets qui n’ont pas d’ancêtres : V 0 = A 1 + A 2 + … + A 8. 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 sommets dont le seul ancêtre est 5 : V 1 = V 0 – A 5. 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 aux sommets du niveau précédent.

20 20 Le graphe peut alors se mettre sous la forme : Note : Le sommet 1 peut être indifféremment placé dans l’un quelconque des niveaux IV, V ou VI. En supposant les sommets 1 et 3 au niveau IV, on peut choisir comme ordonnancement :5 – 2 – 6 – 1 – 3 – 7 – 4 – 8ou encore 5 – 2 – 6 – 3 – 1 – 7 – 4 – 8.

21 Le problème du plus court chemin21 Note : Le PCC de V 1 à V 8 se résume au graphe : 8 1 Solution triviale. Le PCC de V 2 à V 8 se résume au graphe suivant (il faut négliger V 5 et les arcs qui en sont issus) :

22 Le problème du plus court chemin22 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 V 1 à la ville V n est optimal si tout chemin partiel de V 1 à V k issu de ce chemin est lui-même optimal de V 1 à V k et ce pour tous les indices k de ce chemin. Futur - Passé Tout chemin reliant la ville V 1 à la ville V n est optimal si tout chemin partiel de V k à V n issu de ce chemin est lui-même optimal de V k à V n et ce pour tous les indices k de ce chemin.

23 Le problème du plus court chemin23 A B G E C F D H Reprenons l’exemple présenté antérieurement : En énumérant tous les chemins possibles de A à H, on en déduit que la 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.

24 Le problème du plus court chemin24 Présentation d’un algorithme de type Futur-Passé : Renumérotons les villes selon un ordonnancement obtenu à l’aide de l’approche précédente. ABGECDFH ABGECDFH

25 Le problème du plus court chemin25 Il s’agit d’énumérer les chemins de longueur au plus k = 1, puis au plus k = 2, et ainsi de suite, dont l’extrémité terminale est la ville n. Posons v k (i)  longueur du PCC de i à n ayant au plus k arcs,  i = 1, 2, …, n. k = 1 v 1 (i) = d in,  i = 1, 2, …, n - 1. Remarque : v k (n) = 0,  k = 1, 2, …, n. Posons p k (i)  indicateur servant à retracer le PCC de i à n ayant au plus k arcs,  i = 1, 2, …, n. p 1 (i) = i,  i = 1, 2, …, n. k > 1 v k (i) = MIN (d ij + v k-1 (j) )  i = 1, 2, …, n  j  n p k (i) = la valeur j pour laquelle MIN est atteint.

26 Le problème du plus court chemin26 À quel moment s’arrête-t-on ? Étant donné qu’il est toujours possible d’ordonnancer un graphe connexe 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 plus de longueur N – 1. En pratique, on arrête à l’itération k où v k (i) = v k-1 (i)  i. Comment retracer le chemin optimal de i à n ? (i, p k-1 (i), p k-2 (p k-1 (i)), …, p 1 (p 2 (p 3 (… p k-1 (i))), n) en éliminant les valeurs identiques.

27 Considérons l’exemple précédent : i v 1 (i)      620 p 1 (i) v 2 (i)   p 2 (i) v 3 (i) p 3 (i) v 4 (i) p 4 (i) L’algorithme s’arrête car v 4 (i) = v 3 (i)  i. Exemple :Chemin optimal du sommet 1 au sommet 8 : (1 – 4 – 7 – 8)avec une longueur = 17.

28 Le problème du plus court chemin28 É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)Poserv 1 (i) = d in,  i = 1, 2, …, n, p 1 (i) = i,  i = 1, 2, …, n. Poser k = 2. v k (i) = MIN (d ij + v k-1 (j) )  i = 1, 2, …, n  j  n p k (i) = la valeur j pour laquelle MIN est atteint. (2)Faire Poser v k (n) = 0, p k (n) = n. (3) Si v k (i) = v k-1 (i)  ialorsaller à (4) sinonfaire k = k + 1 aller à (2). (4) v k-1 (1) représente la valeur optimale du problème posé.

29 Le problème du plus court chemin29 (5) Poser t = k – 1 et x(t) = 1. Il reste à retracer le chemin optimal. (6) Faire x(t – 1) = p t (x(t)). (7) Si t > 1alorsfaire t = t – 1, aller à (6) sinonle 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ètent sauf un. Il reste à renuméroter les indices comme ils étaient initialement. FIN

30 Le problème du plus court chemin30 Remarque : Il n’est pas nécessaire d’ordonnancer les sommets du graphe avant d’appliquer l’algorithme, mais cela est préférable, car il nous permet d’avoir des  sous la diagonale de la matrice des distances. Cela permet de simplifier l’algorithme précédent !  2  0  43  3   07  13  4   02  7  5   046  6   0  6 7    02 8    0

31 Le problème du plus court chemin31 É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)Poseru 1 (j) = d 1j,  j = 1, 2, …, n, p 1 (j) = j,  j = 1, 2, …, n. Poser k = 2. u k (j) = MIN (d ij + u k-1 (i) )  j = 2, 3, …, n. 1  i  n p k (j) = la valeur i pour laquelle MIN est atteint. (2) faire Poser u k (1) = 0, p k (1) = 1. (3) Si u k (j) = u k-1 (j)  jalorsaller à (4) sinonfaire k = k + 1,aller à (2). Soit u k (j)  longueur du PCC de 1 à j ayant au plus k arcs,  j = 1, 2, …, n.

32 Le problème du plus court chemin32 (5) Poser t = k – 1 et x(t) = n. Il reste à retracer le chemin optimal. (6) Faire x(t – 1) = p t (x(t)). (7) Si t > 1alorsfaire t = t – 1, aller à (6) sinonle chemin optimal est le suivant : (1, x(1), x(2), …, x(k - 2), n) où on élimine tous les sommets qui se répètent sauf un. Il reste à renuméroter les indices comme ils étaient initialement. FIN (4) u k-1 (n) représente la valeur optimale du problème posé.

33 Le problème du plus court chemin33 Critère d’arrêt de cet algorithme : u 1 (j)  u 2 (j)  u 3 (j)  u 4 (j)  … u k (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 pas de cycles négatifs, alors un pcc contiendrait au plus n-1 arcs ce qui implique que u n-1 (j)  longueur du pcc entre 1 et j  j. En fait, l’algorithme arrête lorsque u k (j) = u k-1 (j)  j.

34 Considérons l’exemple précédent : i u 1 (j)    p 1 (j) u 2 (j)  15  p 2 (j) u 3 (j) p 3 (j) u 4 (j) p 4 (j) L’algorithme s’arrête car u 4 (j) = u 3 (j)  j. Exemple :Chemin optimal du sommet 1 au sommet 8 : (1 – 4 – 7 – 8)avec une longueur = 17.

35 Le problème du plus court chemin35 Version « graphique » de l’algorithme de type Passé – Futur Il est possible d’appliquer directement ces algorithmes sur le graphe lui-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.

36 Le problème du plus court chemin k =     Pour déterminer les valeurs minimales associées aux sommets, il est préférable de procéder à leurs évaluations selon un ordonnancement connu : 1 – 2 – 3 – 4 – 5 – 6 – 7 – 8.

37 Le problème du plus court chemin k = k = 3 Idem.

38 Le problème du plus court chemin38 Reprenons le même exemple sans ordonnancement des sommets. A B G E C F D H L’ordre A - B - C - D - E - F - G – H sera respecté. 0 A 9B 3G 8 E  C  D  H  F k = 1

39 Le problème du plus court chemin39 A B G E C F D H A 9B 3G 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, cette méthode convient.

40 Le problème du plus court chemin40 Arborescence des plus courts chemins avec comme origine A A B G E C F D H A 9B 3G 8 E 10 E 14 C 17 F 15 E À partir des résultats obtenus, on peut construire facilement une telle arborescence.

41 41 Approche vorace – Algorithme de DIJKSTRA (d ij > 0) Posons L C (s)  longueur du pcc entre 1 et s dont les sommets intermédiaires font partie de C,  s  S. p C (s)  le sommet qui précède s dans ce pcc. (1) PoserC = {1}. L C (i) = d 1i,i = 2, …, n 0,i = 1. Poser p C (s) = 1  s  1  S. (2) Trouver k  S – C tel queMIN L C (j)est atteint. j  S – C Poser C = C  {k}. (3) Si C <> S alors poser L C (j) = MIN{L C (j), L C (k) + d kj }  j  S–C si MIN est atteint à L C (k) + d kj, p C (j) = k  j  S–C Retournez à l’étape 2.

42 42 Théorème : À chaque itération de l’algorithme, lorsque k est ajouté à C, L C (k) est la longueur du pcc de 1 à k, sans restriction. Exemple : Note :L’algorithme fournit le pcc de 1 à tout autre sommet. Si l’on cherche le pcc entre 1 et un sommet s, alors on peut arrêter l’algorithme au moment où s entre dans C.

43 Le problème du plus court chemin C {1} 025  4  LCLC pCpC {1, 2}  LCLC pCpC {1, 2, 3}  LCLC pCpC {1, 2, 3, 5}  LCLC pCpC {1, 2, 3, 5, 6} LCLC pCpC

44 Le problème du plus court chemin44 {1, 2, 3, 5, 6, 4} LCLC pCpC pcc entre 1 et 7 : 7, p C (7), p C (4), p C (6), …, 1ou 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, alors L C (j) =  à la fin de l’algorithme.

45 Le problème du plus court chemin45 Recherche du pcc entre chaque paire de sommets L’algorithme de FLOYD – WARSHALL admet des arcs de longueur négative mais pas de cycles négatifs. On pourrait appliquer l’un des algorithmes précédents n fois pour obtenir ce résultat mais l’algorithme suivant est plus efficace. Posons L ij (m) = longueur d’un pcc entre i et j, sujet à la condition que le chemin ne passe pas par les sommets m, m+1, …, n (i et j exceptés), nous avons l’équation de récurrence suivante : L ij (m+1) = min {L ij (m), L im (m) + L mj (m) }. Le pcc ne passe pas par m.Le pcc passe par m.

46 Le problème du plus court chemin46 Énoncé de l’algorithme FLOYD - WARSHALL PoserL ij (1) = d ij,  i,j = 1, 2, …, n. p ij (1) = j,  j = 1, 2, …, n. Poser k = 1. (2) (3) Si k == nalorsaller à (4) sinonfaire k = k + 1, aller à (2). (1) Faire L ij (k+1) = min {L ij (k), L ik (k) + L kj (k) }, Si le pcc passe par kalors p ij (k + 1) = k sinon p ij (k + 1) = p ij (k)  i,j = 1, 2, …, n,

47 Le problème du plus court chemin47 (4) Poser x(1) = j, x(2) = p ij (n+1) et t = 3. Il reste à retracer le chemin optimal entre i et j. (5) Faire x(t) = p ix(t-1) (n+1). (6) Si t <> n - 1 alorsfaire t = t + 1, aller à (5) sinonle chemin optimal est le suivant : (i = x(t+1), x(t), …, x(1) = j). FIN

48 Exemple : L (1) 0 4     0 1  3  0 p(1) L (2) 0 4     3  0 p(2) L (3)   p(3) L (4) p(4)

49 Le problème du plus court chemin49 L (5) p(5) x Chemin optimal entre 1 et 4 : 132 4

50 Le problème du plus court chemin50 Conclusion Ce sujet a été traité dans la plupart des livres portant sur la recherche opérationnelle. Toutefois, je vous réfère au livre suivant : « Ronald L. Rardin, Optimization in Operations Research. Prentice Hall, 1998, 919p. »


Télécharger ppt "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."

Présentations similaires


Annonces Google