Class FPGroup (finitely presented group). More...
#include <FPGroup.h>
| Public Member Functions | |
| FPGroup (int num=0) | |
| FPGroup (int numOfGen, const vector< Word > &relators) | |
| FPGroup (const FiniteAlphabet &a) | |
| FPGroup (const FiniteAlphabet &a, const vector< Word > &relators) | |
| int | numberOfGenerators () const | 
| Get the number of generators. | |
| const vector< string > & | getGeneratorsNames () const | 
| Get the names of the generators. | |
| const FiniteAlphabet & | getAlphabet () const | 
| Get the alphabet. | |
| const vector< Word > & | relators () const | 
| Word | randomEqWord_Baltimore (const Word &w, int length, float conj_param) const | 
| Generate random equivalent word. | |
| Word | randomIdentity_Stack (int length) const | 
| Generate random trivial word. | |
| Word | randomIdentity_Classic (int length, float conj_param) const | 
| Generate random trivial word. | |
| Word | randomIdentity_Baltimore (int length, float conj_param) const | 
| Generate random trivial word (using randomEqWord_Baltimore). | |
| FPGroup | triangulatePresentation () const | 
| Triangulate the set of relations. | |
| Static Public Member Functions | |
| static vector< string > | initializeGenNames (int num) | 
| Protected Attributes | |
| int | numOfGenerators | 
| vector< Word > | theRelators | 
| FiniteAlphabet | theAlphabet | 
| bool | useDefaultAlphabet | 
| Friends | |
| ostream & | operator<< (ostream &os, const FPGroup &group) | 
| istream & | operator>> (istream &is, FPGroup &group) | 
Class FPGroup (finitely presented group).
Definition at line 32 of file FPGroup.h.
| FPGroup::FPGroup | ( | int | num = 0 | ) | 
| FPGroup::FPGroup | ( | int | numOfGen, | |
| const vector< Word > & | relators | |||
| ) | 
| FPGroup::FPGroup | ( | const FiniteAlphabet & | a | ) | 
| FPGroup::FPGroup | ( | const FiniteAlphabet & | a, | |
| const vector< Word > & | relators | |||
| ) | 
| const FiniteAlphabet& FPGroup::getAlphabet | ( | ) | const  [inline] | 
| const vector< string >& FPGroup::getGeneratorsNames | ( | ) | const  [inline] | 
| static vector< string > FPGroup::initializeGenNames | ( | int | num | ) |  [static] | 
| int FPGroup::numberOfGenerators | ( | ) | const  [inline] | 
Generate random equivalent word.
Function inserts into random positions in the given word  relators (and their cyclic permutations and inverses) of the group conjugated by randomly chosen words. The lengths of conjugators is chosen using geometric distribution with parameter = conj_param. When the required length is reached the word is being reduced and output. So, the result often is shorter than the given parameter length.
 relators (and their cyclic permutations and inverses) of the group conjugated by randomly chosen words. The lengths of conjugators is chosen using geometric distribution with parameter = conj_param. When the required length is reached the word is being reduced and output. So, the result often is shorter than the given parameter length. 
| Word FPGroup::randomIdentity_Baltimore | ( | int | length, | |
| float | conj_param | |||
| ) | const | 
Generate random trivial word (using randomEqWord_Baltimore).
| Word FPGroup::randomIdentity_Classic | ( | int | length, | |
| float | conj_param | |||
| ) | const | 
Generate random trivial word.
Function starts with a trivial word  . On each iteration it multiplies
. On each iteration it multiplies  on the right by a relator (and their cyclic permutations and inverses) of the group conjugated by randomly chosen words. Lengths of conjugators are chosen using geometric distribution with parameter = conj_param. When the required length is reached the word is being reduced and output. So, the result often is shorter than the given parameter length.
 on the right by a relator (and their cyclic permutations and inverses) of the group conjugated by randomly chosen words. Lengths of conjugators are chosen using geometric distribution with parameter = conj_param. When the required length is reached the word is being reduced and output. So, the result often is shorter than the given parameter length. 
| Word FPGroup::randomIdentity_Stack | ( | int | length | ) | const | 
Generate random trivial word.
Function starts with a pair of trivial words  ,
,  . On each iteration randomly takes a relators
. On each iteration randomly takes a relators  , takes a random cyclic permutation
, takes a random cyclic permutation  of it or its inverse, then randomly cuts in two pieces
 of it or its inverse, then randomly cuts in two pieces  (one can be trivial) and multiplies
 (one can be trivial) and multiplies  on the right by
 on the right by  and
 and  on the right by
 on the right by  . When
. When  reaches the length output freely reduced
 reaches the length output freely reduced  .
. 
| const vector< Word >& FPGroup::relators | ( | ) | const  [inline] | 
Definition at line 65 of file FPGroup.h.
References theRelators.
| FPGroup FPGroup::triangulatePresentation | ( | ) | const | 
Triangulate the set of relations.
 with all relators of length at most 3. Notice that the names of the original generators change to
 with all relators of length at most 3. Notice that the names of the original generators change to  to avoid possible name collisions. New generator names are
 to avoid possible name collisions. New generator names are  .
. | ostream& operator<< | ( | ostream & | os, | |
| const FPGroup & | group | |||
| ) |  [friend] | 
| istream& operator>> | ( | istream & | is, | |
| FPGroup & | group | |||
| ) |  [friend] | 
| int FPGroup::numOfGenerators  [protected] | 
Definition at line 184 of file FPGroup.h.
Referenced by numberOfGenerators().
| FiniteAlphabet FPGroup::theAlphabet  [protected] | 
Definition at line 189 of file FPGroup.h.
Referenced by getAlphabet(), and getGeneratorsNames().
| vector< Word > FPGroup::theRelators  [protected] | 
Definition at line 187 of file FPGroup.h.
Referenced by relators().
| bool FPGroup::useDefaultAlphabet  [protected] | 
 1.6.1
 1.6.1