You are on page 1of 12

Allocation de Frquences par Coloration

de Graphes
Table des matires
1 Gnralits
1.1 Le problme dallocation de frquences . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Graphes, dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Le problme de coloration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
3
3

2 Graphes quelconques : des algorithmes dapproximation


2.1 Coloration squentielle : lalgorithme glouton . . . . . . . .
2.2 Deux heuristiques diffrentes . . . . . . . . . . . . . . . . .
2.2.1 Welsh & Powell . . . . . . . . . . . . . . . . . . . . .
2.2.2 DSATUR . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

4
4
5
5
5

3 Graphes trianguls : un algorithme linaire de


3.1 Gnralits sur les graphes trianguls . . . . . .
3.2 Parcours en largeur lexicographique - LexBFS .
3.3 Affinage de partition . . . . . . . . . . . . . . .

optimale
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .

6
6
6
7

4 Rsultats exprimentaux
4.1 Sur des graphes pseudo-alatoires . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Sur des graphes de DIMACS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8
8
10

Conclusion et perspectives

12

Rfrences

12

coloration
. . . . . . .
. . . . . . .
. . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

1
1.1

Gnralits
Le problme dallocation de frquences

Imaginons que lon veuille construire un rseau dantennes radios. Il faudra rserver certaines
frquences de communication, que lon attribuera nos antennes afin quelles puissent communiquer entre elles. Il faut aussi minimiser le nombre de frquences rserver, car chaque rservation
a un cot. Une premire modlisation du problme, en radio AM par exemple, montre que si deux
antennes "assez proches" gographiquement mettent dans des frquences trop voisines lune de
lautre, leur spectres en frquences se recouvrent et il devient impossible dextraire linformation
ncessaire du signal reu. On dit alors que les antennes interfrent.
On modlise ainsi le rseau dantenne par un graphe, appel graphe dinterfrences, dont les
sommets sont les antennes, et les artes relient deux antennes qui interfrent entre elles. Les frquences allouer correspondent des couleurs (reprsentes par des entiers) avec lesquelles nous
colorons les sommets du graphe. La coloration doit tre une coloration propre : deux sommets
adjacents ne peuvent recevoir la mme couleur. Le graphe sera de plus non-orient, la relation
"interfre" tant suppos symtrique.

Figure 1 Un rseau dantennes

1.2

Graphes, dfinitions

Supposons maintenant le graphe dinterfrence du rseau connu. Rappelons quelques dfinitions


