Vous êtes sur la page 1sur 5

Corrig

Examen de Thorie des Graphes


EPITA ING1 2013 S2; A. D URET-L UTZ

Dure : 1 heure 30 28 mars 2010

Consignes
Cet examen se droule sans document et sans calculatrice. Rpondez sur le sujet dans les cadres prvus cet effet. Il y a 6 pages dnonc. Rappelez votre nom en haut de chaque feuille au cas o elles se mlangeraient. Ne donnez pas trop de dtails. Lorsquon vous demande des algorithmes, on se moque des pointsvirgules de n de commande etc. crivez simplement et lisiblement. Des spcications claires et implmentables sont prfres du code C ou C++ verbeux. Pour fter lanniversaire de Lady Gaga, le barme (indicatif) correspond une note sur 25.

Complexits diverses (8 points)

Soit G = (V , E) un graphe connexe, non-orient, et non vide. Supposez que ce graphe vous est fourni sous forme de matrice ou de liste dadjacence ( votre convenance). Lorsquon vous demande la complexit dun algorithme, exprimez-la en fonction de |V | et | E|, en utilisant la notation asymptotique (, O, ou ) la plus prcise. 1. (4 pts) Dcrivez un algorithme permettant de calculer la fois le rayon et le diamtre de G. Quelle est sa complexit ?

Rponse : Voici une premire faon possible. partir de la matrice dadjacence, on applique FloydWarshall pour calculer une carte des distances entre toutes les paires de sommets en (|V |3 ) oprations. Cette carte des distance est une matrice de taille |V | |V |. Le minimum de chaque ligne nous donne lexcentricit de chaque sommet. partir de la matrice, le vecteur des excentricit peut donc se calculer en (|V |2 ) oprations. Le minimum et le maximum des composantes de ce vecteur correspondent respectivement aux rayon et diamtre de G, ils se calculent en (|V |) oprations. Nous avons donc ( |V |3 ) + ( |V |2 ) + ( |V | ) = ( |V |3 )
Floyd-Warshal excentricits min et max

Une seconde approche maintenant. Peut-tre plus intuitive, en tout cas plus rapide. On peut calculer lexcentricit dun sommet avec un parcours en largeur ((| E| + |V |)) si le graphe nest pas pondr (ce ntait pas prcis), ou avec un appel de Dijkstra ((| E| + |V |) log |V | avec limplmentation du cours) si le graphe est pondr ; dans les deux cas lexcentricit est la plus grande distance trouve. Pour le rayon et le diamtre, on rpte cet algorithme depuis les |V | sommets. Cela nous donne donc une complexit de (|V | (| E| + |V |)) si le graphe nest pas pondr, ou (|V | (| E| + |V |) log |V |) sinon. Naturellement, ces deux complexits se simplient parce quon sait que dans un graphe connexe, |V | = O(| E|) : on a donc respectivement (|V | | E|) ou (|V | | E| log |V |). 2. On considre lalgorithme suivant dans lequel les sommets V sont numrots de 1 |V |. 1. AlgoSansNom(G = (V , E)) 2. v V , P[v] 0 3. v0 any vertex of V 4. todo.push_back(v0 ) 5. P [ v0 ] v0 6. while (todo = ) 7. v todo.pop_front() 8. for x NeighboursOf(v) do 9. if x = P[v] then 10. if P[ x ] = 0 then 11. return false 12. else 13. todo.push_back(x) 14. P[ x ] v 15. return true (2 pts) Que calcule cet algorithme ? (Inutile de vous justier.) Rponse : Les sommets ajouts la le todo ne peuvent y tre ajout quune fois, car ils sont sytstmatiquement marqus dans P. Le graphe tant connexe, cette la boucle visite en fait tous les sommets du graphe laide dun parcours en profondeur. Le tableau P retient le sommet par lequel on est arriv la premire fois un sommet. La ligne 9 sert ignorer larc par lequel le sommet courant a t dcouvert. Lalgorithme retourne false ssi on peut atteindre le sommet par un autre chemin, cest-dire si le graphe (qui est orient) contient un cycle. Le nom de lalgorithme pourrait tre IsAcyclic(G). 3. (2 pts) Quelle est la complexit dAlgoSansNom ? Justiez-votre rponse, ventuellement en anPage 2

