Can you suggest a good rough graph colouring algorithm? What are the best such algorithms nowadays?
Remember to vote up questions/answers you find interesting or helpful (requires 15 reputation points)
|
4
4
|
|||||||||||||||
|
|
0
|
How to write an algorithm for coloring vertices of a graph in C#? |
||
|
|
You can accept an answer to one of your own questions by clicking the check mark next to it. This awards 15 reputation points to the person who answered and 2 reputation points to you.
|
3
|
There are a number of heuristics that work fairly well. They all work by prescribing some kind of ordering on the vertices, and then coloring the vertices one by one, using the least unused color to color the next one.
The latter two heuristics require the order to be rebuilt after each step, and so are more expensive, but there's empirical evidence suggesting that they do reasonably well, especially in parallel. None of these algorithms come with any kind of formal guarantees, so be warned. |
||
|
|
|
1
|
If “heuristic graph coloring algorithms” means approximation algorithms for the chromatic number, it is very useful to read “A compendium of NP optimization problems” edited by Pierluigi Crescenzi and Viggo Kann (http://www.csc.kth.se/~viggo/wwwcompendium/node15.html), which provides references for the best-known approximability and inapproximability results as of 2000. |
||
|
|
|
0
|
Oleg, there are also stochastic parallel approaches where you color all vertices simultaneously and randomly and apply the heuristic in parallel to all of the vertices. This mimics parallel distributed information processing in networks. Can you give some details about the heuristic which you are working on? |
||
|
|
|
2
|
You might find this survey article of use: |
|||
|
|
2
|
For practical non-optimal purposes you might want to look at DSATUR, and this paper, which briefly describes some simple methods: http://www.math.tu-clausthal.de/Arbeitsgruppen/Diskrete-Optimierung/publications/2002/gca.pdf |
||
|
|
|
11
|
An interesting approximation algorithm is the one by Wigderson. It shows how to color a 3-colorable graph with $O(\sqrt{n})$ colors. It's very simple: If the maximum degree is less than $\sqrt{n}$, you're done (just color greedily). If there is a node of degree larger than $\sqrt{n}$, you know that it's neighborhood is two-colorable so two-color it and never use those colors again. Remove the vertex and its neighbors from the graph and continue. There have been several follow-up works by Blum and the latest improvements use semidefinite programming. See, for instance, http://www.cs.cmu.edu/~anupamg/adv-approx/lecture15.pdf or, http://www.cs.princeton.edu/~chlamtac/acc-stoc.ps for the semidefinite programming approach. |
||
|
|

