Merged regiongraph.* and daialg.* from SVN head,
[libdai.git] / include / dai / mf.h
index 01d6721..6318886 100644 (file)
@@ -50,6 +50,8 @@ class MF : public DAIAlgFG {
         // copy constructor
         MF( const MF& x ) : DAIAlgFG(x), _beliefs(x._beliefs), props(x.props), maxdiff(x.maxdiff) {}
         MF* clone() const { return new MF(*this); }
+        /// Create (virtual constructor)
+        virtual MF* create() const { return new MF(); }
         // construct MF object from FactorGraph
         MF( const FactorGraph & fg, const PropertySet &opts ) : DAIAlgFG(fg), _beliefs(), props(), maxdiff(0.0) {
             setProperties( opts );
@@ -70,17 +72,19 @@ class MF : public DAIAlgFG {
         std::string identify() const;
         void create();
         void init();
+        /// Clear messages and beliefs corresponding to the nodes in ns
+        virtual void init( const VarSet &ns );
         double run();
         Factor beliefV (size_t i) const;
         Factor belief (const Var &n) const;
         Factor belief (const VarSet &ns) const;
         std::vector<Factor> beliefs() const;
-        Complex logZ() const;
+        Real logZ() const;
 
-        void init( const VarSet &ns );
-        void undoProbs( const VarSet &ns ) { FactorGraph::undoProbs(ns); init(ns); }
+        void restoreFactors( const VarSet &ns ) { FactorGraph::restoreFactors(ns); init(ns); }
         void setProperties( const PropertySet &opts );
         PropertySet getProperties() const;
+        std::string printProperties() const;
         double maxDiff() const { return maxdiff; }
 };