Vous êtes sur la page 1sur 8

Cours 2020-20 21

Problème de plus court chemin 1 G . In d u s A e t B


Théorie des graphes P r . M o h a m e d D H IB

Nous allons consacrer ce chapitre à l’une des thématiques les plus importantes de la théorie des
graphes, celle de la recherche d’un plus court chemin (pcc) d’un sommet à tous les autres.

1. Graphe valué
1.1. Définition
Soit 𝐺(𝑋, 𝑈, 𝜐) un graphe simple orienté valué ; tout arc (arête) xy est muni d’une évaluation
(possède une valeur numérique) 𝜐(𝑥, 𝑦) (coût, temps, distance, capacité,…) réelle quelconque.

1.2. Longueur d’un chemin :


Etant donné un chemin d’un sommet x à un sommet y, on appelle longueur du chemin, la somme
des longueurs des arêtes qui lui constituent.
Graphe non orienté valué

(A,B) = (B,A )= -1. C’est un graphe non orienté, l’application valuation est symétrique.
Longueur du chemin A-C : d(A,C) = (A,B) + (B, C) = -1 + -2 = -3
d(A,C) = (A,E) + (E,D) +(D,C) = -5 + 7 + 0 = 2

Graphe orienté valué

(B,E) = -2
(E,B) = 4
Longueur du chemin (B,E,B,A,F) = -2 + 4 + 8 + 1=11.

2. Plus court chemin (pcc)


Définition
Soit 𝐺(𝑋, 𝑈, 𝜐) graphe valué orienté. Soient x et y deux sommets. Si la longueur du chemin entre x
et y admet un minimum, noté d(x,y). Le chemin entre x et y est appelé plus court chemin.

1
La longueur du chemin entre B et E (graphe orienté) vaut -3, est le plus court chemin de B à E.

3. Algorithme de DIJKSTRA
C’est l’algorithme le plus utilisé car il est aisé à mettre en œuvre, efficace en temps d’exécution et
bien adapté aux situations courantes. Cet algorithme permet de trouver le pcc lorsque
𝜐 ≥ 0.
Etape 1
On initialise : on affecte la longueur 0 au sommet de départ x0
Etape 2
On affecte aux sommets adjacents à x0 la longueur des arêtes qui reliant à x0.
On garde le sommet qui a la longueur minimale soit T ce sommet
Pour tout sommet T’ adjacent à T, calculer la somme de longueur de T et de l’arête
reliant T et T’
On garde la longueur minimale de T’,…..etc

Exemple : graphe non orienté

Le graphe suivant représente un réseau routier de 7 villages A, B, C, D, E, F et G. Les étiquettes


correspondent aux distances en Km.
A l’aide de l’algorithme de DIJKSTRA, déterminer le plus court chemin entre les villages A et G.

7 sommets, donc il y a 6 étapes

A B C D E F G étapes
0 1-A 2-A 1
 1-A 3-B 4-B 2
  2-A 5-C 6-C 3
   3-B 5-D 6-D 6-D 4
    4-B 8-F 5
    5-D  10-E 6
      6-D

Etape 1 :
On affecte 0 à A, il y a deux possibilités de A, on peut aller à B ou C. Le plus petit c’est 1-A (point
B).
Etape 2 :
de B on peut aller à D ou F. Le plus petit c’est 2-A (point C).
Etape 3 :
2
de C on peut aller à D ou E. Le plus petit c’est 3-B (point D).
Etape 4 :
du point D on peut aller à F ou G ou E et le plus petit 4-B (point F).
Etape 5 :
de F on peut aller à G. Le plus petit 5-D (point E)
Etape 6 :
de E on peut aller à G. le plus petit 6-D (point G). STOP.

L’algorithme est fini, maintenant on extraire la solution. La dernière case donne le nombre de
Kilomètre parcouru ici 6 Km.
Quel est ce chemin ?
On va remonter à l’envers

1-A
3-B
6-D
G
D’où le pcc A-B-D-G qui mesure 6 Km

Exemple : graphe orienté

A B C D E F Etapes
0 1-A 3-B 1
 1-A 4-B 3-B 11-B 2
  3-B 6-D 6-D 3
  3-B  9-C 4
    6-D 7-E 5
     6-D

