Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

/magnus/back_end/Subgroup/include/TurnerProperSubgroupEnumerator.h

Go to the documentation of this file.
00001 
00002 /*
00003  *   $Id: TurnerProperSubgroupEnumerator.h,v 1.1 2000/10/07 18:44:19 bormotov Exp $
00004  */
00005  
00006 // Contents: Declaration of class TurnerProperSubgroupEnumerator
00007 //
00008 // Principal Author: Alexander Ushakov
00009 //
00010 // Status: in progress
00011 //
00012 // Revision History:
00013 //
00014 
00015 #ifndef _TURNER_PROPER_SUBGROUP_ENUMERATOR_H_
00016 #define _TURNER_PROPER_SUBGROUP_ENUMERATOR_H_
00017 
00018 
00019 //#include "Supervisor.h"
00020 //#include "SMSetOfWords.h"
00021 //#include "SMWord.h"
00022 #include "FreeGroup.h"
00023 #include "File.h"
00024 #include "SGofFreeGroup.h"
00025 
00026 
00027 // ------------------------  ProperSubgroupEnumerator ------------------------------ //
00028 
00029 
00030 class ProperSubgroupEnumerator
00031 {
00032 public:
00033   ProperSubgroupEnumerator(const FreeGroup& F, const VectorOf<Word>& words);
00034   ProperSubgroupEnumerator(const FreeGroup& F, const Word& word);
00035  ~ProperSubgroupEnumerator();
00036 
00037   ProperSubgroupEnumerator(const ProperSubgroupEnumerator& PSE);
00038   int operator == (const ProperSubgroupEnumerator& PSE);
00039   // hidden
00040 
00041   bool getNextProperSubgroup(SGofFreeGroup& sg);
00042 
00043   Chars getFileName() { 
00044         return file.getFileName(); 
00045   }
00046 
00047 private:
00048   const VectorOf<Word> theWords;
00049   const FreeGroup theGroup;
00050 
00051   VectorOf<Word> genOfGroup;
00052   // generators of free group
00053 
00054   const int rank;
00055   // rank of the FreeGroup
00056 
00057   bool stepTo();
00058   void stepBack();
00059   bool setRefs();
00060   void buildSG( );
00061   Word getWord(int x, int y);
00062 
00063   File file;
00064   // debug file
00065 
00066   SGofFreeGroup *subgroup;
00067   // current subgroup
00068   VectorOf<Word> genOfSG;
00069   // generators of current subgroup
00070   int qWord;
00071   // generator quantity
00072 
00073 
00074   int nVert;
00075   // num of current vertice
00076   int nSet;
00077   // num of current set
00078 
00079   int *partition;
00080   int **_partition;
00081   // partition 
00082 
00083   int qSet;
00084   // set quantity 
00085   int qVert;
00086   // vertice quantity
00087 
00088   int *setToVert;
00089   int *vertToWord;
00090   int *vertToPos;
00091 
00092   struct LC {
00093     int qSet;
00094   }* lCells;
00095 
00096   enum { UNKNOWN=-1 };
00097 };
00098 
00099 
00100 #endif
00101 

Generated at Tue Jun 19 09:49:43 2001 for Magnus Classes by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001