Represents a base and strong generating set (BSGS). More...
#include <bsgs.h>
Public Member Functions | |
BSGS (uint n) | |
constructs an empty group of degree n | |
BSGS (const BSGS< PERM, TRANS > &bsgs) | |
copy constructor | |
BSGS< PERM, TRANS > & | operator= (const BSGS< PERM, TRANS > &) |
assignment operator | |
boost::uint64_t | order () const |
order of the group | |
uint | sift (const PERM &g, PERM &siftee, uint j=0) const |
sifts an element through the specified transversal range | |
uint | sift (const PERM &g, PERM &siftee, uint j, uint k) const |
sifts an element through the specified transversal range | |
bool | sifts (const PERM &g) const |
true iff g sifts through transversal system | |
bool | chooseBaseElement (const PERM &h, ulong &beta) const |
tries to find a new base element | |
uint | insertRedundantBasePoint (uint beta, uint minPos=0) |
inserts a redundant base beta | |
void | stripRedundantBasePoints (int minPos=0) |
strips redundant base points from the end to the minPos-th base element | |
void | orbit (uint j, const PERMlist &generators) |
re-computes the j-th fundamental orbit with the given orbit generators | |
void | orbitUpdate (uint j, const PERMlist &generators, const PERMptr &g) |
updates the j-th fundamental orbit with the given orbit generators and a new generator g | |
int | insertGenerator (const PERMptr &g, bool updateOrbit) |
adds a new group generator | |
void | updateOrbits (int pos) |
updates transversals/orbits | |
PERM | random (const int i=0) const |
generates a uniformly distributed random element of ![]() | |
BSGS (uint n) | |
constructs an empty group of degree n | |
BSGS (const BSGS< PERM, TRANS > &bsgs) | |
copy constructor | |
BSGS< PERM, TRANS > & | operator= (const BSGS< PERM, TRANS > &) |
assignment operator | |
boost::uint64_t | order () const |
order of the group | |
uint | sift (const PERM &g, PERM &siftee, uint j=0) const |
sifts an element through the specified transversal range | |
uint | sift (const PERM &g, PERM &siftee, uint j, uint k) const |
sifts an element through the specified transversal range | |
bool | sifts (const PERM &g) const |
true iff g sifts through transversal system | |
bool | chooseBaseElement (const PERM &h, ulong &beta) const |
tries to find a new base element | |
uint | insertRedundantBasePoint (uint beta, uint minPos=0) |
inserts a redundant base beta | |
void | stripRedundantBasePoints (int minPos=0) |
strips redundant base points from the end to the minPos-th base element | |
void | orbit (uint j, const PERMlist &generators) |
re-computes the j-th fundamental orbit with the given orbit generators | |
void | orbitUpdate (uint j, const PERMlist &generators, const PERMptr &g) |
updates the j-th fundamental orbit with the given orbit generators and a new generator g | |
int | insertGenerator (const PERMptr &g, bool updateOrbit) |
adds a new group generator | |
void | updateOrbits (int pos) |
updates transversals/orbits | |
PERM | random (const int i=0) const |
generates a uniformly distributed random element of ![]() | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const BSGS< PERM, TRANS > &bsgs) |
writes base, SGS and transversals | |
std::ostream & | operator<< (std::ostream &out, const BSGS< PERM, TRANS > &bsgs) |
writes base, SGS and transversals |
Represents a base and strong generating set (BSGS).
permlib::BSGS< PERM, TRANS >::BSGS | ( | const BSGS< PERM, TRANS > & | bsgs | ) | [inline] |
copy constructor
creates a deep copy of generator list and transversals, so there is no link between the original BSGS and the copy
permlib::BSGS< PERM, TRANS >::BSGS | ( | const BSGS< PERM, TRANS > & | bsgs | ) |
copy constructor
creates a deep copy of generator list and transversals, so there is no link between the original BSGS and the copy
bool permlib::BSGS< PERM, TRANS >::chooseBaseElement | ( | const PERM & | h, | |
ulong & | beta | |||
) | const |
tries to find a new base element
find an element which is moved by h
h | ||
beta | element moved by h |
bool permlib::BSGS< PERM, TRANS >::chooseBaseElement | ( | const PERM & | h, | |
ulong & | beta | |||
) | const [inline] |
tries to find a new base element
find an element which is moved by h
h | ||
beta | element moved by h |
int permlib::BSGS< PERM, TRANS >::insertGenerator | ( | const PERMptr & | g, | |
bool | updateOrbit | |||
) |
adds a new group generator
g | group generator | |
updateOrbit | true iff transversals/orbits should be updates |
int permlib::BSGS< PERM, TRANS >::insertGenerator | ( | const PERMptr & | g, | |
bool | updateOrbit | |||
) | [inline] |
adds a new group generator
g | group generator | |
updateOrbit | true iff transversals/orbits should be updates |
uint permlib::BSGS< PERM, TRANS >::insertRedundantBasePoint | ( | uint | beta, | |
uint | minPos = 0 | |||
) |
inserts a redundant base beta
beta | ||
minPos | insert point not before the minPos-th base element |
uint permlib::BSGS< PERM, TRANS >::insertRedundantBasePoint | ( | uint | beta, | |
uint | minPos = 0 | |||
) | [inline] |
inserts a redundant base beta
beta | ||
minPos | insert point not before the minPos-th base element |
BSGS<PERM,TRANS>& permlib::BSGS< PERM, TRANS >::operator= | ( | const BSGS< PERM, TRANS > & | ) |
assignment operator
creates a deep copy of generator list and transversals, so there is no link between the original BSGS and the copy
BSGS< PERM, TRANS > & permlib::BSGS< PERM, TRANS >::operator= | ( | const BSGS< PERM, TRANS > & | bsgs | ) | [inline] |
assignment operator
creates a deep copy of generator list and transversals, so there is no link between the original BSGS and the copy
void permlib::BSGS< PERM, TRANS >::orbit | ( | uint | j, | |
const PERMlist & | generators | |||
) |
re-computes the j-th fundamental orbit with the given orbit generators
void permlib::BSGS< PERM, TRANS >::orbit | ( | uint | j, | |
const PERMlist & | generators | |||
) | [inline] |
re-computes the j-th fundamental orbit with the given orbit generators
void permlib::BSGS< PERM, TRANS >::orbitUpdate | ( | uint | j, | |
const PERMlist & | generators, | |||
const PERMptr & | g | |||
) |
updates the j-th fundamental orbit with the given orbit generators and a new generator g
void permlib::BSGS< PERM, TRANS >::orbitUpdate | ( | uint | j, | |
const PERMlist & | generators, | |||
const PERMptr & | g | |||
) | [inline] |
updates the j-th fundamental orbit with the given orbit generators and a new generator g
boost::uint64_t permlib::BSGS< PERM, TRANS >::order | ( | ) | const |
order of the group
read from the transversal product
boost::uint64_t permlib::BSGS< PERM, TRANS >::order | ( | ) | const [inline] |
order of the group
read from the transversal product
PERM permlib::BSGS< PERM, TRANS >::random | ( | const int | i = 0 |
) | const |
generates a uniformly distributed random element of
i | the stabilizer chain index to generate the random element of. If set to 0 a random element of the whole group is returned. |
PERM permlib::BSGS< PERM, TRANS >::random | ( | const int | i = 0 |
) | const [inline] |
generates a uniformly distributed random element of
i | the stabilizer chain index to generate the random element of. If set to 0 a random element of the whole group is returned. |
uint permlib::BSGS< PERM, TRANS >::sift | ( | const PERM & | g, | |
PERM & | siftee, | |||
uint | j, | |||
uint | k | |||
) | const |
sifts an element through the specified transversal range
g | permutation to sift | |
siftee | ||
j | lowest transversal index to sift | |
k | highest transversal index to sift plus one |
uint permlib::BSGS< PERM, TRANS >::sift | ( | const PERM & | g, | |
PERM & | siftee, | |||
uint | j = 0 | |||
) | const |
sifts an element through the specified transversal range
g | permutation to sift | |
siftee | ||
j | lowest transversal index to sift; i.e. sift through transversal U[j], U[j+1], ... |
uint permlib::BSGS< PERM, TRANS >::sift | ( | const PERM & | g, | |
PERM & | siftee, | |||
uint | j, | |||
uint | k | |||
) | const [inline] |
sifts an element through the specified transversal range
g | permutation to sift | |
siftee | ||
j | lowest transversal index to sift | |
k | highest transversal index to sift plus one |
uint permlib::BSGS< PERM, TRANS >::sift | ( | const PERM & | g, | |
PERM & | siftee, | |||
uint | j = 0 | |||
) | const [inline] |
sifts an element through the specified transversal range
g | permutation to sift | |
siftee | ||
j | lowest transversal index to sift; i.e. sift through transversal U[j], U[j+1], ... |
void permlib::BSGS< PERM, TRANS >::updateOrbits | ( | int | pos | ) |
updates transversals/orbits
pos | index up to which transversals should be updated |
void permlib::BSGS< PERM, TRANS >::updateOrbits | ( | int | pos | ) | [inline] |
updates transversals/orbits
pos | index up to which transversals should be updated |