TP6 MPSI: Graphes Alexis Saurin Alexis.Saurinens.fr http://www.eleves.ens.fr/~saurin/tp_ aml 10 mai 2003 1 Introdu tion semble des arêtes. Pour représenter graphiquement un graphe, on dessinera les som- Cette séan e va être onsa rée à l'étude d'une stru ture informatique très lassique et très entrale : les graphes. On va d'abord donner les dénitions prin ipales on ernant les graphes. On s'intéressera ensuite aux manières de représenter des graphes ave des stru tures de données informatiques et on s'intéressera ensuite à quelques algorithmes de base sur les graphes, en fait à un algorithme de par ours de graphe et à de appliations de e par ours. Vous trouverez dans l'ouvrage Introdu tion à l'algorithmique de Th. Cormen, Ch. Leiserson et R. Rivest de nombreux algorithmes sur les graphes (arbres ouvrants minimaux, plus ourts hemins, ot maximal) qui peuvent sans doute servir de base à un TIPE sur les graphes. Les dénitions de théorie des graphes de ette feuille de TP sont reprises de e livre. Ce livre regorge de problèmes algorithmiques très variés. mets Dénition 1 (Graphe orienté) omme des è hes allant d'un sommet à un autre Dénition 2 (Graphe non orienté) Un graphe non orienté est un graphe pour lequel la relation binaire A est symétrique et anti-réexive (symétrique pour qu'il n'y est pas d'orientation et anti-réexive ar on veut empê her les bou les d'un sommet vers luimême dans le as non-orienté). On peut voir aussi l'ensemble A paires et non de omme un ensemble de ouples. Remarques et notations Beau oup de dénitions sont semblables pour les graphes orientés ou non orienté, mais dans ertains as, les termes varient légèrement. Il faut don toujours bien savoir quel type de graphe on onsidère. Dans le as d'un graphe orienté, on dit que l'arête (u, v) part de u et arrive en v. Pour un graphe non orienté, on dit que l'arête (u, v) est in idente aux sommets u et v. La relation binaire A est aussi appelée relation d'adja en e : v est adjaent à u si (u; v ) 2 A. Dans un graphe orienté, on note parfois v adja ent à u Un graphe ouple (S, A), où S est un ensemble ni de sommets et A une relation binaire sur S ( 'est-à-dire un ensemble de er les et les arêtes sommet. 2 Dénitions orienté G est la donnée d'un omme des ouples d'éléments de S), l'en- 1 par u ! v Dénition 8 (Isomorphisme de graphes) . Dénition 3 (Degré d'un sommet) degré d'un sommet est d'un Deux graphes G=(S, A) et G'=(S', A') sont Le graphe isomorphes s'il existe une bije tion non S orienté est le nombre d'arêtes qui lui sont inidentes. Dans le telle que (u; v ) 0 2 (f (u); f (v )) as d'un graphe orienté, on 0 2 A si, et seulement si, Dénition 9 (Sous-graphe) d'ar s qui arrivent à est un sous-graphe de G=(S, A) si et sortant (nombre d'ar s qui en partent). A 0 G'=(S', S graphe hemin de longueur k d'un sommet u A') 0 S A. Dénition 4 (Chemin dans un graphe) Dénition 10 (Graphe omplet) Un 7! S A distingue en outre le degré rentrant (nombre e sommet) et le degré : f Un omplet est un graphe non orienté vers un sommet v dans un graphe orienté dans lequel A est la relation binaire anti- G=(S, A) est une suite nie de sommets reéxive pleine (ie tout h 0 u ; : : : ; ui ; : : : ; un pour tout i 2 [0 i ave 1℄, ;n On dit que v est a s'il existe un Un 0 =u et un =v (ui ; ui+1 ) 2 A. u Dénition 11 (Graphe biparti) essible à partir de v G=(S, A) dans lequel S peut-être partitionné est hemin sont distin ts. u Un uit dans un graphe orienté est un u élémentaire. tel que y le (élémentaire) dans un graphe 0 u = un , ave h0 3 tel que n sont tous distin ts. u ; : : : ; ui ; : : : ; un Un graphe non orienté sans 1 i u ; : : : ; un y le est dit Un graphe non oritenté est onnexe si haque paire de sommet est reliée par une haîne. a omposantes onnexes sont onstituées lasses d'équivalen e pour la relation être essible à partir de. Dénition 7 (CFC) Un graphe orienté est fortement haque sommet est a - onnexe si sont les 2 v tels que (u; v ) 2 S 2 ou u 2 S 2 2 et A v implique 2 1 S (ie Exer i es Exer i e 1: Arbres Exer i e 2: Graphes hromatiques 2. Montrer que les énon és suivants sont équivalents : onnexes du graphe (a) G est biparti ; lasses d'équivalen e de la relation être mutuellement a S 1. Montrer que tout arbre peut être olorié ave uniquement deux ouleurs essible à partir de n'importe quel autre. Les omposantes fortement 1 et Une k- oloration d'un graphe non orienté G=(S, A) est une fon tion : S 7! f0; 1; : : : ; k 1g telle que pour haque arête (u; v ) 2 A, (u) 6= (v ). Les nombres représentent k ouleurs et les sommets adja ents doivent avoir des ouleurs diérentes. Dénition 6 (Composante onnexes) des et Donner les onditions né essaires et sufsantes sur un graphe pour que e soit un arbre. a y lique. Les 1 S un u ; : : : ; ui ; : : : ; un non orienté est un hemin S sommets à l'autre ensemble). hemin n Un 2 toutes les arêtes passent d'un ensemble de ir- i tel que 0 = , ave 0 1. On parle aussi de ir uit élémentaire si h 1 i est en plus un hemin 3 u ; : : : ; ui ; : : : ; un Un graphe biparti est un graphe non orienté hemin de u à v. Dénition 5 (Cir uits et y les) h distin ts est dans A). et hemin est élémentaire si tous les sommets du ouple de sommets (b) G est 2- hromatique ; essibles. 2 ( ) G n'a au un y le de longueur im- lieu à des algorithmes de la même omplexité paire. pour résoudre un problème donné. En outre, elles ne prendront pas toutes le même espa e 3. Soit d le degré maximal d'un sommet du graphe G. Démontrer que G peut mémoire, ertaines seront plus fa ilement modiables que d'autres... être olorié ave d+1 ouleurs. q 4. Montrer que si G a O(|S|) arêtes, alors G peut-être olorié ave O( jS j) ouleurs. Question 1: Représentations informa- tiques Proposez quelques manières de représenter les graphes en Caml Light. Dénir à Exer i e 3: Graphes d'amitié haque fois un type pour les graphes orresRéé rire ha un des énon és suivants pondant à ette représentation. omme un théorème sur les graphes non orientés, puis en faire la démonstration. On Question 2: Diéren e des représentations suppose que l'amitié est symétrique mais n'est pas réexive. Dénition 12 (transposée d'un graphe) 1. Dans un groupe quel onque de n 2 personnes, il existe deux personnes ayant le même nombre d'amis dans le groupe. La transposée d'un graphe orieenté G=(S, A) est le graphe G'=(S, A') où 2 S =(v; u) 2 Ag. A 0 = f( u; v ) 2 Programmez la transposition de graphe 2. Chaque groupe de six personnes pour ha une des représentations. ontient soit trois amis, soit trois per- Dénition 13 ( arré d'un graphe) Le sonnes étrangères les unes aux autres. arré d'un graphe orienté G=(S, A) est 3. Un groupe de personnes quel onque peut être divisé en deux sous-groupes tels qu'au moins la moitié de amis de haque personne appartiennent au sous-groupe dont ette personne n'est pas membre. le graphe 2 A ssi9w 2 G 2 =(S, A S tq (u; w ) 2) 2 à-dire qu'il y a un ar seulement si, il y a un tel A; que (w; v ) dans le 2 (u; v ) A. 2 C'est- arré si, et hemin de longueur exa tement deux dans le graphe de départ. Programmez le arré d'un graphe pour les 4. Si ha un dans un groupe est l'ami diverses représentations. d'au moins la moitié des personnes du groupe, alors le groupe peut être réparti Question 3: Degré entrant, degré sortant autour d'une table de façon que ha un Étant donnée une représentation par listes soit assis entre deux amis. d'adja en e d'un graphe orienté, ombien de temps faut-il pour al uler le degré sortant de tous les sommets ? et pour le degré entrant ? 4 Représentation informatique Question 4: Fermeture transitive d'un graphe Étant donné la représentation par matri e Il existe plusieurs manière de représenter les graphes dans un ordinateur. Ces manières d'adja en e d'un graphe orienté, programmez n'auront pas les mêmes propriétés, et en par- une fon tion qui al ule la fermeture tranti ulier elles ne donneront pas né essairement sitive d'un graphe G donné, 'est-à-dire un 3 3 temps<- temps + 1 4 pour haque sommet v adja ent à u dans G 5 faire si ouleur(v)=Blan 6 alors pere(v)<- u 7 Visiter-PP(v) 8 ouleur(u)<- Noir 9 f(u)<- temps 10temps<- temps + 1 nouveau graphe ayant même sommet que le pré édent mais dont les ar s sont les ouples de sommets (u, v) tels que v est a essible à partir de u dans G (on s'inspirera de l'exer i e sur le arré d'un graphe). 5 Par ours d'un graphe orienté Réé hissez, avant de vous lan er dans la programmation de l'agorithme, à la manière dont vous représenterez le ompteur de temps, les attributs de ouleur, de temps de début de traitement et de n de par ours, ainsi que de parenté dans le par ours. Qu'avez-vous onstruit une fois que vous avez par ouru le graphe ? Réé hissez à l'utilité de onserver les données pere(u), d(u) et f(u). On représente maintenant un graphe par sa matri e d'adja en e. On va s'intéresser maintenant à des manières de par ourir un graphe. On va voir le par ours en profondeur d'un graphe (on pourrait aussi étudier le par ours en largeur), et un ertain nombre d'appli ation de e parours. Il n'est pas surprenant que beau oup d'alogrithme sur les graphes soient fondés sur des algorithmes de par ours de graphe dans la mesure où pour faire un trvail quel onque sur un graphe il faudra la plupart du temps avoir vu tous ses sommets, et que les algorithmes de bases de par ours de graphes permettent de onserver beau oup d'information sur le graphe. Question 5: Question 6: Détermination de l'a y li ité d'un graphe Utilisez le prin ipe du par ours en profondeur pour déterminer si un graphe a des y les ou non. Vous ommen erez par é rire l'algorithme, puis vous le programmerez. Par ours en profondeur Le par ours en profondeur d'un graphe onsiste à par ourir tous les sommets du graphe de la manière suivante : Question 7: Tri topologique d'un graphe orienté Trier topologiquement un graphe orienté revient à mettre sur l'ensemble de ses sommets un ordre qui soit ompatible ave la relation d'adja en e, à savoir si u ! v alors u v. Montrer que si un graphe a un y le on ne peut pas le trier topologiquement On suppose maintenant que notre graphe est a y lique. Programmer un algorithme qui permette de faire un tri topologique grâ e à un par ours en profondeur du graphe (pensez à utiliser les dates de n de par ours d'un sommet, ie les f(u)). PP(G): 1 pour haque sommet u de G 2 faire ouleur(u)<- Blan 3 pere(u)<- NIL 4 temps<- 0 5 pour haque sommet u de G 6 faire si ouleur(u)=Blan 7 alors Visiter-PP(u, G) Visiter-PP(u): 1 ouleur(u)<- Gris 2 d(u)<-temps 4