permlib
0.2.9
Library for permutation computations
|
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 |
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
permlib::PrimitivityTest< PERM >::PrimitivityTest | ( | const unsigned int | n, |
InputIterator | genBegin, | ||
InputIterator | genEnd | ||
) |
Sets up the test
n | number of elements in the group domain |
genBegin | iterator<PERM::ptr> begin for group generators |
genEnd | iterator<PERM::ptr> end for group generators |
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
blocks | If 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. |
bool permlib::PrimitivityTest< PERM >::blockOfImprimitivity | ( | std::vector< dom_int > * | minimalBlock | ) | const |
attempts to find a minimal block for the group
minimalBlock | If 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. |
|
inline |