00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016
00017
00018
00020
00021 #ifndef IMPROVEMENT_HEURISTIC_HH
00022 #define IMPROVEMENT_HEURISTIC_HH
00023 #include <vector>
00024
00025 using namespace std;
00026
00027 class ABA_MASTER;
00028 class Graph;
00029 class StableSetMaster;
00030 class StableSetStatistics;
00031
00032
00033
00038 class ImprovementHeuristic {
00039
00040 public:
00041
00042
00043
00044
00045
00054 ImprovementHeuristic(ABA_MASTER *master, Graph *theGraph,
00055 StableSetStatistics *theStatistics);
00056
00060 ~ImprovementHeuristic();
00061
00069 int improve(double &value);
00070
00071
00072 private:
00073
00074
00075
00076
00077
00091 bool calculateDistance(int start, int end, int &v11, int &v12, int &v21,
00092 int &v22) const;
00093
00101 void testStableSet(vector<int> *stableSet);
00102
00110 StableSetMaster *stableSetMaster();
00111
00112
00113
00114
00115
00116
00120 ABA_MASTER *master_;
00121
00125 Graph *itsGraph;
00126
00130 StableSetStatistics *itsStatistics;
00131
00132 };
00133
00134 #endif
00135
00136