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

stateful generator of Schreier generators More...

#include <schreier_generator.h>

Inheritance diagram for permlib::SchreierGenerator< PERM, TRANS >:
permlib::Generator< PERM >

Public Types

typedef std::list< typename PERM::ptr >::const_iterator PERMlistIt
 const iterator to a list of PERMutations
 
typedef std::list< unsigned long >::const_iterator TRANSlistIt
 const iterator to a list of points (unsigned long)
 

Public Member Functions

 SchreierGenerator (const TRANS *U, PERMlistIt S_begin, PERMlistIt S_end)
 constructor More...
 
PERM next ()
 generates an element
 
bool hasNext ()
 true, iff more elements can be generated
 
void update (TRANS *U, PERMlistIt S_begin, PERMlistIt S_end)
 updates transversal and group generators that the Schreier generators are constructed from More...
 
void update (unsigned int j)
 updates the state of this generator More...
 
- Public Member Functions inherited from permlib::Generator< PERM >
virtual ~Generator ()
 virtual destructor
 

Detailed Description

template<class PERM, class TRANS>
class permlib::SchreierGenerator< PERM, TRANS >

stateful generator of Schreier generators

Constructs all Schreier generators from given transversal and generators.

The idea is something like forall(u in U) { forall(s in S) { buildSchreierGenerator(u,s); } } only that U and S can be updated without iterating over the same pair (u,s) twice, ensuring that every pair (u,s) is used at least once (if so many generators are requested via next() ).

Constructor & Destructor Documentation

◆ SchreierGenerator()

template<class PERM , class TRANS >
permlib::SchreierGenerator< PERM, TRANS >::SchreierGenerator ( const TRANS *  U,
PERMlistIt  S_begin,
PERMlistIt  S_end 
)

constructor

Parameters
Utransversal to build Schreier generators from
S_beginbegin iterator of group generating list to build Schreier generators from
S_endbegin iterator of group generating list to build Schreier generators from

Member Function Documentation

◆ update() [1/2]

template<class PERM , class TRANS >
void permlib::SchreierGenerator< PERM, TRANS >::update ( TRANS *  U,
PERMlistIt  S_begin,
PERMlistIt  S_end 
)

updates transversal and group generators that the Schreier generators are constructed from

Parameters
Utransversal to build Schreier generators from
S_beginbegin iterator of group generating list to build Schreier generators from
S_endbegin iterator of group generating list to build Schreier generators from

◆ update() [2/2]

template<class PERM , class TRANS >
void permlib::SchreierGenerator< PERM, TRANS >::update ( unsigned int  j)

updates the state of this generator

Saves the current state. Before returning to the current state, all Schreier generators from S[j], S[j+1], &c. and the already visited transversals are next


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