[Up] [Previous] [Index]

10 Auxiliary Functions

Sections

  1. Steve Linton's Function SmallestImageSet
  2. Exact Set-cover

This chapter documents some auxiliary functions used in GRAPE, which may be of wider interest.

10.1 Steve Linton's Function SmallestImageSet

  • SmallestImageSet( G, S )
  • SmallestImageSet( G, S, H )

    Let G be a permutation group on {1,...,n}, and let S be a subset of {1,...,n}. Then this function returns the lexicographically least set in the G-orbit of S, with respect to the action OnSets, without explicitly computing this (possibly huge) orbit.

    Thus, if C is a list of subsets of {1,...,n} and we want to determine a set of (canonical) representatives for the distinct G-orbits of the elements of C, we can do this as Set(C,c->SmallestImageSet(G,c)).

    If the setwise stabilizer in G of S is known, then this should be given as the optional third parameter, to avoid the recomputation of this stabilizer.

    The function SmallestImageSet was written by Steve Linton, based on his algorithm described in Lin04.

    gap> J:=JohnsonGraph(12,5);;
    gap> OrderGraph(J);
    792
    gap> G:=J.group;;
    gap> Size(G);
    479001600
    gap> S:=[67,93,100,204,677,750];;
    gap> SmallestImageSet(G,S);
    [ 1, 2, 22, 212, 242, 446 ]
    

    10.2 Exact Set-cover

  • GRAPE_ExactSetCover( G, blocks, n )
  • GRAPE_ExactSetCover( G, blocks, n, H )

    Suppose n is a non-negative integer, G is a permutation group on {1,...,n}, blocks is a list of non-empty subsets of {1,...,n}, and the optional parameter H (default: Group(())) is a subgroup of G.

    Then this function returns an H-invariant exact set-cover of {1,...,n}, consisting of elements from the union of Orbits(G,blocks,OnSets), if such a cover exists, and returns fail otherwise. An exact set-cover is given as a set of sets forming a partition of {1,...,n}.

    gap> G:=PSL(2,5);;
    gap> GRAPE_ExactSetCover(G,[[1,2,3]],6);
    fail
    gap> G:=PGL(2,5);;
    gap> GRAPE_ExactSetCover(G,[[1,2,3]],6);
    [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]
    gap> n:=280;;
    gap> G:=OnePrimitiveGroup(NrMovedPoints,n,Size,604800*2);
    J_2.2
    gap> gamma:=First(GeneralizedOrbitalGraphs(G),x->VertexDegrees(x)=[135]);;
    gap> omega:=CliqueNumber(gamma);
    28
    gap> blocks:=CompleteSubgraphsOfGivenSize(ComplementGraph(gamma),n/omega,2);;
    gap> Collected(List(blocks,Length));
    [ [ 10, 2 ] ]
    gap> H:=SylowSubgroup(G,7);;
    gap> partition:=GRAPE_ExactSetCover(G,blocks,n,H);;
    gap> Collected(List(partition,Length));
    [ [ 10, 28 ] ]
    gap> Union(partition)=[1..n];
    true
    

    [Up] [Previous] [Index]

    grape manual
    October 2024