Licence d’Informatique (L3)
SIN5U1TL – Algorithmique avancée
TD 7 (Jeudi 10/11)
Ce TP apporte un complément sur les graphes (algorithme de Bellman-Ford) et aborde les flots à travers
l’algorithme de Ford-Fulkerson.
Algorithme de Bellman-Ford :
Cet algorithme permet de résoudre le problème du plus court chemin dans le cas général (i.e. avec des poids
d’arêtes pouvant être négatifs, sur un graphe orienté) à travers une démarche de relaxation (ou relâchement). Soit
G=(S,A) le graphe et s le sommet de départ : nous obtiendrons le plus court chemin de s à tous les sommets du
graphe. Après une phase d’initialisation (où un coût infini est associé à chaque sommet où aucun prédécesseur ne
lui est attribué), on cherche à améliorer le coût de chaque sommet (poids du chemin partiel jusqu’à celui-ci à l’instant
courant) en cherchant le prédécesseur qui lui apporte la meilleure contribution (i.e. qui abaisse ce coût le plus
possible). Au bout de |S|-1 étapes (|S| étant le nombre de sommets du graphe), on obtient le plus court chemin.
- Montrer que ce plus court chemin ne peut exister que s’il n’y a aucun cycle de poids négatif
- Montrer que chercher le prédécesseur apportant la meilleure contribution revient à appliquer un test simple
(et une opération associée suivant le résultat de ce test) à tous les arcs du graphe à chaque étape
- Comment peut-on savoir s’il n’y a pas de cycle de poids négatif
- Ecrire l’algorithme (deux fonctions : initialisation et relâchement, et une procédure principale)
- Evaluer la complexité de cet algorithme
- Le mettre en application (à la main) sur le graphe suivant (exemple du livre de Cormen) : sommets s,t,x,y,z
et arêtes (s,t,6), (s,y,7), (t,x,5), (x,t,-2), (y,z,9), (z,s,2), (t,y,8), (z,x,7), (t,z,-4), (u,x,-3)
Algorithme de Ford-Fulkerson :
La figure ci-dessous montre un graphe sur lequel circule un flot. La notation f/c sur les arcs correspond à un flux f qui
passe sur un arc de capacité c.
Est-ce que ce flot est maximal ? Comment augmenter ce flot pour qu’il devienne maximal ? Quelle est la valeur du
flot maximal ?