Projet AMR : Coloration de graphes 1 Travail à fournir

publicité
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)
Téléchargement