Algorithmique - ROB3 TD6 - Introduction aux graphes
Transcription
Algorithmique - ROB3 TD6 - Introduction aux graphes
Algorithmique - ROB3 TD6 - Introduction aux graphes Exercice 1 (Le duc de Densmore) Le duc et la duchesse de Densmore ont organisé une soirée avec quatre couples d'amis. Certaines personnes, issues de couples diérents, se sont serrées la main. A la n du repas, le duc de Densmore demande à chacun combien de mains il a serrées. Il reçoit neuf réponses diérentes. Combien de mains la duchesse de Densmore a-t-elle serrées? Au cours d'une soirée, les convives se serrent la main les uns les autres et chacun se souvient du nombre de fois qu'il ou elle a serré des mains. Á la n de la soirée, le maître de cérémonie additionne le nombre de fois que chaque invité a serré une main. Montrer que le résultat est pair en démontrant le lemme de la poignée de main : si G = (S, A) est un graphe non orienté alors X degré(s) = 2|A| Déduire de la question précédente qu'il y a un nombre pair de convives ayant serré un nombre impair de mains. Le duc de Densmore connut une n tragique puisqu'il périt dans l'explosion qui détruisit son château. Son testament fut détruit; or celui-ci avait tout pour déplaire à l'une de ses sept ex-femmes. Peu avant le crime, elles étaient toutes venues au château et elles jurèrent que ce fut la seule fois où elles s'y étaient rendues. Elles peuvent donc toutes être coupables, mais le dispositif ayant provoqué l'explosion avait été dissimulé dans une armure dans la chambre du duc, et sa pose avait nécessité plus d'une visite. Donc la coupable a menti : elle est venue plusieurs fois. On dispose des déclarations suivantes : 1. Ann dit avoir rencontré Betty, Charlotte, Félicia et Georgia; 2. Betty dit avoir rencontré Ann, Charlotte, Edith, Félicia et Helen; 3. Charlotte dit avoir rencontré Ann, Betty et Edith; 4. Edith dit avoir rencontré Betty, Charlotte et Félicia; 5. Félicia dit avoir rencontré Ann, Betty, Edith et Helen; 6. Georgia dit avoir rencontré Ann et Helen; 7. Helen dit avoir rencontré Betty, Félicia et Georgia. Tracer le graphe des rencontres, dont les sommets représentent les sept femmes et où l'on trace une arête entre deux sommets lorsque deux femmes se sont rencontrées. Montrer que le graphe devrait être triangulé, c'est-à-dire que tout cycle de longueur supérieure à 3 admet au moins une corde (une arête reliant deux sommets non consécutifs du cycle). En déduire qui a tué le duc de Densmore (en considérant que les six innocentes n'ont pas menti!). Question 1.1 Question 1.2 s∈S Question 1.3 Question 1.4 On considère un groupe de n ≥ 2 personnes. Pour tout couple (a, b) de personnes dans le groupe, soit a et b sont amies, soit a et b ne sont pas amies. Chaque personne a donc un certain nombre d'amis dans le groupe. On vise à montrer la propriété P suivante : il existe toujours au moins deux personnes ayant exactement le même nombre d'amis dans un groupe. Reformuler la propriété P en terme de graphe. Dans un graphe à n sommets, quel est l'ensemble des degrés possibles pour un sommet donné? Dans un graphe à n sommets, si on fait l'hypothèse que tous les sommets sont de degrés diérents, quel est l'ensemble des degrés des sommets du graphe? Montrer qu'il n'est pas possible de construire un graphe dont l'ensemble des degrés est celui identié dans la question précédente. En déduire que P est vériée. Exercice 2 (Nombre d'amis dans groupe) Question 2.1 Question 2.2 Question 2.3 Question 2.4 Les deux représentations principalement utilisées pour un graphe sont les suivantes : la représentation par matrice d'adjacence consiste en une matrice carrée M d'ordre n telle que M = 1 si (i, j) est un arc (ou une arête) de G, et M = 0 sinon. la représentation par liste d'adjacence consiste en un tableau Adj de n listes. Pour tout sommet i de S, la liste Adj[i] contient la liste des sommets j de S tels que (i, j) est un arc (ou une arête) de G. Quelle est la taille en mémoire requise pour représenter un graphe de n sommets et m arcs (respectivement arêtes) selon les deux représentations? Si G est non orienté, déterminer pour chacune de ces représentations, la complexité des primitives suivantes : 1. fonction Adjacent(i, j : sommet) : booléeen, qui rend "vrai" si i et j sont adjacents; 2. fonction Degré (G : graphe, i : sommet) : entier, qui calcule le degré du sommet i dans le graphe G. Si G est orienté, déterminer pour chacune des représentations, la complexité des primitives suivantes : 1. fonction Succ(i, j : sommet) : booléen, qui rend "vrai" si j est un successeur de i ; 2. fonction Pred(i, j : sommet) : booléen, qui rend "vrai" si j est un prédécesseur de i ; 3. fonction Degré Extérieur(G : graphe, i : sommet) : entier, qui calcule le degré extérieur du sommet i de G ; 4. fonction Degré Intérieur(G : graphe, i : sommet) : entier, qui calcule le degré intérieur du sommet i de G. Exercice 3 (Représentation de graphes et primitives élémentaires) ij Question 3.1 Question 3.2 Question 3.3 ij La ville de Densmore comporte de nombreux sens uniques. Le plan de la ville est représenté sur la gure 1. Les points stratégiques sont numérotés. Les sens uniques sont représentés par des èches (une rue sans èche est donc à double sens). On cherche à savoir s'il est possible à partir de tout point de rejoindre tout autre point, en respectant bien sûr les sens de circulation. Exercice 4 (Composantes fortement connexes et graphe réduit) Figure 1 Plan de ville Faire le lien entre ce problème et la notion de forte connexité d'un graphe. Le graphe réduit R d'un graphe orienté G a pour sommet ses composantes fortement connexes C , . . . , C et ses arcs sont dénis comme suit : (C , C ), x 6= y est un arc de R s'il existe (i, j) arc de G avec i ∈ C , j ∈ C . Déterminer les composantes fortement connexes du graphe que vous aurez exhibé dans la question précédente, ainsi que le graphe réduit associé. Montrer que le graphe réduit G associé à un graphe G quelconque ne possède pas de circuit. Question 4.1 1 k x x y y Question 4.2 Question 4.3 0 Le duc de Densmore réalise les tâches suivantes pour s'habiller chaque matin : enler sa chemise, son caleçon, ses chaussettes, son pantalon, sa cravate, ses chaussures, sa veste, et serrer sa ceinture. Il s'agit dans cet exercice de proposer un algorithme permettant au duc de Densmore d'enler sans mal ses vêtements. Identier les contraintes de précédence entre ces diérentes tâches puis représenter ce problème par un graphe dont les sommets sont les tâches et les arcs les contraintes de précédence entre celles-ci. Un tri topologique d'un graphe orienté orienté sans circuit G = (S, A) est une liste L des sommets de G tel que si G contient l'arc (x, y), x apparaît avant y dans L. Proposer un algorithme de tri topologique d'un graphe basé sur le fait qu'un sommet de degré entrant nul peut être placé en tête d'un tri topologique. Quelle est la complexité de cet algorithme? Appliquer l'algorithme au graphe construit dans la première question, et interpréter le résultat. Exercice 5 (Tri topologique) Question 5.1 Question 5.2 Question 5.3