IUT Info 2 GI
Ann´ee 2007-08
P´eriode 1 et 2 Cours sur les graphes : petit contrˆole Florent Madelaine
Nom :Corrig´e
Pr´enom :
L’algorithme de Bellman-Ford
On rappelle l’algorithme vu en cours ci-contre.
a- Expliquer comment faire pour stocker les plus courts chemins calcul´es ?
On m´emorise pour chaque sommet, son pr´ed´ecesseur sur un chemin de-
puis la source s. Ainsi `a chaque fois qu’on relˆache un arc (u, v), cela
signifie que le chemin de s`a vpasse dor´enavant par u, autrement dit
le pr´ed´ecesseur de vest maintenant le sommet u. On peut par exemple
stocker ces pr´ed´ecesseurs dans un tableaux index´e par les sommets du
graphe.
b- Am´eliorer le pseudo-code ci-contre pour mettre en place ce stockage des
plus courts chemins.
c- Donner un exemple de graphe orient´e valu´e pour lequel il y a un chemin
entre deux sommets set tmais il n’y a pas de plus court chemin de s`a t.
On peut consid´erer par exemple un graphe pour lequel il y a un chemin
non-´el´ementaire entre les deux sommets set t, chemin qui a donc un
circuit qu’on choisira en plus de poids total n´egatif (par exemple 1).
Algorithme 1 : Bellman-Ford
Donn´ees
Gun graphe orient´e valu´e sans circuit de longueur strictement n´egative
sun sommet de
G
Variables locales
Ltableau des distances depuis s/* index´e par les sommets */
P red tableau des pr´ed´ecesseurs sur un plus court chemin depuis s
(u, v)un arc
d´ebut
initialisation
L[s] := 0
pour tous les sommet v6=sfaire L[v] := +
tant que Lchange faire
/* relaxation de l’arc (u, v)*/
pour chaque arc (u, v)de
Gfaire
si L(v)>L(u)+length((u, v,
G))alors
L(v) :=L(u)+length((u, v,
G))
Pred[v] :=u
finsi
finprch
fintq
fin
Sorties : L, le tableau des distances des plus court chemins de s
P red, le tableau des pr´ed´ecesseurs sur un plus court chemin depuis s
1
Les Algorithmes Cours sur les graphes
d- En plus de calculer des plus courts chemins d’une source `a tous les autres
sommets dans un graphe sans circuit de poids n´egatif, quelle autre fonc-
tion peut remplir l’algorithme de Belman-Ford dans un graphe quelconque ?
On peut d´ecider si le graphe a un circuit de poids n´egatif. En effet, on a
vu en cours que l’algorithme effectue au plus n-1 it´erations de la boucle
Tant Que dans un graphe sans circuit n´egatif. Donc, pour un graphe
quelconque, il suffit de faire une ni`eme it´eration et de v´erifier si oui ou
non lors de cette ultime it´eration le tableau La chang´e.
Variante de Bellman Ford
Soit
Gun graphe orient´e et valu´e sans circuit n´egatif. On veut calculer
la distance des plus courts chemins de n’importe quel sommet de
G`a un
sommet particulier t. On veut aussi calculer un plus court chemin depuis
chaque sommet vers le sommet t.
e- En proc´edant de mani`ere similaire `a l’algorithme de Bellman Ford, donnez
le pseudo-code d’un algorithme pour r´ealiser cette tˆache.
f- Expliquer comment faire pour stocker les plus courts chemins calcul´es ?
On m´emorise pour chaque sommet, son successeur sur un chemin vers t.
Ainsi `a chaque fois qu’on relˆache un arc (u, v), cela signifie que le chemin
de u`a tpasse dor´enavant par v, autrement dit le successeur de uest
maintenant le sommet v. On peut par exemple stocker ces successeurs
dans un tableaux index´e par les sommets du graphe.
Algorithme 2 : Variante de Bellman-Ford
Donn´ees
Gun graphe orient´e valu´e sans circuit de longueur strictement
n´egative
tun sommet de
G
Variables locales
Ltableau des distances depuis un sommet `a t
Succ tableau des successeurs sur un plus court chemin `a t
(u, v)un arc
d´ebut
initialisation
L[t] := 0
pour tous les sommet v6=tfaire L[v] := +
tant que Lchange faire
/* relaxation de l’arc (u, v)*/
pour chaque arc (u, v)de
Gfaire
si L(u)>L(v)+length((u, v,
G))alors
L(u) :=L(v)+length((u, v,
G))
Succ[u] :=v
finsi
finprch
fintq
fin
Sorties :
L, le tableau des distances des plus court chemins `a t
Succ, le tableau des successeurs sur un plus court chemin `a t
2
Les Algorithmes Cours sur les graphes
Techniques de preuves sur les graphes
a- Qu’est-ce qu’une preuve par l’absurde ?
Il s’agit d’une preuve pour laquelle on suppose le contraire de ce qu’on
veut montrer et on montre qu’on obtient une contradiction. Ainsi, on
peut conclure que ce qu’on veut montrer est bien vrai.
b- Qu’est-ce qu’une preuve par r´ecurrence ?
Il s’agit d’une preuve pour laquelle on montre une propri´et´ee qui d´e-
pend d’une variable n, qu’on note P(n). Par exemple dans le cas de
graphes, nest le nombre de sommets, ou bien le nombre d’arˆetes, ou
encore le nombre de fois ou une variable est r´ep´et´ee dans un chemin
non-´el´ementaire. La preuve a alors 3 ´etapes.
(i) D’abord on montre que Pest vrai pour la premi`ere valeur de n(par
exemple P(0) est vraie).
(ii) Ensuite, on montre que si P(n) est vraie, alors P(n+ 1) est vraie.
(iii) Finalement, on peut conclure que Pest vraie pour tout npuisque :
P(0) est vraie P(1) est vraie P(2) est vraie . . . etc.
c- Faire au choix l’une des deux questions suivantes.
(1) Soit
Gun graphe orient´e valu´e. Soient s, m et ttrois sommets distincts
de
G. Soit Cun circuit de poids 1 passant par m. Soit P1un chemin
de s`a met P2un chemin de m`a tde poids respectifs 1 et 2. Montrer
par l’absurde qu’il n’y a pas de plus court chemin de s`a t.
(2) Soit Gun graphe (non-orient´e). Soient set tdeux sommets de G.Mon-
trez par r´ecurrence que si il existe un chemin de s`a talors il existe un
chemin ´el´ementaire de s`a t
(1) On suppose qu’il y a un plus court chemin Pde s`a tde longueur
`. Soit P0le chemin de s`a tde la forme suivante : P1puis qfois C
puis P2. La longueur totale de ce chemin est 1 q+ 2. Si on choisit
qsuffisamment grand, on obtient une contradiction puisque P0est
un chemin plus court que la longueur du plus court chemin P. Par
exemple, on peut choisir q > 3`et alors on a bien 1 q+ 2 < `.
(2) Soit Pun chemin de s`a t. On prouve le r´esultat par r´ecurrence sur
le nombre de (( boucles )) dans P(ici, une boucle est une r´ep´etition
d’un sommet dans le chemin P) en montrant la propri´et´ee suivante.
P(n)Si il existe un chemin de s`a tavec au plus mboucles, alors il
existe un chemin ´el´ementaire de s`a t(sans boucle).
(i) n= 0. Le chemin est d´ej`a ´el´ementaire et il n’y a rien `a montrer.
(ii) On suppose P(n) vraie. Montrons P(n+ 1). Le chemin Pa
n+1 boucles. En particulier il a une boucle autour d’un sommet
x, c’est-`a-dire que Pest de la forme : s, . . . , s0, x, . . . , x, t0, . . . , t.
Consid´erons le chemin P0obtenu en enlevant cette boucle, il est
de la forme s, . . . , s0, x, t0, . . . , t et n’a plus que nboucles. Comme
P(n) est vraie, il existe donc un chemin ´el´ementaire de s`a t.
(iii) Conclusion : la propri´et´ee est vraie pour tout net on a bien
montr´e le r´esultat demand´e.
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !