[GAP Forum] Speedup of GAP program - centric subgroups
Jack Schmidt
jack at ms.uky.edu
Sun Jul 8 00:33:42 BST 2007
Just to address the theoretical question of computing centric subgroups:
If P is a proper centric subgroup of S, then it is contained in some
maximal subgroup M of S and so C_S(M) <= C_S(P) <= P <= M.
A simple algorithmic change then is to use Centralizer( S,
FrattiniSubgroup( S ) ) instead of Center( S ). This improved
performance a fair amount in both GAP and magma. For GAP, 2^6 went from
30 seconds to 7 seconds, and 2^7 went from 500 seconds to 80 seconds.
Of course, you could also check which maximal subgroups of S are
centric, and only consider their subgroups, but it looked like over 80%
of maximal subgroups were centric, and nearly 80% of groups had all
maximals centric, so it may not be worth the headache.
Kasper Andersen wrote:
> Hi,
>
> In connection with a joint project with Bob Oliver and Joana Ventura I
> have been carrying out a number of computations for the 2-groups of
> order at most 2^8 in Magma. To check them and to learn GAP at the same
> time, I have tried to port my programs to GAP.
>
> Unfortunately GAP seems to be significantly slower (a factor of acround
> 2.7) than Magma. Before I go any further I wonder if there is a way to
> speed up GAP. As a test I have been running the following GAP program:
>
> iscritical := function(S,P)
> return 1;
> end;
>
> criticalsubgroups := function(S)
> local kappa,SmodZ,L;
> if IsAbelian(S) then
> return [];
> else
> # Only check subgroups containg Z(S)
> kappa:=NaturalHomomorphismByNormalSubgroup(S,Center(S));
> SmodZ:=FactorGroup(S,Center(S));
> L:=SubgroupsSolvableGroup(SmodZ);
> L:=List(L,x->PreImage(kappa,x));
> return Filtered(L,P->(iscritical(S,P) <> -1));
> fi;
> end;
>
> n:=2^7;
>
> for i in [1..NumberSmallGroups(n)] do
> S:=SmallGroup(n,i);
> L:=criticalsubgroups(S);
> Print(n," ",i,"\n");
> od;
>
> Some comments are in order: To simplify the timings I have left out the
> code for the function iscritical, so the above program simply computes
> the conjugacy classes of subgroups P containing Z(S) for all 2-groups S
> of order 2^7. Moreover my original function does not return true/false
> but rather -1 (=false), 0 (=undecided) and 1 (=true). For simplicity I
> have left this in.
>
> Unfortunaly even this simple program runs a factor of 2.7 slower than
> the corresponding Magma program. Are there any ways to speed this up?
>
> Another question: One of the conditions for criticality is that P is
> centric in S, i.e. that C_S(P) is contained in P. Does anyone know any
> better algorithm for computing all such subgroups than testing all
> subgroups containing Z(S) one by one?
>
> best wishes,
>
> Kasper Andersen
>
> _______________________________________________
> Forum mailing list
> Forum at mail.gap-system.org
> http://mail.gap-system.org/mailman/listinfo/forum
More information about the Forum
mailing list