notant lalgorithme. Rponse : Si le graphe est reprsent par une liste dadjacence, le calcul est le suivant : La boucle while au pire exactement |V | itrations. La boucle for, qui itre sur les voisins de chaque sommet, effectuera donc au pire xV deg( x ) = 2| E| = O(| E|) itrations. On a donc un nombre doprations gal O(|V | + | E|) = O(| E|) puisque le graphe est connexe. Si le graphe est reprsent par matrice dadjacence, il faut prendre en compte que le calcul de NeighboursOf(v) doit parcourir toute une ligne de la matrice et se fait donc en (|V |). Comme il est rpt au pire |V | fois, il faut ajouter O(|V |2 ) la complexit prcdente. On a donc une complexit de O(|V |2 + | E|) = O(|V |2 ).

Jeu de billes pour apprendre les carrs (5 points)

Voici un jeu pour deux joueurs, utilisant un sac de n billes. Les joueurs retirent chacun leur tour un nombre de billes qui doit tre un carr (1, 4, 9, 16, 25...). Le joueur qui retire la dernire bille du sac a perdu. Voici un exemple de partie commenant avec n = 24 billes : 1. le joueur 1 retire 9 billes, il en reste donc 15 2. le joueur 2 retire 4 billes, il en reste donc 11 3. le joueur 1 retire 1 bille, il en reste donc 10 4. le joueur 2 retire 4 billes, il en reste donc 6 5. le joueur 1 retire 4 billes, il en reste donc 2 6. le joueur 2 retire 1 bille, il en reste donc 1 7. le joueur 1 retire la dernire bille, il a donc perdu. Voici une autre partie, avec autant de billes, o lautre joueur gagne. 1. le joueur 1 retire 1 bille, il en reste donc 23 2. le joueur 2 retire 9 billes, il en reste donc 14 3. le joueur 1 retire 9 billes, il en reste donc 5 4. le joueur 2 retire 1 bille, il en reste donc 4 5. le joueur 1 retire 1 bille, il en reste donc 3 6. le joueur 2 retire 1 bille, il en reste donc 2 7. le joueur 1 retire 1 bille, il en reste donc 1 8. le joueur 2 retire la dernire bille, il a donc perdu. 1. (2 pts) Justiez que lun des deux joueurs possde forcment une stratgie gagnante, quel que soit n. (On ne vous demande pas de dire pour quel joueur la stratgie existe.) Rponse : Le jeu peut tre reprsent par un graphe dans lequel chaque sommet reprsente le nombre de bille du sac, et tels que deux sommets x et y sont sont relis ssi k N, x y = k2 . 2. (3 pts) Quel joueur possde une stratgie gagnante sil y a n = 13 billes initialement ? Justiez votre rponse.

Page 3

Rponse : Le noyau du graphe dcrit ci-dessus est N = {1, 3, 6, 8, 11, 13}. Comme n = 13 fait partie du noyau, cest le joueur 2 qui possde la stratgie gagnante (qui consiste toujours jouer un coup qui amne dans le noyau).

3
d

Planarit (2 points)
c h g l k Rponse : Oui. Une justication simple est un dessin : l k g h c d b f a e

j f b Le graphe ci-dessus est-il planaire ? Justiez votre rponse.

j i Une justication encore plus rapide est de dire que ce graphe peut tre dessin sur une sphre sans croiser dartes. On a vu en cours que tout graphe qui peut se dessiner sur une sphre sans croiser dartes est planaire. En revanche, il est FAUX dcrire quelque chose comme ceci : le graphe na pas de triangle et vrie | E| 2|V | 4 donc il est planaire. Ce donc est faux. Ce quon a vu en cours cest tout graphe planaire sans triangle doit vrier | E| 2|V | 4. Pas linverse. On peut construire des graphes non planaires qui vrient | E| 2|V | 4. (Essayez, ce nest pas difcile.) Il est aussi faux dutiliser la formule dEuler |V | | E| + f = 2, car la notion de face ( f ) prsuppose que le graphe soit planaire. On ne parle pas des faces dun graphe avant davoir montr quil est planaire.

