After posting about the Hakimi-Havel theorem, I received a nice email suggesting various relevant papers. One of these was by Zoltán Király called "Recognizing Graphic Degree Sequences and Generating All Realizations". I have now implemented a sketch of the main idea of the paper, which seems to work reasonably well, so I thought I would describe it. See the paper for details, of course.
One focus of Király's method is to generate graphs efficiently, by which I mean that it has polynomial delay. In turn, an algorithm with 'polynomial delay' takes a polynomial amount of time between outputs (and to produce the first output). So - roughly - it doesn't take 1s to produce the first graph, 10s for the second, 2s for the third, 300s for the fourth, and so on.
Central to the method is the tree that is traversed during the search for graphs that satisfy the input degree sequence. It's a little tricky to draw, but looks something like this:
At the top right is the starting degree sequence - [3, 2, 2, 2, 1] - and there are two graphs at the bottom that realise this sequence. The 'tree of trees' in between is the recursive search through sets of neighbours for vertices in the graph. So the top tree shows the possible choices for neighbours of the last (4th) vertex; the next level shows them for the 3rd vertex, and so on.
The key point here is that only red leaves of a particular tree are valid choices, and these pass through a path of red and black edges. A red edge in the tree represents an edge in the graph, while a black edge indicates no edge from this vertex. So the left hand graph is [{0} : 4, {0, 1} : 3, {0, 1} : 2], using the notation {V0, V1, ..., Vn} : Vm for a set of edges {V0:Vm, V1:Vm, ..., Vn:Vm}. The final edge for the right hand graph (0:1) is not shown as a tree, since the degree sequence is [1, 1, 0, 0, 0] at that point - leaving only one choice.
Also not shown are colors on the internal nodes of the tree. Király's paper describes how to color these nodes so that the algorithm never visits any black leaf. This is vital for efficient output, but I have not ye implemented that part. However, cross-checking the results against the graphs output by McKay's method is promising so far (up to 7 vertices). I should note that Király's method seems to produce isomorphic solutions.
Code for this is here, although it is a somewhat naïve implementation.
One focus of Király's method is to generate graphs efficiently, by which I mean that it has polynomial delay. In turn, an algorithm with 'polynomial delay' takes a polynomial amount of time between outputs (and to produce the first output). So - roughly - it doesn't take 1s to produce the first graph, 10s for the second, 2s for the third, 300s for the fourth, and so on.
Central to the method is the tree that is traversed during the search for graphs that satisfy the input degree sequence. It's a little tricky to draw, but looks something like this:
At the top right is the starting degree sequence - [3, 2, 2, 2, 1] - and there are two graphs at the bottom that realise this sequence. The 'tree of trees' in between is the recursive search through sets of neighbours for vertices in the graph. So the top tree shows the possible choices for neighbours of the last (4th) vertex; the next level shows them for the 3rd vertex, and so on.
The key point here is that only red leaves of a particular tree are valid choices, and these pass through a path of red and black edges. A red edge in the tree represents an edge in the graph, while a black edge indicates no edge from this vertex. So the left hand graph is [{0} : 4, {0, 1} : 3, {0, 1} : 2], using the notation {V0, V1, ..., Vn} : Vm for a set of edges {V0:Vm, V1:Vm, ..., Vn:Vm}. The final edge for the right hand graph (0:1) is not shown as a tree, since the degree sequence is [1, 1, 0, 0, 0] at that point - leaving only one choice.
Also not shown are colors on the internal nodes of the tree. Király's paper describes how to color these nodes so that the algorithm never visits any black leaf. This is vital for efficient output, but I have not ye implemented that part. However, cross-checking the results against the graphs output by McKay's method is promising so far (up to 7 vertices). I should note that Király's method seems to produce isomorphic solutions.
Code for this is here, although it is a somewhat naïve implementation.
Comments