Devise a suitable representation for the state of a node and then implement the following member functions IsFeasible, IsComplete, Objective, Bound, Clone and Successors. Note, the Successors function requires an iterator which enumerates all the successors of a given node.
class GreedySolution : public Solution { virtual Solution& GreedySuccessor () const = 0; };
class SimulatedAnnealingSolution : public Solution { virtual Solution& RandomSuccessor () const = 0; };