00001 #define __cplusplus__ 00002 #ifndef __POSSPOTTSMRF__ 00003 #define __POSSPOTTSMRF__ 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 <Conditional_MRF.hpp> 00014 00015 using namespace std; 00016 00027 class Conditional_Potts : public Conditional_MRF { 00029 vector<double> Beta ; 00030 00032 vector<double> S_mf; 00034 bool precomputed_smf; 00035 00036 void Precompute_Smf( ); 00037 00038 public : 00040 Conditional_Potts(); 00042 Conditional_Potts(Neighborhood_System *nhs, vector<uint> const& subk); 00044 Conditional_Potts(Neighborhood_System *nhs, vector<uint> const& subk, vector<double> const &beta); 00046 ~Conditional_Potts(); 00047 00049 void DeleteAll(); 00050 00052 void Get_Beta(vector<double> &beta); 00053 00055 void Set_Beta(vector<double> const &beta); 00056 00058 double H(uint i, uint l, uint k, vector<uint> const & Z); 00060 double Hmf(uint i, uint l, uint k); 00061 00063 void ReadFromFile(string filename); 00065 void WriteToFile(string filename); 00066 00068 void Read_Params(istream & is); 00070 void Write_Params(ostream & os); 00071 00073 uint Degrees_Of_Freedom(); 00074 00076 void Info(); 00077 00078 }; 00079 00080 #endif