TD 5
TD 5
TD 5
TD 5
L3 Info, L3 Math-Info.
- Exercice 1 -
On considère le graphe orienté et pondéré suivant :
2 3
a d g
1 5
10 1
7 6
11
b e h
1 8
4 1
2
c f
1. Utiliser l’algo de Dijkstra pour calculer une arborescence des plus courts chemins issue de a.
2. La longueur de l’arc ge est en fait -8. Refaire la question précédente. Que constatez vous ?
3. Utiliser cette fois l’algorithme de Bellman-Ford pour trouver une arborescence des plus courts
chemins issue de a. On traitera les arcs selon l’ordre alphabétique.
4. Une seconde modification a lieu, la longueur de l’arc f h est maintenant de 1 (la longueur de
ge est toujours -8). Relancer l’algorithme de Bellman-Ford. Que constatez vous ?
Algorithme : ALGO
Données : Un graphe orienté acyclique D = (V, E) donné par listes de voisins entrants,
l : E → IR et r un sommet de D.
Résultat : Deux fonctions : d : V → IR et pere : V → V .
1 début
2 Calculer un tri topologique v1 , . . . , vn de D;
3 pour tous les x ∈ V faire
4 d[x] ←− +∞;
5 pere[x] ←− x;
6 d[r] ←− 0;
7 pour tous les i = 1, . . . , n faire
8 pour tous les y ∈ V ois− (vi ) faire
9 si d[y] + l(yvi ) < d[vi ] alors
10 d[vi ] ←− d[y] + l(yvi );
11 pere[vi ] ←− y;
1. Appliquer l’algorithme précédent sur le graphe D = (V, A) où V = {a, b, c, d, e, f, g}, A est
donné ci-dessous avec les longueurs associées et r = a.
ab ac be bf bg cb ce cf dc eg
l(.) -3 5 1 4 5 2 1 1 6 6
1
Algorithmes de Graphes, HLIN501 Année 2016-2017
TD 5
L3 Info, L3 Math-Info.
- Exercice 4 - Vrai/Faux.
Confirmer (et prouver) ou infirmer (et donner un contre-exemple) les propriétés suivantes :
a. Un sous-chemin d’un plus court chemin est un plus court chemin.
b. Si r est un sommet d’un graphe orienté D pondéré par des longueurs positives toutes distinctes,
alors D possède une unique arborescence des plus courts chemins issue de r.
c. Dans tout graphe G non orienté, connexe et valué positivement sur ses arêtes, il existe un arbre
des plus courts chemins de G qui est aussi un arbre couvrant de poids min de G de même racine.
d. Si un graphe orienté et valué sur ses arêtes possède certaines longueurs négatives, pour calculer
un arbre des plus courts chemins, il suffit d’ajouter − min{l(xy) : xy ∈ E} sur chaque arête
puis d’utiliser l’algorithme de Dijkstra.
e. Pour tout graphe G non orienté, connexe et valué sur ses arêtes, et pour tout sommet r de G, il
existe un arbre des plus courts chemins issu de r.
- Exercice 5 - Coupes.
Soient x et y deux sommets d’un graphe orienté D = (V, A) tel qu’il existe un chemin orienté de x
à y. Un ensemble C ⊆ A est une xy-coupe si tous les chemins de x à y contiennent un arc de C
a. Montrer que si C est une xy-coupe, il existe un ensemble X de sommets tel que C contient tous
les arcs de X à V \ X.
b. Montrer que le nombre maximum de xy-coupes disjointes est égal à la longueur minimum d’un
xy-chemin.
- Exercice 6 - Arbitrage.
L’arbitrage est l’utilisation du décalage entre les taux de change d’une monnaie pour transformer
une unité de monnaie en plus d’une unité de la même monnaie. Par exemple, si 1e = 1,51 $ U.S., 1 $
U.S. = 0,62 £ et 1 £= 1,11e, un spéculateur peut, avec un euro, acheter 1, 51 × 0, 62 × 1, 11 = 1, 039
euros.
Comment devenir riche ? Et avec quelle complexité ?