Circuits eulriens (10 points)

Nous avons vu en cours une condition pour quil existe un cycle eulrien dans un graphe non-orient. Dans cet exercice nous transposons cette notion aux graphes orients. Voici quelque dnitions pour un graphe orient G = (V , E) : chemin : Un chemin C de G est une succession darcs adjacents. Autrement dit C = ((s1 , d1 ), (s2 , d2 ), . . . , (sn , dn )) est un chemin si (si , di ) E pour 0 < i n, et di = si+1 pour 0 < i < n. circuit : Un circuit de G est un chemin tel que dn = s1 . circuit eulrien : Un circuit de G est eulrien sil visite chaque arc du graphe exactement une fois. graphe quilibr : G est quilibr si le degr entrant de chaque sommet est gal son degr sortant.

Page 4

graphe fortement connexe : G est fortement connexe si deux sommets quelconques sont forcment relis par un chemin (qui respecte le sens des arcs) graphe connexe : G est connexe si deux sommets quelconques sont relis dans le graphe non-orient construit partir de G en ignorant le sens des arcs. sommet isol : Un sommet de G est isol sil na aucun arc entrant et aucun arc sortant. 1. (2 pts) Justiez que si un graphe sans sommets isols possde un circuit eulrien, alors ce graphe est quilibr et fortement connexe. Rponse : Sil ny a pas de sommet isol, tout sommet possde un arc entrant ou sortant et se trouve donc sur le circuit. En suivant ce circuit, on peut alors relier nimporte quels sommets. Le graphe est donc connexe. Chaque apparition dun sommet sur le circuit consomme un arc entrant et un arc sortant. Si un sommet apparat n fois dans le circuit, il a donc n arcs entrants et n arcs sortants. Les degrs entrant et sortant de chaque sommet sont donc gaux : le graphe est quilibr. 2. (3 pts) Soit G un graphe quilibr, et soit C = ((s1 , d1 ), (s2 , d2 ), . . . , (sn , dn )) un chemin de G de longueur la plus grande possible, qui nutilise pas deux fois le mme arc. Justiez que dn = s1 , cest--dire que ce chemin est forcment un circuit. Rponse : Notons k le degr sortant de dn , et notons (dn , x1 ), . . . , (dn , xk ) ses arcs sortants. Ces arcs sortants apparaissent forcment tous dans C, sinon on pourrait allonger C avec un nouvel arc et contredire lhypothse du plus long chemin possible. Considrons un arc sortant (dn , x j ). Si (dn , x j ) apparat dans C nimporte quelle position (si , di ) pour i > 1, il suit un arc (si1 , di1 ) tel que di1 = si = dn . Si tous ces arcs sortants apparaissent un position i > 1, on a donc que le degr entrant de dn est k + 1 (les prdcesseurs de ces k arcs, plus larc (sn , dn )), ce qui contredit le fait que le graphe est quilibr. Lun des arcs sortant apparat donc en position i = 1, et s1 = dn . 3. (3 pts) (Suite de la question prcdente.) Soit G un graphe quilibr sans sommet isol, et soit C un chemin de G le plus long possible qui nutilise pas deux fois le mme arc. Nous savons maintenant que C est un circuit. Justiez que si C nest pas eulrien, alors G nest pas connexe. Rponse : Si C nest pas eulrien, il existe un arc (s, d) de G qui napparat pas dans le cycle. Nous avons expliqu dans la rponse prcdente que tout arc sortant de dn apparaissait dans C. Par permutation circulaire, cette proprit est vraie pour les arcs sortants et entrant de tous les sommets intervenant dans le cycle. Larc (s, d) ne peut donc pas tre connect (directement ou inderectement) au cycle, et le graphe nest pas connexe. 4. (2 pts) En dduire une condition ncessaire et sufsante pour quun graphe sans sommet isol possde un circuit eulrien. Rponse : Un graphe sans sommet isol possde un circuit eulrien si et seulement si il est connexe est quilibr.

FIN
Page 5