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.