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

Tests a transitive group is availble for primitivity. More...

#include <primitivity_test.h>

Public Member Functions

template<typename InputIterator >
 PrimitivityTest (const unsigned int n, InputIterator genBegin, InputIterator genEnd)
 
bool blockOfImprimitivity (std::vector< dom_int > *minimalBlock) const
 
bool allBlocks (std::list< std::vector< dom_int > > *blocks, bool findOnlyOneBlock=false) const
 
bool isPrimitive () const
 

Detailed Description

template<typename PERM>
class permlib::PrimitivityTest< PERM >

Tests a transitive group is availble for primitivity.

If group is not primitive, it can compute a minimal block. Note that PrimitivitySGSTest may be faster if a strong generating set is known.

This class implements the algorithm described in Holt, Eick, O'Brien: Handbook of Computational Group Theory, 2005. Chapter 4.3

Constructor & Destructor Documentation

◆ PrimitivityTest()

template<typename PERM >
template<typename InputIterator >
permlib::PrimitivityTest< PERM >::PrimitivityTest ( const unsigned int  n,
InputIterator  genBegin,
InputIterator  genEnd 
)

Sets up the test

Parameters
nnumber of elements in the group domain
genBeginiterator<PERM::ptr> begin for group generators
genEnditerator<PERM::ptr> end for group generators

Member Function Documentation

◆ allBlocks()

template<typename PERM >
bool permlib::PrimitivityTest< PERM >::allBlocks ( std::list< std::vector< dom_int > > *  blocks,
bool  findOnlyOneBlock = false 
) const

finds a list of all minimal blocks for the group

Parameters
blocksIf not null, this list will be filled with all (non-sorted) minimal blocks for the group. If the group is primitive, the list will contain one vector all elements of the domain.
Returns
true iff group is primitive

◆ blockOfImprimitivity()

template<typename PERM >
bool permlib::PrimitivityTest< PERM >::blockOfImprimitivity ( std::vector< dom_int > *  minimalBlock) const

attempts to find a minimal block for the group

Parameters
minimalBlockIf not null, this vector will be filled with a (non-sorted) minimal block for the group. If the group is primitive, the vector will contain all elements of the domain.
Returns
true iff group is primitive

◆ isPrimitive()

template<typename PERM >
bool permlib::PrimitivityTest< PERM >::isPrimitive ( ) const
inline
Returns
true iff group is primitive

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