aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > Class Template Reference

The basic class for computing the next graph changes possible in an undirected structure learning algorithm. More...

#include <graphChangesGenerator4UndiGraph.h>

Inheritance diagram for gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >:
Collaboration diagram for gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >:

Public Types

using iterator = typename Set< GraphChange >::const_iterator
 the iterator for parsing the list of possible graph change operators
using const_iterator = iterator
 the const iterator for parsing the list of graph change operators

Public Member Functions

Constructors / Destructors
 GraphChangesGenerator4UndiGraph (STRUCT_CONSTRAINT &constraint)
 default constructor
 GraphChangesGenerator4UndiGraph (const GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > &from)
 copy constructor
 GraphChangesGenerator4UndiGraph (GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > &&from)
 move operator
virtual ~GraphChangesGenerator4UndiGraph ()
 destructor
Operators
GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > & operator= (const GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > &from)
 copy operator
GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > & operator= (GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > &&from)
 move operator
Iterators
iterator begin () const
 returns an (unsafe) iterator on the beginning of the list of operators
const iteratorend () const
 returns an (unsafe) iterator on the end of the list of operators
Accessors / Modifiers
STRUCT_CONSTRAINT & constraint () const noexcept
 returns the constraint that is used by the generator
void setGraph (const UndiGraph &graph)
 sets a new graph from which the operator will compute possible changes
void modifyGraph (const EdgeAddition &change)
 notify the operator set of a change applied to the graph
void modifyGraph (const EdgeDeletion &change)
 notify the operator set of a change applied to the graph
void modifyGraph (const GraphChange &change)
 notify the operator set of a change applied to the graph
void clearChanges () noexcept
 empty the set of possible change operators that can be applied
void notifyGetCompleted ()
 notifies the generator that we have parsed all its legal changes
void setMaxNbThreads (Size nb) noexcept
 sets the maximum number of threads used to compute the set of changes

Protected Member Functions

void createChanges_ ()
 create the set of legal and illegal changes from a given graph

Protected Attributes

UndiGraph graph_
 the graph on which we generate operators
STRUCT_CONSTRAINT * constraint_
 a reference on the structural constraint used to restrict the changes
Set< GraphChangelegal_changes_
 the current set of operators

Private Attributes

Size _max_threads_number_ {gum::getNumberOfThreads()}
 the max number of threads authorized

Detailed Description

template<typename STRUCT_CONSTRAINT>
class gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >

The basic class for computing the next graph changes possible in an undirected structure learning algorithm.

Structure learning algorithm try different modifications of the graph. Class GraphChangesGenerator4UndiGraph provides a simple way to compute those that we wish to perform. For instance, in the basic PC algorithm for learning undirected graphs, one may expect that all possible edge additions and deletions can be applied and GraphChangesGenerator4UndiGraph provides exactly this set of operations. This class provides the following minimal methods:

  • void setGraph ( const UndiGraph& ) : assigns a new graph as a starting point to the generator of graph change operators
  • void modifyGraph ( const GraphChange& ) : indicate to the operator set 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 operators
  • methods begin () and end () that return iterators allowing to parse the available set of operators.

Basically, the idea is to use method setGraph at the beginning of the structure learning in order to initialize the possible set of operators. Then, parse this set using a for ( auto iter = operator_set.begin (); iter != operator_set.end (); ++iter ) loop and compute the scores induced by these changes. When this is done, flush the operator set 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 129 of file graphChangesGenerator4UndiGraph.h.

Member Typedef Documentation

◆ const_iterator

template<typename STRUCT_CONSTRAINT>
using gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::const_iterator = iterator

the const iterator for parsing the list of graph change operators

Definition at line 135 of file graphChangesGenerator4UndiGraph.h.

◆ iterator

template<typename STRUCT_CONSTRAINT>
using gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::iterator = typename Set< GraphChange >::const_iterator

the iterator for parsing the list of possible graph change operators

Definition at line 132 of file graphChangesGenerator4UndiGraph.h.

Constructor & Destructor Documentation

◆ GraphChangesGenerator4UndiGraph() [1/3]

template<typename STRUCT_CONSTRAINT>
gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::GraphChangesGenerator4UndiGraph ( STRUCT_CONSTRAINT & constraint)

default constructor

References constraint().

Referenced by GraphChangesGenerator4UndiGraph(), GraphChangesGenerator4UndiGraph(), ~GraphChangesGenerator4UndiGraph(), operator=(), and operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GraphChangesGenerator4UndiGraph() [2/3]

template<typename STRUCT_CONSTRAINT>
gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::GraphChangesGenerator4UndiGraph ( const GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > & from)

copy constructor

References GraphChangesGenerator4UndiGraph().

Here is the call graph for this function:

◆ GraphChangesGenerator4UndiGraph() [3/3]

template<typename STRUCT_CONSTRAINT>
gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::GraphChangesGenerator4UndiGraph ( GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > && from)

move operator

References GraphChangesGenerator4UndiGraph().

Here is the call graph for this function:

