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 >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 BSGS (uint 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
boost::uint64_t order () const
 order of the group
uint sift (const PERM &g, PERM &siftee, uint j=0) const
 sifts an element through the specified transversal range
uint sift (const PERM &g, PERM &siftee, uint j, uint 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, ulong &beta) const
 tries to find a new base element
uint insertRedundantBasePoint (uint beta, uint 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 (uint j, const PERMlist &generators)
 re-computes the j-th fundamental orbit with the given orbit generators
void orbitUpdate (uint j, const PERMlist &generators, const PERMptr &g)
 updates the j-th fundamental orbit with the given orbit generators and a new generator g
int insertGenerator (const PERMptr &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]}$
 BSGS (uint 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
boost::uint64_t order () const
 order of the group
uint sift (const PERM &g, PERM &siftee, uint j=0) const
 sifts an element through the specified transversal range
uint sift (const PERM &g, PERM &siftee, uint j, uint 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, ulong &beta) const
 tries to find a new base element
uint insertRedundantBasePoint (uint beta, uint 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 (uint j, const PERMlist &generators)
 re-computes the j-th fundamental orbit with the given orbit generators
void orbitUpdate (uint j, const PERMlist &generators, const PERMptr &g)
 updates the j-th fundamental orbit with the given orbit generators and a new generator g
int insertGenerator (const PERMptr &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]}$

Friends

std::ostream & operator<< (std::ostream &out, const BSGS< PERM, TRANS > &bsgs)
 writes base, SGS and transversals
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  )  [inline]

copy constructor

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>
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,
ulong &  beta 
) const

tries to find a new base element

find an element which is moved by h

Parameters:
h 
beta element moved by h
Returns:
true iff an element h could be found
template<class PERM , class TRANS >
bool permlib::BSGS< PERM, TRANS >::chooseBaseElement ( const PERM &  h,
ulong &  beta 
) const [inline]

tries to find a new base element

find an element which is moved by h

Parameters:
h 
beta element moved by h
Returns:
true iff an element h could be found
template<class PERM, class TRANS>
int permlib::BSGS< PERM, TRANS >::insertGenerator ( const PERMptr &  g,
bool  updateOrbit 
)

adds a new group generator

Parameters:
g group generator
updateOrbit true iff transversals/orbits should be updates
Returns:
index up to which transversals/orbits need update
template<class PERM , class TRANS >
int permlib::BSGS< PERM, TRANS >::insertGenerator ( const PERMptr &  g,
bool  updateOrbit 
) [inline]

adds a new group generator

Parameters:
g group generator
updateOrbit true iff transversals/orbits should be updates
Returns:
index up to which transversals/orbits need update
template<class PERM, class TRANS>
uint permlib::BSGS< PERM, TRANS >::insertRedundantBasePoint ( uint  beta,
uint  minPos = 0 
)

inserts a redundant base beta

Parameters:
beta 
minPos insert point not before the minPos-th base element
Returns:
insertion position
template<class PERM , class TRANS >
uint permlib::BSGS< PERM, TRANS >::insertRedundantBasePoint ( uint  beta,
uint  minPos = 0 
) [inline]

inserts a redundant base beta

Parameters:
beta 
minPos insert 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 > &   ) 

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 >
BSGS< PERM, TRANS > & permlib::BSGS< PERM, TRANS >::operator= ( const BSGS< PERM, TRANS > &  bsgs  )  [inline]

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 ( uint  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 >::orbit ( uint  j,
const PERMlist &  generators 
) [inline]

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 ( uint  j,
const PERMlist &  generators,
const PERMptr &  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 >
void permlib::BSGS< PERM, TRANS >::orbitUpdate ( uint  j,
const PERMlist &  generators,
const PERMptr &  g 
) [inline]

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>
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 [inline]

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:
i the 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 >
PERM permlib::BSGS< PERM, TRANS >::random ( const int  i = 0  )  const [inline]

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

Parameters:
i the 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>
uint permlib::BSGS< PERM, TRANS >::sift ( const PERM &  g,
PERM &  siftee,
uint  j,
uint  k 
) const

sifts an element through the specified transversal range

Parameters:
g permutation to sift
siftee 
j lowest transversal index to sift
k highest transversal index to sift plus one
template<class PERM, class TRANS>
uint permlib::BSGS< PERM, TRANS >::sift ( const PERM &  g,
PERM &  siftee,
uint  j = 0 
) const

sifts an element through the specified transversal range

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

sifts an element through the specified transversal range

Parameters:
g permutation to sift
siftee 
j lowest transversal index to sift
k highest transversal index to sift plus one
template<class PERM , class TRANS >
uint permlib::BSGS< PERM, TRANS >::sift ( const PERM &  g,
PERM &  siftee,
uint  j = 0 
) const [inline]

sifts an element through the specified transversal range

Parameters:
g permutation to sift
siftee 
j lowest transversal index to sift; i.e. sift through transversal U[j], U[j+1], ...
template<class PERM, class TRANS>
void permlib::BSGS< PERM, TRANS >::updateOrbits ( int  pos  ) 

updates transversals/orbits

Parameters:
pos index up to which transversals should be updated
See also:
insertGenerator
template<class PERM , class TRANS >
void permlib::BSGS< PERM, TRANS >::updateOrbits ( int  pos  )  [inline]

updates transversals/orbits

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

The documentation for this struct was generated from the following files:
Generated on Fri Jun 18 21:59:14 2010 for PermLib by  doxygen 1.6.3