permlib  0.2.9
Library for permutation computations
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
permlib::ShallowSchreierTreeTransversal< PERM > Class Template Reference

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

#include <shallow_schreier_tree_transversal.h>

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

Public Member Functions

 ShallowSchreierTreeTransversal (unsigned int n)
 constructor
 
virtual void orbit (unsigned long beta, const std::list< typename PERM::ptr > &generators)
 computes transversal based on orbit of $\alpha$ under generators More...
 
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 More...
 
virtual void updateGenerators (const std::map< PERM *, typename PERM::ptr > &generatorChange)
 updates transversal after group generators have been exchanged More...
 
ShallowSchreierTreeTransversal< PERM > clone (const std::map< PERM *, typename PERM::ptr > &generatorChange) const
 returns a clone of this transversal More...
 
virtual void permute (const PERM &g, const PERM &gInv)
 updates transversal after group generators have been conjugated by g More...
 
- Public Member Functions inherited from permlib::SchreierTreeTransversal< PERM >
 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 PERM * at (unsigned long val) const
 returns a transversal element $u$ such that $\alpha^u$ equals val
 
SchreierTreeTransversal< PERM > clone (const std::map< PERM *, typename PERM::ptr > &generatorChange) const
 returns a clone of this transversal More...
 
- Public Member Functions inherited from permlib::Transversal< PERM >
 Transversal (unsigned int n)
 constructor More...
 
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< unsigned long >::const_iterator begin () const
 begin iterator of basic orbit
 
std::list< unsigned long >::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 More...
 
bool sorted () const
 true iff orbit is sorted
 
virtual const unsigned long & element () const
 returns one element of the orbit
 

Protected Member Functions

void addNewCubeLabel (unsigned long beta, const PERM &s, const unsigned long &beta_prime)
 adds a new cube label where s maps beta_prime to a point that has no transversal element yet
 
- Protected Member Functions inherited from permlib::SchreierTreeTransversal< PERM >
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 More...
 
- 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 More...
 
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 More...
 

Protected Attributes

std::list< typename PERM::ptr > m_cubeLabels
 ordered list of group elements that are used as cube labels
 
- 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
 

Additional Inherited Members

- Public Types inherited from permlib::Orbit< PERM, unsigned long >
typedef PERM PERMtype
 type of permutation used for this orbit
 
- Public Attributes inherited from permlib::SchreierTreeTransversal< PERM >
unsigned int m_statMaxDepth
 maximal depth of tree structure representing the transversal
 

Detailed Description

template<class PERM>
class permlib::ShallowSchreierTreeTransversal< PERM >

Transversal class that stores elements in a shallow Schreier tree.

Member Function Documentation

◆ clone()

template<class PERM >
ShallowSchreierTreeTransversal< PERM > permlib::ShallowSchreierTreeTransversal< 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

◆ orbit()

template<class PERM >
void permlib::ShallowSchreierTreeTransversal< PERM >::orbit ( unsigned long  alpha,
const std::list< typename PERM::ptr > &  generators 
)
virtual

computes transversal based on orbit of $\alpha$ under generators

Parameters
alpha$\alpha$
generatorsgroup generators for the orbit

Reimplemented from permlib::Transversal< PERM >.

◆ orbitUpdate()

template<class PERM >
void permlib::ShallowSchreierTreeTransversal< PERM >::orbitUpdate ( unsigned long  alpha,
const std::list< typename PERM::ptr > &  generators,
const typename PERM::ptr &  g 
)
virtual

updates transversal based on orbit of $\alpha$ under generators where g is a new generator

Parameters
alpha$\alpha$
generatorsgroup generators for the orbit
gnew generator that the transversal is updated for

Reimplemented from permlib::Transversal< PERM >.

◆ permute()

template<class PERM >
void permlib::ShallowSchreierTreeTransversal< PERM >::permute ( const PERM &  g,
const PERM &  gInv 
)
virtual

updates transversal after group generators have been conjugated by g

Parameters
gpermutation to conjugate
gInvinverse of g for performance reasons

Reimplemented from permlib::Transversal< PERM >.

◆ updateGenerators()

template<class PERM >
void permlib::ShallowSchreierTreeTransversal< 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::SchreierTreeTransversal< PERM >.


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