Cleaned up variable elimination code in ClusterGraph
[libdai.git] / include / dai / mr.h
index 3c25b8f..ce8a7c6 100644 (file)
@@ -33,6 +33,7 @@ namespace dai {
 
 /// Approximate inference algorithm by Montanari and Rizzo [\ref MoR05]
 /** \author Bastian Wemmenhove wrote the original implementation before it was merged into libDAI
+ *  \todo Clean up code (use a BipartiteGraph-like implementation for the graph structure)
  */
 class MR : public DAIAlgFG {
     private:
@@ -115,8 +116,9 @@ class MR : public DAIAlgFG {
     //@{
         virtual MR* clone() const { return new MR(*this); }
         virtual std::string identify() const;
-        virtual Factor belief( const Var &n ) const;
-        virtual Factor belief( const VarSet &/*ns*/ ) const { DAI_THROW(NOT_IMPLEMENTED); return Factor(); }
+        virtual Factor belief( const Var &v ) const { return beliefV( findVar( v ) ); }
+        virtual Factor belief( const VarSet &/*vs*/ ) const { DAI_THROW(NOT_IMPLEMENTED); return Factor(); }
+        virtual Factor beliefV( size_t i ) const;
         virtual std::vector<Factor> beliefs() const;
         virtual Real logZ() const { DAI_THROW(NOT_IMPLEMENTED); return 0.0; }
         virtual void init() {}