[Nauty-list] Detecting isomorphic collections in the Boolean lattice
Gordon Royle
gordon at csse.uwa.edu.au
Tue Nov 28 12:50:27 EST 2006
On 28/11/2006, at 9:31 AM, Kevin Gilbert wrote:
> Hi,
>
> I am trying to use nauty test whether two collections of sets from
> the Boolean
> lattice are isomorphic. For example, I want some way for nauty to
> tell me
> that the collections 123, 124 and 134, 135 are isomorphic.
>
> I have tried various colouring schemes, canonical labelling & etc
> without any
> success.
>
> So I am left with these questions: (1) Can nauty be used in this
> fashion? (2)
> If so, how?
Yes.. and in a few different ways...
In your case, if you are working with the full boolean lattice, then
you can just treat your collections as the "blocks" of a design-type
thing.
Create a bipartite graph with one vertex for each point and one
vertex for each block, where a "block"-vertex is adjacent to a
"point"-vertex if the block contains the point. For your example, we
would have two 7-vertex graphs - in the first graph vertex 5 would be
adjacent to 0,1,2 and vertex 6 adjacent to 0,1,3, while in the second
graph vertex 5 would be adjacent to 0,2,3, and vertex 6 adjacent to
0,2,4. [I have renamed the points so they start at 0].
Then just compute the canonical labelling of each graph and if they
are the same, then the collections are the same.
[I have glossed over / finessed / lied to you about one detail - for
complete safety you should ensure that the point-vertices and the
block-vertices cannot get "mixed up" by nauty by using the lab/ptn
feature to compute the canonical labelling of the PARTITIONED graph
where the points form one cell and the blocks another cell. Otherwise
you can mistakenly mix up a set with its dual, although this will
only happen in special circumstances]
Alternatively, you could create a graph consisting of the entire
boolean lattice (aka n-cube) and then compute the canonical labelling
of the partitioned graph where your chosen set (mapped to vertices in
the graph) forms one cell and the remaining vertices the other cell.
Hope this helps..
gordon
More information about the Nauty
mailing list