Th´eorie des graphes Plus courts chemins
Zolt´an Szigeti
Ensimag, G-SCOP
EXO 5.1
Enonc´e´
Dans un r´eseau soient P un plus court (s,p)-chemin et x,y ∈V(P).
Alors le sous-chemin P[x,y] est un plus court (x,y)-chemin.
Enonc´e´
Dans un r´eseau soient P un plus court (s,p)-chemin et x,y ∈V(P).
Alors le sous-chemin P[x,y] est un plus court (x,y)-chemin.
Solution
1 Soit Q un plus court (x,y)-chemin, donc c(Q)≤c(P[x,y]).
2 R :=P[s,x] +Q+P[y,p] est un (s,p)-chemin.
3 Puisque P est un plus court (s,p)-chemin,
c(P)≤c(R) =c(P)−c(P[x,y]) +c(Q) d’o`u c(P[x,y])≤c(Q).
4 Doncc(P[x,y]) =c(Q),
5 c’est-`a-direP[x,y] est un plus court (x,y)-chemin.
EXO 5.2
Enonc´e´
Donner (a) les plus courtschemins issus du sommets, et puis (b) les plus longs chemins, dans le r´eseau suivant.
s
1
2
3
4
5 6
⑦
❃
✲
✲
❄ ✲s
✻ ✸
❄
q
✶ 1
3
2 -2
1
4
1
1
3 3 9 4
s 1
2
3
4
5 6
⑦
❃ ✲
✲
❄ s✲
✻ ✸
❄ q
✶ 1
3 2 -2
1 4
1 1
3 3 9 4
❄ ✲
✻
❄
✲
✲
✒
❘
❥✯ ❘ v1 ✒
0
❄ ✲
✻
❄
✲
✲
✲
❘
❥✯ ❘ v1 ✒
0 v2 1
✒
❄
✻
❄
✲
✲
❘
❥✯ ❘ v1 ✒
0 v2 1
✒
v3 2 ℓ(v2) = min{0 + 1}= 1
ℓ(v3) = min{1 + 1,0 + 3}= 2
❄ ✲
✻
❄
✲
✲
❘
❥✯ ❘ v1 ✒
0 v2 1
✒
v3 2
ℓ(v4) = min{1 + 2}= 3 v43
❄ ✲
✻
❄
✲
✲
❘
❥✯ ❘ v1 ✒
0 v2 1
✒
v3 2
v43
v5 ℓ(v5) = min{2 + 1}= 3
3
❄ ✲
✻
❄
✲
✲
❘
❥✯ ❘ v1 ✒
0 v2 1
✒
v3 2
v43
v53 v6
-1
ℓ(v6) = min{3 + 3,2 + 4,
❄ ✲
✻
❄
✲
✲
❘
❥✯ ❘ v1 ✒
v2 1
✒
v3 2
v43
v53 v6
-1
1−2,3 + 1}=−1
v7 0
ℓ(v7) = min{3 + 3,−1 + 9,3 + 4}= 6 6
EXO 5.2(b)
s 1
2
3
4
5 6
⑦
❃ ✲
✲
❄ s✲
✻ ✸
❄ q
✶ 1
3 2 -2
1 4
1 1
3 3 9 4
❄ ✲
✻
✲
❄ ✲
✒
❘
❥✯ ❘ v1 ✒
0
❄ ✲
✻
✲
❄ ✲
✒
❘
❥✯ ❘ v1 ✒
0 1v2
❄ ✲
✻
✲
❄ ✲
✒
❘
❥✯ ❘ v1 ✒
0 1v2
v3 3 ℓ(v2) = max{0 + 1}= 1
ℓ(v3) = max{1 + 1,0 + 3}= 3
❄ ✲
✻
✲
❄ ✲
✒
❘
❥✯ ❘ v1 ✒
0 1v2
v3 3
v43 ℓ(v2) = max{1 + 2}= 3
❄ ✲
✻
✲
❄ ✲
✒
❘
❥✯ ❘ v1 ✒
0 1v2
v3 3
v43
v54 ℓ(v5) = max{3 + 1}= 4
❄ ✲
✻
✲
❄ ✲
✒
❘
❥✯ ❘ v1 ✒
0 1v2
v3 3
v43
v54 ℓ(v6) = max{3 + 1,1−2,
v6 7
3 + 4,4 + 3}= 7
❄ ✲
✻
✲
❄✲
✒
❘
❥✯ ❘ v1 ✒
0 1v2
v3 3
v43
v54 ℓ(v7) = max{3 + 3,7 + 9,4 + 4}= 16
v6 7 v7
16
Enonc´e´
En appliquant l’algorithme de Dijkstra, donner les plus courts chemins issus du sommet s, dans le r´eseau suivant.
✸
s ❄ ✲ ❄
✯
❥
✲
❂ 3 s
1
2
3
4
5 2
8
1
5
1 2
1
4
1
⑥
EXO 5.3
✸
s ❄ ✲❄
✯
❥
✲
❂ 3 s
1
2
3
4 5 2
8 1
5
1 2
1 4
1
⑥
✒
❘ ✲
✲
❄ ❄
✒
❘
✠
■ ✒
❘ ✲
✲
❄ ❄
✒
❘
✠
■ ✒
❘ ✲
✲
❄ ❄
✒
❘
✠
■
✒
❘ ✲
✲
❄ ❄
✒
❘
✠
■ ✒
❘ ✲
✲
❄ ❄
✒
❘
✠
■ ✒
❘ ✲
✲
❄ ❄
✒
❘
✠
■
✒
❘ ✲
✲
❄ ❄
✒
❘
✠
■
∞ ∞
∞ ∞
∞ ∞
∞ 0
∞
0 2
8
2
0
∞
∞ 3
7
0
2 3
5 7
4 0
2 3
4
5 7
0
2 3
4
5 6
0
2 3
5
4 6
✒
✒
✲
✒
✲ ✲
❘ ❘
✠
✒ ✲
❘
✠ ✲
Enonc´e´
Donner un r´eseau sans circuit absorbant avec une racine s pour lequel l’algorithme de Dijkstra ne trouve pas les chemins de coˆut minimum issus de s.
EXO 5.4
Enonc´e´
Donner un r´eseau sans circuit absorbant avec une racine s pour lequel l’algorithme de Dijkstra ne trouve pas les chemins de coˆut minimum issus de s.
Solution
Soit (G,c) le r´eseau ci-dessous. Alors l’algorithme de Dijkstra trouve le chemin sb pourb mais le chemin sabest plus court.
s
a
b
❄
✯
1 ❥ 2
−2
Enonc´e´
Soit (G,c) un r´eseau sans circuit absorbant et soits une racine deG. Soit wk(v) le coˆut minimum d’un (s,v)-chemin de longueur ≤k. Montrer que
(a) wk+1(v)≤wk(v) pour chaque sommet v.
(b) wk+1(v)≤c(uv) +wk(u) pour chaque uv ∈A(G).
(c) wk+1(v) = min{wk(v),c(uv) +wk(u) :uv ∈A(G)}.
(d) wn(v) =wn−1(v) pour chaque sommet v o`u n=|V(G)|.
EXO 5.5
Solution
Soit Wk(v) l’ensemble de chemins de s `a v de longueur≤k.
Alors wk(v) = min{c(P) :P ∈ Wk(v)}.
(a) Soit v ∈V(G).Si P ∈ Wk(v) tel quec(P) =wk(v) alors P ∈ Wk+1(v) doncwk+1(v)≤c(P) =wk(v).
(b) Soit uv ∈A(G).SiP ∈ Wk(u) tel quec(P) =wk(u) alors P +uv ∈ Wk+1(v) donc
wk+1(v)≤c(P +uv) =c(P) +c(uv) =wk(u) +c(uv).
Solution de (c)
1 Par (a) et (b),wk+1(v)≤min{wk(v),c(uv) +wk(u) :uv ∈A(G)}.
1 SoitP∈ Wk+1(v) tel quec(P) =wk+1(v).
2 SiP∈ Wk(v) alorswk(v)≤c(P) =wk+1(v).
3 SinonPest de longueurk+ 1≥1.
4 Soientuv le dernier arc dePetP′ :=P[s,u].
5 P′ est un (s,u)-chemin de longueurk c’est-`a-direP′ ∈ Wk(u).
6 Alorswk(u)≤c(P′) =c(P)−c(uv) =wk+1(v)−c(uv).
7 D’o`uwk(u) +c(uv)≤wk+1(v).
2 Doncwk+1(v)≥min{wk(v),c(uv) +wk(u) :uv ∈A(G)}.
3 Les in´egalit´es (1) et (2) impliquent (c).
EXO 5.5
Solution de (d)
1 Soit P ∈ Wn(v) tel quec(P) =wn(v) et tel que |A(P)|soit minimum.
2 Alors P est un chemin ´el´ementaire.
1 Sinon il existe un sommetx∈V(G) qui est utilis´e plusieurs fois parP tel qu’aucun sommet deP[x,x] n’est utilis´e plusieurs fois parP[x,x].
2 En enlevant deP le sous-cheminP[x,x] (qui est un circuitC tel que c(C)≥0 et|A(C)|>0) on obtient un (s,v)-cheminP′ tel que
3 c(P)≤c(P′) =c(P)−c(C)≤c(P),
4 doncc(P′) =c(P) et que|A(P′)|<|A(P)| (contradiction).
3 Donc|A(P)| ≤n−1 c’est-`a-dire P ∈ Wn−1(v),
4 d’o`u wn−1(v)≤c(P) =wn(v).
5 D’apr`es (a) wn(v)≤wn−1(v) donc on awn(v) =wn−1(v).
Enonc´e´
Trouver les distances du sommets s aux autres sommets dans le r´eseau suivant en utilisant l’algorithme de Bellman-Ford (l’Exercice 5.5).
s -3
2 2
2 1 4 1
2
3
EXO 5.6
Solution
wk+1(v) = min{wk(v),c(uv) +wk(u) :uv ∈A(G)}.
s -3
2 2
2 1 4 1
2
3
0 1 2 3 4
s 0 0 0 0 0
1 ∞ 4 3 3 3
2 ∞ 1 1 1 1
3 ∞ 2 1 0 0
Solution
wk+1(v) = min{wk(v),c(uv) +wk(u) :uv ∈A(G)}.
s -3
2 2
2 1 4 1
2
3
0 1 2 3 4
s 0 0 0 0 0
1 ∞ 4 3 3 3
2 ∞ 1 1 1 1
3 ∞ 2 1 0 0