◆ ~GraphChangesGenerator4UndiGraph()

template<typename STRUCT_CONSTRAINT>
virtual gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::~GraphChangesGenerator4UndiGraph ( )
virtual

destructor

References GraphChangesGenerator4UndiGraph().

Here is the call graph for this function:

Member Function Documentation

◆ begin()

template<typename STRUCT_CONSTRAINT>
iterator gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::begin ( ) const
virtual

returns an (unsafe) iterator on the beginning of the list of operators

Implements gum::learning::IGraphChangesGenerator4UndiGraph.

◆ clearChanges()

template<typename STRUCT_CONSTRAINT>
void gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::clearChanges ( )
virtualnoexcept

empty the set of possible change operators that can be applied

Implements gum::learning::IGraphChangesGenerator4UndiGraph.

References clearChanges().

Referenced by clearChanges().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ constraint()

template<typename STRUCT_CONSTRAINT>
STRUCT_CONSTRAINT & gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::constraint ( ) const
noexcept

returns the constraint that is used by the generator

Referenced by GraphChangesGenerator4UndiGraph().

Here is the caller graph for this function:

◆ createChanges_()

template<typename STRUCT_CONSTRAINT>
void gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::createChanges_ ( )
protected

create the set of legal and illegal changes from a given graph

References createChanges_().

Referenced by createChanges_().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ end()

template<typename STRUCT_CONSTRAINT>
const iterator & gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::end ( ) const
virtual

returns an (unsafe) iterator on the end of the list of operators

Implements gum::learning::IGraphChangesGenerator4UndiGraph.

◆ modifyGraph() [1/3]

template<typename STRUCT_CONSTRAINT>
void gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::modifyGraph ( const EdgeAddition & change)
virtual

notify the operator set of a change applied to the graph

Implements gum::learning::IGraphChangesGenerator4UndiGraph.

References modifyGraph().

Referenced by modifyGraph(), modifyGraph(), and modifyGraph().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ modifyGraph() [2/3]

template<typename STRUCT_CONSTRAINT>
void gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::modifyGraph ( const EdgeDeletion & change)
virtual

notify the operator set of a change applied to the graph

Implements gum::learning::IGraphChangesGenerator4UndiGraph.

References modifyGraph().

Here is the call graph for this function:

◆ modifyGraph() [3/3]

template<typename STRUCT_CONSTRAINT>
void gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::modifyGraph ( const GraphChange & change)
virtual

notify the operator set of a change applied to the graph

Implements gum::learning::IGraphChangesGenerator4UndiGraph.

References modifyGraph().

Here is the call graph for this function:

◆ notifyGetCompleted()

template<typename STRUCT_CONSTRAINT>
void gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::notifyGetCompleted ( )
virtual

notifies the generator that we have parsed all its legal changes

Implements gum::learning::IGraphChangesGenerator4UndiGraph.

References notifyGetCompleted().

Referenced by notifyGetCompleted().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=() [1/2]

template<typename STRUCT_CONSTRAINT>
GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > & gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::operator= ( const GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > & from)

copy operator

References GraphChangesGenerator4UndiGraph().

Here is the call graph for this function:

◆ operator=() [2/2]

template<typename STRUCT_CONSTRAINT>
GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > & gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::operator= ( GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > && from)

move operator

References GraphChangesGenerator4UndiGraph().

Here is the call graph for this function:

◆ setGraph()

template<typename STRUCT_CONSTRAINT>
void gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::setGraph ( const UndiGraph & graph)
virtual

sets a new graph from which the operator will compute possible changes

Implements gum::learning::IGraphChangesGenerator4UndiGraph.

References setGraph().

Referenced by setGraph().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setMaxNbThreads()

template<typename STRUCT_CONSTRAINT>
void gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::setMaxNbThreads ( Size nb)
noexcept

sets the maximum number of threads used to compute the set of changes

References setMaxNbThreads().

Referenced by setMaxNbThreads().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ _max_threads_number_

template<typename STRUCT_CONSTRAINT>
Size gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::_max_threads_number_ {gum::getNumberOfThreads()}
private

the max number of threads authorized

Definition at line 231 of file graphChangesGenerator4UndiGraph.h.

unsigned int getNumberOfThreads()
returns the max number of threads used by default when entering the next parallel region

◆ constraint_

template<typename STRUCT_CONSTRAINT>
STRUCT_CONSTRAINT* gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::constraint_
protected

a reference on the structural constraint used to restrict the changes

Definition at line 221 of file graphChangesGenerator4UndiGraph.h.

◆ graph_

template<typename STRUCT_CONSTRAINT>
UndiGraph gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::graph_
protected

the graph on which we generate operators

Definition at line 218 of file graphChangesGenerator4UndiGraph.h.

◆ legal_changes_

template<typename STRUCT_CONSTRAINT>
Set< GraphChange > gum::learning::GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT >::legal_changes_
protected

the current set of operators

Definition at line 224 of file graphChangesGenerator4UndiGraph.h.


The documentation for this class was generated from the following file: