Vous êtes sur la page 1sur 7

Chemin de longueur optimale

Graphe sans circuit


6

Rsultat : Dans un graphe orient sans circuit il existe


au moins un sommet de degr intrieur nul.

Mise en niveau dun graphe sans circuit


- Prendre k =2, tiqueter par 1 les sommets ayant
un degrs intrieur nul.
- Tant quil y a des sommets non tiquets, rpter les
deux tapes suivantes :
- Etiqueter par k tous les sommets nayant pas
un prdcesseur non tiquet.
- Faire k=k+1

EXEMPLE
Rsultat de la mise en niveau
2

2
1

4
5

9
6

4
5

8
7

6
7

Niveaux

Ordre topologique
X={x1,x2, .., xn} lensemble des sommets du graphe
sans circuit G.
Lordre xi1, xi , .., xin sera dit ordre topologique
Si pour tout arc xil xik de G On a alors l<k
2

N.B. Si on commence par tiqueter les sommets par


lalgorithme de mise en niveau et puis on numrote
les sommets des niveaux conscutifs, on obtient un
ordre topologique.

Graphe valu
G=(X,U) est un graphe
A chaque arc u de U est associe une valeur l(u)
relle.
Graphe Valu
Ainsi tant donn un chemin de G
= [u1, u2,., up] on dfinit sa longueur par :
L() = l(u1)+l(u2)+.+l(up )
3 problmes se posent

P1 - tant donn 2 sommets x0 et xn de X, dterminer un


plus court (long) chemin entre x0 et xn.
P2 - tant donn un sommet x0 de X, dterminer un plus
court (long) chemin de x0 tout autre sommet de X.
P3 - Dterminer un plus court (long) chemin entre tout
couple de sommets de X.
Condition ncessaire pour lexistence dun chemin de
longueur optimale entre deux sommets xi et xj est quil
nexiste pas un chemin entre xi et xj contenant un circuit
absorbant.
Pour la recherche dun plus court (resp. plus long) chemin,
un circuit C sera dit absorbant si L(C)<0 (resp. L(C)>0).

Algorithme de Ford (Problme P2)


G=(X,U) un graphe valu avec X={x0,x1,x2, .., xn}
Dterminer la longueur du plus court chemin de x0 tout
autre sommet xi de G
On associe tout sommet xi une pondration i
Initialisation : Prendre 0 =0 et
i=+ pour tout i
0.
Itration de base: tant donn larc xi xj de G
Si i+l(xi xj ) < j Alors faire j= i+l(xi xj)
Rpter litration de base jusqu la stabilisation de
toutes les pondrations i.

Remarque 1. On dmontre qu la fin de lalgorithme, la


pondration i reprsente la longueur du plus court chemin du
sommet x0 au sommet xi. En plus, ce rsultat est valable
indpendamment des signes des valeurs des arcs.
Remarque 2. Si on effectue linitialisation
(pour i
et on remplace la condition de litration de base par :
Si i+l(xi xj ) > j Alors faire j= i+l(xi xj)
Alors i reprsente alors la longueur du plus long chemin.

0)

Remarque 3. Lalgorithme de Ford est gnral, mais ne


prcise pas lordre du parcourt des arcs du graphe. Le parcourt
des arcs de G peut se raliser en visitant tous les sommets de
G (dans un ordre donn) et puis en parcourant les arcs
incidents vers lextrieur (ou lintrieur) de chaque sommet
visit.
Lefficacit de cet algorithme dpend de lordre de visite
des sommets de G.

Cas dun graphe sans circuit


Remarque : Si x0 est un point entr de G et si lon
parcourt les sommets de G dans un ordre
topologique, les pondrations se stabilisent la fin
du premier parcourt.
Lalgorithme de FORD devient :
- Prendre 0 = 0
- Parcourir les sommet de G suivant un ordre
topologique. Pour chaque sommet xi visit faire

Prdcesseurs de xi

Algorithme de DIJKSTRA
Valable lorsque les valuations des arcs sont positives.
tant

un sous ensemble A de sommets.

Etape 0 Prendre A=X, 0=0 et i=


Etape 1. Soit i0

pour tout i

0.

tel que

Etape 2. Faire A = A-{xi0}, Si A= Alors FIN.


Etape 3. pour tout arc

avec

Faire
Revenir ltape 1.
Remarque : Il nest pas possible de transformer cet algorithme en un
algorithme pour la dtermination les longueurs des plus longs chemins.

Dtermination des chemins optimaux


Afin de dterminer les chemins optimaux, on modifie lalgorithme de Ford
de la manire suivante :
- Dfinir un tableau : TAB [0..n] de type entier ; prendre TAB[0]=0;
- Litration de base devient : tant donn larc xi xj de G
Si i+l(xi

xj ) < j Alors faire {j= i+l(xi

xj) ; Tab[j]=i}

La procdure qui permet de trouver le chemin optimal de x0 xi scrit:


Dfinir k entier ; prendre k=i ;
Tant que k
Tab[k] faire
Imprimer xk ; k:=Tab[k]
fin Tant que
Imprimer x0 ;
Cette procdure liste les sommets du chemin optimal dans le sens inverse
de xi x0

Mthode matricielle
(Recherche des plus courts chemins entre tout couple de
sommet de G)
Construire une suite de matrice (n n) M0, M1, , Mn
On note par

les lments de la matrice Mk.

Initialisation : Prendre
Calcule des lments de Mk partir de ceux de Mk-1 :
Pour k = 1 n calculer les lments de Mk par :

Remarque :
reprsente la longueur du plus court
chemin de xi xj dans G