Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 using namespace std;
00022
00023 #ifndef BIPARTITEGRAPHPARTIALCOLORING_H
00024 #define BIPARTITEGRAPHPARTIALCOLORING_H
00025
00026 namespace ColPack
00027 {
00033 class BipartiteGraphPartialColoring : public BipartiteGraphPartialOrdering
00034 {
00035 public:
00036
00038 void PrintPartialColors();
00039
00041 void PrintPartialColoringMetrics();
00042
00044 int CheckPartialDistanceTwoColoring();
00045
00047 void GetVertexPartialColors(vector<int> &output);
00048
00050 double** GetSeedMatrix(int* i_SeedRowCount, int* i_SeedColumnCount);
00051
00053 double** GetSeedMatrix_unmanaged(int* i_SeedRowCount, int* i_SeedColumnCount);
00054
00056
00067 double** GetLeftSeedMatrix(int* i_SeedRowCount, int* i_SeedColumnCount);
00068
00070
00073 double** GetLeftSeedMatrix_unmanaged(int* i_SeedRowCount, int* i_SeedColumnCount);
00074
00076
00087 double** GetRightSeedMatrix(int* i_SeedRowCount, int* i_SeedColumnCount);
00088
00090
00093 double** GetRightSeedMatrix_unmanaged(int* i_SeedRowCount, int* i_SeedColumnCount);
00094
00095 private:
00096
00097
00098 int CalculateVertexColorClasses();
00099
00100
00101 int CheckVertexColoring(string s_VertexColoringVariant);
00102
00103 protected:
00104
00105 int m_i_LeftVertexColorCount;
00106 int m_i_RightVertexColorCount;
00107
00108 int m_i_VertexColorCount;
00109
00110 int m_i_ViolationCount;
00111
00112 int m_i_ColoringUnits;
00113
00114 int m_i_LargestLeftVertexColorClass;
00115 int m_i_LargestRightVertexColorClass;
00116
00117 int m_i_LargestLeftVertexColorClassSize;
00118 int m_i_LargestRightVertexColorClassSize;
00119
00120 int m_i_SmallestLeftVertexColorClass;
00121 int m_i_SmallestRightVertexColorClass;
00122
00123 int m_i_SmallestLeftVertexColorClassSize;
00124 int m_i_SmallestRightVertexColorClassSize;
00125
00126 double m_d_AverageLeftVertexColorClassSize;
00127 double m_d_AverageRightVertexColorClassSize;
00128
00129 double m_d_ColoringTime;
00130 double m_d_CheckingTime;
00131
00132 string m_s_VertexColoringVariant;
00133
00134 vector<int> m_vi_LeftVertexColors;
00135 vector<int> m_vi_RightVertexColors;
00136
00137 vector<int> m_vi_LeftVertexColorFrequency;
00138 vector<int> m_vi_RightVertexColorFrequency;
00139
00140 bool seed_available;
00141 int i_seed_rowCount;
00142 double** dp2_Seed;
00143
00144 void Seed_init();
00145 void Seed_reset();
00146
00147 public:
00148
00149
00150 BipartiteGraphPartialColoring();
00151
00152
00153 ~BipartiteGraphPartialColoring();
00154
00155
00156 virtual void Clear();
00157
00158
00159 virtual void Reset();
00160
00161
00162 int PartialDistanceTwoRowColoring();
00163
00164
00165 int PartialDistanceTwoColumnColoring();
00166
00167
00168 int CheckPartialDistanceTwoRowColoring();
00169
00170
00171 int CheckPartialDistanceTwoColumnColoring();
00172
00173
00174 int GetLeftVertexColorCount();
00175
00176
00177 int GetRightVertexColorCount();
00178
00179
00180 int GetVertexColorCount();
00181
00182
00183 string GetVertexColoringVariant();
00184
00185
00186 void GetLeftVertexColors(vector<int> &output);
00187
00188
00189 void GetRightVertexColors(vector<int> &output);
00190
00191
00192 void PrintRowPartialColors();
00193
00194
00195 void PrintColumnPartialColors();
00196
00197
00198 void PrintRowPartialColoringMetrics();
00199
00200
00201 void PrintColumnPartialColoringMetrics();
00202
00203
00204 void PrintVertexPartialColorClasses();
00205
00206 double GetVertexColoringTime();
00207 };
00208 }
00209 #endif
00210