27 #ifndef GUM_TRIANGULATION_H 28 #define GUM_TRIANGULATION_H 32 #include <agrum/agrum.h> 33 #include <agrum/tools/core/sequence.h> 34 #include <agrum/tools/graphs/cliqueGraph.h> 87 virtual void setGraph(
const UndiGraph* graph,
const NodeProperty< Size >* domsizes) = 0;
139 virtual void clear() = 0;
176 #ifndef GUM_NO_INLINE 177 # include <agrum/tools/graphs/algorithms/triangulations/triangulation_inl.h> virtual void clear()=0
reinitialize the graph to be triangulated to an empty graph
Triangulation(const NodeProperty< Size > *domsizes)
constructor with a domain size specified
INLINE void emplace(Args &&... args)
const NodeProperty< Size > * domain_sizes_
the domain sizes of the variables/nodes of the graph
Triangulation(const Triangulation &)
prevent copy constructor except when using newFactory
double maxLog10CliqueDomainSize()
returns the max of log10DomainSize of the cliques in the junction tree.
virtual const CliqueGraph & eliminationTree()=0
returns the elimination tree of a compatible ordering
virtual Idx eliminationOrder(const NodeId)=0
returns the index of a given node in the elimination order (0 = first node eliminated) ...
virtual const NodeProperty< NodeId > & createdJunctionTreeCliques()=0
returns the Ids of the cliques of the junction tree created by the elimination of the nodes ...
Triangulation(Triangulation &&)
prevent move constructor except when used by children
virtual NodeId createdJunctionTreeClique(const NodeId id)=0
returns the Id of the clique created by the elimination of a given node during the triangulation proc...
virtual const EdgeSet & fillIns()=0
returns the fill-ins added by the triangulation algorithm
virtual NodeId createdMaxPrimeSubgraph(const NodeId id)=0
returns the Id of the maximal prime subgraph created by the elimination of a given node during the tr...
virtual const CliqueGraph & maxPrimeSubgraphTree()=0
returns a junction tree of maximal prime subgraphs
Triangulation()
default constructor
virtual ~Triangulation()
destructor
const NodeProperty< Size > * domainSizes() const
returns the domain sizes of the variables of the graph to be triangulated
Triangulation & operator=(const Triangulation &)
prevent copy operator
virtual Triangulation * newFactory() const =0
returns a fresh triangulation of the same type as the current object but with an empty graph ...
virtual const UndiGraph & triangulatedGraph()=0
returns the triangulated graph
virtual Triangulation * copyFactory() const =0
virtual copy constructor
Interface for all the triangulation methods.
virtual const CliqueGraph & junctionTree()=0
returns a compatible junction tree
virtual const std::vector< NodeId > & eliminationOrder()=0
returns an elimination ordering compatible with the triangulated graph
virtual void setGraph(const UndiGraph *graph, const NodeProperty< Size > *domsizes)=0
initialize the triangulation data structures for a new graph