LaDissertation.com - Dissertations, fiches de lectures, exemples du BAC
Recherche

L'algorithm de Bellman-Ford

Cours : L'algorithm de Bellman-Ford. Recherche parmi 300 000+ dissertations

Par   •  11 Mars 2013  •  Cours  •  1 043 Mots (5 Pages)  •  1 627 Vues

Page 1 sur 5

Exercice 1 – L’algorithme de Bellman-Ford

L’algorithme de Bellman-Ford r ́sout le probl`me des plus courts chemins avec origine unique dans

e

e

́

le cas le plus g ́n ́ral o` les poids des arcs peuvent avoir des valeurs n ́gatives. Etant donn ́ un

e e

u

e

e

graphe orient ́ pond ́r ́ G = (V, E), de fonction de poids w, et une origine s, l’algorithme retourne

e

ee

une valeur bool ́enne indiquant s’il existe un circuit de poids n ́gatif accessible depuis s. S’il n’en

e

e

existe pas, l’algorithme donne les plus courts chemins ainsi que leurs poids.

Les notations sont les suivantes: π[v] contient le pr ́d ́cesseur de v sur le chemin (NIL s’il n’y en a

e e

pas), δ(u, v) est le poids du plus court chemin de u vers v (∞ s’il n’existe pas), d[v] est une variable

qui est une borne sup ́rieure du poids du plus court chemin de s vers v (cf. question 4).

e

Bellman-Ford(G, w, s)

• Initialisation:

– pour chaque sommet v ∈ V faire: d[v] ← ∞, π[v] ← NIL

– d[s] ← 0.

• pour i de 1 ` |V | − 1 faire:

a

– pour chaque arc (u, v) ∈ E faire: (relˆchement de l’arc (u, v))

a

∗ si d[v] > d[u] + w(u, v)

alors d[v] ← d[u] + w(u, v), π[v] ← u

• pour chaque arc (u, v) ∈ E faire:

– si d[v] > d[u] + w(u, v) alors retourner FAUX

• retourner VRAI.

1 - On consid`re le graphe ci-dessous. Faire tourner l’algorithme en prenant comme source le

e

sommet z. Mˆme question en changeant le poids de l’arc (y, v) ` 4.

e

a

5

u

6

-3

8

z

7

v

-2

7

2

-4

x

9

y

2 - Quelle est la complexit ́ de cet algorithme?

e

3 - Montrer qu’apr`s le relˆchement de l’arc (u, v), d[v] ≤ d[u] + w(u, v).

e

a

4 - Montrer que d[v] ≥ δ(s, v) pour tout sommet v ` tout instant de l’algorithme. Montrer que

a

lorsque d[v] a atteint sa borne inf ́rieure δ(s, v), il n’est plus jamais modifi ́.

e

e

5 - Consid ́rons un plus court chemin (s, . . . , u, v) pour deux sommets u et v donn ́s. Montrer que

e

e

si d[u] = δ(s, u) ` un moment pr ́c ́dent l’appel du relˆchement de (u, v) dans l’algorithme, alors

a

e e

a

on a toujours d[v] = δ(s, v) apr`s l’appel.

e

6 - Montrer que, si G ne contient aucun circuit de poids n ́gatif accessible depuis s, alors, ` la fin

e

a

de l’ex ́cution de l’algorithme, d[v] = δ(s, v) pour tout sommet v accessible depuis s.

e

7 - Montrer que pour chaque sommet v, il existe un chemin de s vers v si et seulement si Bellman-

Ford se termine avec d[v] < ∞.

Nous pouvons ` pr ́sent d ́montrer la validit ́ de l’algorithme.

a e

e

e

8 - Montrer que si G ne contient aucun circuit de poids n ́gatif accessible depuis s, alors l’algorithme

e

retourne VRAI, on a d[v] = δ(s, v) pour tous les sommets v ∈ V , et le sous-graphe des sommets

v dont π(v) = NIL et des arcs (π(v), v) est une arborescence des plus courts chemins de racine s.

Montrer que si G contient un circuit de poids n ́gatif accessible ` partir de s, l’algorithme renvoie

e

a

FAUX (on pourra raisonner par l’absurde).

Exercice 2 – L’algorithme de Johnson

On s’int ́resse maintenant au probl`me consistant ` calculer les plus courts chemins pour tout

e

e

a

couple

...

Télécharger au format  txt (6.1 Kb)   pdf (169.4 Kb)   docx (11.5 Kb)  
Voir 4 pages de plus »
Uniquement disponible sur LaDissertation.com