00001 #define __cplusplus__ 00002 #ifndef __EFPOTTSMRF__ 00003 #define __EFPOTTSMRF__ 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 <MRF.hpp> 00014 00015 using namespace std; 00016 00026 class External_Potts : public MRF { 00028 double Beta ; 00030 vector<double> Alpha; 00031 00032 public : 00034 External_Potts(); 00036 External_Potts(Neighborhood_System *nhs, uint k ); 00038 External_Potts(Neighborhood_System *nhs, uint k , 00039 vector<double> const & alph,double bet); 00041 ~External_Potts(); 00042 00044 void DeleteAll(); 00045 00047 void Get_Alpha(vector<double> & alpha); 00049 double Get_Beta(); 00051 void Get_Beta(vector<double> & beta); 00052 00054 double H(uint i, uint k, vector<uint> const & Z); 00056 double Hmf(uint i, uint k); 00057 00059 void ReadFromFile(string filename); 00061 void WriteToFile(string filename); 00062 00063 00065 void Gradient(vector<double> const & tik, vector<double> & Q); 00067 void Update_Gradient(vector<double> const & Q); 00068 00070 void Read_Params(istream & is); 00072 void Write_Params(ostream & os); 00073 00075 uint Degrees_Of_Freedom(); 00076 00078 void Info(); 00079 00080 }; 00081 00082 #endif