/usr/include/ColPack/BipartiteGraphPartialColoring.h is in libcolpack-dev 1.0.9-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 | /************************************************************************************
Copyright (C) 2005-2008 Assefaw H. Gebremedhin, Arijit Tarafdar, Duc Nguyen,
Alex Pothen
This file is part of ColPack.
ColPack is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ColPack is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with ColPack. If not, see <http://www.gnu.org/licenses/>.
************************************************************************************/
using namespace std;
#ifndef BIPARTITEGRAPHPARTIALCOLORING_H
#define BIPARTITEGRAPHPARTIALCOLORING_H
namespace ColPack
{
/** @ingroup group21
* @brief class BipartiteGraphPartialColoring in @link group21@endlink.
To be completed.
*/
class BipartiteGraphPartialColoring : public BipartiteGraphPartialOrdering
{
public: //DOCUMENTED
/// Based on m_s_VertexColoringVariant, either PrintRowPartialColors() or PrintColumnPartialColors() will be called.
void PrintPartialColors();
/// Based on m_s_VertexColoringVariant, either PrintRowPartialColoringMetrics() or PrintColumnPartialColoringMetrics() will be called.
void PrintPartialColoringMetrics();
/// Based on m_s_VertexColoringVariant, either PrintRowPartialColoringMetrics() or PrintColumnPartialColoringMetrics() will be called.
int CheckPartialDistanceTwoColoring();
/// Based on m_s_VertexColoringVariant, either GetLeftVertexColors() or GetRightVertexColors() will be called.
void GetVertexPartialColors(vector<int> &output);
/// Based on m_s_VertexColoringVariant, either GetLeftSeedMatrix() or GetRightSeedMatrix() will be called.
double** GetSeedMatrix(int* i_SeedRowCount, int* i_SeedColumnCount);
/// Based on m_s_VertexColoringVariant, either GetLeftSeedMatrix_unmanaged() or GetRightSeedMatrix_unmanaged() will be called.
double** GetSeedMatrix_unmanaged(int* i_SeedRowCount, int* i_SeedColumnCount);
///Generate and return the Left Seed matrix. This Seed matrix is managed and freed by ColPack
/**Precondition:
- the Graph has been colored by PartialDistanceTwoRowColoring()
Postcondition:
- Size of the returned matrix is (*i_SeedRowCount) rows x (*i_SeedColumnCount) columns.
(*i_SeedColumnCount) == num of rows of the original matrix == GetRowVertexCount()
(*i_SeedRowCount) == num of colors used to color the left (row) vertices == GetVertexColorCount().
Notes:
- This Seed matrix is managed and automatically freed by ColPack when the Graph object is deleted. Therefore, the user should NOT attempt to free the Seed matrix again.
*/
double** GetLeftSeedMatrix(int* i_SeedRowCount, int* i_SeedColumnCount);
/// Same as GetLeftSeedMatrix(), except that this Seed matrix is NOT managed by ColPack
/** Notes:
- This Seed matrix is NOT managed by ColPack. Therefore, the user should free the Seed matrix manually when the matrix is no longer needed.
*/
double** GetLeftSeedMatrix_unmanaged(int* i_SeedRowCount, int* i_SeedColumnCount);
/// Return the Right Seed matrix. This Seed matrix is managed and freed by ColPack
/** Precondition:
- the Graph has been colored by PartialDistanceTwoColumnColoring()
Postcondition:
- Size of the returned matrix is (*i_SeedRowCount) rows x (*i_SeedColumnCount) columns.
(*i_SeedRowCount) == num of columns of the original matrix == GetColumnVertexCount()
(*i_SeedColumnCount) == num of colors used to color the right (column) vertices == GetVertexColorCount().
Notes:
- This Seed matrix is managed and automatically freed by ColPack when the Graph object is deleted. Therefore, the user should NOT attempt to free the Seed matrix again.
*/
double** GetRightSeedMatrix(int* i_SeedRowCount, int* i_SeedColumnCount);
/// Same as GetRightSeedMatrix(), except that this Seed matrix is NOT managed by ColPack
/** Notes:
- This Seed matrix is NOT managed by ColPack. Therefore, the user should free the Seed matrix manually when the matrix is no longer needed.
*/
double** GetRightSeedMatrix_unmanaged(int* i_SeedRowCount, int* i_SeedColumnCount);
private:
//Private Function 2401
int CalculateVertexColorClasses();
//Private Function 2402
int CheckVertexColoring(string s_VertexColoringVariant);
protected:
int m_i_LeftVertexColorCount;
int m_i_RightVertexColorCount;
int m_i_VertexColorCount;
int m_i_ViolationCount;
int m_i_ColoringUnits;
int m_i_LargestLeftVertexColorClass;
int m_i_LargestRightVertexColorClass;
int m_i_LargestLeftVertexColorClassSize;
int m_i_LargestRightVertexColorClassSize;
int m_i_SmallestLeftVertexColorClass;
int m_i_SmallestRightVertexColorClass;
int m_i_SmallestLeftVertexColorClassSize;
int m_i_SmallestRightVertexColorClassSize;
double m_d_AverageLeftVertexColorClassSize;
double m_d_AverageRightVertexColorClassSize;
double m_d_ColoringTime;
double m_d_CheckingTime;
string m_s_VertexColoringVariant;
vector<int> m_vi_LeftVertexColors;
vector<int> m_vi_RightVertexColors;
vector<int> m_vi_LeftVertexColorFrequency;
vector<int> m_vi_RightVertexColorFrequency;
bool seed_available;
int i_seed_rowCount;
double** dp2_Seed;
void Seed_init();
void Seed_reset();
public:
//Public Constructor 2451
BipartiteGraphPartialColoring();
//Public Destructor 2452
~BipartiteGraphPartialColoring();
//Virtual Function 2453
virtual void Clear();
//Virtual Function 2454
virtual void Reset();
//Public Function 2455
int PartialDistanceTwoRowColoring();
int PartialDistanceTwoRowColoring_serial();
int PartialDistanceTwoRowColoring_OMP();
//Public Function 2456
int PartialDistanceTwoColumnColoring();
int PartialDistanceTwoColumnColoring_serial();
int PartialDistanceTwoColumnColoring_OMP();
//Public Function 2457
int CheckPartialDistanceTwoRowColoring();
//Public Function 2458
int CheckPartialDistanceTwoColumnColoring();
//Public Function 2459
int GetLeftVertexColorCount();
//Public Function 2460
int GetRightVertexColorCount();
//Public Function 2461
int GetVertexColorCount();
//Public Function 2462
string GetVertexColoringVariant();
//Public Function 2463
void GetLeftVertexColors(vector<int> &output);
//Public Function 2464
void GetRightVertexColors(vector<int> &output);
//Public Function 2465
void PrintRowPartialColors();
//Public Function 2466
void PrintColumnPartialColors();
//Public Function 2467
void PrintRowPartialColoringMetrics();
//Public Function 2468
void PrintColumnPartialColoringMetrics();
//Public Function 2469
void PrintVertexPartialColorClasses();
double GetVertexColoringTime();
void SetVertexColoringVariant(string s_VertexColoringVariant);
};
}
#endif
|