d44cf0ef1e7793e761daf228df3270c5327875b0
1 /* Copyright (C) 2006-2008 Joris Mooij [j dot mooij at science dot ru dot nl]
2 Radboud University Nijmegen, The Netherlands
4 This file is part of libDAI.
6 libDAI is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 libDAI is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with libDAI; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 #ifndef __defined_libdai_mf_h
23 #define __defined_libdai_mf_h
27 #include <dai/daialg.h>
28 #include <dai/factorgraph.h>
34 class MF
: public DAIAlgFG
{
36 std::vector
<Factor
> _beliefs
;
39 // default constructor
40 MF() : DAIAlgFG(), _beliefs() {};
42 MF(const MF
& x
) : DAIAlgFG(x
), _beliefs(x
._beliefs
) {};
43 MF
* clone() const { return new MF(*this); }
44 // construct MF object from FactorGraph
45 MF(const FactorGraph
& fg
, const Properties
&opts
) : DAIAlgFG(fg
, opts
) {
46 assert( checkProperties() );
49 // assignment operator
50 MF
& operator=(const MF
& x
) {
52 DAIAlgFG::operator=(x
);
53 _beliefs
= x
._beliefs
;
58 static const char *Name
;
59 std::string
identify() const;
63 Factor
belief1 (size_t i
) const;
64 Factor
belief (const Var
&n
) const;
65 Factor
belief (const VarSet
&ns
) const;
66 std::vector
<Factor
> beliefs() const;
69 void init( const VarSet
&ns
);
70 void undoProbs( const VarSet
&ns
) { FactorGraph::undoProbs(ns
); init(ns
); }
71 bool checkProperties();
75 } // end of namespace dai