Algorithme de Bellman-Ford

Slides:



Advertisements
Présentations similaires
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Advertisements

La recherche de chemin optimal
Théorie des graphes.
Explorer un espace d’états
Tris.
Chapitre annexe. Récursivité
Connexité.
Licence pro MPCQ : Cours
Dans cette partie Graphes Eulériens.
Algorithmes et structures de données avancés
Fonctions & procédures

Calculs de complexité d'algorithmes
DECLARATION DE VARIABLES
Les Structures de contrôles itératives
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Bloc1 : Théorie des graphes et problèmes d’ordonnancement
Plus rapide chemin bicritère : un problème d’aménagement du territoire
5. Les structures répétitives
R.K.Ahuja & James B.Orlin (1988)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Récursivité.
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Algorithme de Dijkstra
Les structures de données arborescentes
Heuristiques A. Introduction B. Recherche d ’une branche
Python La structure itérative
Optimisation et Complexité
Théorie des graphes Un peu de vocabulaire.
Gestion de Fichiers Arbres B.
Systèmes d’équations du premier degré à deux variables
LES ALGORITHMES F.DUPONT/M.HECTOR OCTOBRE 2003.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
IFT Complexité et NP-complétude
Génération d’un segment de droite

1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Algorithmes d ’approximation
Optimisation dans les réseaux
Recherche Opérationnelle
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Gestion de Fichiers Hachage (suite). 2 Plan du cours daujourdhui Prédiction de la distribution des enregistrements Réduction des collisions en augmentant.
Programmation dynamique
Deuxième étape : échanger des poignées de mains
Atelier de formation : MAT optimisation II (les graphes).
Pour le chemin le plus court pour tous les couples
Programmation linéaire en nombres entiers : les méthodes de troncature
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
GRAPHES EN INFORMATIQUE. INTRODUCTION Les objets mathématiques appelés graphes apparaissent dans de nombreux domaines comme les mathématiques, la biologie,
On cherche le plus court chemin de E à S sur le graphe suivant :
Tutorat 7 - Introduction au Routage et OSPF
Chapitre I Modélisation optimisation I- Optimisation de fonctions d’une seule variable 1 Introduction En gestion, on est souvent confronté à des situations.
Programmation linéaire en nombres entiers
Licence Informatique Algorithmique des graphes
Ceci est un graphe valué Des arcs : 1-2, 1-4, 7-10,…..
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Algorithme de DIJKSTRA
Algorithmique Tableaux de données
Sixième étape : pondérer les graphes. Longueur d’une chaîne d’un graphe quelconque = nombre des arêtes qui la constituent. Distance entre deux sommets.
Structures de données IFT-2000
CSI2510 Structures de données et algorithmes Plus court chemin
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
Projet Théorie des graphes
Cycle, Cocycle, Arbre et Arborescence
Transcription de la présentation:

Algorithme de Bellman-Ford Problématique des arcs de poids négatifs Si un graphe ne contient aucun circuit de poids négatif accessible à partir d’une 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. a 3 s 6 -3 5 c Dans cet exemple, le cycle a-c-a a un poids de +3

Algorithme de Bellman-Ford Problématique des arcs de poids négatifs S’il existe un circuit de poids négatif accessible depuis s, le poids du plus court chemin n’est 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! a 3 s 3 -6 5 c Le cycle a-c-a a un poids de -3

Algorithme de Bellman-Ford Stratégie Faire les étapes nécessaires pour faire converger le poids des chemins sachant qu’un plus court chemin de s à tout autre sommet est un chemin d’ordre au plus n -1 arcs. Vérifier s’ils ont tous convergé. Retourner VRAI si c’est le cas. Retourner FAUX sinon. Utilisation de la technique du relâchement Comme dans Dijkstra, l’Algorithme utilise le relâchement pour diminuer progressivement une estimation yv du poids d’un plus court chemin depuis l’origine. À la différence de Dijkstra, chaque arc est relâché plusieurs fois. L’algorithme de Bellman-Ford…

Algorithme de Bellman-Ford Soit le graphe G(V,E) Initialiser yi = + pour tous les sommets i Initialiser ys = 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 yv > yu + c(u,v) Alors Retourner FAUX Retourner VRAI

Algorithme de Bellman-Ford RELÂCHER (a,b, c (a,b)) Si yb > ya + c (a,b) Alors yb  ya + c (a,b) 5 9 5 6 2 2 a b a b Relâcher(a,b, c(a,b)) Relâcher(a,b, c(a,b)) 5 7 5 6 2 2 a b a b

Algorithme de Bellman-Ford RELÂCHER (a,b, c (a,b)) Si yb > ya + c (a,b) Alors yb  ya + c (a,b) P[b]  a Le tableau P permet de conserver le sommet (ici a) qui a fait relâcher le poids d’un 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 Exemple 1 s d c b a 3 5 1 -3  s d c b a 3 5 1 -3 6 4 9 Étape 1 relaxation de tous les sommets dans l’ordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) L’ordre des arcs est arbitraire. On arrive au même résultat final (fin de l’algorithme en entier, acétate #4) si on fait d’autres choix de l’ordre 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).

Algorithme de Bellman-Ford s d c b a 3 5 1 -3 6 4 9 s d c b a 3 5 1 -3 4 7 Étape 2 relaxation de tous les arcs dans l’ordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) 2ième tour de boucle.

Algorithme de Bellman-Ford s d c b a 3 5 1 -3 4 7 s d c b a 3 5 1 -3 2 4 Étape 3 relaxation de tous les arcs dans l’ordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) 3ième tour de boucle.

Algorithme de Bellman-Ford s d c b a 3 5 1 -3 2 4 s d c b a 3 5 1 -3 4 Étape 4 relaxation de tous les arcs dans l’ordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) 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 l’arc b-d. Le plus court chemin entre s et d est donc indéterminée

Algorithme de Bellman-Ford La version de l’algorithme de Bellman-Ford montrée dans l’acétate#4 n’est 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 l’algorithme fasse les |V| - 1 tours de boucle. L’acétate qui suit présente une version plus optimisée de l’algorithme de Bellman-Ford. Cette version se caractérise par l’usage d’une variable Booléenne (stable) qui sert à arrêter l’algorithme quand le graphe devient stable (plus de relâchements possibles). Ceci fait qu’il va falloir modifier la procédure Relâcher: elle doit retourner, en plus de ce qu’elle 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 l’algorithme fera exactement |V| tours de boucle (compteur k). Sachant que le nombre d’arcs 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 yv > yu + c(u,v) Alors Retourner FAUX dans l’algorithme de l’acétate#4.

Bellman-Ford revu…. Soit le graphe G(V,E) Initialiser yi = + pour tous les sommets i Initialiser ys = 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 d’un circuit de poids négatif

Algorithme de Bellman-Ford Exemple 2 s d c b a 3 5 -3 1 -1  s d c b a 3 5 -3 1 -1 8 4 7 Étape 1 relaxation de tous les arcs dans l’ordre : (s,a) (s,c) (a,b) (a,c) (b,d) (c,a) (c,b) (c,d) (d,b) (d,s) Trace de la deuxième version de l’algorithme de Bellman-Ford

Algorithme de Bellman-Ford s d c b a 3 5 -3 1 -1 8 4 7 s d c b a 3 5 -3 1 -1 8 4 7 Étape 2 relaxation de tous les arcs dans l’ordre : (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 l’algorithme dès le 2ième tour de boucle.

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