48#ifndef AGRUM_MEEKRULES_H
49#define AGRUM_MEEKRULES_H
Base classes for partially directed acyclic graphs.
The base class for all directed edges.
MixedGraph _propagates_(const MixedGraph &graph)
PDAG propagateToCPDAG(const MixedGraph &mg)
Propagates the orientation of a MixedGraph (no double-headed arcs) and return a PDAG.
gum::Arc _critereMinParents_(const gum::MixedGraph &graph, gum::NodeId x, gum::NodeId y)
When resolving double-headed arcs, prioritize selecting the option that minimizes the number of paren...
MixedGraph propagate(const MixedGraph &mg)
Propagates the orientation of a MixedGraph (no double-headed arcs) and return a PDAG.
std::vector< Arc > _choices_
static bool _existsDirectedPath_(const MixedGraph &graph, NodeId n1, NodeId n2)
bool _applyMeekRules_(MixedGraph &graph, NodeId xj)
Propagates the orientation from a node to its neighbours.
virtual ~MeekRules()
destructor
void _complete_(MixedGraph &graph)
bool _isOrientable_(const gum::MixedGraph &graph, gum::NodeId xi, gum::NodeId xj) const
void _propagatesOrientationInChainOfRemainingEdges_(gum::MixedGraph &graph)
heuristic for remaining edges when everything else has been tried
void _orientDoubleHeadedArcs_(MixedGraph &mg)
Tells us if we can orient the edge xi - xj to xi -> xj.
DAG propagateToDAG(const MixedGraph &mg)
Propagates the orientation of a MixedGraph and completes it as a DAG.
std::vector< Arc > choices() const
Get the Choices object : the list of arcs that the algorithm has to choose from a double arc or a dou...
MeekRules()
default constructor
Base class for mixed graphs.
Base class for partially directed acyclic graphs.
Size NodeId
Type for node ids.
gum is the global namespace for all aGrUM entities