| /  We implement this class function according to LKH  [18]  that is free for academic use./ | 
| 1     class Heuristics | 
| 2   { | 
| 3   public: | 
| /  Heuristic object compute candidate sets as soon as created, second argument in | 
| constructor is the number of candidates in each set./ | 
| 4    Heuristics(Graph    graph, int NumberOfCandidates); | 
| 5    ~Heuristics(); | 
| /  Both of lines  6  and  7  shows the 2-OPT but function in line  6  consider all of nodes | 
| as active but function  7  supposes only nodes in ActiveNodes array are active / | 
| 6    void TwoOpt(Tour    tour); | 
| 7    void TwoOpt (Tour    tour, int    ActiveNodes, int NumberOfActiveNodes); | 
| /  Both of lines  8  and  9  shows the 3-OPT but function in line  8  consider all of nodes | 
| as active but function  9  supposes only nodes in ActiveNodes array are active / | 
| 8    void ThreeOpt(Tour    tour); | 
| 9    void ThreeOpt (Tour    tour, int    ActiveNodes, int NumberOfActiveNodes); | 
| /  Both of lines  10  and  11  shows the LK but function in line  10  consider all of nodes | 
| as active but function  11  supposes only nodes in ActiveNodes array are active / | 
| 10  void LinKernighan(Tour    tour); | 
| 11  void LinKernighan(Tour    tour, int   ActiveNodes, int NumberOfActiveNodes); | 
| 12  void DoubleBridge(Tour    tour); | 
| 13  Tour    Q_Boruvka(); | 
| 14  int SetCandidates(int node, int candidate, int index); | 
| 15  int GetCandidates(int node, int index); | 
| 16  void SetBestTour(Tour    best_tour); | 
| 17 }; |