permlib::SchreierGenerator< PERM, TRANS > Class Template Reference

stateful generator of Schreier generators More...

#include <schreier_generator.h>

Inheritance diagram for permlib::SchreierGenerator< PERM, TRANS >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef PERMlist::const_iterator PERMlistIt
 const iterator to a list of PERMutations
typedef std::list< ulong >
::const_iterator 
TRANSlistIt
 const iterator to a list of points (ulong)
typedef PERMlist::const_iterator PERMlistIt
 const iterator to a list of PERMutations
typedef std::list< ulong >
::const_iterator 
TRANSlistIt
 const iterator to a list of points (ulong)

Public Member Functions

 SchreierGenerator (const TRANS *U, PERMlistIt S_begin, PERMlistIt S_end)
 constructor
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
void update (uint j)
 updates the state of this generator
 SchreierGenerator (const TRANS *U, PERMlistIt S_begin, PERMlistIt S_end)
 constructor
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
void update (uint j)
 updates the state of this generator

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

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

constructor

Parameters:
U transversal to build Schreier generators from
S_begin begin iterator of group generating list to build Schreier generators from
S_end begin iterator of group generating list to build Schreier generators from
template<class PERM, class TRANS>
permlib::SchreierGenerator< PERM, TRANS >::SchreierGenerator ( const TRANS *  U,
PERMlistIt  S_begin,
PERMlistIt  S_end 
)

constructor

Parameters:
U transversal to build Schreier generators from
S_begin begin iterator of group generating list to build Schreier generators from
S_end begin iterator of group generating list to build Schreier generators from

Member Function Documentation

template<class PERM, class TRANS>
void permlib::SchreierGenerator< PERM, TRANS >::update ( uint  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

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:
U transversal to build Schreier generators from
S_begin begin iterator of group generating list to build Schreier generators from
S_end begin iterator of group generating list to build Schreier generators from
template<class PERM , class TRANS >
void permlib::SchreierGenerator< PERM, TRANS >::update ( uint  j  )  [inline]

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

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

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

Parameters:
U transversal to build Schreier generators from
S_begin begin iterator of group generating list to build Schreier generators from
S_end begin iterator of group generating list to build Schreier generators from

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