Skip to main content


Showing posts from August, 2012

The Gale-Ryser Theorem

This is a small aside. While reading a paper by Grüner, Laue, and Meringer on generation by homomorphism they mentioned the Gale-Ryser (GR) theorem. As it turns out, this is a nice small theorem closely related to the better known Erdős-Gallai (EG).

So, GR says that given two partitions of an integer (p and q) there exists a (0, 1) matrixA iff p*dominatesq such that the row sum vector r(A) = p and the column sum vector c(A) = q.

As with most mathematics, that's quite terse and full of terminology like 'dominates' : but it's relatively simple. Here is an example:

The partitions p and q are at the top left, they both sum to 10. Next, p is transposed to get p* = [5, 4, 1] and this is compared to q at the bottom left. Since the sum at each point in the sequence is greater (or equal) for p* than q, the former dominates. One possible matrix is at the top left with the row sum vector to the right, and the column sum vector below.

Finally, the matrix can be interpreted as a bi…

Canonical Augmentation : How not to do it

In the interest of not publishing false information (even on a blog), this is a brief outline of why the approach outlined in the previous post does not work.

When constructing a set of graphs - from their degree sequences or otherwise - it is usual to describe the process as traversing a tree. The root of the tree is the empty set, and the leaves are the completed graphs. Internal nodes in this tree are partially completed graphs, and parent nodes are connected to children by augmentations.

An augmentation to a graph can be made in various ways: adding a single edge, adding multiple edges to a single new node, etc. However, the important thing is to avoid duplicating solutions at the leaves.

One easy way to do this is to check all newly generated leaves against all the previously generated ones. However, this requires not only storage of all the solutions so far, but also a lot of isomorphism checks. A better way is to check if a solution is canonical by some means. Even better than …

Orbit Saturation of Degree Sequences

Degree sequences and signatures are related, so it seems reasonable that Faulon's orbit-saturation algorithm for enumerating molecules should also work for just degree sequences. For example, height-1 signatures for a carbon skeleton are practically identical to a degree sequence. See this image for details:

On the left is a target signature, with its corresponding carbon skeleton below. On the right is the equivalent degree sequence, and its simple graph. Of course, signatures can handle multiple bonds, and different elements, but the principle is the same.

So the major problem with Király's method for enumerating graphs from their degree sequences is that it produces isomorphic solutions. The problem I had with Faulon's method was that I couldn't get it to work! A functional implementation for the (much simpler) degree sequence problem should help.

Encouragingly, the initial crude implementation does work for simple examples. The key seems to be to  check that a solu…