I want to make Cayley graphs for the same group, but with different generators. Is there any way to represent a group, besides a cumbersome permutation representation or using the default Mathematica generators for specific groups? More generally, can you represent a group by its generators and defining equations and then just but this into the CayleyGraph[group]
function?
1 Answer
You can do this using GroupMultiplicationTable
.
For example, take the group:
G = AbelianGroup[{2, 3}];
CayleyGraph[G]
That will get you two three-cycles, connected by transpositions (hence {2,3}
).
But this group is cyclic, it should be able to be generated by a single element of order six. To do that, you could either do the obvious:
G2 = AbelianGroup[{6}];
CayleyGraph[G2]
or do something like you suggest. First, let's reproduce the original Cayley graph by picking out the elements we want. You might want to list the group elements to refer to them by their canonical ordering:
GroupElements[G]
That gives you a notion that 2
and 4
are the generators Mathematica is using. To get access to those rows of the multiplication table is really all you need now:
mygenerators = {2, 4};
mycolors = {Blue, Red};
table = GroupMultiplicationTable[G];
edges = {};
For[gen = 1, gen <= Length[mygenerators], gen++,
generator = mygenerators[[gen]];
color = mycolors[[gen]];
For[i = 1, i <= Length[table], i++,
edges = Append[edges, Style[i -> table[[i, generator]], color]]
];
];
This reproduces the original Cayley graph, but you can re-do this with anything else as mygenerators
. For example:
mygenerators={2}
produces a disconnected set of two triangles (not a generating set)mygenerators={2,3,4}
(along with another color) produces an over-abundance of edges in the Cayley graph, a graph containing the previous graph but with more edges.mygenerators={5}
produces the cyclic graph we expect (although in an interesting layout), since the group is after all cyclic.
Now for whatever group you have, the only question is really how to identify which elements in GroupElements
you want.
-
$\begingroup$ I don't understand. Where can I specify defining equations? $\endgroup$ Commented Jan 20, 2015 at 12:44
-
$\begingroup$ I am not sure what your comment means by "defining equations." If your question is regarding the presentation of a group by a particular set of relations, I don't see how this question makes sense. The command
CayleyGraph
requires some group object to be specified already. A set of relations does not tell us much information about elements of the group (and quite famously, it may be beyond the power of computers -- a great disappointment to Hilbert). $\endgroup$ Commented Jan 20, 2015 at 21:51 -
1$\begingroup$ To put it another way, in a more positive light, if you have already specified your group, you only need to indicate the generators -- no equations are required. This is how
CayleyGraph
works (using some set of canonical generators) and it is also how my algorithm works. I'm afraid, however, that it would require some careful assumptions about user-generated input to take some particular presentations of certain groups and give the Cayley graphs. (It would also require an approach completely different than the existingCayleyGraph
). $\endgroup$ Commented Jan 20, 2015 at 21:54