![]() |
aGrUM
0.20.3
a C++ library for (probabilistic) graphical models
|
The basic class for computing the next graph changes possible in a structure learning algorithm. More...
#include <graphChangesGenerator4DiGraph.h>
Public Member Functions | |
Constructors / Destructors | |
GraphChangesGenerator4DiGraph (STRUCT_CONSTRAINT &constraint) | |
default constructor More... | |
GraphChangesGenerator4DiGraph (const GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > &from) | |
copy constructor More... | |
GraphChangesGenerator4DiGraph (GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > &&from) | |
move operator More... | |
virtual | ~GraphChangesGenerator4DiGraph () |
destructor More... | |
Operators | |
GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > & | operator= (const GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > &from) |
copy operator More... | |
GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > & | operator= (GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > &&from) |
move operator More... | |
Iterators | |
iterator | begin () const |
returns an (unsafe) iterator on the beginning of the list of operators More... | |
const iterator & | end () const |
returns an (unsafe) iterator on the end of the list of operators More... | |
Accessors / Modifiers | |
STRUCT_CONSTRAINT & | constraint () const noexcept |
returns the constraint that is used by the generator More... | |
void | setGraph (const DiGraph &graph) |
sets a new graph from which the generator will compute possible changes More... | |
void | modifyGraph (const ArcAddition &change) |
notify the generator of a change applied to the graph More... | |
void | modifyGraph (const ArcDeletion &change) |
notify the generator of a change applied to the graph More... | |
void | modifyGraph (const ArcReversal &change) |
notify the generator of a change applied to the graph More... | |
void | modifyGraph (const GraphChange &change) |
notify the generator of a change applied to the graph More... | |
void | clearChanges () noexcept |
empty the set of possible change operators that can be applied More... | |
void | notifyGetCompleted () |
notifies the generator that we have parsed all its legal changes More... | |
void | setMaxNbThreads (Size nb) noexcept |
sets the maximum number of threads used to compute the set of changes More... | |
Public Types | |
using | iterator = typename Set< GraphChange >::const_iterator |
the iterator for parsing the list of possible graph change operators More... | |
using | const_iterator = iterator |
the const iterator for parsing the list of graph change operators More... | |
Protected Attributes | |
DiGraph | graph_ |
the graph on which we generate operators More... | |
STRUCT_CONSTRAINT * | constraint_ |
the structural constraint used to restrict the changes More... | |
Set< GraphChange > | legal_changes_ |
the current set of graph changes More... | |
Protected Member Functions | |
void | createChanges_ () |
create the set of legal and illegal changes from a given graph More... | |
The basic class for computing the next graph changes possible in a structure learning algorithm.
Structure learning algorithm try different modifications of the graph. Class GraphChangesGenerator4DiGraph provides a simple way to compute those that we wish to perform. For instance, in the basic LocalSearch algorithm for learning directed graphs, one may expect that all possible arc additions, deletions and reversals can be applied and GraphChangesGenerator4DiGraph provides exactly this set of operations. However, there may be cases where we would like to apply these operators, say, only on a subgraph. In this case, we should use the derived class of GraphChangesGenerator4DiGraph named GraphChangesGeneratorOnSubDiGraph. Anyway, all the search generators should have the following minimal methods:
Basically, the idea is to use method setGraph at the beginning of the structure learning in order to initialize the possible set of changes. Then, parse this set using a for ( auto iter = generator.begin (); iter != generator.end (); ++iter ) loop and compute the scores induced by these changes. When this is done, flush the generator by calling method clearChanges. Then iterate changes and after each new change applied, used again the iterator for loop, and so on. Note that, whenever you execute method modifyGraph, this will automatically flush the current list of changes and put into the list only the changes that are affected by the graph modification.
Definition at line 116 of file graphChangesGenerator4DiGraph.h.
using gum::learning::GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >::const_iterator = iterator |
the const iterator for parsing the list of graph change operators
Definition at line 122 of file graphChangesGenerator4DiGraph.h.
using gum::learning::GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >::iterator = typename Set< GraphChange >::const_iterator |
the iterator for parsing the list of possible graph change operators
Definition at line 119 of file graphChangesGenerator4DiGraph.h.
gum::learning::GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >::GraphChangesGenerator4DiGraph | ( | STRUCT_CONSTRAINT & | constraint | ) |
default constructor
gum::learning::GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >::GraphChangesGenerator4DiGraph | ( | const GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > & | from | ) |
copy constructor
gum::learning::GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >::GraphChangesGenerator4DiGraph | ( | GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > && | from | ) |
move operator
|
virtual |
destructor
|
virtual |
returns an (unsafe) iterator on the beginning of the list of operators
Implements gum::learning::IGraphChangesGenerator4DiGraph.
|
virtualnoexcept |
empty the set of possible change operators that can be applied
Implements gum::learning::IGraphChangesGenerator4DiGraph.
|
noexcept |
returns the constraint that is used by the generator
|
protected |
create the set of legal and illegal changes from a given graph
|
virtual |
returns an (unsafe) iterator on the end of the list of operators
Implements gum::learning::IGraphChangesGenerator4DiGraph.
|
virtual |
notify the generator of a change applied to the graph
Implements gum::learning::IGraphChangesGenerator4DiGraph.
|
virtual |
notify the generator of a change applied to the graph
Implements gum::learning::IGraphChangesGenerator4DiGraph.
|
virtual |
notify the generator of a change applied to the graph
Implements gum::learning::IGraphChangesGenerator4DiGraph.
|
virtual |
notify the generator of a change applied to the graph
Implements gum::learning::IGraphChangesGenerator4DiGraph.
|
virtual |
notifies the generator that we have parsed all its legal changes
Implements gum::learning::IGraphChangesGenerator4DiGraph.
GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >& gum::learning::GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >::operator= | ( | const GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > & | from | ) |
copy operator
GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >& gum::learning::GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT >::operator= | ( | GraphChangesGenerator4DiGraph< STRUCT_CONSTRAINT > && | from | ) |
move operator
|
virtual |
sets a new graph from which the generator will compute possible changes
Implements gum::learning::IGraphChangesGenerator4DiGraph.
|
noexcept |
sets the maximum number of threads used to compute the set of changes
|
private |
the max number of threads authorized
Definition at line 224 of file graphChangesGenerator4DiGraph.h.
|
protected |
the structural constraint used to restrict the changes
Definition at line 211 of file graphChangesGenerator4DiGraph.h.
|
protected |
the graph on which we generate operators
Definition at line 208 of file graphChangesGenerator4DiGraph.h.
|
protected |
the current set of graph changes
Definition at line 214 of file graphChangesGenerator4DiGraph.h.