permlib  0.2.9
Library for permutation computations
Public Member Functions | Public Attributes | List of all members
permlib::RandomSchreierSimsConstruction< PERM, TRANS, Integer > Class Template Reference

BSGS construction with Random Schreier-Sims algorithm. More...

#include <random_schreier_sims_construction.h>

Inheritance diagram for permlib::RandomSchreierSimsConstruction< PERM, TRANS, Integer >:
permlib::BaseConstruction< PERM, TRANS >

Public Member Functions

 RandomSchreierSimsConstruction (unsigned int n, RandomGenerator< PERM > *rng, Integer knownOrder=0, unsigned int minimalConsecutiveSiftingElementCount=20, unsigned int maxIterationFactor=10000)
 constructor More...
 
template<class ForwardIterator >
BSGS< PERM, TRANS > construct (ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, bool &guaranteedBSGS) const
 constructs a probable BSGS for group given by generators with no base prescribed More...
 
template<class ForwardIterator , class InputIterator >
BSGS< PERM, TRANS > construct (ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator prescribedBaseBegin, InputIterator prescribedBaseEnd, bool &guaranteedBSGS) const
 constructs a probable BSGS for group given by generators respecting prescribed base elements More...
 
- Public Member Functions inherited from permlib::BaseConstruction< PERM, TRANS >
 BaseConstruction (dom_int n)
 constructor More...
 

Public Attributes

unsigned int m_statRandomElementsConsidered
 number of Schreier generators examined during the last construct call
 
const unsigned int m_minimalConsecutiveSiftingElementCount
 number of elements that have to sift through constructed BSGS consecutively that it is returned as a probable BSGS
 
const unsigned int m_maxIterationFactor
 factor limiting the number of maximal iterations depeding on the initial base size
 

Additional Inherited Members

- Protected Member Functions inherited from permlib::BaseConstruction< PERM, TRANS >
template<class ForwardIterator , class InputIterator >
void setup (ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator prescribedBaseBegin, InputIterator prescribedBaseEnd, BSGS< PERM, TRANS > &bsgs, std::vector< std::list< typename PERM::ptr > > &S) const
 initializes BSGS object More...
 
void mergeGenerators (std::vector< std::list< typename PERM::ptr > > &S, BSGS< PERM, TRANS > &ret) const
 merges all strong generators in S into a single strong generating set ret.S
 
- Protected Attributes inherited from permlib::BaseConstruction< PERM, TRANS >
dom_int m_n
 cardinality of the set the group is acting on
 
- Static Protected Attributes inherited from permlib::BaseConstruction< PERM, TRANS >
static const unsigned long * empty = static_cast<unsigned long*>(0)
 auxilliary element marking an empty iterator
 

Detailed Description

template<class PERM, class TRANS, typename Integer = boost::uint64_t>
class permlib::RandomSchreierSimsConstruction< PERM, TRANS, Integer >

BSGS construction with Random Schreier-Sims algorithm.

Randomized algorithm for BSGS construction. If order is known it is Las Vegas type, otherwise Monte Carlo (it may return an incomplete BSGS).

Constructor & Destructor Documentation

◆ RandomSchreierSimsConstruction()

template<class PERM, class TRANS , typename Integer>
permlib::RandomSchreierSimsConstruction< PERM, TRANS, Integer >::RandomSchreierSimsConstruction ( unsigned int  n,
RandomGenerator< PERM > *  rng,
Integer  knownOrder = 0,
unsigned int  minimalConsecutiveSiftingElementCount = 20,
unsigned int  maxIterationFactor = 10000 
)

constructor

Parameters
ncardinality of the set the group is acting on
rnga RandomGenerator generating uniformly distributed random group elements of the group that the BSGS is constructed of
knownOrderorder of the group that the BSGS is constructed of. If non-zero upgrades algorithm to Las Vegas type and the output is guaranteed to be a BSGS.
minimalConsecutiveSiftingElementCountnumber of elements that have to sift through constructed BSGS consecutively that it is returned as a probable BSGS
maxIterationFactorfactor limiting the number of maximal iterations depeding on the initial base size

Member Function Documentation

◆ construct() [1/2]

template<class PERM , class TRANS , typename Integer >
template<class ForwardIterator >
BSGS< PERM, TRANS > permlib::RandomSchreierSimsConstruction< PERM, TRANS, Integer >::construct ( ForwardIterator  generatorsBegin,
ForwardIterator  generatorsEnd,
bool &  guaranteedBSGS 
) const
inline

constructs a probable BSGS for group given by generators with no base prescribed

See also
construct(ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator prescribedBaseBegin, InputIterator prescribedBaseEnd, bool& guaranteedBSGS)

◆ construct() [2/2]

template<class PERM , class TRANS , typename Integer >
template<class ForwardIterator , class InputIterator >
BSGS< PERM, TRANS > permlib::RandomSchreierSimsConstruction< PERM, TRANS, Integer >::construct ( ForwardIterator  generatorsBegin,
ForwardIterator  generatorsEnd,
InputIterator  prescribedBaseBegin,
InputIterator  prescribedBaseEnd,
bool &  guaranteedBSGS 
) const

constructs a probable BSGS for group given by generators respecting prescribed base elements

runs (#{size of initial base} * maxIterationFactor) iterations or until constructed BSGS has knownOrder or #minimalConsecutiveSiftingElementCount sift through the constructed BSGS consecutively

Parameters
generatorsBeginbegin iterator of group generators of type PERM
generatorsEndend iterator of group generators of type PERM
prescribedBaseBeginbegin iterator of prescribed base of type unsigned long
prescribedBaseEndend iterator of prescribed base of type unsigned long
guaranteedBSGSiff true, return object is guaranteed to be a BSGS

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