Apprentissage interactif de la théorie des graphes
Apprentissage interactif de la théorie des graphes
Guest User
Using app without sign in
Solveur de coloration et nombre chromatique
Assigne des couleurs aux sommets évitant les conflits adjacents
Sélectionnez un algorithme et générez les étapes pour commencer la visualisation
La coloration de graphe attribue des couleurs aux sommets de sorte que deux sommets adjacents ne partagent pas de couleur, en utilisant le moins de couleurs possible. Le minimum nécessaire est le nombre chromatique, et le calculer est NP-difficile pour les graphes généraux.
L'algorithme glouton ordonne les sommets et donne à chacun la plus petite couleur non utilisée par ses voisins déjà colorés, garantissant au plus une couleur de plus que le degré maximal. Des ordres comme Welsh-Powell (par degré décroissant) ou DSatur (par saturation, le nombre de couleurs voisines distinctes) utilisent souvent bien moins de couleurs en pratique. La coloration exacte utilise le backtracking avec élagage, praticable seulement pour de petits graphes.
La coloration planifie les examens pour qu'aucun étudiant n'en ait deux en même temps, alloue les registres CPU dans les compilateurs, attribue les fréquences radio sans interférence et colore les cartes pour que les régions voisines diffèrent. Le théorème des quatre couleurs pour les graphes planaires est l'un des résultats les plus célèbres des mathématiques. Le test de biparti est exactement la 2-colorabilité.
La coloration gloutonne tient en trois lignes et produit toujours une coloration valide. Ce qu'elle ne produit pas nécessairement, c'est une coloration minimale, et l'ordre des sommets décide à quel point elle s'en approche.
ColorationGloutonne(graphe, ordre):
couleur = {}
pour chaque sommet v dans ordre:
prises = { couleur[n] : n voisin de v, deja colorie }
c = plus petit entier positif absent de prises
couleur[v] = c
renvoyer couleur
// Welsh-Powell: trier par degre decroissant
// DSatur: choisir a repetition le sommet non colorie ayant
// le plus de voisins de couleurs distinctes (saturation),
// en departageant par le degreLe glouton n'utilise jamais plus que degré maximal plus un couleurs, car lorsque tu atteins un sommet il possède au plus autant de voisins et donc au plus autant de couleurs interdites. C'est une garantie réelle, mais elle peut rester très loin du nombre chromatique véritable. DSatur est l'amélioration pratique: choisir ensuite le sommet le plus contraint est exactement l'heuristique qui évite de se peindre dans un coin.
Colorie un cycle de cinq sommets de façon gloutonne en ordre alphabétique, puis compare le résultat au nombre chromatique réel.
Graphe d'exemple: Cycle non orienté A-B, B-C, C-D, D-E et E-A.
La coloration est A 1, B 2, C 1, D 2, E 3, soit trois couleurs, et une recherche exhaustive confirme que le nombre chromatique d'un cycle de cinq vaut bien 3. Le glouton s'est ici trouvé optimal. La raison pour laquelle trois sont nécessaires tient à la longueur impaire du cycle: les couleurs doivent alterner le long d'un cycle, et un cycle impair te ramène au départ en exigeant une couleur différente de celle qui s'y trouve déjà. Tout cycle pair se contente de 2.
Temps: O(V + E) glouton, NP-difficile exact · Espace: O(V)
La coloration gloutonne examine chaque sommet une fois et inspecte chaque arête deux fois, une depuis chaque extrémité, elle est donc en O(V + E) avec O(V) d'espace pour le tableau des couleurs. Ce coût achète une coloration valide utilisant au plus degré maximal plus un couleurs, jamais un minimum garanti. Calculer le nombre chromatique réel est NP-difficile, et même l'approcher à un facteur V puissance 1 moins epsilon près est NP-difficile, ce qui est inhabituellement fort: pour la plupart des problèmes il existe une approximation décente, et pour la coloration essentiellement aucune. La 2-colorabilité fait exception et reste facile, puisqu'elle est exactement le test de bipartition en O(V + E). Décider la 3-colorabilité est déjà NP-complet.
Choisis selon le nombre de couleurs que tu anticipes et selon que tu exiges ou non le minimum véritable.
| Alternative | À préférer quand | Coût |
|---|---|---|
| Test de bipartition | Tu veux seulement savoir si 2 couleurs suffisent. Un problème différent et bien plus facile. | O(V + E) |
| DSatur | Le choix pratique par défaut. Prend le sommet le plus saturé et se révèle souvent optimal ou proche sur les graphes réels. | O(V^2) |
| Welsh-Powell | Tu veux mieux qu'un ordre arbitraire pour presque aucun code supplémentaire. Trie par degré décroissant. | O(V^2) |
| Séparation et évaluation exacte | Tu as réellement besoin du nombre chromatique et le graphe est petit. | exponentiel |
| Clique maximale | Tu veux une borne inférieure. Une clique de taille k impose au moins k couleurs. | O(3^(V/3)) |
Algorithmes associés: Vérification Bipartite, Clique Maximale, Vérification de Chordalité