IGraph/M 0.3.99 is now released, with a simplified installation procedure. Now it only takes a single line of Mathematica code to automatically download and install the package (please click through to the website so I can keep the installation instructions in a central location).
This release brings many features developed specifically for IGraph/M, and not previously available in the core igraph library. It also includes several new features exclusive to IGraph/M (not available in other igraph interfaces). At this point, IGraph/M also provides alternatives for most Combinatorica feature that do not yet have built-in equivalents in Mathematica.
Some highlights:
Efficient minimum graph colouring and chromatic number computation (implemented in almost pure WL code!). Here's a little demo:
We apply a Mycelski construction to a cycle graph twice, then compute a minimum colouring, and finally visualize this colouring.
Nest[IGMycielskian, CycleGraph[4], 2] //
Graph[#, GraphStyle -> "BasicBlack", VertexSize -> Large] & //
IGVertexMap[ColorData[101], VertexStyle -> IGMinimumVertexColoring]
Computing the chromatic number would have been as easy as
IGChromaticNumber[%]
(* 4 *)
Also check that it's triangle free:
IGTriangleFreeQ[%%]
(* True *)
We now have easy and flexible lattice generation:
IGLatticeMesh["CairoPentagonal"]
Improved mesh-graph conversion. Let's compute the face-face adjacency graph (i.e. the dual lattice) while keeping vertex coordinates.
IGMeshCellAdjacencyGraph[%, 2, VertexCoordinates -> Automatic]
Let's take that graph and find a random spanning tree to generate a nice maze.
IGRandomSpanningTree[%, GraphStyle -> "Web",
VertexCoordinates -> GraphEmbedding[%]]
Now take the degree sequence of that tree and generate another tree (i.e. connected graph) with the same degree sequence.
IGRealizeDegreeSequence[VertexDegree[%]] // TreeGraphQ
(* True *)
Compute a minimum colouring of a pinwheel tiling.
mesh = IGLatticeMesh["Pinwheel", {3, 3}, MeshCellStyle -> {1 -> White}];
SetProperty[{mesh, {2, All}}, MeshCellStyle -> ColorData[11] /@ IGMinimumVertexColoring@IGMeshCellAdjacencyGraph[mesh, 2]]
Compute the chromatic index (edge chromatic number) of a large graph.
IGChromaticIndex@RandomGraph[{100, 200}] // Timing
(* {0.040686, 10} *)
There are many more examples in the documentation, and many more new functions. Here I chose to show a few visually interesting ones.
As always, all feedback is welcome, and any help with the package is appreciated: testing, editing the documentation, contributing examples, or if you're feeling up to it, adding new functions.