[email protected] licence CC-BY-NC-SA
DUT Informatique
semestre 2
Th´eorie des Graphes
Coloriage d’un graphe
Math´ematiques
TP n4
Exercice 1
Coloriage d’un graphe
Le probl`eme du coloriage d’un graphe (simple) non-oriene est d’assigner des couleurs `a
tous les sommets d’un graphe de telle sorte que :
2 sommets appartenant `a une mˆeme arˆete aient une couleur diff´erente
utiliser le moins de couleurs possibles (c’est la vrai contrainte du probl`eme)
l’algorithme le plus simple qui r´esolve ce probl`eme est le suivant :
fonction G=Coloriage(G)
couleur courante = 1
pour tout xsommet de Gfaire
V= liste des voisins de x
couleur = plus petite couleur non encore utilis´ee dans V
colorier xavec cette couleur
si couleur > couleur courante
alors couleur courante =couleur
fin
fin faire
En utilisant cet algorithme `a la main :
1. Colorier le graphe ci-contre
2. Combien de couleurs faut-il ?
3. Ce nombre est il optimal ?
4. Que deviennent ces r´esultats si
on ajoute au graphe l’arˆete {1; 5}
on ajoute l’arˆete {1; 5}et {1; 6}
on retire du graphe l’arˆete {3; 5}
12 3
4
5
6
12 3
4
5
6
12 3
4
5
6
12 3
4
5
6
5. ´
Ecrire une fonction scilab G=coloriage(G) qui colorie un graphe Gsuivant la
m´ethode l’algorithme donn´e plus haut. Tester avec le graphe exo870G1.graph.
Indication : Les couleurs des sommets de Gsont des nombres 1,2,3... stock´es
dans G.node color. Mettre ces couleurs `a 0 puis commencer avec couleur courante =
1
6. Appliquer cet
algorithme
au graphe
exo870G2.graph
et trouver γ(G) :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
[email protected] licence CC-BY-NC-SA
DUT Informatique
semestre 2
Th´eorie des Graphes
Coloriage d’un graphe
Math´ematiques
TP n4
Exercice 2
Optimisation du coloriage glouton
Le coloriage Glouton ne donne pas toujours le nombre optimal de couleurs ! Pour
am´eliorer le r´esultat il suffit de modifier l’ordre de coloriage des sommets en les prenant
dans l’ordre d´ecroissant de leur degr´e.
1. ´
Ecrire une fonction scilab G=coloriage2(G) qui colorie un graphe Gsuivant la
m´ethode l’algorithme glouton mais en traitant les sommets dans l’ordre d´ecroissant
de leur degr´e.
Indication : utiliser nodes degrees pour calculer le degr´e de chaque sommet puis
gsort pour trier les sommets :
-->D=nodes_degrees(G)
D =
5. 6. 6. 4. 4. 6. 5. 8. 6. 4.
-->[degres,ordre]=gsort(D,’g’,’d’)
ordre =
8. 6. 2. 3. 9. 1. 7. 5. 4. 10.
degres =
8. 6. 6. 6. 6. 5. 5. 4. 4. 4.
2.
Comparer le nouveau colo-
riage obtenu pour le graphe
exo870G2.graph avec celui
de l’algorithme glouton non
optimis´e. Les r´esultats sont
ils les mˆeme ? Les r´esultats
sont ils optimaux ? 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3.
Comparer les coloriages
obtenus pour le graphe
exo1000G.graph avec les
deux algorithmes glouton
(optimis´es et non-optimis´e).
Les r´esultats sont ils les
mˆeme ? Les r´esultats sont
ils optimaux ?
1
2
3
45
6
7
8
9
10
4. Modifier votre programme en ajoutant des commandes printf pour faire afficher
les sommets colori´e et la couleur utilis´ee `a chaque ´etape de l’algorithme.
2
[email protected] licence CC-BY-NC-SA
DUT Informatique
semestre 2
Th´eorie des Graphes
Coloriage d’un graphe
Math´ematiques
TP n4
Exercice 3
Algorithme de coloriage de Welsh-Powell
L’algorithme de Welsh-Powell est un algorithme de coloriage beaucoup plus rapide que
l’algorithme de base mais qui ne trouve pas toujours le nombre minimal de couleurs, mais
un nombre assez proche de γ(G). L’algorithme est le suivant :
fonction G=Welsh(G)
L= liste des sommets class´es dans l’ordre d´ecroissant de leur degr´e
couleur courante = 0
tant que L6=faire
incr´ementer la couleur courante
Colorier sle premier sommet de Lavec la couleur courante
´eliminer sde L
V= liste des voisins de s
pour tout xdans Lfaire
si x /Valors colorier xavec la couleur courante
ajouter les voisins de x`a V
fin
fin faire
´eliminer les sommets colori´es de L
fin faire
1. Colorier le graphe Gci-dessous (exo394G.graph) avec l’algorithme de Welsh-
Powell :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2. Impl´ementer l’algorithme de Welsh/Powell en scilab et tester sur le graphe pr´ec´edent.
Indication : utiliser [degre,sommets]=gsort(degre) pour trier les sommets
dans l’ordre ecroissant de leur degr´e
3. Le coloriage trouv´e est il optimal ?
4. Charger le graphe paris.graph dans scilab
(a) Colorier les sommets du graphe paris.graph avec les fonctions coloriage et
Welsh, comparer les temps d’ex´ecution et le nombre de couleurs obtenues :
-->P=load_graph(’paris.graph’);
-->tic();P1=coloriage(P);toc()
-->tic();P2=Welsh(P);toc()
(b) De mˆeme colorier les arˆetes de paris.graph en utilisant coloriage et Welsh
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !