Théorie et Applications

Le Problème de Coloration de Graphe : Des Cartes au Sudoku

Comment colorier une carte pour qu'aucun pays limitrophe ne partage la même couleur ? Comment un compilateur alloue-t-il les registres du processeur ? Découvrez les mathématiques élégantes et les algorithmes puissants derrière le problème de coloration de graphe.

14 Min de lecture Mis à jour : Juin 2026 Niveau Intermédiaire
LGT
Learn Graph Theory Team
Expert Operations Research Engineers

1. Qu'est-ce que le Problème de Coloration de Graphe ?

La coloration de graphe est exactement ce que son nom indique : l'attribution de couleurs à certains éléments d'un graphe sous réserve de contraintes spécifiques. De loin, le type le plus courant de coloration de graphe est la Coloration des Sommets (Vertex Coloring).

Les règles de la coloration des sommets sont remarquablement simples :

  1. Vous devez attribuer une couleur à chaque sommet (nœud) du graphe.
  2. Aucun nœud adjacent ne peut partager la même couleur. S'il y a une arête reliant le Nœud A au Nœud B, ils doivent être de couleurs différentes.
  3. L'objectif est d'utiliser le nombre minimum absolu de couleurs possible.

Bien que les règles soient suffisamment simples pour qu'un enfant les comprenne, trouver le nombre minimum de couleurs pour un grand graphe complexe est incroyablement difficile. En fait, trouver le minimum exact est un problème NP-Complet, ce qui signifie qu'il n'existe aucun algorithme rapide connu pour le résoudre parfaitement pour tous les graphes.

2. Le Nombre Chromatique (et les Graphes Bipartis)

Le nombre minimum absolu de couleurs nécessaires pour colorier un graphe spécifique est appelé son Nombre Chromatique, généralement désigné par la lettre grecque Chi χ(G).

Regardons quelques exemples pour comprendre les nombres chromatiques :

Graphes Bipartis

Tout graphe qui peut être colorié en utilisant exactement deux couleurs (χ = 2) est appelé un Graphe Bipartite. C'est un concept massif en théorie des graphes. Si un graphe est biparti, vous pouvez diviser ses sommets en deux ensembles distincts (comme les "nœuds Rouges" et les "nœuds Bleus") où les arêtes ne se croisent qu'entre les ensembles, jamais à l'intérieur de ceux-ci. Si un graphe contient un cycle avec un nombre impair de nœuds (comme un triangle), il ne peut jamais être biparti.

3. Le Célèbre Théorème des Quatre Couleurs

Historiquement, la coloration de graphes est née de la cartographie. En 1852, Francis Guthrie essayait de colorier une carte des comtés d'Angleterre et a remarqué qu'il n'avait besoin que de quatre couleurs pour s'assurer qu'aucun comté limitrophe ne partageait la même couleur. Il a demandé à son frère, mathématicien, si c'était une règle universelle.

C'est devenu le Problème des Quatre Couleurs : Étant donné toute séparation d'un plan en régions contiguës, produisant une figure appelée carte, pas plus de quatre couleurs ne sont nécessaires pour colorier les régions de la carte de sorte qu'aucune région adjacente n'ait la même couleur.

Pour considérer une carte comme un graphe, vous traitez simplement chaque pays comme un Nœud, et dessinez une Arête entre deux pays s'ils partagent une frontière. Le théorème stipule que tout graphe planaire (un graphe qui peut être dessiné sur une feuille de papier plate sans qu'aucune arête ne se croise) a un nombre chromatique d'au plus 4.

Il a fallu plus d'un siècle pour le prouver. En 1976, Kenneth Appel et Wolfgang Haken ont finalement prouvé le Théorème des Quatre Couleurs en utilisant un programme informatique pour vérifier 1 936 configurations spécifiques. C'était le premier théorème mathématique majeur à être prouvé à l'aide d'un ordinateur, provoquant des débats philosophiques massifs parmi les mathématiciens de l'époque.

Coloration de Graphe Interactive

Essayez de colorier manuellement un graphe complexe en utilisant le moins de couleurs possible, ou regardez l'Algorithme Glouton le faire instantanément. Pouvez-vous trouver un graphe qui nécessite 5 couleurs ?

Lancer le Visualiseur de Coloration

4. Comment Colorier un Graphe (Algorithmes)

Parce que trouver le nombre chromatique parfait est NP-Complet, nous essayons rarement de trouver la solution parfaite en génie logiciel. Au lieu de cela, nous utilisons des heuristiques pour trouver une bonne solution très rapidement.

L'Algorithme Glouton (Greedy Algorithm)

