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 BIPARTITEGRAPHCORE_H
00024 #define BIPARTITEGRAPHCORE_H
00025
00026 namespace ColPack
00027 {
00033 class BipartiteGraphCore
00034 {
00035 public:
00036
00038 int GetRowVertexCount();
00040 int GetLeftVertexCount();
00041
00042
00043
00045 int GetColumnVertexCount();
00047 int GetRightVertexCount();
00048
00049 bool operator==(const BipartiteGraphCore &other) const;
00050
00051 protected:
00052
00053 int m_i_MaximumLeftVertexDegree;
00054 int m_i_MaximumRightVertexDegree;
00055 int m_i_MaximumVertexDegree;
00056
00057 int m_i_MinimumLeftVertexDegree;
00058 int m_i_MinimumRightVertexDegree;
00059 int m_i_MinimumVertexDegree;
00060
00061 double m_d_AverageLeftVertexDegree;
00062 double m_d_AverageRightVertexDegree;
00063 double m_d_AverageVertexDegree;
00064
00065 string m_s_InputFile;
00066
00067 vector<int> m_vi_LeftVertices;
00068 vector<int> m_vi_RightVertices;
00069
00070 vector<int> m_vi_Edges;
00071
00072 map< int, map<int, int> > m_mimi2_VertexEdgeMap;
00073
00074
00075 public:
00076
00077
00078 virtual ~BipartiteGraphCore(){}
00079
00080
00081 virtual void Initialize() = 0;
00082
00083
00084 virtual void Clear();
00085
00086
00087 string GetInputFile();
00088
00089
00090
00091 void GetRowVertices(vector<int> &output) const;
00092 void GetLeftVertices(vector<int> &output) const;
00093
00094
00095 void GetColumnVertices(vector<int> &output) const;
00096 void GetRightVertices(vector<int> &output) const;
00097
00098 unsigned int GetRowVertices(unsigned int** ip2_RowVertex);
00099 unsigned int GetColumnIndices(unsigned int** ip2_ColumnIndex);
00100
00101
00102 void GetEdges(vector<int> &output) const;
00103
00104
00105 void GetVertexEdgeMap(map< int, map<int, int> > &output);
00106
00107
00108
00109 int GetEdgeCount();
00110
00111
00112
00113 int GetMaximumRowVertexDegree();
00114
00115
00116
00117 int GetMaximumColumnVertexDegree();
00118
00119
00120
00121 int GetMaximumVertexDegree();
00122
00123
00124
00125 int GetMinimumRowVertexDegree();
00126
00127
00128
00129 int GetMinimumColumnVertexDegree();
00130
00131
00132
00133 int GetMinimumVertexDegree();
00134
00135
00136
00137 double GetAverageRowVertexDegree();
00138
00139
00140 double GetAverageColumnVertexDegree();
00141
00142
00143 double GetAverageVertexDegree();
00144 };
00145 }
00146 #endif