This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/packages/CLPBN/clpbn/bp/BayesianNode.h
2011-02-23 15:31:56 +00:00

60 lines
2.2 KiB
C++

#ifndef BAYESIAN_NODE_H
#define BAYESIAN_NODE_H
#include <vector>
#include <string>
#include "Distribution.h"
#include "CptEntry.h"
using namespace std;
class BayesianNode
{
public:
// constructs
BayesianNode (string, vector<BayesianNode*>, Distribution*, int = -1);
// destruct
~BayesianNode (void);
// methods
string getVariableName (void) const;
vector<BayesianNode*> getParents (void) const;
vector<BayesianNode*> getChilds (void) const;
void addChild (BayesianNode*);
double* getParameters (void);
double* getRow (int) const;
double getProbability (CptEntry&);
void setProbability (CptEntry&, double);
bool isRoot (void);
bool isLeaf (void);
int getRowSize (void) const;
int getCptSize (void);
vector<string> getDomain (void) const;
int getDomainSize (void) const;
vector<CptEntry> getCptEntries (const vector<pair<int, int> >&);
vector<CptEntry> getCptEntriesOfRow (int);
int getIndexOfParent (const BayesianNode*) const;
bool hasEvidence (void);
int getEvidence (void);
void setEvidence (int);
string entryToString (const CptEntry& entry) const;
private:
BayesianNode (const BayesianNode&); // disallow copy
void operator= (const BayesianNode&); // disallow assign
// methods
vector<string> getDomainHeaders (void) const;
friend ostream& operator << (ostream&, const BayesianNode&);
// members
string varName_; // variable name
vector<BayesianNode*> parents_; // parents of this node
vector<BayesianNode*> childs_; // children of this node
Distribution* dist_;
int evidence_;
};
ostream& operator << (ostream&, const BayesianNode&);
#endif // BAYESIAN_NODE_H