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

1 Problématique des arcs de poids négatifs Si un graphe ne contient aucun circuit de poids négatif accessible à partir dune origine s, alors, pour tout.

Présentations similaires


Présentation au sujet: "1 Problématique des arcs de poids négatifs Si un graphe ne contient aucun circuit de poids négatif accessible à partir dune origine s, alors, pour tout."— Transcription de la présentation:

1 1 Problématique des arcs de poids négatifs Si un graphe ne contient aucun circuit de poids négatif accessible à partir dune origine s, alors, pour tout sommet i v, le poids du plus court chemin reste bien défini, même si sa valeur est négative. Algorithme de Bellman-Ford s c a Dans cet exemple, le cycle a-c-a a un poids de +3

2 2 Problématique des arcs de poids négatifs Sil existe un circuit de poids négatif accessible depuis s, le poids du plus court chemin nest pas correctement défini. Aucun chemin entre s et un sommet du circuit ne peut être plus court, on peut toujours trouver un encore plus court! Algorithme de Bellman-Ford s c a Le cycle a-c-a a un poids de -3

3 3 Algorithme de Bellman-Ford Stratégie Faire les étapes nécessaires pour faire converger le poids des chemins sachant quun plus court chemin de s à tout autre sommet est un chemin dordre au plus n -1 arcs. Vérifier sils ont tous convergé. Retourner VRAI si cest le cas. Retourner FAUX sinon. Utilisation de la technique du relâchement Comme dans Dijkstra, lAlgorithme utilise le relâchement pour diminuer progressivement une estimation y v du poids dun plus court chemin depuis lorigine. À la différence de Dijkstra, chaque arc est relâché plusieurs fois. Lalgorithme de Bellman-Ford…

4 4 Algorithme de Bellman-Ford Soit le graphe G(V,E) Initialiser y i = + pour tous les sommets i Initialiser y s = 0. Répéter |V| - 1 FOIS Pour tout arc (u,v) de E faire RELÂCHER(u, v, c(u,v)) Pour tout arc (u,v) de E faire Si y v > y u + c(u,v) Alors Retourner FAUX Retourner VRAI

5 5 RELÂCHER (a,b, c (a,b) ) Si y b > y a + c (a,b) Alors y b y a + c (a,b) ba b a Relâcher(a,b, c(a,b)) ba b a Algorithme de Bellman-Ford

6 6 RELÂCHER (a,b, c (a,b) ) Si y b > y a + c (a,b) Alors y b y a + c (a,b) P[b] a Le tableau P permet de conserver le sommet (ici a) qui a fait relâcher le poids dun sommet donné (ici b). Je rappelle que le poids associé à un sommet est la longueur du plus court chemin entre un sommet source et le sommet en question. Tous les P[i] sont initialisés à NIL au départ (i v ). Algorithme de Bellman-Ford

7 7 s dc b a s dc b a Étape 1 relaxation de tous les sommets dans lordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) Exemple 1 Algorithme de Bellman-Ford Lordre des arcs est arbitraire. On arrive au même résultat final (fin de lalgorithme en entier, acétate #4) si on fait dautres choix de lordre dans lequel les sommets sont relâchés Étape 1 veut dire un tour de boucle complet (premier tour ici de la boucle Répéter |V| - 1 FOIS).

8 8 s dc b a s dc b a Étape 2 relaxation de tous les arcs dans lordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) Algorithme de Bellman-Ford 2ième tour de boucle.

9 9 s dc b a s dc b a Étape 3 relaxation de tous les arcs dans lordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) Algorithme de Bellman-Ford 3ième tour de boucle.

10 10 s dc b a s dc b a Étape 4 relaxation de tous les arcs dans lordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) Algorithme de Bellman-Ford 4ième (et dernier: le nombre de tour=nbre de sommets-1) tour de boucle. Cycle de coût négatif (b-d-b=-2): réduction encore possible, le poids de d reste encore plus grand que le poids de b + la pondération de larc b-d. Le plus court chemin entre s et d est donc indéterminée

11 11 Algorithme de Bellman-Ford La version de lalgorithme de Bellman-Ford montrée dans lacétate#4 nest pas très optimisée. En effet, il peut arriver que les poids de chaque sommet se stabilise (atteinte du coût définitif, plus de relâchements possibles) avant que lalgorithme fasse les |V| - 1 tours de boucle. Lacétate qui suit présente une version plus optimisée de lalgorithme de Bellman-Ford. Cette version se caractérise par lusage dune variable Booléenne (stable) qui sert à arrêter lalgorithme quand le graphe devient stable (plus de relâchements possibles). Ceci fait quil va falloir modifier la procédure Relâcher: elle doit retourner, en plus de ce quelle est supposée faire, FAUX ou VRAI: elle a pu relâcher ou non respectivement. Dans le cas où le graphe présente des cycles négatifs (pas de solution donc), stable restera toujours à FAUX et lalgorithme fera exactement |V| tours de boucle (compteur k). Sachant que le nombre darcs maximum reliant 2 sommets donné est égale au nombre de sommets –1 (i.e.|V| - 1 ), on aurait fait donc 1 tour de plus quand la stabilité du graphe ne sera jamais atteinte. Ce tour de plus remplace : Pour tout arc (u,v) de E faire Si y v > y u + c(u,v) Alors Retourner FAUX dans lalgorithme de lacétate#4.

12 12 Bellman-Ford revu…. Soit le graphe G(V,E) Initialiser y i = + pour tous les sommets i Initialiser y s = 0. K 1 Répéter Stable VRAI Pour tout arc (u,v) de E faire RELÂCHER(u, v, c(u,v)) Si …Alors Stable FAUX K k + 1 Tant que Stable est FAUX ET k < n+1 Si k=n+1 alors présence dun circuit de poids négatif

13 13 s dc b a Exemple 2 Étape 1 relaxation de tous les arcs dans lordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) s dc b a Algorithme de Bellman-Ford Trace de la deuxième version de lalgorithme de Bellman-Ford

14 14 s dc b a Étape 2 relaxation de tous les arcs dans lordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) Pas de réduction possible : coûts corrects! Fin de lalgorithme dès le 2ième tour de boucle. s dc b a Algorithme de Bellman-Ford

15 15 s dc b a Algorithme de Bellman-Ford Exercice En considérant le graphe de la figure 1, faites une trace détaillée de lalgorithme optimisée de Bellman-Ford. Pour chaque sommet du graphe, vous devez indiquer lévolution de ses coûts au fur et à mesure de lexécution de lalgorithme suivant le format suivant. Vous devez donner le coût et le chemin le plus court (sil y a une solution bien sûr) pour aller de S à e. Figure 1. i infini, 18, 13, 5, 3 -, k, l, m, o Évolution du poids dun sommet i (de gauche vers la droite) Les sommets qui ont aidé au relâchement du sommet i, structure parallèle à celle des coûts. e 3 3


Télécharger ppt "1 Problématique des arcs de poids négatifs Si un graphe ne contient aucun circuit de poids négatif accessible à partir dune origine s, alors, pour tout."

Présentations similaires


Annonces Google