Vous êtes sur la page 1sur 5

IUT Aix-en-Provence Année 2015-2016

DUT Informatique TD Graphes et Langages feuille n◦ 6

Optimisation

Exercice 1 (Arbres couvrants) On considère un réseau de 5 villes. Le coût de la construction d’une ligne
électrique entre i et j est Aij avec A donnée par :
 
0 3 5 11 9
3 0 3 9 8
+∞
 
A= 5 3 0 10
+∞

11 9 0 7
9 8 10 7 0
1. Tracer le graphe valué associé.
2. Trouvez le coût minimum d’un réseau liant les villes entre elles à l’aide de l’algorithme de Kruskal.
Combien d’itérations sont t’elles nécessaire ?
3. Répondre à la même question en utilisant l’algorithme de Prim pour le graphe suivant :
A 1 B 16 C

11 17

20 4 20 F

13

D 4 E

4. Peut on adapté les deux algorithmes pour trouver un arbre couvrant de coût maximal ? Appliquez cet
algorithme à l’un des graphes précédents.

Exercice 2 (Algorithme de Dijkstra) Appliquer l’algorithme de Dijkstra aux graphes suivant pour calculer les
chemins de poids minimum depuis le sommet A. Combien d’itérations sont réalisés ?

F C 10 F

14 4 3 7 2 5

A 2 B 6 C 2 D A 4 B 4 3 1

4 1 5 10 4

E D 1 E

Exercice 3 (Algorithme de Bellman simplifié) Décomposer les graphes suivants en niveaux puis appliquer
l’algorithme de Bellman simplifié pour calculer les chemins de poids minimum et maximum depuis A. Com-
bien d’itérations sont réalisés ?
E 4 B 6 C A 3 B

8 6 4 9 7 2 0

5 A 5 D 1 H C D -1 E

2 -1 14 2 4 1 2

F 10 G F -3 G -1 H
Exercice 4 (Algorithme de Bellman-Ford) Appliquer l’algorithme de Bellman-Ford pour calculer les distances
minimale depuis le sommet A aux autres sommets. Dans chaque cas, quel autre algorithme aurait on pu utili-
ser ? Pourquoi ?

2
A 3 B
A 7 B 2 C
2 7 1
4 4 -1
3 1 C 2 D 3 E
F
3 0 4 1 2 1
D 1 E
F 2 G 3 H

Exercice 5 On considère un projet composé de 5 tâches (Si )i=1,...,5 plus deux tâches fictives, S0 et S f , de début
et de fin de projet. Ces projets sont représentés par des graphes potentiel-tâches et on note ti le début de la
tâche Si (et t0 = 0).

S1 2 S3 1 S5
0
S0 2 4 6
3
S2 2 S4 2 Sf

1. Lequel des ordonnancements suivants n’est pas compatible avec ce graphe ?


t1 t2 t3 t5 t4

0 1 2 3 4 5 6 7 8 9 10 11 12
t1 t3 t2 t4 t5

0 1 2 3 4 5 6 7 8 9 10 11 12

2. Calculer l’ordonnancement au plus tôt du projet et sa durée minimale.


3. Donner l’ordonnancement au plus tard pour terminer le projet en 10 jours.

