FPGroup Class Reference

Class FPGroup (finitely presented group). More...

#include <FPGroup.h>

List of all members.

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 FiniteAlphabetgetAlphabet () 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< WordtheRelators
FiniteAlphabet theAlphabet
bool useDefaultAlphabet

Friends

ostream & operator<< (ostream &os, const FPGroup &group)
istream & operator>> (istream &is, FPGroup &group)

Detailed Description

Class FPGroup (finitely presented group).

Definition at line 32 of file FPGroup.h.


Constructor & Destructor Documentation

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 
)

Member Function Documentation

const FiniteAlphabet& FPGroup::getAlphabet (  )  const [inline]

Get the alphabet.

Definition at line 63 of file FPGroup.h.

References theAlphabet.

const vector< string >& FPGroup::getGeneratorsNames (  )  const [inline]

Get the names of the generators.

Definition at line 61 of file FPGroup.h.

References theAlphabet.

static vector< string > FPGroup::initializeGenNames ( int  num  )  [static]
int FPGroup::numberOfGenerators (  )  const [inline]

Get the number of generators.

Definition at line 59 of file FPGroup.h.

References numOfGenerators.

Word FPGroup::randomEqWord_Baltimore ( const Word w,
int  length,
float  conj_param 
) const

Generate random equivalent word.

Function inserts into random positions in the given word $w$ 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 $w = \varepsilon$. On each iteration it multiplies $w$ 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 $w_1 = \varepsilon$, $w_2 = \varepsilon$. On each iteration randomly takes a relators $r$, takes a random cyclic permutation $r'$ of it or its inverse, then randomly cuts in two pieces $r' = r_1 \circ r_2$ (one can be trivial) and multiplies $w_1$ on the right by $r_1$ and $w_2$ on the right by $r_2^{-1}$. When $|w_1|+|w_2|$ reaches the length output freely reduced $w_1 w_2^{-1}$.

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.

Returns:
The result is a finite group presentation $\langle Y;S \rangle$ with all relators of length at most 3. Notice that the names of the original generators change to $x_1,\ldots,x_n$ to avoid possible name collisions. New generator names are $x_{n+1},\ldots$.

Friends And Related Function Documentation

ostream& operator<< ( ostream &  os,
const FPGroup group 
) [friend]
istream& operator>> ( istream &  is,
FPGroup group 
) [friend]

Member Data Documentation

int FPGroup::numOfGenerators [protected]

Definition at line 184 of file FPGroup.h.

Referenced by numberOfGenerators().

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]

Definition at line 190 of file FPGroup.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Mon Sep 26 18:43:46 2011 for CRyptography And Groups (CRAG) by  doxygen 1.6.1