permlib  0.2.6
Library for permutation computations
 All Classes Functions Variables Typedefs Enumerations Friends
Public Types | Public Member Functions | Friends
permlib::BSGS< PERM, TRANS > Struct Template Reference

Represents a base and strong generating set (BSGS) More...

#include <bsgs.h>

Inheritance diagram for permlib::BSGS< PERM, TRANS >:
permlib::BSGSCore< PERM, TRANS >

List of all members.

Public Types

typedef BSGSCore< PERM, TRANS >
::PERMlist 
PERMlist

Public Member Functions

 BSGS (dom_int n)
 constructs an empty group of degree n
 BSGS (const BSGS< PERM, TRANS > &bsgs)
 copy constructor
BSGS< PERM, TRANS > & operator= (const BSGS< PERM, TRANS > &)
 assignment operator
template<typename Integer >
Integer order () const
 order of the group
boost::uint64_t order () const
 order of the group
unsigned int sift (const PERM &g, PERM &siftee, unsigned int j=0) const
 sifts an element through the specified transversal range
unsigned int sift (const PERM &g, PERM &siftee, unsigned int j, unsigned int k) const
 sifts an element through the specified transversal range
bool sifts (const PERM &g) const
 true iff g sifts through transversal system
bool chooseBaseElement (const PERM &h, dom_int &beta) const
 tries to find a new base element
unsigned int insertRedundantBasePoint (unsigned int beta, unsigned int minPos=0)
 inserts a redundant base beta
void stripRedundantBasePoints (int minPos=0)
 strips redundant base points from the end to the minPos-th base element
void orbit (unsigned int j, const PERMlist &generators)
 re-computes the j-th fundamental orbit with the given orbit generators
void orbitUpdate (unsigned int j, const PERMlist &generators, const typename PERM::ptr &g)
 updates the j-th fundamental orbit with the given orbit generators and a new generator g
int insertGenerator (const typename PERM::ptr &g, bool updateOrbit)
 adds a new group generator
void updateOrbits (int pos)
 updates transversals/orbits
PERM random (const int i=0) const
 generates a uniformly distributed random element of $G^{[i]}$
void conjugate (const PERM &g)
 conjugate group with a permutation

Friends

std::ostream & operator<< (std::ostream &out, const BSGS< PERM, TRANS > &bsgs)
 writes base, SGS and transversals

Detailed Description

template<class PERM, class TRANS>
struct permlib::BSGS< PERM, TRANS >

Represents a base and strong generating set (BSGS)


Constructor & Destructor Documentation

template<class PERM , class TRANS >
permlib::BSGS< PERM, TRANS >::BSGS ( const BSGS< PERM, TRANS > &  bsgs)

copy constructor

creates a deep copy of generator list and transversals, so there is no link between the original BSGS and the copy


Member Function Documentation

template<class PERM , class TRANS >
bool permlib::BSGS< PERM, TRANS >::chooseBaseElement ( const PERM &  h,
dom_int &  beta 
) const

tries to find a new base element

find an element which is moved by h

Parameters:
h
betaelement moved by h
Returns:
true iff an element h could be found
template<class PERM , class TRANS >
void permlib::BSGS< PERM, TRANS >::conjugate ( const PERM &  g)

conjugate group with a permutation

If S is the generating set of this group, then after conjugation the group will be generated by c^{-1} S c.

Parameters:
gpermutation the group should be conjugated by
template<class PERM , class TRANS >
int permlib::BSGS< PERM, TRANS >::insertGenerator ( const typename PERM::ptr &  g,
bool  updateOrbit 
)

adds a new group generator

Parameters:
ggroup generator
updateOrbittrue iff transversals/orbits should be updates
Returns:
index up to which transversals/orbits need update
template<class PERM , class TRANS >
unsigned int permlib::BSGS< PERM, TRANS >::insertRedundantBasePoint ( unsigned int  beta,
unsigned int  minPos = 0 
)

inserts a redundant base beta

Parameters:
beta
minPosinsert point not before the minPos-th base element
Returns:
insertion position
template<class PERM , class TRANS >
BSGS< PERM, TRANS > & permlib::BSGS< PERM, TRANS >::operator= ( const BSGS< PERM, TRANS > &  bsgs)

assignment operator

creates a deep copy of generator list and transversals, so there is no link between the original BSGS and the copy

template<class PERM , class TRANS >
void permlib::BSGS< PERM, TRANS >::orbit ( unsigned int  j,
const PERMlist &  generators 
)

re-computes the j-th fundamental orbit with the given orbit generators

See also:
Transversal<PERM>::orbit
template<class PERM , class TRANS >
void permlib::BSGS< PERM, TRANS >::orbitUpdate ( unsigned int  j,
const PERMlist &  generators,
const typename PERM::ptr &  g 
)

updates the j-th fundamental orbit with the given orbit generators and a new generator g

See also:
Transversal<PERM>::orbitUpdate
template<class PERM , class TRANS >
template<typename Integer >
boost::uint64_t permlib::BSGS< PERM, TRANS >::order ( ) const

order of the group

read from the transversal product

template<class PERM, class TRANS>
boost::uint64_t permlib::BSGS< PERM, TRANS >::order ( ) const

order of the group

read from the transversal product

template<class PERM , class TRANS >
PERM permlib::BSGS< PERM, TRANS >::random ( const int  i = 0) const

generates a uniformly distributed random element of $G^{[i]}$

Parameters:
ithe stabilizer chain index to generate the random element of. If set to 0 a random element of the whole group is returned.
template<class PERM , class TRANS >
unsigned int permlib::BSGS< PERM, TRANS >::sift ( const PERM &  g,
PERM &  siftee,
unsigned int  j = 0 
) const

sifts an element through the specified transversal range

Parameters:
gpermutation to sift
siftee
jlowest transversal index to sift; i.e. sift through transversal U[j], U[j+1], ...
template<class PERM , class TRANS >
unsigned int permlib::BSGS< PERM, TRANS >::sift ( const PERM &  g,
PERM &  siftee,
unsigned int  j,
unsigned int  k 
) const

sifts an element through the specified transversal range

Parameters:
gpermutation to sift
siftee
jlowest transversal index to sift
khighest transversal index to sift plus one
template<class PERM , class TRANS >
void permlib::BSGS< PERM, TRANS >::updateOrbits ( int  pos)

updates transversals/orbits

Parameters:
posindex up to which transversals should be updated
See also:
insertGenerator

The documentation for this struct was generated from the following file: