The IGraph/M package has an implementation of this.
Example:
<< IGraphM`
g = RandomGraph[{10, 20}]
Compute the chromatic number:
IGChromaticNumber[g]
(* 4 *)
Compute a minimum colouring:
IGMinimumVertexColoring[g]
(* {3, 1, 4, 2, 2, 4, 1, 3, 1, 2} *)
Visualize it:
IGVertexMap[ColorData[97],
VertexStyle -> IGMinimumVertexColoring,
Graph[g, VertexSize -> Large]]
This is by far the fastest implementation that exists for Mathematica, and is competitive with other systems. It is based on encoding the colouring problem into a Boolean satisfiability problem. (Thanks to Juho for the guidance on this!)
Computing the chromatic polynomial is harder than computing the chromatic number, so methods based on this won't work even for graphs of moderate size. Combinatorica is outdated and no longer easy to use, and its implementation is not efficient.
IGChromaticNumber
and/orIGMinimumVertexColoring
from Szabolcs's packageIGraphM
? $\endgroup$