100% ont trouvé ce document utile (1 vote)
673 vues4 pages

Algorithme de Moore Dijkstra

Ce document décrit le problème du plus court chemin dans un graphe valué. Il définit ce qu'est un plus court chemin et présente le principe d'optimalité. L'algorithme de Dijkstra pour trouver le plus court chemin entre un sommet source et tous les autres est ensuite détaillé avec un exemple.

Transféré par

Jaguar Book
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
673 vues4 pages

Algorithme de Moore Dijkstra

Ce document décrit le problème du plus court chemin dans un graphe valué. Il définit ce qu'est un plus court chemin et présente le principe d'optimalité. L'algorithme de Dijkstra pour trouver le plus court chemin entre un sommet source et tous les autres est ensuite détaillé avec un exemple.

Transféré par

Jaguar Book
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

LE PROBLEME DU PLUS COURT CHEMIN

Les problèmes de cheminement (itinéraire, parcours ou chemin) dans les graphes (en particulier la
recherche d’un plus court chemin) comptent parmi les problèmes les plus anciens de la théorie des
graphes et les plus importants par leurs applications.

I. DEFINITION :

Soit G = (X, U) un graphe valué (pondéré) ; on associe à chaque arc u=(i, j) une longueur l(u) ou lij.

Le Problème du plus court chemin entre i et j est de trouver un chemin μ(i, j) de i à j tel que :

l(μ) = ∑ l(u) où u ∈ μ soit minimal.

Interprétation de l(μ) : coût de transport, dépense de construction, temps nécessaire de parcours...

II. PRINCIPE D’OPTIMALITE :

Le principe d’optimalité énonce le fait que les sous-chemins des plus courts chemins sont des plus
courts chemins. Si le plus court chemin PAB de A à B passe par le nœud C, alors la portion PAC est un
plus court chemin de A à C.

Principe des algorithmes de recherche de chemins minimaux :

- Une distance d(i) est associée au sommet i.


- En fin d’algorithme, cette distance représente la longueur d’un plus court chemin de l’origine
au sommet i.

III. D’UN SOMMET A TOUS LES AUTRES :

Ce problème est aussi appelé le problème de recherche du plus court chemin à origine unique.

Si dans le graphe, il existe un circuit de longueur négative (circuit absorbant), la recherche d’un plus
court chemin de l’origine au sommet considéré est sans objet. En effet, on peut utiliser le circuit une
infinité de fois (entrainant la diminution perpétuelle de la longueur du chemin).

1. ALGORITHME DE MOORE DIJKSTRA

L'algorithme de Dijkstra sert à résoudre le problème du plus court chemin à partir d'une source vers
tous les autres sommets dans un graphe orienté pondéré par des réels positifs.

Notation :

Si i ∈ X alors :
- Γ(i) : ensemble des successeurs de i
- Γ-1(i) : ensemble des prédécesseurs de i
- PCC(i) : longueur du plus court chemin d’un sommet source s à i
- X : ensemble des sommets dans le graphe
- S : un ensemble des sommets non visités (non marqués)
Algorithme :

Etape 1 : Initialisation
Choisir le sommet origine s
S = X – {s}
PCC(s) = 0
𝑙(𝑠, 𝑖) 𝑠𝑖 𝑖 ∈ Γ(s)
PCC(i) = {
∞ 𝑠𝑖𝑛𝑜𝑛
Etape 2 :
Sélectionner j ∈ S tel que : PCC(j) = min (PPC(i)) où i ∈ S
Faire S = S – {j}
Si S = {} alors STOP
Sinon aller à l’étape 3

Etape 3 :
Pour tout i ∈ Γ(j) ∩ S
Faire PCC(i) = min (PCC(i) ; PCC(j) + l(j, i))
Retourner à l’étape 2

Application :

j=s=A

S = {B, C, D, E, F, G}
PCC(A) = 0
PCC(B) = 2
PCC(C) = 7
PCC(D) = ∞
PCC(E) = ∞
PCC(F) = ∞
PCC(G) = ∞
j=B

S = S – {B} = {C, D, E, F, G}
Γ(B) = {C, D}
Γ(B) ∩ S = {C, D}
PCC(C) = min (PCC(C), PCC(B) + l(B, C)) = min (7, 2 + 5) = 7
PCC(D) = min (PCC(D), PCC(B) + l(B, D)) = min (∞, 2 + 3) = 5

j=D

S = S – {D} = {C, E, F, G}
Γ(D) = {C, E, F}
Γ(D) ∩ S = {C, E, F}
PCC(C) = min (PCC(C), PCC(D) + l(D, C)) = min (7, 5 + 1) = 6
PCC(E) = min (PCC(E), PCC(D) + l(D, E)) = min (∞, 5 + 6) = 11
PCC(F) = min (PCC(F), PCC(D) + l(D, F)) = min (∞, 5 + 7) = 12

j=C

S = S – {C} = {E, F, G}
Γ(C) = {E, G}
Γ(C) ∩ S = {E, G}
PCC(E) = min (PCC(E), PCC(C) + l(C, E)) = min (11, 6 + 5) = 11
PCC(G) = min (PCC(G), PCC(C) + l(C, G)) = min (∞, 6 + 2) = 8

j=G

S = S – {G} = {E, F}
Γ(G) = {E, F}
Γ(G) ∩ S = {E, F}
PCC(E) = min (PCC(E), PCC(G) + l(G, E)) = min (11, 8 + 2) = 10
PCC(F) = min (PCC(F), PCC(G) + l(G, F)) = min (12, 8 + 4) = 12

j=E

S = S – {E} = {F}
Γ(E) = {F}
Γ(E) ∩ S = {F}
PCC(F) = min (PCC(F), PCC(E) + l(E, F)) = min (12, 10 + 1) = 11

j=F

S = S – {F} = {} => STOP


j\i A B C D E F G
A 0 2 7 ∞ ∞ ∞ ∞
B 0 2 7 5 ∞ ∞ ∞
D 0 2 6 5 11 12 ∞
C 0 2 6 5 11 12 8
G 0 2 6 5 10 12 8
E 0 2 6 5 10 11 8

Vous aimerez peut-être aussi