aGrUM  0.14.2
graphChangesGenerator4K2.h File Reference

The basic class for computing the set of digraph changes allowed by the user to be executed by the learning algorithms. More...

+ Include dependency graph for graphChangesGenerator4K2.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  gum::learning::__GraphChangesGenerator4K2
 
class  gum::learning::GraphChangesGenerator4K2< STRUCT_CONSTRAINT >
 The basic class for computing the next graph changes possible in a structure learning algorithm. More...
 

Namespaces

 gum
 gum is the global namespace for all aGrUM entities
 
 gum::learning
 

Detailed Description

The basic class for computing the set of digraph changes allowed by the user to be executed by the learning algorithms.

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:

  • void setGraph ( const DiGraph& ) : assigns a new graph as a starting point to the generator of graph change operators
  • void modifyGraph ( const GraphChange& ) : indicate to the generator that the graph has been changed and that we need to compute the new operators that result from this change
  • void clearChanges () : empty the set of possible changes
  • methods begin () and end () that return iterators allowing to parse the available set of changes.

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.

Author
Christophe GONZALES and Pierre-Henri WUILLEMIN

Definition in file graphChangesGenerator4K2.h.