Vous êtes sur la page 1sur 10

Théorie des graphes et

optimisation
Chapitre 5:

Plus courts chemins: Algorithme de Bellman-ford

Ghallabi Sameh
ISIMM
Problème
Dijkstra ne fonctionne pas pour les graphes avec des arêtes de
poids négatifs.

Trouvez les chemins Les plus courts entre source et tous les
sommets dans le graphe donné. Le graphe peut contenir des
arêtes de poids négatifs.
Définitions
L'algorithme de Bellman-Ford, aussi appelé algorithme de
Bellman–Ford–Moore, est un algorithme qui calcule des plus
courts chemins depuis un sommet source donné dans un graphe
orienté pondéré.

L'algorithme de Bellman-Ford résout le problème des plus


courts chemins.
Principe
 On a un graphe pondéré (positivement ou négativement).

Cherche le plus court chemin entre deux nœuds distincts.

Explorer toutes les combinaisons possibles de chemin

 Choisir celle qui obtient une pondération totale minimale.

 L’algorithme de Ford-Bellman est un algorithme de


programmation dynamique qui calcule les chemins les plus
courts de taille croissante
Principe
 Le chemin le plus court de l’origine à lui-même est de 0. Puis les
chemins de taille 1 sont calculés de telle sorte que nous ne gardons
que le plus court chemin de l’origine à tout autre sommet.

l’algorithme calcule les plus courts chemins des chemins de taille k


(pour l’itération k) à partir des plus courts chemins des chemins de
taille k-1, il est donc optimal quelle que soit l’itération d’arrêt de
l’algorithme.

Données: un Graphe pondère et sans circuit de cout négatifs.


Algorithme
Application
Différence entre les algorithmes
de Bellman Ford et de Dijkstra
Algorithme de Bellman Ford Algorithme de Dijkstra
L’algorithme de Bellman Ford fonctionne L’algorithme de Dijkstra peut fonctionner ou
lorsqu’il y a un bord de poids négatif, il non lorsqu’il y a un bord de poids négatif.
détecte également le cycle de poids négatif Mais ne fonctionnera certainement pas en
cas de cycle de poids négatif
Il peut facilement être mis en œuvre de Il ne peut pas être mis en œuvre facilement
manière distribuée. de manière distribuée.
L'algorithme de Bellman-Ford est plus lent L'algorithme de Bellman-Ford est plus
que Algorithme de Dijkstra, rapide que Algorithme de Dijkstra,

L’algorithme de Bellman Ford a plus de frais L’algorithme de Dijkstra a moins de frais


généraux que l’algorithme de Dijkstra. généraux que l’algorithme de Bellman Ford.
L’algorithme de Bellman Ford a moins L’algorithme de Dijkstra a plus
d’évolutivité que l’algorithme de Dijkstra. d’évolutivité que l’algorithme de Bellman
Ford.
Différence entre les algorithmes
de Bellman Ford et de Dijkstra
L'algorithme de Bellman-Ford est plus lent que Algorithme
de Dijkstra, mais il peut gérer les arêtes de poids négatifs dans
le graphe.

Bellman-Ford est également plus simple que Dijkstra et


convient parfaitement aux systèmes distribués.
Exercice d’application

Vous aimerez peut-être aussi