00001 #define __cplusplus__ 00002 #ifndef __POTTSMRF__ 00003 #define __POTTSMRF__ 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 00027 class Potts : public MRF { 00029 double Beta ; 00030 00031 public : 00033 Potts(); 00035 Potts(uint k); 00037 Potts(Neighborhood_System *nhs, uint k); 00039 Potts(Neighborhood_System *nhs, uint k, double bet); 00041 ~Potts(); 00042 00044 void DeleteAll(); 00045 00047 double Get_Beta(); 00049 void Get_Beta(vector<double> & beta); 00050 00052 double H(uint i, uint k, vector<uint> const & Z); 00054 double Hmf(uint i, uint k); 00055 00057 void ReadFromFile(string filename); 00059 void WriteToFile(string filename); 00060 00062 void Gradient(vector<double> const & tik, vector<double> & Q); 00064 void Update_Gradient(vector<double> const & Q); 00065 00067 void Read_Params(istream & is); 00069 void Write_Params(ostream & os); 00070 00072 uint Degrees_Of_Freedom(); 00073 00075 void Info(); 00076 00077 }; 00078 00079 #endif