#include <Permutation.h>
Classes | |
struct | triple |
Public Member Functions | |
Permutation (int size=0) | |
Default constructor (size specifies the size of the permutation). | |
Permutation (int size, const int *p) | |
Construct a permutation of the specified size given by the array p. | |
Permutation (const vector< int > &p) | |
Construct a permutation by a vector of numbers. | |
template<class IntIterator > | |
Permutation (const IntIterator &B, const IntIterator &E) | |
Construct a permutation by a sequence of numbers. | |
int | operator[] (int ind) const |
Get the ith element of the permutation. | |
int & | operator[] (int ind) |
Get the reference to the ith element of the permutation. | |
bool | operator== (const Permutation &p) const |
Check if 2 permutations are equal. | |
bool | operator!= (const Permutation &p) const |
Check if 2 permutations are not equal. | |
bool | operator< (const Permutation &p) const |
Check if *this is strictly less than p (compared lexicographically). | |
Permutation | operator* (const Permutation &p) const |
Multiple 2 permutations. | |
Permutation & | operator*= (const Permutation &p) |
Multiple 1 permutation by another on the right. | |
Permutation | operator- () const |
Invert the permutation. | |
Permutation | inverse () const |
Invert the permutation. | |
Permutation & | left_mult_by_cycle (const vector< int > &cycle) |
A function used for computation of BKL normal forms of braids. | |
void | change (int i, int j) |
Swap the values at uth and jth position (multiply this by a cycle (i,j) on the left). | |
const vector< int > & | getVector () const |
Get the vector of numbers which represents the permutation. | |
Permutation | power (int p) const |
Raise the permutation into the power p. | |
int | size () const |
Get the size of the permutation. | |
Permutation | increaseSize (int N) const |
Increase the size of a permutation. | |
int | length () const |
Compute the length of a permutation (length of a geodesic). Current version is slow, need to update. | |
int | difference (const Permutation &p) const |
Compute the number of positions with different elements. | |
Permutation | computeConjugacyClassRepresentative (Permutation &conj) const |
Compute the conjugacy class representative (2 elements conjugate iff they have the same result of this function). | |
Permutation | computeConjugator (const Permutation &p) const |
Compute a conjugator for a couple of permutations (if permutations are not conjugate then the result makes no sense). | |
Permutation | flip () const |
Flip the permutation (conjugate by a half-twist permutation ). | |
Permutation | tinyFlip (int sh) const |
Perform a tiny flip (conjugate by ). | |
bool | isTrivial () const |
Check if the permutation is trivial. | |
vector< int > | geodesic () const |
Find a geodesic word representing the permutation (indices start with 0). | |
vector< int > | geodesicWord () const |
Find a geodesic word representing the permutation (indices start with 1). | |
vector< int > | getWordPresentation () const |
Compute the word presentation for a permutation which is "parallel descending cycles" (for other permutations it makes no sense). | |
Permutation | RightGCD (const Permutation &p) const |
Compute RightGCD of 2 permutations. | |
Permutation | RightLCM (const Permutation &p) const |
Compute RightLCM of 2 permutations. | |
Permutation | LeftGCD (const Permutation &p) const |
Compute LeftGCD of 2 permutations. | |
Permutation | LeftLCM (const Permutation &p) const |
Compute LeftLCM of 2 permutations. | |
Permutation | meet2 (const Permutation &p) const |
Compute GCD for 2 permutations that are "parallel descending cycles" (used for BKL Normal Forms of braids). | |
Permutation | join2 (const Permutation &p) const |
Compute LCM for 2 permutations that are "parallel descending cycles" (used for BKL Normal Forms of braids). | |
Static Public Member Functions | |
static Permutation | CYCLE (int N, const vector< int > &cycle) |
Copy constructor provided by compiler. | |
static void | lr_multiply_by_cycles (Permutation &P, Permutation &I, const vector< int > &M1, const vector< int > &M2) |
A function used for computation of BKL normal forms of braids. | |
static Permutation | random (int size) |
Generate a random permutation of specified size. | |
static Permutation | getHalfTwistPermutation (int size) |
Get half twist permutation . | |
static Permutation | getCyclePermutation (int size) |
Get half twist permutation . | |
static bool | mixable (const Permutation &p1, const Permutation &p2) |
Check if 2 permutations are mixable (it is not used anywhere in the system, god knows that means). | |
Private Member Functions | |
void | _sub_meet (const Permutation &p, const Permutation &ip1, const Permutation &ip2, Permutation &cur, int *left_indeces_a, int *left_indeces_b, int *right_indeces_a, int *right_indeces_b, int beg, int end) const |
(Aux) The main operation to compute RightGCD and all other lattice functions | |
void | prepare_pairs (int N, Permutation &P, vector< pair< int, int > > &pairs) const |
Private Attributes | |
vector< int > | theValue |
A vector representing the permutation. | |
Friends | |
class | BraidGroup |
ostream & | operator<< (ostream &os, const Permutation &p) |
We use the standard representation of a presentation on symbols - a sequence of numbers . Notice that indexes start at 0.
Definition at line 33 of file Permutation.h.
Permutation::Permutation | ( | int | size = 0 |
) |
Default constructor (size specifies the size of the permutation).
Permutation::Permutation | ( | int | size, | |
const int * | p | |||
) |
Construct a permutation of the specified size given by the array p.
Permutation::Permutation | ( | const vector< int > & | p | ) |
Construct a permutation by a vector of numbers.
Permutation::Permutation | ( | const IntIterator & | B, | |
const IntIterator & | E | |||
) | [inline] |
Construct a permutation by a sequence of numbers.
Definition at line 55 of file Permutation.h.
void Permutation::_sub_meet | ( | const Permutation & | p, | |
const Permutation & | ip1, | |||
const Permutation & | ip2, | |||
Permutation & | cur, | |||
int * | left_indeces_a, | |||
int * | left_indeces_b, | |||
int * | right_indeces_a, | |||
int * | right_indeces_b, | |||
int | beg, | |||
int | end | |||
) | const [private] |
(Aux) The main operation to compute RightGCD and all other lattice functions
void Permutation::change | ( | int | i, | |
int | j | |||
) | [inline] |
Swap the values at uth and jth position (multiply this by a cycle (i,j) on the left).
Definition at line 130 of file Permutation.h.
References theValue.
Permutation Permutation::computeConjugacyClassRepresentative | ( | Permutation & | conj | ) | const |
Compute the conjugacy class representative (2 elements conjugate iff they have the same result of this function).
Permutation Permutation::computeConjugator | ( | const Permutation & | p | ) | const |
Compute a conjugator for a couple of permutations (if permutations are not conjugate then the result makes no sense).
static Permutation Permutation::CYCLE | ( | int | N, | |
const vector< int > & | cycle | |||
) | [static] |
Copy constructor provided by compiler.
What is it?
int Permutation::difference | ( | const Permutation & | p | ) | const |
Compute the number of positions with different elements.
Permutation Permutation::flip | ( | ) | const |
Flip the permutation (conjugate by a half-twist permutation ).
vector<int> Permutation::geodesic | ( | ) | const |
Find a geodesic word representing the permutation (indices start with 0).
vector<int> Permutation::geodesicWord | ( | ) | const |
Find a geodesic word representing the permutation (indices start with 1).
static Permutation Permutation::getCyclePermutation | ( | int | size | ) | [static] |
Get half twist permutation .
static Permutation Permutation::getHalfTwistPermutation | ( | int | size | ) | [static] |
Get half twist permutation .
Referenced by ThLeftNormalForm::ThLeftNormalForm(), and ThRightNormalForm::ThRightNormalForm().
const vector< int >& Permutation::getVector | ( | ) | const [inline] |
Get the vector of numbers which represents the permutation.
Definition at line 134 of file Permutation.h.
References theValue.
vector< int > Permutation::getWordPresentation | ( | ) | const |
Compute the word presentation for a permutation which is "parallel descending cycles" (for other permutations it makes no sense).
Permutation Permutation::increaseSize | ( | int | N | ) | const |
Increase the size of a permutation.
Permutation Permutation::inverse | ( | ) | const |
Invert the permutation.
Referenced by operator-().
bool Permutation::isTrivial | ( | ) | const |
Check if the permutation is trivial.
Referenced by ThLeftNormalForm::ThLeftNormalForm(), and ThRightNormalForm::ThRightNormalForm().
Permutation Permutation::join2 | ( | const Permutation & | p | ) | const |
Compute LCM for 2 permutations that are "parallel descending cycles" (used for BKL Normal Forms of braids).
Permutation& Permutation::left_mult_by_cycle | ( | const vector< int > & | cycle | ) |
A function used for computation of BKL normal forms of braids.
Permutation Permutation::LeftGCD | ( | const Permutation & | p | ) | const |
Compute LeftGCD of 2 permutations.
Let and be two permutations. The maximal permutation which ends and is called the left greatest common divisor of and , i.e., is maximal such that and for some permutations and .
Permutation Permutation::LeftLCM | ( | const Permutation & | p | ) | const |
Compute LeftLCM of 2 permutations.
Let and be two permutations. The minimal permutation which starts with and is called the left least common multiple, i.e., is minimal such that and .
int Permutation::length | ( | ) | const |
Compute the length of a permutation (length of a geodesic). Current version is slow, need to update.
static void Permutation::lr_multiply_by_cycles | ( | Permutation & | P, | |
Permutation & | I, | |||
const vector< int > & | M1, | |||
const vector< int > & | M2 | |||
) | [static] |
A function used for computation of BKL normal forms of braids.
Permutation Permutation::meet2 | ( | const Permutation & | p | ) | const |
Compute GCD for 2 permutations that are "parallel descending cycles" (used for BKL Normal Forms of braids).
static bool Permutation::mixable | ( | const Permutation & | p1, | |
const Permutation & | p2 | |||
) | [static] |
Check if 2 permutations are mixable (it is not used anywhere in the system, god knows that means).
bool Permutation::operator!= | ( | const Permutation & | p | ) | const |
Check if 2 permutations are not equal.
Permutation Permutation::operator* | ( | const Permutation & | p | ) | const |
Multiple 2 permutations.
Permutation& Permutation::operator*= | ( | const Permutation & | p | ) |
Multiple 1 permutation by another on the right.
Permutation Permutation::operator- | ( | ) | const [inline] |
bool Permutation::operator< | ( | const Permutation & | p | ) | const |
Check if *this is strictly less than p (compared lexicographically).
bool Permutation::operator== | ( | const Permutation & | p | ) | const |
Check if 2 permutations are equal.
int& Permutation::operator[] | ( | int | ind | ) | [inline] |
Get the reference to the ith element of the permutation.
Definition at line 80 of file Permutation.h.
References theValue.
int Permutation::operator[] | ( | int | ind | ) | const [inline] |
Get the ith element of the permutation.
Definition at line 76 of file Permutation.h.
References theValue.
Permutation Permutation::power | ( | int | p | ) | const |
Raise the permutation into the power p.
void Permutation::prepare_pairs | ( | int | N, | |
Permutation & | P, | |||
vector< pair< int, int > > & | pairs | |||
) | const [private] |
static Permutation Permutation::random | ( | int | size | ) | [static] |
Generate a random permutation of specified size.
Permutation Permutation::RightGCD | ( | const Permutation & | p | ) | const |
Compute RightGCD of 2 permutations.
Let and be two permutations. The maximal permutation which ends and is called the right greatest common divisor of and , i.e., is maximal such that and for some permutations and .
Permutation Permutation::RightLCM | ( | const Permutation & | p | ) | const |
Compute RightLCM of 2 permutations.
Let and be two permutations. The minimal permutation which ends with and is called the right least common multiple, i.e., is minimal such that and .
int Permutation::size | ( | ) | const [inline] |
Get the size of the permutation.
Definition at line 142 of file Permutation.h.
References theValue.
Referenced by ThLeftNormalForm::ThLeftNormalForm(), and ThRightNormalForm::ThRightNormalForm().
Permutation Permutation::tinyFlip | ( | int | sh | ) | const |
Perform a tiny flip (conjugate by ).
friend class BraidGroup [friend] |
Definition at line 303 of file Permutation.h.
ostream& operator<< | ( | ostream & | os, | |
const Permutation & | p | |||
) | [friend] |
vector< int > Permutation::theValue [private] |
A vector representing the permutation.
Definition at line 308 of file Permutation.h.
Referenced by change(), getVector(), operator[](), and size().