00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016
00017
00018
00020
00021 #ifndef LOCAL_CUT_SEPARATOR_HH
00022 #define LOCAL_CUT_SEPARATOR_HH
00023
00024 #include <abacus/separator.h>
00025 #include <vector>
00026
00027 using namespace std;
00028
00029 class Graph;
00030 class StableSetLPSolution;
00031 class StableSetMaster;
00032
00033
00034
00038 class LocalCutSeparator: public ABA_SEPARATOR <ABA_CONSTRAINT, ABA_VARIABLE> {
00039
00040 public:
00041
00042
00043
00044
00045
00053 LocalCutSeparator(ABA_MASTER *master, StableSetLPSolution *solution,
00054 Graph *theGraph);
00055
00059 ~LocalCutSeparator();
00060
00068 virtual void separate();
00069
00070
00071 private:
00072
00073
00074
00075
00076
00083 bool getPartitialGraph();
00084
00092 double calculateGCD(double a, double b);
00093
00100 StableSetMaster *stableSetMaster();
00101
00102
00103
00104
00105
00106
00110 ABA_MASTER *master_;
00111
00115 StableSetLPSolution *lpSolution;
00116
00120 Graph *itsGraph;
00121
00125 const static int MAX_NUMBER_OF_NODES = 15;
00126
00130 const static int MIN_NUMBER_OF_NODES = 4;
00131
00135 int numberOfNodes;
00136
00140 vector<int> nodes;
00141
00145 vector< vector<int> > adjacentList;
00146
00147 };
00148
00149 #endif
00150
00151