00001 #define __cplusplus__ 00002 #ifndef __MRF__ 00003 #define __MRF__ 00004 00005 #include<iostream> 00006 #include<istream> 00007 #include<fstream> 00008 #include<string> 00009 #include<vector> 00010 #include<sstream> 00011 #include <cmath> 00012 00013 #include <Neighborhood_System.hpp> 00014 #include <Random_Field.hpp> 00015 00016 using namespace std; 00017 00028 class MRF: public Random_Field{ 00029 00030 protected : 00032 uint K; 00033 00035 void Precompute_Smf(); 00036 00037 public : 00038 00040 virtual ~MRF(); 00041 00042 00044 uint Get_K(); 00045 00047 virtual double H(uint i, uint k, vector<uint> const & Z); 00049 virtual double Hmf(uint i, uint k); 00050 00052 double PL(vector<uint> const & Z); 00053 00055 virtual void Gradient(vector<double> const & tik, vector<double> & Q); 00057 virtual void Update_Gradient(vector<double> const & Q); 00058 00060 virtual void Read_Params(istream & is); 00062 virtual void Write_Params(ostream & os); 00063 00065 virtual uint Degrees_Of_Freedom(); 00066 00068 virtual void Info(); 00069 }; 00070 00071 #endif