aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > Class Template Reference

The mecanism to compute the next available graph changes for directed structure learning search algorithms. More...

#include <graphChangesSelector4DiGraph.h>

Collaboration diagram for gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >:

Public Types

using GeneratorType = GRAPH_CHANGES_GENERATOR
 the type of the generator

Public Member Functions

Constructors / Destructors
 GraphChangesSelector4DiGraph (Score &score, STRUCTURAL_CONSTRAINT &constraint, GRAPH_CHANGES_GENERATOR &changes_generator)
 default constructor
 GraphChangesSelector4DiGraph (const GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > &from)
 copy constructor
 GraphChangesSelector4DiGraph (GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > &&from)
 move constructor
 ~GraphChangesSelector4DiGraph ()
 destructor
Operators
GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > & operator= (const GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > &from)
 copy operator
GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > & operator= (GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > &&from)
 move operator
Accessors / Modifiers
GeneratorTypegraphChangeGenerator () const noexcept
 returns the generator used by the selector
bool empty ()
 indicates whether the selector still contains graph changes
bool empty (const NodeId i)
 indicates whether the selector contains graph changes related to the ith node
const GraphChangebestChange ()
 returns the best graph change to examine
const GraphChangebestChange (const NodeId i)
 returns the best graph change to examine related to the ith node
double bestScore ()
 return the score of the best graph change
double bestScore (const NodeId i)
 return the score of the best graph change related to the ith node
void applyChange (const GraphChange &change)
 indicate to the selector that a change has been applied
void applyChangeWithoutScoreUpdate (const GraphChange &change)
 indicate to the selector that one of serveral changes has been applied
void updateScoresAfterAppliedChanges ()
 recompute all the scores after the application of several changes
bool isChangeValid (const GraphChange &change) const
 indicates whether a given change is valid or not
void setGraph (DiGraph &graph)
 sets the graph from which scores are computed
std::vector< std::pair< NodeId, double > > nodesSortedByBestScore () const
 returns the set of queues sorted by decreasing top priority
std::vector< std::pair< NodeId, double > > nodesUnsortedWithScore () const
 returns the set of queues top priorities

Private Member Functions

bool _isChangeValid_ (const std::size_t index) const
 indicates whether a given change is valid or not
void _invalidateChange_ (const std::size_t change_index)
 put a change into the illegal set
void _illegal2LegalChanges_ (Set< std::size_t > &changes_to_recompute)
 remove the now legal changes from the illegal set
void _findLegalChangesNeedingUpdate_ (Set< std::size_t > &changes_to_recompute, const NodeId target_node)
 finds the changes that are affected by a given node modification
void _updateScores_ (const Set< std::size_t > &changes_to_recompute)
 perform the necessary updates of the scores
void _getNewChanges_ ()
 get from the graph change generator a new set of changes

Private Attributes

Score_score_
 the scoring function
STRUCTURAL_CONSTRAINT * _constraint_
 the set of constraints used to determine valid changes
GRAPH_CHANGES_GENERATOR * _changes_generator_
 the generator that returns the set of possible changes
Sequence< GraphChange_changes_
 a sequence containing all the possible changes
std::vector< std::pair< double, double > > _change_scores_
 the scores for the head and tail of all the changes
NodeProperty< PriorityQueue< std::size_t, double, std::greater< double > > > _change_queue_per_node_
 for each node, a priority queue sorting GraphChanges by decreasing score
PriorityQueue< NodeId, double, std::greater< double > > _node_queue_
 a global priority queue indicating for each node its best score
Set< std::size_t > _illegal_changes_
 the set of changes known to be currently illegal (due to the constraints)
NodeProperty< double_node_current_scores_
 the current score of each node
NodeProperty< std::vector< NodeId > > _parents_
 the set of parents of each node (speeds-up score computations)
bool _queues_valid_ {false}
 indicates whether we need to recompute whether the queue is empty or not
Set< NodeId_queues_to_update_
 the set of queues to update when applying several changes

Detailed Description

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
class gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >

The mecanism to compute the next available graph changes for directed structure learning search algorithms.

Definition at line 67 of file graphChangesSelector4DiGraph.h.

Member Typedef Documentation

◆ GeneratorType

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
using gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::GeneratorType = GRAPH_CHANGES_GENERATOR

the type of the generator

Definition at line 70 of file graphChangesSelector4DiGraph.h.

Constructor & Destructor Documentation

