⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 probabilisticmodel.h.svn-base

📁 Probabilistic graphical models in matlab.
💻 SVN-BASE
字号:
#include <iostream>#include <fstream>#include <boost/graph/adjacency_list.hpp>class DiscretePotential;class DiscreteRandomVariable;template <class A, class B> class MessageNode;// ****************** ProbabilisticModel Declaration (BaseClass) ***************//class ProbabilisticModel{	public:		virtual ~ProbabilisticModel();		// Virtual functions (interface)		virtual bool unserialize(const std::string &) = 0;	virtual void get_inference_mp() = 0;	virtual void get_tree_partition() = 0;	virtual void get_inference_loopy(const unsigned int, const bool) = 0;	virtual void get_inference_gibbs(const unsigned int, const bool) = 0;	virtual void get_inference_tree_gibbs(const unsigned int, const bool, const bool) = 0;	virtual bool serialize_partition (std::ofstream &) = 0;	virtual bool serialize(std::ofstream &) = 0;	virtual double compute_error_to_reference() = 0;};// ****************** End of ProbabilisticModel Declaration (BaseClass) ***************//// ****************** DerivedProbabilisticModel Declaration ***************//template <class Graph>class DerivedProbabilisticModel : public ProbabilisticModel{public:		DerivedProbabilisticModel(const unsigned int);		bool unserialize(const std::string &);	bool unserialize_internal_potentials(std::ifstream &);	bool unserialize_ground_truth(std::ifstream &);		void get_inference_mp();	void get_tree_partition();	void get_inference_loopy(const unsigned int, const bool);	void get_inference_gibbs(const unsigned int, const bool);	void get_inference_tree_gibbs(const unsigned int, const bool, const bool);	bool serialize_marginals (std::ofstream &);	bool serialize_partition (std::ofstream &);	bool serialize (std::ofstream &);			virtual bool unserialize_structure(std::ifstream &) = 0;	virtual bool unserialize_all_potential_tables(std::ifstream &) = 0;	virtual bool unserialize_potential_tables(std::ifstream &) = 0;	virtual bool unserialize_all_internal_potentials(std::ifstream &) = 0;	virtual bool unserialize_all_random_variable_sizes(std::ifstream &) = 0;	virtual bool unserialize_random_variable_sizes(std::ifstream &) = 0;	virtual bool unserialize_observations(std::ifstream &) = 0;	virtual bool unserialize_links(std::ifstream &) = 0;	protected:			Graph g;	std::vector <unsigned int> number_of_trees;};// ****************** End of DerivedProbabilisticModel Declaration ***************//// ****************** DiscreteProbabilisticModel Declaration ***************//typedef boost::property< boost::edge_index_t, unsigned int, DiscretePotential *> DiscretePairwiseEdgeProperty;typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, MessageNode<DiscreteRandomVariable, boost::adjacency_list_traits<boost::vecS, boost::vecS, boost::undirectedS>::vertex_descriptor> *, 	DiscretePairwiseEdgeProperty > DiscretePairwiseGraph;class DiscreteProbabilisticModel : public DerivedProbabilisticModel <DiscretePairwiseGraph>{public:		typedef DiscretePairwiseGraph Graph;		// Constructor	DiscreteProbabilisticModel(unsigned int );		// Inherited virtual functions	bool unserialize_structure(std::ifstream &);	bool unserialize_all_potential_tables(std::ifstream &);	bool unserialize_all_internal_potentials(std::ifstream &);	bool unserialize_potential_tables(std::ifstream &);	bool unserialize_all_random_variable_sizes(std::ifstream &);	bool unserialize_random_variable_sizes(std::ifstream &);	bool unserialize_observations(std::ifstream &);	bool unserialize_links(std::ifstream &);		double compute_error_to_reference();private:		};// ****************** End of DiscreteProbabilisticModel Declaration ***************//// ****************** DiscreteFactorGraphProbabilisticModel Declaration ***************//typedef boost::property< boost::edge_index_t, unsigned int> EdgeProperty;typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, MessageNode<DiscreteRandomVariable, boost::adjacency_list_traits<boost::vecS, boost::vecS, boost::undirectedS>::vertex_descriptor> *, 	EdgeProperty > DiscreteFactorGraph;class DiscreteFactorGraphProbabilisticModel  : public DerivedProbabilisticModel <DiscreteFactorGraph>{	public:		typedef DiscreteFactorGraph Graph;		// Constructor		DiscreteFactorGraphProbabilisticModel(unsigned int);		// Inherited virtual functions		bool unserialize_structure(std::ifstream &);	bool unserialize_all_potential_tables(std::ifstream &);	bool unserialize_all_internal_potentials(std::ifstream &);	bool unserialize_potential_tables(std::ifstream &);	bool unserialize_all_random_variable_sizes(std::ifstream &);	bool unserialize_random_variable_sizes(std::ifstream &);	bool unserialize_observations(std::ifstream &);	bool unserialize_links(std::ifstream &);		double compute_error_to_reference();	private:	void create_random_graph(const unsigned int);			unsigned int number_random_variables;};// ****************** End of DiscreteFactorGraphProbabilisticModel Declaration ***************//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -