00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016
00017
00018
00020
00021 #ifndef MAX_CLIQUES_SEPARATOR_HH
00022 #define MAX_CLIQUES_SEPARATOR_HH
00023
00024 #include <abacus/separator.h>
00025 #include <vector>
00026
00027 using namespace std;
00028
00029 class Clique;
00030 class Graph;
00031 class StableSetLPSolution;
00032 class StableSetMaster;
00033
00034
00035
00039 class MaxCliquesSeparator: public ABA_SEPARATOR <ABA_CONSTRAINT, ABA_VARIABLE> {
00040
00041 public:
00042
00043
00044
00045
00046
00055 MaxCliquesSeparator(ABA_MASTER *master, StableSetLPSolution *solution,
00056 Graph *theGraph, Clique *clique);
00057
00061 ~MaxCliquesSeparator();
00062
00067 virtual void separate();
00068
00069
00070 private:
00071
00072
00073
00074
00075
00084 bool getNextClique(vector<int> *nodesOfClique) const;
00085
00093 StableSetMaster *stableSetMaster();
00094
00095
00096
00097
00098
00099
00103 ABA_MASTER *master_;
00104
00108 StableSetLPSolution *lpSolution;
00109
00113 Graph *itsGraph;
00114
00119 Clique *maxCliques;
00120
00121 };
00122
00123 #endif
00124
00125