aGrUM  0.17.2
a C++ library for (probabilistic) graphical models
DAGmodel.h
Go to the documentation of this file.
1 
29 #ifndef GUM_DAGMODEL_H
30 #define GUM_DAGMODEL_H
31 
32 #include <agrum/agrum.h>
35 
36 #include <agrum/tools/graphs/DAG.h>
38 
39 namespace gum {
40 
47  class DAGmodel: public GraphicalModel {
48  public:
51 
55  DAGmodel();
56 
60  virtual ~DAGmodel();
61 
65  DAGmodel(const DAGmodel& source);
66 
70 
74 
77  const DAG& dag() const;
78 
82  virtual Size size() const final;
83 
87  Size sizeArcs() const;
88 
89  const NodeGraphPart& nodes() const;
90 
95  virtual const DiscreteVariable& variable(NodeId id) const = 0;
96 
101  virtual NodeId nodeId(const DiscreteVariable& var) const = 0;
102 
105  virtual NodeId idFromName(const std::string& name) const = 0;
106 
109  virtual const DiscreteVariable&
110  variableFromName(const std::string& name) const = 0;
111 
113 
116  const ArcSet& arcs() const;
117 
119 
122  const NodeSet& parents(const NodeId id) const;
123  const NodeSet& parents(const std::string& name) const;
124 
126 
129  const NodeSet& children(const NodeId id) const;
130  const NodeSet& children(const std::string& name) const;
132 
135 
140  const UndiGraph& moralGraph(bool clear = true) const;
141 
147  const Sequence< NodeId >& topologicalOrder(bool clear = true) const;
148 
150 
153  bool hasSameStructure(const DAGmodel& other);
154 
155  protected:
159  DAGmodel& operator=(const DAGmodel& source);
160 
163 
164  private:
167  void __moralGraph() const;
168 
171  };
172 } // namespace gum
173 
174 #ifndef GUM_NO_INLINE
176 #endif /* GUM_NO_INLINE */
177 
178 #endif /* GUM_DAGMODEL_H */
DAGmodel & operator=(const DAGmodel &source)
Private copy operator.
Definition: DAGmodel.cpp:69
virtual const DiscreteVariable & variableFromName(const std::string &name) const =0
Getter by name.
Virtual base class for probabilistic graphical models.
const ArcSet & arcs() const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:44
Virtual base class for PGMs using a DAG.
Definition: DAGmodel.h:47
const NodeSet & children(const NodeId id) const
returns the set of nodes with arc outgoing from a given node
Definition: DAGmodel_inl.h:53
UndiGraph * __mutableMoralGraph
The moral graph of this Directed Graphical Model.
Definition: DAGmodel.h:170
const NodeSet & parents(const NodeId id) const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:46
Size sizeArcs() const
Returns the number of arcs in this Directed Graphical Model.
Definition: DAGmodel_inl.h:42
virtual Size size() const final
Returns the number of variables in this Directed Graphical Model.
Definition: DAGmodel_inl.h:39
virtual ~DAGmodel()
Destructor.
Definition: DAGmodel.cpp:39
Copyright 2005-2020 Pierre-Henri WUILLEMIN () et Christophe GONZALES () info_at_agrum_dot_org.
Base class for discrete random variable.
Copyright 2005-2020 Pierre-Henri WUILLEMIN () et Christophe GONZALES () info_at_agrum_dot_org.
Definition: agrum.h:25
virtual NodeId idFromName(const std::string &name) const =0
Getter by name.
bool hasSameStructure(const DAGmodel &other)
Definition: DAGmodel.cpp:103
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:162
const Sequence< NodeId > & topologicalOrder(bool clear=true) const
The topological order stays the same as long as no variable or arcs are added or erased src the topol...
Definition: DAGmodel.cpp:99
void __moralGraph() const
Returns the moral graph of this DAGModel.
Definition: DAGmodel.cpp:44
DAGmodel()
Default constructor.
Definition: DAGmodel.cpp:30
const NodeGraphPart & nodes() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:60
virtual const DiscreteVariable & variable(NodeId id) const =0
Returns a constant reference over a variable given it&#39;s node id.
Copyright 2005-2020 Pierre-Henri WUILLEMIN () et Christophe GONZALES () info_at_agrum_dot_org.
Copyright 2005-2020 Pierre-Henri WUILLEMIN () et Christophe GONZALES () info_at_agrum_dot_org.
Class for node sets in graph.
const UndiGraph & moralGraph(bool clear=true) const
The node&#39;s id are coherent with the variables and nodes of the topology.
Definition: DAGmodel.cpp:83
Base class for undirected graphs.
Definition: undiGraph.h:109
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48
Copyright 2005-2020 Pierre-Henri WUILLEMIN () et Christophe GONZALES () info_at_agrum_dot_org.
Base class for dag.
Definition: DAG.h:102
const DAG & dag() const
Returns a constant reference to the dag of this Bayes Net.
Definition: DAGmodel_inl.h:36
Size NodeId
Type for node ids.
Definition: graphElements.h:98
Copyright 2005-2020 Pierre-Henri WUILLEMIN () et Christophe GONZALES () info_at_agrum_dot_org.
virtual NodeId nodeId(const DiscreteVariable &var) const =0
Return id node src discrete var pointer.