55#ifndef GUM_LEARNING_FCI_H
56#define GUM_LEARNING_FCI_H
91 FCI& operator=(const
FCI&);
92 FCI& operator=(
FCI&&) noexcept;
Abstract base class for CI-test-based structure learning algorithms.
Partial Ancestral Graph (PAG) — graph type for FCI output.
The class for generic Hash Tables.
Base class for mixed graphs.
Partial Ancestral Graph: undirected topology with endpoint marks.
PAG learnPAG(MixedGraph graph)
primary FCI output: learn a PAG from the given node-only or partial graph
std::vector< NodeId > possibleDSep(const PAG &pag, NodeId x, NodeId y) const
learnSkeleton() inherited from CIBasedLearning
bool doDdpOrientation_(PAG &pag, NodeId d, NodeId a, NodeId b, NodeId c, const HashTable< NodeId, NodeId > &previous) const
R4 helper: orient B,C in a detected discriminating path D..A,B,C.
bool ruleR7_(PAG &pag) const
tail propagation from A-oB
bool ruleR1_(PAG &pag) const
away from collider
Size maxPathLength() const
maximum path length for R4 discriminating-path search; Size(-1) = unlimited
bool ruleR3_(PAG &pag) const
double triangle
std::vector< NodeId > computePossibleDSep_(const PAG &pag, NodeId x, NodeId y) const
Phase 3: return all nodes on possible-d-sep paths from x toward y (excl. x, y).
bool ruleR5_(PAG &pag) const
uncovered circle path → undirected
void orientCollidersOnPAG_(PAG &pag, const MixedGraph &topology)
Phase 2 / Phase 4: orient unshielded colliders directly on the PAG. topology is used for unshielded-t...
bool ruleR9_(PAG &pag) const
away from ancestor via uncovered pd-path
bool ruleR6_(PAG &pag) const
tail propagation from undirected edge
void applyOrientationRules_(PAG &pag) const
Phase 5: fixed-point loop over all orientation rules R1–R10.
bool ruleR8_(PAG &pag) const
away from ancestor (graph only)
void resolveOrientConflict_(NodeId src, NodeId dst) override
conflict hook override: FCI leaves circle marks — orientation conflicts are not recorded as latent co...
void possibleDSepPhase_(PAG &pag)
Phase 3: prune PAG edges using possibleDSep conditioning sets.
bool ruleR2_(PAG &pag) const
away from cycle
bool ruleR4_(PAG &pag) const
discriminating path (uses CI test)
MixedGraph learnMixedStructure(MixedGraph graph) override
bridge for learnDAG/learnPDAG: runs learnPAG then converts via toMixedGraph()
bool ruleR10_(PAG &pag) const
away from ancestor via two semi-directed paths
void setMaxPathLength(Size maxLen)
maximum path length for R4 discriminating-path search; Size(-1) = unlimited
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Size NodeId
Type for node ids.
include the inlined functions if necessary