Exercice 6 Le prince est parti à la recherche du trésor ; il peut accomplir les actions suivantes :
— Du point de départ, aller à la ville du marché, en contournant la rivière par un gué : 4 jours.
— Du point de départ, traverser la forêt : 1 jour.
— Depuis la forêt, abattre des arbres pour traverser la rivière, et se rendre à la ville du marché : 2 jours.
— Depuis la forêt, se rendre à la capitale provinciale en traversant les marais : 7 jours.
— S’equiper chaudement au marché, et partir pour le col du nord : 5 jours.
— Trouver un bon cheval au marché, et se rendre à la capitale provinciale par la grand-route : 3 jours.
— Depuis le col du nord, se rendre au refuge du devin : 3 jours.
— Depuis la capitale provinciale, se rendre au refuge du devin : 4 jours.
— Se rendre de la capitale provinciale au palais du roi, en étant retardé par des contrôles : 10 jours.
— Au sortir du devin, partir directement chercher l’épée, et la trouver après s’être perdu par manque de
carte : 20 jours.
— Au sortir de chez le devin, au mépris de ses avis, se rendre directement à la grotte et tuer le dragon
avec un canif : 32 jours (il faut du temps pour le tuer avec un canif ).
— Bien conseillé par le devin, prendre un raccourci pour le palais du roi : 5 jours.
— Un fois arrivé au palais du roi, s’eduire la bibliothécaire, puis trouver les cartes qui expliquent l’em-
placement de l’épée et du trésor : 6 jours.
— En utilisant les cartes trouvées dans la bibliothèque, faire tout le tour de la montagne, et traverser un
labyrinthe qui mène directement au trésor : 30 jours.
— En utilisant les cartes, al ler chercher l’épée pour combattre le dragon : 7 jours.
— S’entraı̂ner à l’épée, puis tuer le dragon : 8 jours.
— Une fois l’épée trouvée, au lieu d’affronter le dragon, utiliser l’épée pour creuser un tunnel par des-
sous, et déboucher directement dans la cachette du trésor : 18 jours.
— Une fois le dragon tué, résoudre l’énigme qui ouvre la cachette du trésor : 9 jours.
Comment doit-il faire pour récupérer le trésor le plus vite possible ? Quel temps lui faudra-t-il ? Pour répondre
à ces question, modéliser le problème à l’aide d’un graphe et utiliser un algorithme vu en cours.

Exercice 7 (Flot maximum) Déterminez le flot maximum pour le réseau ci-dessous. Comment montrer que la
solution proposée est bien optimale ?

6 1 8

2
2

S 9 8 4 T
2

4 1 1 6

6 1

Exercice 8 (Mon patron a tort) Soit le réseau représenté plus bas. Votre patron est convaincu qu’il est possible
de faire passer 138 unités de flots de s à t et il vous reproche de ne pas être capable d’exhiber un tel flot.
Convainquez votre patron par un argument simple qu’un tel flot n’existe pas. Quelle est la valeur maximale
d’un flot dans ce réseau ?

50

36
15

15

22

40 20

S 70 30 48 T

30
20

18

12

24 60

40
IUT Aix-en-Provence Année 2015-2016
DUT Informatique TD Graphes et Langages feuille n◦ 6

Optimisation (Solutions)

Correction 1 Nous réalisons m itérations de Kruskal avec m = n − 1 = 4. Nous obtenons :


B

3 3
A C

7
E D

Nous obtenons, par conséquent, un arbre de poids 21.

Correction 6

Correction 7 On voit que f net (S) = − f net ( T ) = 17. Si on essaie de trouver un chemin f -augmentant avec un
BFS ou DFS en s’autorisant donc à prendre,
— Soit les arêtes non f -saturées,
— Soit les arêtes telles qu’il y ait une arête dans l’autre sens non f -nulles (back edges),
on part de S mais on n’arrive jamais à T. On a donc f max = 17.
3/3

7/

2/2
6 1
5/ 0/ 8

2
2/
2/2

0/1
S 8/9 7/8 4/4 T

4/ 1/

0/1
1 6
4 1/ 1 6/

5/6

Correction 8 On sait par la dualité que pour toute coupe S → S̄, f max ≤ capacité(S → S̄). En prenant dans S
les noeuds bleus et dans S̄ les noeuds verts, capacité(S → S̄) vaux la somme des capacités des arêtes rouges,
c’est-à-dire 136. On a donc f max ≤ 136.

50

36
15

15

40 20 22

S 70 30 48 T

30
20

18

12

24 60

40

Soit f le flot du graph suivant, valeur( f ) = 136. On sait donc que 136 = valeur( f ) ≤ f max ≤ 136. On a donc
nécessairement f max = 136.

50/50

36
10/15

20/22

40
0/15

2 0 /3
/
40 6/ 6

S 66/70 30/30 48/48 T

30
20/20

12/12

24 0
0/18

/3
0 / /6
10 52

40/40