et notations utilises par la suite :
Un graphe est un couple G = (V, E) o V est un ensemble fini, ses lments sont les sommets
du graphe, et E V 2 , ses lments sont les arcs du graphe.
Ici les graphes sont simples (a V, (a, a)
/ E) et non-orients (a, b V, (a, b) E
(b, a) E. Les arcs sont alors appels des artes.
Lordre (resp. la taille) dun graphe est le nombre de ses sommets (resp. artes).
Par la suite nous prendrons V = J0, n 1K, o n = |V |, et on notera m = |E|.
Deux sommets a et b sont dit adjacents ou voisins si (a, b) E ou (b, a) E. Soit a V , on
note alors N (a) = {b V, (a, b) E ou (b, a) E} lensemble des voisins a, ou voisinage
de a. On note d (a) = |N (a)| le nombre de voisins de a, ou degr de a.
H = (V 0 , E 0 ) est un sous-graphe de G si V 0 V et E 0 E. Soit S V , on note G[S] le
graphe (S, E (S S)), appel sous-graphe de G induit, ou engendr, par S.
Une chane de longueur k est une suite finie de sommets deux deux adjacents v0 v1 . . . vk ,
i.e. telle que i J1, kK, (vi1 , vi ) E. Un cycle de longueur k est une chane v0 v1 . . . vk telle
que v0 = vk . Dans une chane v0 v1 . . . vk , une corde est une arte (vi , vj ) E, avec j 6= i 1.
Enfin, un trou est un cycle sans corde.

1.3

Le problme de coloration

Soit G = (V, E) un graphe simple non-orient. Une application : V N est appele une
coloration propre de G si (a, b) E, (a) 6= (b), i.e. deux sommets adjacents nont jamais la
mme couleur. Soit k = | hV i|, on dit alors que est une k-coloration propre de G, et que G est kcolorable. Le plus petit entier k pour lequel G est k-colorable est appel nombre chromatique de G,
not (G). Nous recherchons ainsi une coloration optimale de G, cest--dire une (G)-coloration
propre de G.
Allouer des frquences au rseau dantennes revient alors colorer proprement son graphe dinterfrences. Notons quen raison de contraintes gographiques, technologiques, ou autres (prsence
de montagnes, etc.), nous ne pouvons pas faire dhypothses a priori sur la structure du graphe
dinterfrences.
Nous donnerons donc un exemple de mthode employe pour colorer un graphe dune manire
plus gnrale. Trouver une coloration optimale dun graphe quelconque tant un problme NPComplet, nous exposerons tout dabord des algorithmes de coloration non-optimale dans le cas
gnral, ainsi quun algorithme optimal dans un cas particulier.
3

Figure 2 Un graphe dinterfrence color

Graphes quelconques : des algorithmes dapproximation

2.1

Coloration squentielle : lalgorithme glouton

Une premire approche pour colorer le graphe est de prendre ses sommets les uns aprs les
autres afin de leur affecter une couleur, tout en veillant ce que deux sommets adjacents naient
jamais la mme couleur : cest lalgorithme de coloration squentielle. Nous obtenons ainsi une
coloration propre du graphe, pas forcment optimale, et qui dpend fortement de lordre de visite
des sommets.
Programme 1 Coloration squentielle
Entre : Un graphe quelconque G = (V, E), une permutation des sommets : J0; n 1K V
Sortie : Une coloration propre c : V N
1: n := |V | ;
2: Couleur := Tableau (Taille : n) (Dfaut : 1) ;
3: Pour i = 0 n-1 faire
4:
x := (i) ;
# Recherche de la plus petite couleur non utilise dans N (x) #
5:
6:
Libre := Tableau (Taille : ? ? ?) (Dfaut : vrai) ;
7:
Pour y N (x) faire
8:
Si Couleur.(y) 6= -1 alors
9:
Libre.(Couleur.(y)) faux
10:
Fin Si
11:
Fin Pour
12:
index := 0 ;
13:
Tant Que Libre.(index) = faux faire
14:
index := index + 1
15:
Fin Tant Que
# Affecter la couleur donne par index x #
16:
17:
Couleur.(x) index
18: Fin Pour
19: Renvoyer Couleur
La complexit temporelle de lalgorithme est O (n + m).

Figure 3 Coloration squentielle dun graphe

2.2
2.2.1

Deux heuristiques diffrentes


Welsh & Powell

Il sagit maintenant dutiliser lalgorithme de coloration squentiel avec un ordre judicieux,


en vue dobtenir une coloration propre la plus "acceptable" possible. Lalgorithme de Welsh &
Powell consiste ainsi colorer squentiellement le graphe en visitant les sommets par ordre de
degr dcroissant. Lide est que les sommets ayant beaucoup de voisins seront plus difficiles
colorer, et donc il faut les colorer en premier. La complexit de lalgorithme devient O(n ln n + m)
en utilisant un tri par comparaison, mais reste O(n + m) avec un tri par dnombrement.
Cependant on peut parfois aboutir aux pires colorations possibles ( n2 au lieu de 2). Lheuristique
DSATUR propose une amlioration du principe de lalgorithme de Welsh & Powell afin dviter
ce problme.
2.2.2

DSATUR

Ici, lide est que les sommets difficiles colorer sont ceux qui ont le plus de voisins de couleurs
diffrentes, puis ceux qui ont le plus de voisins tout court. Concrtement, on dfinit le degr de
saturation dun sommet a, not DSAT (a) comme suit :
Si a na aucun voisin colori alors DSAT (a) = degr de a.
Sinon, DSAT (a) = nombre de couleurs diffrentes utilises pour 
colorer les voisins de a.
d (a) si hN (a)i =
Ou encore, si dsigne la fonction de coloration partielle, DSAT (a) =
| hN (a)i| sinon
Aprs initialisation de DSAT (a) d (a) pour tout a, on rpte alors les oprations suivantes :
1. Prendre un sommet non color x de DSAT maximum.
2. Colorer x avec la plus petite couleur disponible.
3. Mettre jour DSAT (y) pour y N (x).
La complexit
temporelle

 de lalgorithme dpend de limplmentation effectue. Elle peut tre
O n2 ou O n2 + nm selon la structure utilise.
DSAT = 1

3
DSAT = 1
DSAT = 1 2

DSAT = 1 2

Sommet visites : 1, 6, 2

Figure 4 Une tape de lalgorithme DSATUR

Graphes trianguls : un algorithme linaire de coloration


optimale

3.1

Gnralits sur les graphes trianguls

Nous allons maintenant donner un algorithme optimal qui permet de colorer une classe de
graphe bien particulire : les graphes trianguls. Nous prsentons ici les dfinitions et proprits
utiles cet algorithme.
Un graphe G = (V, E) est dit triangul sil ne contient pas de trou de longueur 4.
Un sommet a de G est simplicial si tous ses voisins sont adjacents 2 2.
Un schma (ou ordre) dlimination simplicial est une permutation : J0, n 1K V telle
que pour tout i dans J0, n 1K, (i) soit simplicial dans G [ hJ0, iKi].
On peut alors dmontrer la caractrisation suivante, sur laquelle repose lalgorithme LexBFS :
Proprit 1. G est triangul si et seulement si il admet un schma dlimination simplicial.
Lutilit dune telle caractrisation est manifeste, car on peut montrer quune coloration squentielle selon un tel ordre offre une coloration optimale. Le problme consiste donc trouver
efficacement un tel schma dans le cas des graphes trianguls, cest le but de lalgorithme LexBFS.
Graphe Triangule
xi
x2

xi
xp

x2

x1
(p 4)

xp
x1

Sommet simplicial :
Tous ses voisins sont adjacents 2 a` 2

Schema delimination simplicial :


x1 , x2 , ..., xn
xn
xi
x2
x1

Figure 5 Illustrations

3.2

Parcours en largeur lexicographique - LexBFS

Il se prsente comme une variante du parcours en largeur classique de graphe (dit BFS pour
"Breadth First Search"). Considrons lalphabet A = J1, nK, et munissons lensemble des mots
sur A de lordre lexicographique 4, dfini intuitivement comme tant lordre du dictionnaire. On
associe alors chaque sommet x une tiquette L (x) A , initialement gale , o dsigne le
mot vide de A .
On effectue ensuite les oprations suivantes :
Pour i variant de 0 n 1 :
1. Prendre un sommet x dtiquette maximale pour 4 parmi les sommets non visits.
2. Affecter le numro i x.
3. Effectuer la mise jour L (y) L (y) (n i) pour y N (x)
6

Programme 2 Parcours en Largeur Lexicographique


Entre : Un graphe quelconque G = (V, E), un sommet source s V
Sortie : Une bijection : V J0, n 1K
1: n := |V | ;
2: Numero := Tableau (Taille : n) (Defaut : -1) ;
3: Label := Tableau (Taille : n) (Defaut : "") ;
4: Pour i = 0 n-1 faire
5:
Soit x tel que Label.(x) = max{Label.(y), Numero.(y) = -1} ;
6:
Numero.(x) i ;
7:
Pour y N (x) faire
8:
Si Numero.(y) = -1 alors
9:
Label.(y) Label.(y) String_of_Int (n-i)
10:
Fin Si
11:
Fin Pour
12: Fin Pour
13: Renvoyer Numero

Nous obtenons alors un ordre : V J0, n 1K sur les sommets du graphe, appel "ordre
lexicographique", qui vrifie la proprit suivante :
Proprit 2. Si G est triangul, alors 1 (n 1) est simplicial.
Il en dcoule, en enlevant successivement le dernier sommet visit, que 1 est un schma
dlimination simplicial si G est triangul.

3.3

Affinage de partition

Outre la possibilit de colorer de manire optimale un graphe triangul, LexBFS offre aussi un
moyen de reconnaissance de graphe triangul : il suffit de tester si lordre obtenu est un schma
dlimination simplicial. Plus intressant encore : il peut simplmenter de manire avoir une
complexit linaire.
Afin de pouvoir extraire un sommet dtiquette maximale en temps constant, nous maintenons
en place une partition ordonne des sommets non visits selon leurs tiquettes. La structure utilise
est une liste doublement chane de listes doublement chanes, chaque cellule tant dote dun
pointeur vers la "cellule de tte" contenant sa partie.
Le type de donne utilis en Caml Light est le suivant :
type (a, b) partition = {
mutable debut: (a, b) cell;
mutable fin: (a, b) cell}
and (a, b) cell = Nil | Head of (a, b) header_cell
| Case of (a, b) content_cell
and (a, b) header_cell = {
mutable content: (a, b) content_cell;
mutable prev: (a, b) cell;
mutable next: (a, b) cell;
mutable flag: b}
and (a, b) content_cell = {e: a;
mutable avant: (a, b) cell;
mutable apres: (a, b) cell;
mutable classe: (a, b) header_cell}
;;

L = 54

L = 5

L = 4

Figure 6 Schma reprsentatif dune partition


On peut alors constater que la complexit temporelle de LexBFS en utilisant cette structure
de donne est bien O (n + m).

4
4.1

Rsultats exprimentaux
Sur des graphes pseudo-alatoires

Les trois algorithmes prsents ont t implments de plusieurs manires en Caml Light :
usage de diffrents tris pour Welsh-Powell, diffrentes structures de donnes pour DSATUR, etc.
Dans un premier temps nous avons donc essay ces programmes sur des graphes gnrs de manire
pseudo-alatoire dordres varis, et de densit moyenne 12 . Les tableaux qui suivent prsentent les
temps dexcution obtenus.
Les tests ont t mens sur un ordinateur fonctionnant sous Windows XP SP3, quip dun
R
Intel
CoreTM 2 Duo E6400 2.13 GHz et de 2.00 Go de RAM.

Figure 7 Temps dexcution, de 100 2000 sommets


Temps (s)
14
12
10
Welsh-Powell (1)

Welsh-Powell (2)
Dsatur (1)

Lex_BFS

4
2
Taille du graphe
(Nombre de sommets)

Temps (s)
350
300
250
200
Dsatur (2)
150
Dsatur (3)
100
50
Taille du graphe
(Nombre de sommets)

Figure 8 Temps dexcution, de 1000 10 000 sommets


Temps (s)
200
180
160
140
120
100

Welsh-Powell (1)

80

Welsh-Powell (2)

60

Dsatur (1)

40
20

Taille du graphe
(Nombre de sommets)

Des problmes de dpassement de capacit de mmoire nont pas permis de mener certains
tests jusqu 10 000 sommets. Nous avons tent dadapter la structure daffinage de partition
pour Dsatur3, mais comme nous pouvons le voir le rsultat est dcevant : cette structure ne
convient manifestement pas un tel algorithme. Remarquons aussi que le tri par fusion utilis
pour Welsh-Powell1 savre plus efficace sur ces graphes que le tri par dnombrement utilis pour
Welsh-Powell2. Globalement nous voyons galement que Welsh-Powell et LexBFS sont plus rapides
que Dsatur, mme si ce dernier offre souvent de meilleurs colorations sur un graphe quelconque.

4.2

Sur des graphes de DIMACS

Afin de mesurer lefficacit des algorithmes en terme de nombre de couleurs utilises, nous
avons utilis des graphes publis par le centre DIMACS (pour Center for Discrete Mathematics
and Theoretical Computer Science). Lintrt est double : ces graphes fournissent un benchmark
efficace pour tester lefficacit des colorations sur des problmes concrets, et ils soulignent les
applications multiples du problme de coloration dans la vie relle : allocation de registre lors
de la compilation de code, planification dhoraire, un problme dchec, configuration de rseaux
optiques, problme des carrs latins, etc.

10

Reseaux optiques :
Combien de couleurs differentes faut-il utiliser pour que
deux faisceaux de meme couleur ne se croisent pas ?
1

5
1
0

5
3

Graphes de reines :

Etant
donne un echiquier de taille n n, peut-on placer n ensembles de n reines de
meme couleur de sorte que deux reines de meme couleur ne puissent pas se prendre ?

Figure 9 Quelques illustrations des problmes de DIMACS

11

Table 1 Comparaison de diffrents algorithmes sur des graphes de la librairie DIMACS


Problme
correspondant

Graphe
inithx.i.1.col
mulsol.i.4.col
zeroin.i.1.col
school1_nsh.col
jean.col
queen11_11.col
myciel4.col
myciel7.col
mug100_1.col
wap05a.col
wap07a.col
qg.order40.col
qg.order100.col

Allocation de
registre
Planification
Livre
chec
Graphes de
Mycielski
Rseaux
optiques
Carrs latins

Sommets
n
864
185
211
352
80
121
23
191
100
905
1809
1600
10000

Nombre de :
Artes Coloration
m
(G)
18707
54
3946
31
4100
49
14612
???
508
10
3960
11
71
5
2360
8
166
4
43081
???
103368
???
62400
40
990000
100

Nb Couleurs
WP

Dsatur

54
31
49
34
10
17
5
8
4
51
52
64
128

54
31
49
27
10
15
5
8
4
51
46
40
100

Temps dexcution (s)


Welsh-Powell
Dsatur
1
2
1
2
0.047 0.031
0.359
1.297
0
0
0.031
0.125
0.016
0
0.031
0.187
0
0.015
0.094
0.547
0
0
0
0.015
0
0
0.015
0.11
0
0
0
0
0
0
0.016
0.047
0
0
0
0.015
0.032 0.046
0.454
2.515
0.093 0.094
1.547
6.562
0.062 0.047
1.094
3.531
0.797 0.766 39.375 142.219

3
0.125
0.016
0.016
0.047
0
0.015
0.016
0.015
0
0.156
0.391
0.25
4.062

Nous pouvons voir que dans la plupart des cas, WP (pour Welsh & Powell) et DSATUR
fournissent la coloration optimale du graphe considr. Cependant lorsquil y a des diffrences,
on voit que DSATUR est toujours plus performant que WP (school1_nsh.col, queen11_11.col et
wap07a.col par exemple). Lorsque le graphe prsente une structure plus "rgulire" (des symtries
par exemple pour qg.order40.col), DSATUR fournit bien une meilleure coloration que WP.
Au niveau des temps dexcution, les graphes prsents tant de faibles tailles (gnralement
moins de 100 000 artes, et presque un million pour qg.order100.col), les temps obtenus sont assez
peu levs et ne prsentent pas de grandes diffrences. Toutefois celles-ci deviennent trs marques
pour le dernier exemple ; on peut mme stonner de voir Dsatur3, qui utilise laffinage de partition,
se distinguer : sans doute les symtries que prsente qg.order100.col sont propices sont excution.

Conclusion et perspectives
Nous conclurons cette tude en insistant sur les diffrences defficacits constates, qui dpendent autant de limplmentation effectue que des heuristiques considres. La coloration de
graphe est un domaine de recherche trs actif et, comme nous avons pu le voir, ses applications
sont multiples. Certains problmes permettant parfois de faire des hypothses sur la structure
du graphe colorer, on peut envisager de dvelopper des algorithmes polynomiaux de coloration
optimale pour ces cas particuliers.
Signalons enfin que le problme de coloration simple abord nest pas exhaustif, et quil peut
stendre de multiples faons : coloration avec contraintes (nombre limit de couleurs, sommets
avec couleurs imposes), multi-coloration (allocation dune liste de couleurs aux sommets), etc.

Rfrences
1. Cours dalgorithmique des graphes du MPRI, Michel Habib, 9 janvier 2008
Chapitre 5 : Parcours en largeur lexicographique
2. Cours de luniversit Nice Sophia Antipolis, Frederic Havet, 2006
Chapitre 5 : Coloration de graphes
3. Algorithmic Aspects of Vertex Elimination on Graphs
Donald J. Rose, Robert Endre Tarjan, George S. Lueker, juin 1976
SIAM Journal on Computing, Vol. 5, No. 2, p. 266-283
4. DSATUR, page web par Philippe Rolland
http://prolland.free.fr/Cours/Cycle2/Maitrise/GraphsTheory/TP/PrgGraphDsat/dsat.html
5. DIMACS, graphes de benchmark
http://mat.gsia.cmu.edu/COLOR02/

12