◆ GraphChangesSelector4DiGraph() [1/3]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::GraphChangesSelector4DiGraph ( Score & score,
STRUCTURAL_CONSTRAINT & constraint,
GRAPH_CHANGES_GENERATOR & changes_generator )

default constructor

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

Here is the caller graph for this function:

◆ GraphChangesSelector4DiGraph() [2/3]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::GraphChangesSelector4DiGraph ( const GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > & from)

copy constructor

References GraphChangesSelector4DiGraph().

Here is the call graph for this function:

◆ GraphChangesSelector4DiGraph() [3/3]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::GraphChangesSelector4DiGraph ( GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > && from)

move constructor

References GraphChangesSelector4DiGraph().

Here is the call graph for this function:

◆ ~GraphChangesSelector4DiGraph()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::~GraphChangesSelector4DiGraph ( )

destructor

References GraphChangesSelector4DiGraph().

Here is the call graph for this function:

Member Function Documentation

◆ _findLegalChangesNeedingUpdate_()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_findLegalChangesNeedingUpdate_ ( Set< std::size_t > & changes_to_recompute,
const NodeId target_node )
private

finds the changes that are affected by a given node modification

◆ _getNewChanges_()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_getNewChanges_ ( )
private

get from the graph change generator a new set of changes

◆ _illegal2LegalChanges_()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_illegal2LegalChanges_ ( Set< std::size_t > & changes_to_recompute)
private

remove the now legal changes from the illegal set

◆ _invalidateChange_()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_invalidateChange_ ( const std::size_t change_index)
private

put a change into the illegal set

◆ _isChangeValid_()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
bool gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_isChangeValid_ ( const std::size_t index) const
private

indicates whether a given change is valid or not

◆ _updateScores_()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_updateScores_ ( const Set< std::size_t > & changes_to_recompute)
private

perform the necessary updates of the scores

◆ applyChange()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::applyChange ( const GraphChange & change)

indicate to the selector that a change has been applied

References applyChange().

Referenced by applyChange().

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

◆ applyChangeWithoutScoreUpdate()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::applyChangeWithoutScoreUpdate ( const GraphChange & change)

indicate to the selector that one of serveral changes has been applied

This function is to be used rather than applyChange when we wish to apply several changes at a time. It is faster than applyChange because it does not recomputes the scores. Then, after applying all changes, we shall compute the scores with function updateScoresAfterAppliedChanges (). See class GreedyHillClimbing for an illustration of the use of this method.

References applyChangeWithoutScoreUpdate().

Referenced by applyChangeWithoutScoreUpdate().

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

◆ bestChange() [1/2]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
const GraphChange & gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::bestChange ( )

returns the best graph change to examine

Exceptions
NotFoundexception is thrown if the selector is empty

References bestChange().

Referenced by bestChange(), and bestChange().

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

◆ bestChange() [2/2]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
const GraphChange & gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::bestChange ( const NodeId i)

returns the best graph change to examine related to the ith node

The selector computes not only the best change possible but also the best changes impacting the parents' set of each node. This method allows to get the change that is considered the best for modifying the parents' set of the ith node.

Exceptions
NotFoundexception is thrown if the selector is empty

References bestChange().

Here is the call graph for this function:

◆ bestScore() [1/2]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
double gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::bestScore ( )

return the score of the best graph change

Exceptions
NotFoundexception is thrown if the selector is empty

References bestScore().

Referenced by bestScore(), and bestScore().

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

◆ bestScore() [2/2]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
double gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::bestScore ( const NodeId i)

return the score of the best graph change related to the ith node

The selector computes not only the best change possible but also the best changes impacting the parents' set of each node. This method allows to get the score of the change that is considered the best for modifying the parents' set of the ith node.

Exceptions
NotFoundexception is thrown if the selector is empty

References bestScore().

Here is the call graph for this function:

◆ empty() [1/2]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
bool gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::empty ( )

indicates whether the selector still contains graph changes

References empty().

Referenced by empty(), and empty().

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

◆ empty() [2/2]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
bool gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::empty ( const NodeId i)

indicates whether the selector contains graph changes related to the ith node

References empty().

Here is the call graph for this function:

◆ graphChangeGenerator()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
GeneratorType & gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::graphChangeGenerator ( ) const
noexcept

returns the generator used by the selector

◆ isChangeValid()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
bool gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::isChangeValid ( const GraphChange & change) const

indicates whether a given change is valid or not

