Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

Seg_Algorithm.hpp

00001 #define __cplusplus__
00002 #ifndef __SEGALGO__
00003 #define __SEGALGO__
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 <Seg_Model.hpp>
00014 
00015 using namespace std;
00016 
00017 #define ITER_CRIT (0)
00018 #define CL_CRIT (1)
00019 #define FUZZY_CRIT (2)
00020 #define HARD_CRIT (3)
00021 #define MAX_CRIT (4)
00022 
00023 
00033 class Seg_Algorithm{
00034 
00035 protected :
00036   
00038   vector<double> fuzzy;
00039 
00041   vector<double> Crit_Values;
00043   uint Criterion;
00045   double Tol;
00046   
00048   double Old_CL;
00050   vector<double> old_fuzzy;
00052   vector<uint> old_map_labs;
00053   
00054 public :
00056         virtual uint Get_N();
00057 
00058         virtual uint Get_K();
00059   
00060   virtual ~Seg_Algorithm();
00061   
00063   virtual void Init_Labels(vector<uint> const &  labs);
00065   virtual void Init_Random();
00066 
00068   bool HasConverged();
00069 
00071   virtual void Compute_MAP_Labels(vector<uint> & Labels);
00072   
00073   virtual void Compute_fuzzy(uint i,vector<double> &probs);
00074   
00075   // Stopping criteria
00077   virtual void Compute_CLCrit();
00079   virtual void Compute_FuzzyCrit();
00081   virtual void Compute_HardCrit();
00082 
00084   void Display_Stopping_Rule();
00085   
00087   void Update_Stopping_Rules();
00089   void Use_Default_Stopping_Rule();
00091   void Set_Stopping_Rule(uint crit, double tol);
00092 
00094   virtual void Info();
00095   
00097   virtual void Run(uint nbiter);
00099   void RunUntilConvergence();
00101   virtual void M_Step();
00103   virtual void E_Step(); 
00104       
00105 };
00106 
00107 
00108 #endif

Generated on Thu Jan 12 11:54:58 2006 for NEM by  doxygen 1.4.4