[GAP Forum] Re: Forum Digest, Vol 8, Issue 3
Michael.Hartley at nottingham.edu.my
Wed Jul 14 03:54:19 BST 2004
Thanks. I'll try your method and see if it works out as more
Yours, Mike H...
Michael Hartley wrote:
> On another topic - suppose I want a representative of each orbit of
> group acting on a set, without actually finding the whole orbits?
> Specifically, I am trying to get Automorphism classes of involutions
> a group.
> So far, I do this :
> Note that the last line before the return will actually compute the
> whole Orbit.
> I really just want a representative from each orbit. Or is there a
> faster way to get the involutions??
Of course there is a faster way to get the involutions -- you can
use `ConjugacyClasses' to compute the conjugacy classes of your
group, and then check which conjugacy classes of involutions are fused
under outer automorphisms. You might try the following -- of course
significant algorithmic improvements are possible depending on the
representation of your groups, and it may happen for various reasons
that you can save the work of actually computing the automorphism
group, thus the following is just a `general purpose' approach:
AutomorphismClassRepresentativeInvolutions := function ( G )
local ccl, rep, A, autgen, outer, pos, Out, orb, i;
ccl := Filtered( ConjugacyClasses( G ),
cl -> Order( Representative( cl ) ) = 2 );
if Length( Set ( List( ccl, Size ) ) ) = Length( ccl )
then return List( ccl, Representative ); fi;
rep := List( ccl, Representative );
A := AutomorphismGroup( G );
autgen := GeneratorsOfGroup( A );
outer := Filtered( autgen, a -> not IsInnerAutomorphism( a ) );
Out := Group(()); pos := [ ];
for i in [ 1 .. Length( outer ) ] do
pos[i] := List([ 1 .. Length( ccl ) ],
Out := ClosureGroup( Out, SortingPerm( pos[ i ] ) );
return List( Orbits( Out, [ 1 .. Length( ccl ) ] ),
orb -> Representative( ccl[ orb[ 1 ] ] ) );
Hope this helps,
More information about the Forum