Sunteți pe pagina 1din 2

Algorithme de DIJKSTRA-MOORE

(pour les graphes pondrs par des poids positifs)


Prsentant de grands avantages de rapidit, cet algorithme ne permet que la recherche des chemins de longueur minimale et pour des graphes pondrs par des poids positifs. Donnons cet algorithme, autorisant la recherche dun chemin minimal entre deux sommets I (initial) et F (final). Il se dcompose en quatre phases, comme suit : Phase 1 : mise en place - On dsigne par lensemble dans lequel on met les sommets au fur et mesure de leur marquage dfinitif ; - A chaque sommet S, on associe le couple (dist(S), p(S)) o dist(S) dsigne la distance (provisoire ou dfinitive) de I S, et p(S) le prdcesseur de S ; Phase 2 : initialisation - Attribuer au sommet I, le couple (0, I) ; - Attribuer chaque sommet adjacent I, le couple (poids de larc le reliant I, I) ; - Attribuer aux autres sommets, le couple (+ , ?) ; Phase 3 : fonctionnement Tant que tous les sommets ne sont pas dans , ou que le sommet F nest pas affect de la plus petite distance provisoire : - Choisir parmi les sommets non placs dans , un dont la distance provisoire est minimale : appelons-le S ; - Mettre S dans ; - Pour chacun des sommets Yi qui lui sont adjacents et qui ne sont pas dans : Calculer s = dist(S) + poids de larc [S, Yi ] ; Si s est infrieur la distance provisoire de Yi , attribuer Yi le couple (s, S); (ainsi, dist( Yi ) := min{dist(S) + poids de larc [S, Yi ] , dist( Yi )}) Phase 4 : conclusion - La longueur du plus court chemin de I F est alors dist(F) ; - La chane de poids minimum se lit lenvers , de F chacun de ses prdcesseurs successifs. Le principe est donc le suivant : on affecte provisoirement le poids maximal (+ ) tous les sommets, sauf pour le sommet initial de poids 0 et ses successeurs (recevant le poids de larc les reliant I) ; tant que cest possible, on diminue les poids provisoires qui deviennent dfinitifs (un sommet affect dun poids dfinitif est dit marqu) lorsque leur diminution devient impossible. Remarque : il se peut que lalgorithme se termine avant que tous les sommets ne soient marqus (cf. lalternative du dbut de la phase 3) ; cela voudra dire quaucun des chemins passant par ces sommets non marqus ne sera un chemin de longueur minimale. Note Lalgorithme de DIJKSTRA-MOORE fournit un chemin minimal.
Preuve. Clairement, lalgorithme se termine en au plus n-1 itrations dans un graphe dordre n. Ensuite, supposons quau dbut de litration r, ne contienne bien que des sommets dont le poids est minimal. Soit Sr le sommet quon range dans lors de litration r et supposons que dist(Sr) ne soit pas le poids minimal de Sr (i.e. le poids minimal du chemin de I Sr) : dist(Sr) reprsente toutefois le poids dun chemin de I Sr, de sorte quil existerait un chemin de poids v() < dist(Sr). Soit Sh le premier sommet de S- rencontr sur . Dsignons par 1 le sous chemin de I Sh et par 2 celui de Sh Sr. Alors on a : v() = v(1) + v(2) dist(Sh) + 0, car v(1) dist(Sh) par dfinition de dist(Sh) et v(2) 0. Mais dist(Sr) > v() de sorte que

dist(Sr) > dist(Sh), ce qui contredit le choix de Sr. Comme initialement, contient le sommet I de poids 0 qui est minimal, on a dmontr par rcurrence sur r, que contient bien que des sommets de poids minimal. Comme lalgorithme se termine ds que F est dans , la validit de lalgorithme en dcoule.

Un exemple : cherchons dans le graphe G ci-dessous, un chemin minimal de I F, en utilisant lalgorithme de DIJKSTRA-MOORE, ce qui est possible les poids tant tous positifs.
I

6 1 5
C

3 3 4

1 5
M

12 8
N

4 2

3 4

9 6

2
K

2 1
E

1 7
P

4
L

Prsentons sous forme dun tableau, le fonctionnement de lalgorithme :


I
(0,I)

A
(1,I)

B
(+, ?) (2,A)

C
(6,I)

D
(+, ?) (5,A) (4,B)

E
(+, ?)

G
(+, ?)

H
(+, ?)

K
(+, ?)

L
(+, ?)

M
(+, ?)

N
(+, ?)

P
(+, ?)

F
(+, ?)

I A B D C E H L G M K P N F

(6,D) (9,C) (10,E) (11,H) (16,L) (12,G) (24,M) (23,P) (14,H) (17,H) (17,L)

Dans la dernire colonne ( ), on a indiqu successivement lentre des sommets. Pour retrouver un chemin minimal, on lit le tableau de droite gauche. Le dernier sommet entr est le sommet final F : dans la colonne F, est indiqu (toujours en dernire position) le poids dfinitif attribu F, qui est aussi la longueur minimale du chemin et qui vaut ici 23 . De plus, le prdcesseur de F qui a contribu donner son poids F, est P : on lit dans la colonne P que le prdcesseur (ayant contribu donner son poids dfinitif P) est L. Puis la colonne L va nous donner le prdcesseur qui est E ; la colonne E nous donne ensuite D, la colonne D nous donne B, celle de B nous donne A et celle de A nous donne I. Le chemin de longueur minimale reliant I F est donc : [I, A, B, D, E, L, P, F] et sa longueur est 23. Remarque : la prsence de circuits dans le graphe G interdit son partage en niveau et donc lutilisation de la version prsente de lalgorithme de FORD. De mme, la recherche dun chemin de longueur maximale, na aucun sens.

S-ar putea să vă placă și