Projet AMR : Coloration de graphes lJniversité Bordeaux I, Master-2 d'Informatique , 2010 2011 1er semestre 1 Travail à fournir Le projet est à réaliser pa.r équipes de trois étudiants. Dans le cadre de ce projet il faut fournir : 1. Un rapport, de 10 à 15 pages (en pdf) présentant les algorithmes, Ies estimations de leur complexité et les résultats d'expérimentation, 2, Les programmes en C ou en C++ réalisant tous les algorithmes, avec le Makef ile, le fichier README expliquant comment travailler avec les programmes, et les fichiers test. 3. Les soutenances des projets se tiendront vers fin janvier 2011, Les archives du type tar contenant Ie rapport et les programmes doivent être rendues avant le vendredi 17 décembre 2010. n faut les envoyer par mail à chacun des trois enseignants d'AMR (Paul Dorbec, Philippe Duchon et Alexandre Zvonkine 1). 2 Contexte du projet Le sujet du projet porte sur un problème lié à la téléphonie mobile. Dans le cadre de la mise en place d'un nouveau service pour ses abonnés, un opérateur a besoin d'utiliser des bandes de fréquences assez larges lors d'une communication d'un téléphone à une antenne. Cependant, si les surfaces couvertes par deux antennes différentes ont une intersection non vide, il ne faut pas que ces antennes utilisent les mêmes bandes de. fréquences, car cela risque de générer des interférences, (. Ce problème d'affectation de fréquence peut être modélisé par un problème de coloration de graphes. Chaque antenne est modélisée par un sommet, et si deux antennes couvrent des surfaces non disjointes, on traduit le risque d'interférence par une arête entre les sommets. Puis, on modélise chaque bande de fréquence par une couleur, et on souhaite colorier ce graphe avec un nom- bre minimal de couleurs. Toutefois, le service proposé demande une bande de fréquences vraiment large, et I'opérateur sais qu'il ne pourra pas utiliser plus de & bandes (et donc couleurs) différentes, 1. [email protected], [email protected], [email protected] On vous demande donc de vérifier avec certitude (ou quasi certitude) que le graphe est ,t-coloriable, et dans le.'cas contraire d'essayer de colorier la plus grande portion possible du graphe avêc /c couleurs (tout le territoire n'aura alors pas accès à ce service, mais au moins une grande partie y aura accès). 3 Objectif du projet L'objectif de ce projet est d'implémenter quatre algorithmes de coloration de graphes. L'idée principale de chacun de ces algorithmes est décrite dans la section 6. Vous reconnaitrez probablement des approches similaires aux approches présentées en cours. On vous demandera de tester vos algorithmes sur des échantillons de données que vous awez générés et des échantillons imposés, qui vous seront fournis vers la fin du semestre. Les graphes qui vous seront fournis pour les tests seront décrits dans des fichiers texte dont le format est décrit dans la section 4 Pour que vous fassiez des tests vous-même, nous vous demandons dtécrire deux programmes de génération aléatoire de graphes qui vous permettront de tester les performances de vos algorithmes sur des échantillons importants de données. Ces méthodes de générations sont décrites dans la section 5. 4 Format des graphes ', Un graphe sera d.écrit d.ans un ndiri", texte ayant une ligne par sommet d.u graphe : chaque ligne commence paf, le numéro du sommet (entre 0 et n) suivi du symbole ' :', et contient enfin la liste des voisins du sommet séparés par des espaces. Voici un exemple de graphe : 12 5 02 6 25 04 6 014 14 5 6 5 Génération aléatoire de graphes Vous devez programmer les deux méthodes suivantes de génération aléatoire de graphes. La première méthode génère un graphe dont on ne sait rien, tandis qu'avec la deuxième méthode, il est garanti que le graphe généré est k-coloriable. Ce générateur vous permettra de tester vos algorithmes pour voir i s'ils sont capables de trouver une k-coloration, et sinon, s'ils fournissent au moins une bonne approximation de la solution optimale, 5.1 Graphe aléatoire usuel On reçoit en paramètre le nombre n de sommets du graphe et une probabilité p d'existence d'une arête. Puis, pour chaque paire de sommets (i,j), on trace une arête entre i et j avec la probabilité p, et ceci indépendamment des arêtes déjà tracées pour les autres paires de sommets. 5,2 Graphe aléatoire k-coloriable De nouveau, on reçoit en paramètre le nombre n de sommets du graphe, une probabilité p d'existence d'une a,rête, ainsi qu'un nombre chromatique ,t. (1) On commence par attribuer à chaque sommet une couleur entre 1 et ft avec Ia probabilité 1/ft indépendamment de tous les autres sommets. (2) Puis, pour toute paire de sommets (i,j) de couleurs différentes on trace une arête entre i et j avec la probabilité p indépendamment de toutes les autres paires de sommets. Cette technique de génération permet de connaître à I'avance un majorant du nombre de couleurs nécessaires pour colorier le graphe : k, Évidemment, une fois Ie graphe généré, on'oublie'les couleurs initialement attribuées au sommets, seul le graphe est transmis. 6 Algorithmes de coloration Vous devez implémenter les quatre algorithmes décrits ci-après. Les algo. rithmes 6.2 et 6.4 permettent de savoir si le graphe est k-coloriable, tandis que les algorithmes 6.1 et 6.3 cherchent un sous-graphe k-coloriable de taille maximale. 6.1 Approximation gloutonne Le nombre de couleurs a prion n'est pas limité. L'algorithme traite les sommets I'un après I'autre dans un ordre quelconque et colorie chaque sommet avec la première couleur disponible. Analyse du programme. Quelle est le nombre maximum de couleurs que l'algorithme pourrait utiliser ? Expérimentation. Combien de couleurs coidierTês grapËes k-coloriables ? (,en moyenne) utilise cet algorithme pour Approximation. Si on considère I'ensemble des sommets coloriés avec les k couleurs les plus fréquentes, on obtient une portion du graphe pour laquelle on connait une k-coloration. Cela fournit un schéma d'approximation du problème de coloration du plus grand sous-graphe. Quelle ratio d'approximation pouvezvous garantir ? 6.2 Recherche exhaustive f Backtracking Pour cet algorithme, le nombre ,t de couleurs est fixé. Une coloration partielle est une k-coloration d'un sous-ensemble A c V de I'ensemble des sommets V. Quand I'algorithme trouve qu'une coloration de A ne peut pas être étendue en une coloration du graphe tout entier, il recule d'un cran et essaie de changer la couleur du dernier sommet de A. (Décrire cet algorithme de manière plus explicite.) Expérimentation. Etudier le comportement de cet algorithme sur les graphes engendrés selon le premier modèle, et sur ceux engendrés selon le deuxième modèle, en fonction de la probabilité p. 6.3 Algorithme "no choice" Ii s'agit de I'algorithme présenté en cours : le nom de "no choice" lui est donné par son auteur. Cet algorithme cherche une k-coloration d'un graphe k-coloriable. : Expérimentation. Étt di"t le comportement de cet algorithme en fonction de ,k (le nomnre ae couleurs), de n (le nombre de sommets) et de p (la probabilité de tracer une arête). Quel est le pourcentage des graphes bien coloriés? En cas d'échec (l'algorithme n'a pas trouvé une bonne coloration), quel est le pourcentage des sommets coloriés parmi tous les sommets ? Perfectionnement. Essayez d'améliorer le nombre de sommets colorés par l'algorithme "no choice" sans trop endommager sa complexité. 6.4 Utilisation d'un solveur SAT Réduisez le problème de &-coloration de graphe à un problème SAT que vous résoudrez avec MiniSat (site htpp: //minisat. se)' Vous utiliserez ensuite la solution proposée par MiniSat pour en déduire une coloration' 7 Expérimentation et analyse des algorithmes Vous testerez vos algorithmes avec différents échantillons de graphes. Les critères à optimiser sont les suivants : - complexité du programme et vitesse d'exécution' - proportion des graphes ,t-coloriables complètement coloriés. - nombre de sommets coloriés en k couleurs par I'algorithme. - ratio d'approximation (nombre de sommets coloriés/nombres maximum de sommets coloriables)