You are on page 1of 6

C.N.A.M.

GRAPHES ET A5

EAD ALGORITHMES Leçon n° :6.1

CHEMINS OPTIMAUX DANS UN GRAPHE VALUE

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

(2) si : tj - ti > dij ⇒ tj est inchangé.

Etape n° 4 : On répéte l’étape n° 3 jusqu'à ce qu'aucun arc ne permette plus d’augmenter les ti.

Page 1 sur 1 leçon 06.1.DOC

Pr LEMAIRE –EL GOHARY .H


C.N.A.M. GRAPHES ET A5

EAD ALGORITHMES Leçon n° :6.1

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

La numérotation des sommets du graphe est conforme à celle de l’étape n° 1.


Lors de l’étape 2 on pose : t0= t1 =...= t7 = 0.(au lieu de t=-∞, car ici tous les dij sont positifs ou nuls : tous les
chemins ont une valeur ≥ 0).
Pour la suite, on doit choisir un ordre d’examen (balayage) des arcs du graphe, car
l’algorithme ne le spécifie pas. On choisit de balayer d’abord les arcs issus de x0, puis de
x1,puis ceux issus de x2, ...etc.Ceci suppose que lorsqu’on effectue le balayage des arcs
Page 2 sur 2 leçon 06.1.DOC

Pr LEMAIRE –EL GOHARY .H


C.N.A.M. GRAPHES ET A5

EAD ALGORITHMES Leçon n° :6.1

issus de x la valeur t k soit définitive, c’est-à-dire qu’elle représente la valeur


k,
maximale de tous les chemins de x0 à xk. Or, il est possible qu’on ait à modifier t k
ultérieurement, lorsqu’on balaye les arcs issus d’un sommet xm avec m>k : c’est le
cas s’il existe un arc ( xm, xk) et si tm + dmk > tk.
Il serait alors nécessaire de recommencer les calculs à partir du balayage du sommet k , en
prenant la nouvelle valeur de tk:
tk := tm+ dmk

Même sur notre petit exemple cette difficulté va se présenter :

•x1
2 4 1
• x4

•x0
1 2
•x3
0
•x2

L’initialisation (étape2) conduit à poser t0=t1=t2=t3=t4=0.

On balaye d’abord les arcs issus de x0 (i=0) :


• pour (x0,x1) : t1- t0= 0 < d01 = 2 ; on pose t1 := t0+d01 = 2.
• pour (x0,x2) : t2-t0 = 0 < d02 = 1 ; on pose t2 :=t0+d02 = 1.

Puis on balaye les arcs issus de x1(i=1) ; il y en a un seul :


• pour (x1,x4) : t4-t1 = 0-2 < d14 = 1 ; on pose : t4 := t1+d14 =3 .

Puis en balaye les arcs issus de x2 (i=2) ; il y a un seul :


• pour (x2,x3) : t3-t2 = 0-1 < d23 = 0, on pose t3 := t2+d23= 1.

Puis on balaye les arcs issus de x3 (i=3) :


• pour (x3,x4) : t4-t3=3-1 ≥ d34 = 2 ; t4 est inchangé ,
Page 3 sur 3 leçon 06.1.DOC

Pr LEMAIRE –EL GOHARY .H


C.N.A.M. GRAPHES ET A5

EAD ALGORITHMES Leçon n° :6.1

• pour (x3,x1) : t1-t3 =2-1< d 31 = 4 ; on pose t1 := t 3+d 31 = 5,


on vient donc de modifier t1, alors qu’on avait déjà effectué le balayage des arcs issus du
sommet x1 ; il est donc nécessaire de reprendre le balayage à partir de x1 avec la valeur t1 =
5( au lieu de t1 = 2) :
Puis on balaye les arcs issus de x1 ( retour à i=1) :
• pour ( x1,x4) : t4-t1= 3-5 < d14 = 1 ; on pose t4 :=t1+d14 = 6 .

Puis on balaye les arcs issus de x2 ( i=2,à nouveau) :


• pour (x2,x3) : t3-t2 = 1-1 =0 ≥ d23 =0 ; t3 est inchangé.

Puis on balaye les arcs issus de x3 (i=3) :


• pour (x3,x4) : t4-t3 = 6-1 ≥ d34=2 ; t4 est inchangé,
• pour (x3,x1) : t1-t3 =5-1 ≥ d31 = 4 ; t1 est inchangé.

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

Pr LEMAIRE –EL GOHARY .H


C.N.A.M. GRAPHES ET A5

EAD ALGORITHMES Leçon n° :6.1

Nous avons détailléci-desous à l’extrême les calculs des ti, qui peuvent se présenter
avantageusement en tableau , comme suit:

.t0 .t1 .t2 .t3 .t4


Initialisation : 0 0 0 0 0
i=0
.arc (x0,x1) 0 2 0 0 0
arc (x0,x2) 0 2 1 0 0

.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

Page 5 sur 5 leçon 06.1.DOC

Pr LEMAIRE –EL GOHARY .H


C.N.A.M. GRAPHES ET A5

EAD ALGORITHMES Leçon n° :6.1

DANS L’EXERCICES SUIVANT, TROUVEZ LE CHEMIN DE VALEUR MAXIMALe


DE ″A″ VERS ″F″

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 = + ∞

Page 6 sur 6 leçon 06.1.DOC

Pr LEMAIRE –EL GOHARY .H

You might also like