IUT-A, département Informatique, module Réseaux

publicité
M2201 - Graphes et langages
Durée : 2 heures
10 février 2014
Examen de graphes
Département Informatique
Tous documents et calculatrices autorisés.
Vous répondrez aux trois exercices sur des copies séparées.
Exercice 1 : Points d’articulation d’un graphe
Définition 1 Un point d’articulation est un sommet d’un graphe non orienté qui, si on le retire du graphe,
augmente le nombre de composantes connexes. Si le graphe était connexe avant de retirer ce sommet, il
devient donc non connexe.
2
3
1
10
9
7
8
5
6
4
11
Figure 1 – Graphe 1
Q1: Quels sont les points d’articulation du graphe 1 ?
Définition 2 Une arête d’un graphe est un isthme si sa suppression augmente le nombre de composantes
connexes du graphe.
Q2: Quels sont les isthmes du graphe 1 ?
Q3: Rappelez la définition d’un cycle hamiltonien
Q4: Expliquez pourquoi un graphe hamiltonien (i.e. un graphe possédant un cycle hamiltonien) ne possède
pas de point d’articulation.
Q5: Donnez un exemple de graphe hamiltonien qui possède un ishme.
Q6: Le graphe de la figure 1 est-il hamiltonien ? Expliquez.
Q7: Effectuez le parcours en profondeur du graphe de la figure 1 en commençant par le sommet 1. L’algorithme de parcours en profondeur vous est rappelé dans l’algorithme 1. Vous ferez attention à bien suivre
l’ordre de parcours des sommets de l’algorithme, et noterez en trait plein renforcé la relation de parenté dans
l’arbre du parcours
// initialisation de l’algorithme
pour i = 1, . . . , n faire
p(i) ← 0;
n(i) ← |N + (i)|;
p(i0 ) ← i0 ;
i ← i0 ;
// on continue tant qu’on n’est pas revenu sur i0 en visitant tous ses successeurs
tant que n(i0 ) > 0 ou i 6= i0 faire
// on teste si tous les successeurs de i ont été vus
si n(i) 6= 0 alors
sélectionner parmi les successeurs de i le sommet j venant en position n(i);
n(i) ← n(i) − 1;
si p(j) = 0 alors
p(j) ← i;
i ← j;
sinon
// on remonte d’un cran en revenant sur le sommet qui a permis d’atteindre i
// on dit qu’on ”ferme” le sommet i
i ← p(i)
Algorithme 1 : Parcours en profondeur dans un graphe
Exercice 2 : Ordonnancement
La mise en exploitation d’un nouveau gisement minier demande la réalisation d’un certain nombre de
tâches. Le tableau suivant représente ces différentes tâches avec leurs relations d’antériorité.
Tâche
A
B
C
D
E
F
G
H
I
J
K
L
Description
Durée (en jours)
Obtention d’un permis d’exploitation
Établissement d’une piste de 6 km
Transport et installation à pied d’œuvre de 2 sondeuses
Création de bâtiments provisoires pour le bureau des plans,
le logement des ouvriers sondeurs
Goudronnage de la piste
Adduction d’eau
Campagne de sondage
Forage et équipement de trois puits
Transport et installation au fond du matériel d’exploitation
Construction de bureaux et logements, ouvriers et ingénieurs
Traçage et aménagement du fond
Construction d’une laverie
120
180
3
30
Tâches
antérieures
A
B
B
60
90
240
180
30
240
360
240
B
D
C,D
E,F,G
J,H
E,F,G
J,H
J,H
Q8: Déterminez les dates au plus tôt et les dates au plus tard de chaque tâche, ainsi que le temps minimum
de réalisation de l’ensemble.
Q9: Quelles sont les marges totales de tous les sommets ?
Q10: Donnez un chemin critique.
Exercice 3 : Flots
Un organisme d’aide sociale dispose de 100 appartements pour loger 100 familles. On a les données
suivantes :
Nombre de personnes de la famille
Nombre de familles
1
10
Nombre de pièces de l’appartement
Nombre d’appartements
2
13
1
8
3
22
2
18
4
23
3
20
5 et plus
32
4
40
5
14
On adopte d’autre part les critères de répartition suivants :
— Une famille d’une personne peut être logée dans un appartement de 1 ou 2 pièces ;
— Une famille de 2 personnes peut être logée dans un appartement de 1 ou 2 pièces ;
— Une famille de 3 personnes peut être logée dans un appartement de 2, 3 ou 4 pièces ;
— Une famille de 4 personnes peut être logée dans un appartement de 3, 4 ou 5 pièces ;
— Une famille de 5 personnes ou plus peut être logée dans un appartement de 4 ou 5 pièces.
Nous voulons loger le plus grand nombre possible de familles en respectant ces critères de répartition.
Q11: Formulez le problème comme un problème de flot sur un réseau dont vous préciserez la construction.
Vous pouvez par exemple avoir un noeud initial qui correspond à toutes les familles à loger (la source),
puis un noeud pour chaque type de famille ; et de même pour les appartements... Quel serait le puit ? Quels
seraient alors les arcs entre ces nœuds ? Et quelles seraient les valeurs sur ces arcs ?
Q12: Dessinez le graphe correspondant au problème.
Une première proposition d’attribution avait conduit aux résultats suivants :
— 6 appartements d’une pièce attribués à des familles d’une personne,
— 4 appartements de 2 pièces attribués à des familles d’une personne,
— 13 appartements de 2 pièces attribués à des familles de 2 personnes,
— 1 appartement de 2 pièces attribués à une famille de 3 personnes,
— 20 appartements de 3 pièces attribués à des familles de 3 personnes,
— 1 appartement de 4 pièces attribué à une famille de 3 personnes,
— 23 appartements de 4 pièces attribués à des familles de 4 personnes,
— 16 appartements de 4 pièces attribués à des familles de 5 personnes ou plus,
— 14 appartements de 5 pièces attribués à des familles de 5 personnes ou plus.
Q13: Le flot correspondant à cette solution initial est-il complet ? Justifiez votre réponse.
Q14: Montrez en appliquant l’algorithme de Ford-Fulkerson à partir de cette solution initiale qu’il est possible
de faire mieux. Combien de familles pouvez-vous loger finalement ?
Vous préciserez pour chaque étape de l’algorithme la chaîne augmentante considérée et le flot résiduel.
Téléchargement