00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016
00017
00018
00020
00021 #ifndef ODD_CYCLES_SEPARATOR_HH
00022 #define ODD_CYCLES_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 OddCyclesSeparator: public ABA_SEPARATOR <ABA_CONSTRAINT, ABA_VARIABLE> {
00039
00040 public:
00041
00042
00043
00044
00045
00055 OddCyclesSeparator(ABA_MASTER *master, StableSetLPSolution *solution,
00056 Graph *theGraph, bool flag);
00057
00061 ~OddCyclesSeparator();
00062
00070 virtual void separate();
00071
00078 int getSizeOfClique() const;
00079
00086 int getCliqueElement(int i) const;
00087
00094 int getNumberOfOddCycles() const;
00095
00102 int *getOddCycle(int i);
00103
00104
00105 private:
00106
00107
00108
00109
00110
00114 ABA_MASTER *master_;
00115
00119 Graph *itsGraph;
00120
00124 StableSetLPSolution *lpSolution;
00125
00130 bool lifting;
00131
00136 vector<int> clique;
00137
00143 vector<int*> cycles;
00144
00145 };
00146
00147 #endif
00148
00149