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
[email protected]
http://mail.gap-system.org/mailman/listinfo/forum

_______________________________________________
Forum mailing list
[email protected]
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to