aGrUM  0.16.0
DAGmodel.h
Go to the documentation of this file.
1 
30 #ifndef GUM_DAGMODEL_H
31 #define GUM_DAGMODEL_H
32 #include <agrum/agrum.h>
34 
35 #include <agrum/graphs/DAG.h>
36 #include <agrum/graphs/undiGraph.h>
37 
39 
40 namespace gum {
41 
48  class DAGmodel {
49  public:
52 
56  DAGmodel();
57 
61  virtual ~DAGmodel();
62 
66  DAGmodel(const DAGmodel& source);
67 
71 
76  const std::string& property(const std::string& name) const;
77 
82  const std::string& propertyWithDefault(const std::string& name,
83  const std::string& byDefault) const;
84 
88  void setProperty(const std::string& name, const std::string& value);
89 
93 
96  const DAG& dag() const;
97 
103  virtual const VariableNodeMap& variableNodeMap() const = 0;
104 
108  Size size() const;
109 
113  Size sizeArcs() const;
114 
118  bool empty() const;
119 
120  const NodeGraphPart& nodes() const;
121 
126  virtual const DiscreteVariable& variable(NodeId id) const = 0;
127 
132  virtual NodeId nodeId(const DiscreteVariable& var) const = 0;
133 
136  virtual NodeId idFromName(const std::string& name) const = 0;
137 
140  virtual const DiscreteVariable&
141  variableFromName(const std::string& name) const = 0;
142 
144  virtual Instantiation completeInstantiation() const final;
146 
149  const ArcSet& arcs() const;
150 
152 
155  const NodeSet& parents(const NodeId id) const;
156  const NodeSet& parents(const std::string& name) const {
157  return parents(idFromName(name));
158  };
159 
161 
164  const NodeSet& children(const NodeId id) const;
165  const NodeSet& children(const std::string& name) const {
166  return parents(idFromName(name));
167  };
169 
172 
177  const UndiGraph& moralGraph(bool clear = true) const;
178 
184  const Sequence< NodeId >& topologicalOrder(bool clear = true) const;
185 
187 
190  double log10DomainSize() const;
191 
194  bool hasSameStructure(const DAGmodel& other);
195 
196  protected:
200  DAGmodel& operator=(const DAGmodel& source);
201 
204 
205  private:
208  void __moralGraph() const;
209 
212 
216 
222  };
223 } // namespace gum
224 
225 #ifndef GUM_NO_INLINE
227 #endif /* GUM_NO_INLINE */
228 
229 #endif /* GUM_DAGMODEL_H */
DAGmodel & operator=(const DAGmodel &source)
Private copy operator.
Definition: DAGmodel.cpp:78
virtual const DiscreteVariable & variableFromName(const std::string &name) const =0
Getter by name.
const ArcSet & arcs() const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:104
Virtual base class for PGMs using a DAG.
Definition: DAGmodel.h:48
const NodeSet & children(const NodeId id) const
returns the set of nodes with arc outgoing from a given node
Definition: DAGmodel_inl.h:111
UndiGraph * __mutableMoralGraph
The moral graph of this Directed Graphical Model.
Definition: DAGmodel.h:211
const NodeSet & parents(const NodeId id) const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel_inl.h:106
Size sizeArcs() const
Returns the number of arcs in this Directed Graphical Model.
Definition: DAGmodel_inl.h:102
const NodeSet & parents(const std::string &name) const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel.h:156
Container used to map discrete variables with nodes.
virtual ~DAGmodel()
Destructor.
Definition: DAGmodel.cpp:44
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Base class for discrete random variable.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
virtual const VariableNodeMap & variableNodeMap() const =0
Returns a constant reference to the VariableNodeMap of this Directed Graphical Model.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual NodeId idFromName(const std::string &name) const =0
Getter by name.
HashTable< std::string, std::string > * __propertiesMap
The properties of this Directed Graphical Model. Initialized using a lazy instantiation.
Definition: DAGmodel.h:215
bool hasSameStructure(const DAGmodel &other)
Definition: DAGmodel.cpp:121
Size size() const
Returns the number of variables in this Directed Graphical Model.
Definition: DAGmodel_inl.h:96
DAG _dag
The DAG of this Directed Graphical Model.
Definition: DAGmodel.h:203
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:117
const std::string & property(const std::string &name) const
Return the value of the property name of this DAGModel.
Definition: DAGmodel_inl.h:37
void setProperty(const std::string &name, const std::string &value)
Add or change a property of this DAGModel.
Definition: DAGmodel_inl.h:56
void __moralGraph() const
Returns the moral graph of this DAGModel.
Definition: DAGmodel.cpp:53
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:115
virtual const DiscreteVariable & variable(NodeId id) const =0
Returns a constant reference over a variabe given it&#39;s node id.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Class for node sets in graph.
const std::string & propertyWithDefault(const std::string &name, const std::string &byDefault) const
Return the value of the property name of this DAGModel.
Definition: DAGmodel_inl.h:48
virtual Instantiation completeInstantiation() const final
Get an instantiation over all the variables of the model.
Definition: DAGmodel_inl.h:86
Class for assigning/browsing values to tuples of discrete variables.
Definition: instantiation.h:83
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:101
bool empty() const
Retursn true if this Directed Graphical Model is empty.
Definition: DAGmodel_inl.h:99
HashTable< std::string, std::string > & __properties() const
Return the properties of this Directed Graphical Model and initialize the hash table is necessary...
Definition: DAGmodel_inl.h:66
const NodeSet & children(const std::string &name) const
returns the set of nodes with arc ingoing to a given node
Definition: DAGmodel.h:165
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
double log10DomainSize() const
Definition: DAGmodel_inl.h:75
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:63
Size NodeId
Type for node ids.
Definition: graphElements.h:98
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual NodeId nodeId(const DiscreteVariable &var) const =0
Return id node src discrete var pointer.