aGrUM  0.16.0
graphChangesGenerator4DiGraph.h
Go to the documentation of this file.
1 
61 #ifndef GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_DIGRAPH_H
62 #define GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_DIGRAPH_H
63 
64 #include <agrum/agrum.h>
65 #include <agrum/core/OMPThreads.h>
66 #include <agrum/core/set.h>
67 #include <agrum/graphs/diGraph.h>
70 
71 namespace gum {
72 
73  namespace learning {
74 
116  template < typename STRUCT_CONSTRAINT >
118  public:
121 
124 
125  // ##########################################################################
127  // ##########################################################################
129 
131  GraphChangesGenerator4DiGraph(STRUCT_CONSTRAINT& constraint);
132 
136 
140 
143 
145 
146  // ##########################################################################
148  // ##########################################################################
150 
154 
158 
160 
161  // ##########################################################################
163  // ##########################################################################
165 
167  iterator begin() const;
168 
170  const iterator& end() const;
171 
173 
174  // ##########################################################################
176  // ##########################################################################
178 
180  STRUCT_CONSTRAINT& constraint() const noexcept;
181 
184  void setGraph(const DiGraph& graph);
185 
187  void modifyGraph(const ArcAddition& change);
188 
190  void modifyGraph(const ArcDeletion& change);
191 
193  void modifyGraph(const ArcReversal& change);
194 
196  void modifyGraph(const GraphChange& change);
197 
199  void clearChanges() noexcept;
200 
202  void notifyGetCompleted();
203 
205  void setMaxNbThreads(Size nb) noexcept;
206 
208 
209  protected:
212 
214  STRUCT_CONSTRAINT* _constraint;
215 
218 
220  void _createChanges();
221 
222  private:
224 #if defined(_OPENMP) && !defined(GUM_DEBUG_MODE)
226 #else
228 #endif /* GUM_DEBUG_MODE */
229  };
230 
231  } /* namespace learning */
232 
233 } /* namespace gum */
234 
237 
238 #endif /* GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_DIGRAPH_H */
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.
iterator const_iterator
the const iterator for parsing the list of graph change operators
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.
The class for notifying learning algorithms of new arc additionsThis class is convenient to know at c...
Definition: graphChange.h:150
Size __max_threads_number
the max number of threads authorized
void modifyGraph(const ArcAddition &change)
notify the generator of a change applied to the graph
The class for notifying learning algorithms of arc removalsThis class is convenient to know at compil...
Definition: graphChange.h:216
unsigned int getMaxNumberOfThreads()
Returns the maximum number of threads at any time.
void setMaxNbThreads(Size nb) noexcept
sets the maximum number of threads used to compute the set of changes
void setGraph(const DiGraph &graph)
sets a new graph from which the generator will compute possible changes
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
const iterator & end() const
returns an (unsafe) iterator on the end of the list of operators
Representation of a setA Set is a structure that contains arbitrary elements.
Definition: set.h:165
iterator begin() const
returns an (unsafe) iterator on the beginning of the list of operators
DiGraph _graph
the graph on which we generate operators
Set< GraphChange > _legal_changes
the current set of graph changes
Base class for all oriented graphs.
Definition: diGraph.h:111
virtual ~GraphChangesGenerator4DiGraph()
destructor
The basic class for computing the next graph changes possible in a structure learning algorithm...
typename Set< GraphChange >::const_iterator iterator
the iterator for parsing the list of possible graph change operators
STRUCT_CONSTRAINT & constraint() const noexcept
returns the constraint that is used by the generator
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > & operator=(const GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > &from)
copy operator
Unsafe iterators for the Set class.
Definition: set.h:1025
GraphChangesGenerator4DiGraph(STRUCT_CONSTRAINT &constraint)
default constructor
void clearChanges() noexcept
empty the set of possible change operators that can be applied
The class for notifying learning algorithms of arc reversalsThis class is convenient to know at compi...
Definition: graphChange.h:282
STRUCT_CONSTRAINT * _constraint
the structural constraint used to restrict the changes
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
void _createChanges()
create the set of legal and illegal changes from a given graph
void notifyGetCompleted()
notifies the generator that we have parsed all its legal changes
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:48