60 lines
2.2 KiB
C++
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
|
|
|