permlib 0.2.9
Library for permutation computations
Loading...
Searching...
No Matches
permlib::SchreierTreeTransversal< PERM > Class Template Reference

Transversal class that stores transversal elements in a Schreier tree. More...

#include <schreier_tree_transversal.h>

Inheritance diagram for permlib::SchreierTreeTransversal< PERM >:
permlib::Transversal< PERM > permlib::Orbit< PERM, unsigned long > permlib::ShallowSchreierTreeTransversal< PERM >

Public Member Functions

 SchreierTreeTransversal (unsigned int n)
 constructor
virtual bool trivialByDefinition (const PERM &x, unsigned long to) const
 true if Schreier generator constructed from x and the transversal element related to "to" is trivial by defintion
virtual PERMat (unsigned long val) const
 returns a transversal element $u$ such that $\alpha^u$ equals val
virtual void updateGenerators (const std::map< PERM *, typename PERM::ptr > &generatorChange)
 updates transversal after group generators have been exchanged
SchreierTreeTransversal< PERMclone (const std::map< PERM *, typename PERM::ptr > &generatorChange) const
 returns a clone of this transversal
Public Member Functions inherited from permlib::Transversal< PERM >
 Transversal (unsigned int n)
 constructor
virtual ~Transversal ()
 virtual destructor
virtual bool contains (const unsigned long &val) const
 true iff there exists a transversal element mapping $\alpha$ to val
std::list< unsignedlong >::const_iterator begin () const
 begin iterator of basic orbit
std::list< unsignedlong >::const_iterator end () const
 end iterator of basic orbit
std::pair< std::list< unsigned long >::const_iterator, std::list< unsigned long >::const_iterator > pairIt () const
 pair of begin, end iterator
size_t size () const
 size of basic orbit / transversal
unsigned int n () const
 size of the set the group is working on
template<class InputIterator>
void sort (InputIterator Bbegin, InputIterator Bend)
 sorts orbit according to order given by list of points
bool sorted () const
 true iff orbit is sorted
virtual void orbit (unsigned long alpha, const std::list< typename PERM::ptr > &generators)
 computes transversal based on orbit of $\alpha$ under generators
virtual void orbitUpdate (unsigned long alpha, const std::list< typename PERM::ptr > &generators, const typename PERM::ptr &g)
 updates transversal based on orbit of $\alpha$ under generators where g is a new generator
virtual void permute (const PERM &g, const PERM &gInv)
 updates transversal after group generators have been conjugated by g
virtual const unsigned long & element () const
 returns one element of the orbit

Public Attributes

unsigned int m_statMaxDepth
 maximal depth of tree structure representing the transversal

Protected Member Functions

virtual void registerMove (unsigned long from, unsigned long to, const typename PERM::ptr &p)
 stores that 'p' maps 'from' onto 'to'
Protected Member Functions inherited from permlib::Transversal< PERM >
virtual bool foundOrbitElement (const unsigned long &alpha, const unsigned long &alpha_p, const typename PERM::ptr &p)
 callback when the orbit algorithm constructs an element alpha_p from alpha and p
Protected Member Functions inherited from permlib::Orbit< PERM, unsigned long >
void orbit (const unsigned long &beta, const std::list< typename PERM::ptr > &generators, Action a, std::list< unsigned long > &orbitList)
 computes orbit of beta under generators
void orbitUpdate (const unsigned long &beta, const std::list< typename PERM::ptr > &generators, const typename PERM::ptr &g, Action a, std::list< unsigned long > &orbitList)
 updates an existing orbit of beta after one element has been added

Friends

struct permlib::exports::BSGSSchreierExport
struct permlib::exports::BSGSSchreierImport

Additional Inherited Members

Public Types inherited from permlib::Orbit< PERM, unsigned long >
typedef PERM PERMtype
 type of permutation used for this orbit
Protected Attributes inherited from permlib::Transversal< PERM >
unsigned int m_n
 size of the set the group is working on
std::vector< boost::shared_ptr< PERM > > m_transversal
 transversal elements
std::list< unsigned long > m_orbit
 orbit elements
bool m_sorted
 true if orbit is sorted (according to a previous sort(InputIterator, InputIterator) call

Detailed Description

template<class PERM>
class permlib::SchreierTreeTransversal< PERM >

Transversal class that stores transversal elements in a Schreier tree.

Member Function Documentation

◆ at()

template<class PERM>
PERM * permlib::SchreierTreeTransversal< PERM >::at ( unsigned long val) const
virtual

returns a transversal element $u$ such that $\alpha^u$ equals val

Implements permlib::Transversal< PERM >.

◆ clone()

template<class PERM>
SchreierTreeTransversal< PERM > permlib::SchreierTreeTransversal< PERM >::clone ( const std::map< PERM *, typename PERM::ptr > & generatorChange) const

returns a clone of this transversal

the group generators that the clone may use are given by the transition map

Parameters
generatorChangetransition map

◆ registerMove()

template<class PERM>
void permlib::SchreierTreeTransversal< PERM >::registerMove ( unsigned long from,
unsigned long to,
const typename PERM::ptr & p )
protectedvirtual

stores that 'p' maps 'from' onto 'to'

Reimplemented from permlib::Transversal< PERM >.

◆ trivialByDefinition()

template<class PERM>
bool permlib::SchreierTreeTransversal< PERM >::trivialByDefinition ( const PERM & x,
unsigned long to ) const
virtual

true if Schreier generator constructed from x and the transversal element related to "to" is trivial by defintion

Implements permlib::Transversal< PERM >.

◆ updateGenerators()

template<class PERM>
void permlib::SchreierTreeTransversal< PERM >::updateGenerators ( const std::map< PERM *, typename PERM::ptr > & generatorChange)
virtual

updates transversal after group generators have been exchanged

Parameters
generatorChangemap of old generators to new generators

Reimplemented from permlib::Transversal< PERM >.

Reimplemented in permlib::ShallowSchreierTreeTransversal< PERM >.


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