Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

coloring_mcmc.hpp

Go to the documentation of this file.
00001 #ifndef _COLORING_MCMC_HPP
00002 #define _COLORING_MCMC_HPP
00003 
00004 #include "properties.hpp"
00005 #include "random.hpp"
00006 #include "coloring.hpp"
00007 #include "arak.hpp"
00008 #include "mcmc.hpp"
00009 
00010 namespace Arak {
00011 
00015   class ColoringMove {
00016 
00017   public:
00018 
00026     virtual void execute(Coloring& c) = 0;
00027   
00038     virtual void undo(Coloring& c) = 0;
00039   
00043     virtual ~ColoringMove() {}
00044   
00045   };
00046 
00050   class NullColoringMove : public ColoringMove {
00051 
00052   public:
00053 
00054     NullColoringMove() { }
00055     void execute(Coloring& c) { }
00056     void undo(Coloring& c) { }
00057     ~NullColoringMove() {}
00058 
00062     static const NullColoringMove instance;
00063 
00064   };
00065 
00076   class ColoringProposal {
00077 
00078   public:
00079 
00083     virtual ~ColoringProposal() {}
00084 
00093     virtual void sample(const Coloring& state,
00094       Arak::Util::Random& random,
00095       bool reversible = true) = 0;
00096 
00104     virtual ColoringMove& move() = 0;
00105 
00111     virtual double ll(const Coloring& c) = 0;
00112   
00120     virtual double rll(const Coloring& c) = 0;
00121 
00126     virtual void result(bool accepted) = 0;
00127   };
00128 
00132   struct ArakMarkovChainTraits {
00133     typedef ArakProcess DistributionType;
00134     typedef Coloring StateType;
00135     typedef ColoringMove MoveType;
00136     typedef ColoringProposal ProposalType;
00137   };
00138 
00143   typedef MarkovChain<ArakMarkovChainTraits> ArakMarkovChain;
00144 
00149   typedef AnnealedMarkovChain<ArakMarkovChainTraits> AnnealedArakMarkovChain;
00150 
00155   typedef StochasticHillClimber<ArakMarkovChainTraits> HillClimbingArakMarkovChain;
00156 }
00157 
00158 #endif

Generated on Wed May 25 14:39:16 2005 for Arak by doxygen 1.3.6