CoxIter  1.2
CoxIter - Computing invariants of hyperbolic Coxeter groups
arithmeticity.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2013, 2014, 2015, 2016
3 Rafael Guglielmetti, rafael.guglielmetti@unifr.ch
4 */
5 
6 /*
7 This file is part of CoxIter.
8 
9 CoxIter is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as
11 published by the Free Software Foundation, either version 3 of the
12 License, or (at your option) any later version.
13 
14 CoxIter is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with CoxIter. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
31 #ifndef ARITHMETICITY_H
32 #define ARITHMETICITY_H
33 
34 #include "coxiter.h"
35 
37 {
38  private:
39  string strError;
40 
42  unsigned int iVerticesCount;
43  vector< vector< unsigned int > > iCoxeterMatrix;
44  vector< unsigned int > iReferencesToLabels;
45 
46  // For the DFS
47  vector< vector< bool > > bEdgesVisited;
48  vector< bool > bVerticesVisited;
49  vector< unsigned int > iPath;
50 
52 
53  bool bListCycles;
54  vector< string > strListCycles;
55 
56  public:
60  Arithmeticity( );
61 
65  ~Arithmeticity( );
66 
74  void test( CoxIter& ci, const bool& bListCycles_ );
75 
81  vector< string > get_strListCycles( );
82 
88  string get_strError( );
89 
90  private:
96  unsigned int collapseQueues( );
97 
98 
102  void testCycles( );
103 
112  void findCycles( const unsigned int& iRoot, const unsigned int& iFrom );
113 
119  void testCycle( );
120 };
121 
123 {
124  unsigned int iV1;
125  unsigned int iV2;
126 };
127 
128 struct Cycles
129 {
130 };
131 
132 
133 #endif // ARITHMETICITY_H
void testCycles()
Test the cycles.
Definition: arithmeticity.cpp:205
unsigned int iV1
Definition: arithmeticity.h:124
Definition: arithmeticity.h:128
void testCycle()
Test the cycle in iPath.
Definition: arithmeticity.cpp:271
string get_strError()
Return the error code.
Definition: arithmeticity.cpp:360
vector< unsigned int > iReferencesToLabels
Correspondence for the new indices to the old ones.
Definition: arithmeticity.h:44
CoxIter * ci
Pointer to the CoxIter object.
Definition: arithmeticity.h:41
void test(CoxIter &ci, const bool &bListCycles_)
Test the arithmeticity of a graph.
Definition: arithmeticity.cpp:34
string strError
If an error occured, small text.
Definition: arithmeticity.h:39
vector< string > get_strListCycles()
Return the list of cycles.
Definition: arithmeticity.cpp:355
This class tests the arithmeticity of a graph which has no dotted edge and which is non-cocompact...
Definition: arithmeticity.h:36
~Arithmeticity()
Destructor.
Definition: arithmeticity.cpp:30
bool bListCycles
If true, will list the cycles to be manually tested.
Definition: arithmeticity.h:53
vector< unsigned int > iPath
Current path.
Definition: arithmeticity.h:49
vector< vector< bool > > bEdgesVisited
Traversed edges.
Definition: arithmeticity.h:47
vector< vector< unsigned int > > iCoxeterMatrix
Coxeter matrix of the group.
Definition: arithmeticity.h:43
unsigned int iVerticesCount
Number of generators of the group.
Definition: arithmeticity.h:42
void findCycles(const unsigned int &iRoot, const unsigned int &iFrom)
Look for cycles.
Definition: arithmeticity.cpp:227
unsigned int iV2
Definition: arithmeticity.h:125
unsigned int collapseQueues()
Try to collapse queues of the graph.
Definition: arithmeticity.cpp:115
bool bNotArithmetic
True if not arithmetic (i.e. we have to quit the algorithm)
Definition: arithmeticity.h:51
Definition: arithmeticity.h:122
vector< string > strListCycles
The list.
Definition: arithmeticity.h:54
Arithmeticity()
Basic constructor.
Definition: arithmeticity.cpp:25
vector< bool > bVerticesVisited
Taversed vertices.
Definition: arithmeticity.h:48
Main class for the work.
Definition: coxiter.h:73