00001 // Copyright (C) 2005 Alexander Ushakov 00002 // Contents: Definition of class Equation 00003 // 00004 // Principal Authors: Alexander Ushakov 00005 // 00006 // Revision History: 00007 // 00008 00009 00010 #ifndef _Equation_h__ 00011 #define _Equation_h__ 00012 00013 00014 #include "GraphType.h" 00015 #include "GraphConcept.h" 00016 #include "GraphConceptAlgorithms.h" 00017 using namespace Graphs; 00018 00019 #include "Word.h" 00020 00021 00022 //---------------------------------------------------------------------------// 00023 //--------------------------------- Equation --------------------------------// 00024 //---------------------------------------------------------------------------// 00025 00026 00027 class Equation 00028 { 00029 00031 // // 00032 // Constructors: // 00033 // // 00035 00036 public: 00037 00038 Equation( int nGen , int nVar , const Word& eq ); 00039 00040 00042 // // 00043 // Accessors: // 00044 // // 00046 00047 public: 00048 00050 bool isGenerator( int g ) const; 00051 00052 00054 bool isVariable ( int g ) const; 00055 00056 00058 int getTheNumberOfGenerators( ) const { return theNumberOfGenerators; } 00059 00060 00062 int getTheNumberOfVariables( ) const { return theNumberOfVariables; } 00063 00064 00066 const Word& getTheEquation( ) const { return theEquation; } 00067 00068 00070 bool isQuadratic( ) const; 00071 00072 00074 bool trivialSolution( ) const; 00075 00076 00078 00085 static Equation randomQuadraticEquation( int nGen , int nVar , int len ); 00086 00087 00089 // // 00090 // I/O: // 00091 // // 00093 00094 private: 00095 00096 friend ostream& operator << ( ostream& os , const Equation& eq ); 00097 00099 // // 00100 // Internal functions: // 00101 // // 00103 00104 private: 00105 00106 00108 // // 00109 // Data members: // 00110 // // 00112 00113 private: 00114 00116 int theNumberOfGenerators; 00118 int theNumberOfVariables; 00120 00126 Word theEquation; 00127 00128 }; 00129 00130 00131 #endif 00132