On va remonter à l’envers

1-A
3-B
6-D
F

3
D’où le pcc A-B-D-F qui mesure 6 Km

4. Algorithme de Bellman-Ford

Définition
Un circuit absorbant (cycle négatif-boucle négative) de graphe G est un circuit de longueur
négative.

Théorème
Un graphe G admet un pcc si G est sans circuit absorbant.

Exemple
G1 G2

-Le circuit CBEC est de longueur =-4+2-1=-3 négative. Donc le graphe G1 ne possède pas un pcc.
-Le graphe G2 ne possède pas un circuit absorbant donc il existe un pcc dans ce graphe.

4.1. Algorithme

Graphe=(S (sommets), A (arêtes))


𝐶 ∈ ℝ (≥ 0 𝑜ù ≤ 0)
𝐶 = ∞ s’il n’ya pas d’arc entre x et y Phase de déclaration des variables
Bellman-Ford (G, C, s)
Ggraphe ; C=Cij ; s = point initial

d(s)=0
Pour chaque sommet S sauf s Etape d’initialisation
Faire d()

Pour i1 à S-1


Etape de relaxation
Faire, pour chaque arc (u, ) A
(répété plusieurs fois)
Faire : si d(u)+ C(u, )  d()

4
Alors d()=d(u)+ C(u, )
Fin
Fin

Pour chaque arc (u, ) A


Contrôle de la présence d’une
Faire si d(u)+ C(u, )  d()
boucle négative
Alors existence d’une boucle négative

4.2. Exemples
Exemple 1

B
-1
6 -2 E
3
A 4
C 3

-2 F
5
-1
D

Initialisation : on met A à zéro et  pour les autres sommets.


0


On doit examiner toutes les arêtes : AB, AC, AD, DC, CB, BE, CE, DF, EF
On applique la règle : si d(u)+ (x, y)  d(x) alors d(x) = d(u)+ (x, y)
5 sommets, il ya 4 itérations.
1ère itération

5
61

0
0

43

43

5

2ème itération
61

00
0

43

43

55

3ème itération : pas de changement, l’algorithme est terminé.

Exploitation des résultats


Tableau de synthèse

itération A B C D E F Sommet
Initialisation 0      
1 0 6-A 4-A 5-A 0-B 4-E A
2 0 1-C 3-D 5-A 0-B 3-E D
3 0 1-C 3-D 5-A 0-B 3-E C
4 0 1-C 3-D 5-A 0-B 3-E B
5 0 1-C 3-D 5-A 0-B 3-E E
Contrôle 0 1 3 5 0 3 F

Nous sélections donc l’itération 5 et la colonne F (notre point d’arrivée), nous arrivons sur
l’intersection avec le point E.
Nous remontons le tableau avec l’itération 4 et la colonne E, nous arrivons donc sur l’intersection
avec le point B.

6
Nous remontons le tableau sur l’intersection de l’itération 3 et la colonne B, donne le point C.
L’intersection de l’itération 2 et la colonne C  donne le point D.
L’intersection de l’itération 1 et la colonne D  donne le point A.
AF : ADCBEF (longueur =3)
AE : ADCBE (longueur =0)
AC : ADC (longueur =3)
AD : AD (longueur =5)
AB : ADCB (longueur =1)

Exemple 2

10 arcs : AB, AC, BC, BD, DB, BE, CD, ED, DF, EF
6 sommets  5 itérations

Tableau de synthèse

itération A B C D E F Sommet
Initialisation 0      
1 0 3-A 4-A 5-B 5-B 2-D A
2 0 -3-D 4-D -1-C -1-B 0-E C
3 0 -3-D 4-D -1-C -1-B 0-E D
4 0 -3-D 4-D -1-C -1-B 0-E B
5 0 -3-D 4-D -1-C -1-B 0-E E
Contrôle 0 -3 4 -1 -1 0 F

AB : ACDB (longueur = -3)


AC : AC (longueur = 4)
AD : ACD (longueur = -1)
AE : ACDBE (longueur = -1)
AF : ACDBEF (longueur = 0)

Exemple 3

7
Boucle infinie  pas de pcc

Vous aimerez peut-être aussi