50#ifndef DOXYGEN_SHOULD_SKIP_THIS
59 for (
const auto id: graph) {
102 switch (change.type()) {
114 "edge modifications are not "
115 "supported by StructuralConstraintIndegree");
148 for (
const auto& degree: max_indegree) {
157 degree.second = max_indegree;
165# define GUM_CONSTRAINT_CLASS_NAME StructuralConstraintIndegree
167# undef GUM_CONSTRAINT_CLASS_NAME
The class for notifying learning algorithms of new arc additions.
The class for notifying learning algorithms of arc removals.
The class for notifying learning algorithms of arc reversals.
Size _Indegree_max_indegree_
a default max indegree to assign for nodes without specified indegree
bool checkModificationAlone(const ArcAddition &change) const
checks whether the constraints enable to add an arc
void setMaxIndegree(Size max_indegree, bool update_all_node=false)
resets the default max indegree and possibly updates the indegree of all nodes
void modifyGraphAlone(const ArcAddition &change)
notify the constraint of a modification of the graph
bool isAlwaysInvalidAlone(const GraphChange &change) const
indicates whether a change will always violate the constraint
bool checkArcDeletionAlone(NodeId x, NodeId y) const
checks whether the constraints enable to remove arc (x,y)
void setIndegree(const NodeProperty< Size > &max_indegree)
sets the default max indegree for all the nodes in the property
void setGraphAlone(const DiGraph &graph)
sets a new graph from which we will perform checkings
bool checkArcReversalAlone(NodeId x, NodeId y) const
checks whether the constraints enable to reverse arc (x,y)
NodeProperty< Size > _Indegree_max_parents_
the max number of parents per node
bool checkArcAdditionAlone(NodeId x, NodeId y) const
checks whether the constraints enable to add arc (x,y)
#define GUM_ERROR(type, msg)
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Size NodeId
Type for node ids.
HashTable< NodeId, VAL > NodeProperty
Property on graph elements.
include the inlined functions if necessary
gum is the global namespace for all aGrUM entities