📄 probabilisticmodel.h.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 + -