Professional Documents
Culture Documents
Lecon 61
Lecon 61
GRAPHES ET A5
ALGORITHME DE FORD
Recherche du chemin optimal
1. EXPOSE DU PROBLEME :
Il s'agit de chercher dans un graphe où tout arc est valué par un nombre positif,négatif ou nul le (ou les
)chemin(s) de valeur optimale (c-à-d minimale ou maximale) partant d’un sommet donné ″a ″de départ et
aboutissant à un sommet d'arrivée donné b. On suppose que de ″a″ on peut atteindre(par des chemins) tout
sommet du graphe, et que de tout sommet du graphe, on peut atteindre ″b″.
En pratique la valeur d’un chemin peut représenter un coût, une distance ou un temps de parcours(qu’on cherchera
à minimiser) ,ou un bénéfice (qu’on cherche à maximiser)
.
2. ALGORITHME DE FORD :
Cas de la recherche d’un chemin de valeur maximale d’un sommet ‘’a’’ initial vers un sommet ‘’b’’
final.
On travaillle sur un graphe G=(X,U), dont tout arc (xi, xj) est valué par un nombre dij(qui peut être
positif, négatif ou nul).
On suppose que le graphe ne comporte pas de circuit de valeur positive ( c-à.-d dont la somme des
nombres dij pour tous les arcs du circuit serait positive (sinon la valeur maximale des chemins de ‘’a’’ à
‘’b’’ serait rejetée à +∞ .(cf le NB en fin de paragraphe)
Etape n° 1 : Numérotation des sommets du graphe .Cette numérotation est arbitraire mais en note x0 pour le
sommet ‘’a’’ et x (n-1) pour le sommet ‘’b’’.
Etape n° 2 : Affectation d'une valeur ti = -∞ à tous les sommets du graphe valué, avec : i = 1, ..., n-1
( 0 ≤i ≤ n-1) ; t0 = 0 pour x 0
(en cours d’application de l’algorithme ti représente la valeur du meilleur chemin déjà rencontré allant de x0 à xi)
Etape n° 3 : Pour tout arc ( xi , xj ), si la différence tj - ti est inférieure au nombre dij qui value l'arc, on
substitue à tj la quantité ti + dij .(en effet ,dans ce cas ,passer par xi pour aller de x0 à xj est plus interessant)
Par contre, si cette différence est supérieure à dij, alors on ne change rien.
Il y a donc 2 cas : (1)si : tj - ti < dij ⇒ t j = ti + dij
Etape n° 4 : On répéte l’étape n° 3 jusqu'à ce qu'aucun arc ne permette plus d’augmenter les ti.
NB : si le graphe comptait un circuit de valeur positive, l’algorithme ne se terminerait pas : il y aurait une infinité
d’itérations ; en effet dans ce cas la valeur maximale des chemins de a à b serait rejetée à +∞, comme le lecteur le
vérifiera aisément sur l’exemple ci-dessous où (x,y,z,x) est un circuit de valeur, égale à 2, donc positive.
•x -1
1 0 •y 2
•a •b
2 3 -2
•z
Ainsi le chemin ( a,x,y,b) a la valeur 2 ; (a,x,y,z,x,y,b) a la valeur 4 ; si on emprunte le circuit une fois de plus, le
chemin (a,x,y,z,x,y,b) a la valeur 6.
En empruntant k fois le circuit, on obtient un chemin de valeur 2+2k, qui tend vers l’infini si k tend vers l’infini.
3. EXEMPLE D’APLICATION :
Déterminer un chemin maximal de x0 à x4 par l’algorithme de Ford dans le graphe :
•x1
4 1
2
•x4
2
•x0 • x3
0
1 •
x2
•x1
2 4 1
• x4
•x0
1 2
•x3
0
•x2
Puis on balaierait les arcs issus des arcs ayant x4 comme extrémité initiale.
L’application de l’algorithme est terminée .
On obtient pour les valeurs maximales des chemins de x0 vers les autres sommets :
(t0= 0) , t1 = 5, t2 = 1, t3= 1, t4 = 6.
Remarquons que l’algorithme fourit d’abord la valeur optimale ( ici maximale) des chemins
de x0 à x4, soit 6 ( puisque t4 = 6, en fin d’application de l’algorithme de FORD).
Reste à déterminer par quels sommets on passe pour atteindre cette valeur 6. Pour cela, il est
nécessaire de remonter les calculs :
Lors de quelle itération a-t-on obtenu la valeur définitive de t4, soit t4=6 ? C’était en
ième
balayant ( pour la 2 fois ) les arcs issus de x1 ; on a alors posé t4 := t1+d14 ; ainsi
(x1,x4) appartient au chemin optimal cherché(et l’on a t4-t1=d14 :6-5 = 1).
On se repose la même question, pour x1 cette fois, lors de quelle itération a-t-on
obtenu la valeur définitive de t1= 5 ? C’était en balayant les arcs issus de x3(pour la
1ième fois). Ainsi (x3,x1) appartient au chemin optimal cherché
(et t1-t3= d31 : 5-1 =4).
Onse repose la même question pour x3 cette fois ; on trouve alors que (x2,x3) appartient au
chemin optimal.
Enfin on se repose la même question pour x2 ; on trouve alors que (x0,x2) appartient au
chemin optimal.
Finalement le chemin de valeur maximal, soit 6, de x0 à x4 est :
(x0,x2,x3,x1,x4)
Page 4 sur 4 leçon 06.1.DOC
Nous avons détailléci-desous à l’extrême les calculs des ti, qui peuvent se présenter
avantageusement en tableau , comme suit:
.i=1
.arc (x1,x4) 0 2 1 0 3
.i=2 0 2 1 1 3
.arc (x2,x3)
.i=3
.arc(x1,x4) 0 2 1 1 3
.arc(x3,x1) 0 5 1 1 3
.retour à i=1 0 5 1 1 6
.arc(x1,x4)
.i=2
.arc(x2,x3) 0 5 1 1 6
.i=3
.arc(x3,x4) 0 5 1 1 6
.arc(x3,x1)
.i=4
.il ne reste pas 0 5 1 1 6
d’arc issu de x1
.valeurs finales 0 5 1 1 6
Exercice (1) :
C
-3
B
4 2 -2
5
A
D
3 -2
-1 1
E
F
3
Réponse:
Le graphe comportant un circuit de valeur positive : (B,E,D, B) , qui est de valeur +2. La valeur maximale des
chemins de ″A″ à ″F″ est alors ejeté à plus l’infini : tF = + ∞