[GAP Forum] Performance issue
Alexander Hulpke
hulpke at mac.com
Fri Sep 23 20:30:56 BST 2005
Dear GAP-Forum,
On Sep 22, 2005, at 5:14 AM, Mathieu Dutour wrote:
> I have a performance problem with the following:
> v:=[1,2,4,5,1,2,4,2,6,2,5,1,3,5];
> GR:=SymmetricGroup(Length(v));
> Stabilizer(GR, v, Permuted); (very very slow)
There are three different methods for `Stabilizer' built into GAP.
The first is a generic Orbit/Stabilizer algorithm, that will compute
the orbit of the point under the specified action and then construct
the stabilizer from Schreier generators.
The second is a variant for solvable groups that utilizes that the
orbits of a normal subgroup form blocks. Memory requirements are
similar as with variant 1 but it will run faster.
Finally there are special cases for a few specific actions:
A group on its elements or subgroups (Centralizer, Normalizer)
A permutation group on points, tuples, sets (via backtrack routines).
The aim here is not to cover any possible action with special
routines, but to have routines for ``hard'' problems from which other
stabilizers can be built easily if possible.
Similar remarks hold for `RepresentativeAction'.
`Permuted' is not one of these specific actions, thus the first
variant is used which explains the long runtime.
An easy way to deal with `Permuted' is to realize that we want to
stabilize the index sets of elements at the same position. Thus:
idx:=List(Set(v),i->Filtered([1..Length(v)],j->v[j]=i)); # get index
sets
Sort(idx,function(a,b) return Length(a)<Length(b);end); # have
stabilizers of small sets first
gap> stb:=Iterated(Concatenation([GR],idx),
> function(G,S) return Stabilizer(G,S,OnSets);end); #
iterated set stabilizer
will return the result quickly.
Best wishes,
Alexander Hulpke
More information about the Forum
mailing list