References isChangeValid().

Referenced by isChangeValid().

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

◆ nodesSortedByBestScore()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
std::vector< std::pair< NodeId, double > > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::nodesSortedByBestScore ( ) const

returns the set of queues sorted by decreasing top priority

References nodesSortedByBestScore().

Referenced by nodesSortedByBestScore().

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

◆ nodesUnsortedWithScore()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
std::vector< std::pair< NodeId, double > > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::nodesUnsortedWithScore ( ) const

returns the set of queues top priorities

References nodesUnsortedWithScore().

Referenced by nodesUnsortedWithScore().

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

◆ operator=() [1/2]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > & gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::operator= ( const GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > & from)

copy operator

References GraphChangesSelector4DiGraph().

Here is the call graph for this function:

◆ operator=() [2/2]

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > & gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::operator= ( GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR > && from)

move operator

References GraphChangesSelector4DiGraph().

Here is the call graph for this function:

◆ setGraph()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::setGraph ( DiGraph & graph)

sets the graph from which scores are computed

References setGraph().

Referenced by setGraph().

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

◆ updateScoresAfterAppliedChanges()

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
void gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::updateScoresAfterAppliedChanges ( )

recompute all the scores after the application of several changes

This method needs COMPULSORILY be used after applications of applyChangeWithoutScoreUpdate in order to ensure the fact that functions bestScore and bestChange return correct answers. See class GreedyHillClimbing for an illustration of the use of this method.

References updateScoresAfterAppliedChanges().

Referenced by updateScoresAfterAppliedChanges().

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

Member Data Documentation

◆ _change_queue_per_node_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
NodeProperty< PriorityQueue< std::size_t, double, std::greater< double > > > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_change_queue_per_node_
private

for each node, a priority queue sorting GraphChanges by decreasing score

within each queue, the changes are determined by their index in sequence changes.

Definition at line 206 of file graphChangesSelector4DiGraph.h.

◆ _change_scores_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
std::vector< std::pair< double, double > > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_change_scores_
private

the scores for the head and tail of all the changes

the scores are indexed by their index in sequence changes

Definition at line 200 of file graphChangesSelector4DiGraph.h.

◆ _changes_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
Sequence< GraphChange > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_changes_
private

a sequence containing all the possible changes

Definition at line 196 of file graphChangesSelector4DiGraph.h.

◆ _changes_generator_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
GRAPH_CHANGES_GENERATOR* gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_changes_generator_
private

the generator that returns the set of possible changes

Definition at line 193 of file graphChangesSelector4DiGraph.h.

◆ _constraint_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
STRUCTURAL_CONSTRAINT* gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_constraint_
private

the set of constraints used to determine valid changes

Definition at line 190 of file graphChangesSelector4DiGraph.h.

◆ _illegal_changes_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
Set< std::size_t > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_illegal_changes_
private

the set of changes known to be currently illegal (due to the constraints)

within each queue, the changes are determined by their index in sequence changes.

Definition at line 214 of file graphChangesSelector4DiGraph.h.

◆ _node_current_scores_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
NodeProperty< double > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_node_current_scores_
private

the current score of each node

Definition at line 217 of file graphChangesSelector4DiGraph.h.

◆ _node_queue_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
PriorityQueue< NodeId, double, std::greater< double > > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_node_queue_
private

a global priority queue indicating for each node its best score

Definition at line 209 of file graphChangesSelector4DiGraph.h.

◆ _parents_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
NodeProperty< std::vector< NodeId > > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_parents_
private

the set of parents of each node (speeds-up score computations)

Definition at line 220 of file graphChangesSelector4DiGraph.h.

◆ _queues_to_update_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
Set< NodeId > gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_queues_to_update_
private

the set of queues to update when applying several changes

Definition at line 226 of file graphChangesSelector4DiGraph.h.

◆ _queues_valid_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
bool gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_queues_valid_ {false}
private

indicates whether we need to recompute whether the queue is empty or not

Definition at line 223 of file graphChangesSelector4DiGraph.h.

223{false};

◆ _score_

template<typename STRUCTURAL_CONSTRAINT, typename GRAPH_CHANGES_GENERATOR>
Score* gum::learning::GraphChangesSelector4DiGraph< STRUCTURAL_CONSTRAINT, GRAPH_CHANGES_GENERATOR >::_score_
private

the scoring function

Definition at line 187 of file graphChangesSelector4DiGraph.h.


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