L'approche la plus simple est l'Algorithme Glouton. Il ne garantit pas le nombre minimum absolu de couleurs, mais il garantit qu'il n'utilisera jamais plus de couleurs que le degré maximum d'un sommet plus un (d + 1).

  1. Ordonnez les sommets du graphe (V1, V2, ... Vn).
  2. Attribuez la première couleur disponible (Couleur 1) au premier sommet (V1).
  3. Pour chaque sommet suivant, regardez tous ses voisins précédemment coloriés.
  4. Attribuez au sommet actuel la couleur avec le numéro le plus bas qui n'est pas actuellement utilisée par l'un de ses voisins.
  5. Si toutes les couleurs précédemment utilisées sont prises par des voisins, introduisez une nouvelle couleur.

Le Piège : Le nombre de couleurs utilisées par l'Algorithme Glouton dépend fortement de l'ordre des sommets. Si vous les ordonnez mal, il utilise trop de couleurs. Cela a conduit à l'Algorithme de Welsh-Powell, qui dit simplement : Triez les sommets par ordre décroissant en fonction de leur degré (nombre de connexions) avant d'exécuter l'Algorithme Glouton. Cette petite modification donne des résultats considérablement meilleurs.

5. Applications Réelles

La coloration de graphe ne sert pas seulement à faire de jolies cartes. Elle résout des problèmes logistiques massifs.

1. Conflits de Planification (Examens et Taxis)

Imaginez que vous planifiez les examens finaux d'une université. Vous avez des centaines de cours, et de nombreux étudiants suivent plusieurs cours. Si deux cours partagent un étudiant, leurs examens ne peuvent pas être programmés en même temps.

En coloriant le graphe, vous trouvez le nombre minimum de créneaux horaires nécessaires pour programmer tous les examens sans qu'aucun étudiant n'ait de conflit.

2. Allocation de Registres de Compilateur

Lorsqu'un compilateur traduit votre code (comme C++ ou Rust) en code machine, il doit affecter vos variables aux registres matériels du processeur. Les processeurs n'ont qu'un très petit nombre de registres (par exemple, 16 ou 32). Si deux variables sont utilisées en même temps dans votre code, elles ne peuvent pas être stockées dans le même registre.

Les compilateurs construisent un "graphe d'interférence" où les variables sont des nœuds, et les arêtes connectent des variables dont les durées de vie se chevauchechnt. Colorier le graphe affecte les variables aux registres. Si le nombre chromatique est supérieur aux registres CPU disponibles, le compilateur est forcé de "déverser" (spill) des variables dans la RAM plus lente.

3. Attribution de Fréquences

Les tours de téléphonie cellulaire transmettent des signaux sur des fréquences spécifiques. Si deux tours sont trop proches l'une de l'autre, elles ne peuvent pas utiliser la même fréquence sous peine de provoquer des interférences.

En représentant les tours comme des nœuds et en dessinant des arêtes entre les tours qui se chevauchent géographiquement, les entreprises de télécommunications utilisent la coloration de graphe pour attribuer des fréquences (couleurs) aux tours en utilisant la quantité minimale de bande passante possible.

6. Pourquoi le Sudoku n'est qu'un Puzzle de Coloration de Graphe

Si vous avez déjà joué au Sudoku, vous avez résolu un problème de Coloration de Graphe.

Dans une grille de Sudoku standard 9x9, il y a 81 cases. Vous devez les remplir avec les chiffres de 1 à 9 de telle sorte qu'aucune ligne, colonne ou bloc de 3x3 ne contienne de chiffre en double.

Pour convertir cela en graphe :

L'écriture d'un solveur de Sudoku utilisant un algorithme de Coloration de Graphe avec retour sur trace (backtracking) est un exercice classique d'informatique et souligne l'incroyable polyvalence de la théorie des graphes.

Foire aux questions

Qu'est-ce que le coloriage de sommets en théorie des graphes ?

C'est l'attribution de couleurs à chaque sommet d'un graphe de sorte que deux sommets adjacents (reliés par une arête) n'aient pas la même couleur.

Qu'est-ce que le nombre chromatique ?

Le nombre chromatique (χ) est le nombre minimum de couleurs nécessaires pour colorier correctement un graphe. Par exemple, un graphe biparti a un nombre chromatique de 2.

Quelle est la complexité du problème de coloriage de graphe ?

Déterminer le nombre chromatique est un problème NP-complet. On utilise en pratique des heuristiques rapides comme l'algorithme glouton.

Exploration Supplémentaire

Peignez le Graphe

Lire sur la coloration de graphe est fascinant, mais interagir avec est révélateur. Dessinez vos propres réseaux complexes et mettez l'Algorithme Glouton au défi de les colorier de manière optimale.

Lancer le Visualiseur de Coloration