#ifndef BAYESIAN_NETWORK_H #define BAYESIAN_NETWORK_H #include #include using namespace std; class BayesianNode; class Distribution; class BayesianNetwork { public: // constructs BayesianNetwork (void); // destruct virtual ~BayesianNetwork (void); // methods virtual void addNode (string, vector, int, int); virtual void addNode (string, vector, double*, int, vector); BayesianNode* getNode (string) const; void addDistribution (int, double*, int, vector); vector getNodes (void) const; vector getRootNodes (void) const; vector getLeafNodes (void) const; bool isPolyTree (void) const; void printNetwork (void) const; protected: // members vector nodes_; vector dists_; private: BayesianNetwork (const BayesianNetwork&); // disallow copy void operator= (const BayesianNetwork&); // disallow assign bool containsCycle (void) const; bool containsCycle (int, int, vector&) const; int getIndexOf (const BayesianNode*) const; vector getAdjacentVertexes (int) const ; }; #endif // BAYESIAN_NETWORK_H