32 #ifndef GUM_ELIMINATION_SEQUENCE_STRATEGY_H 33 #define GUM_ELIMINATION_SEQUENCE_STRATEGY_H 35 #include <agrum/agrum.h> 36 #include <agrum/tools/graphs/graphElements.h> 37 #include <agrum/tools/graphs/undiGraph.h> 92 virtual bool setGraph(UndiGraph* graph,
const NodeProperty< Size >* dom_sizes);
142 virtual void clear();
192 #ifndef GUM_NO_INLINE 193 # include <agrum/tools/graphs/algorithms/triangulations/eliminationStrategies/eliminationSequenceStrategy_inl.h> virtual void clear()
clears the sequence (to prepare, for instance, a new elimination sequence)
virtual void eliminationUpdate(const NodeId node)
performs all the graph/fill-ins updates provided (if any)
virtual const EdgeSet & fillIns()
in case fill-ins are provided, this function returns the fill-ins due to all the nodes eliminated so ...
virtual EliminationSequenceStrategy * copyFactory() const =0
virtual copy constructor
EliminationSequenceStrategy(UndiGraph *graph, const NodeProperty< Size > *domain_sizes)
constructor for an a priori non empty graph
virtual ~EliminationSequenceStrategy()
destructor
EliminationSequenceStrategy()
default constructor
INLINE void emplace(Args &&... args)
UndiGraph * graph() const noexcept
returns the current graph
const NodeProperty< Size > * domainSizes() const noexcept
returns the current domain sizes
EliminationSequenceStrategy(EliminationSequenceStrategy &&from)
move constructor
virtual EliminationSequenceStrategy * newFactory() const =0
creates a new elimination sequence of the same type as the current object, but this sequence contains...
const NodeProperty< Size > * domain_sizes_
the domain sizes of the variables/nodes
NodeProperty< double > log_domain_sizes_
the log of the domain sizes of the variables/nodes
virtual bool providesGraphUpdate() const =0
indicates whether the elimination sequence updates by itself the graph after a node has been eliminat...
virtual NodeId nextNodeToEliminate()=0
returns the new node to be eliminated within the triangulation algorithm
virtual bool setGraph(UndiGraph *graph, const NodeProperty< Size > *dom_sizes)
sets a new graph to be triangulated
The base class for all elimination sequence algorithms used by triangulation algorithms.
static const EdgeSet & _empty_fill_ins_()
an empty fill-ins set used by default
EliminationSequenceStrategy(const EliminationSequenceStrategy &from)
copy constructor
UndiGraph * graph_
the graph to be triangulated
virtual bool providesFillIns() const =0
indicates whether the fill-ins generated by the eliminated nodes, if needed, will be computed by the ...
virtual void askFillIns(bool do_it)=0
if the elimination sequence is able to compute fill-ins, we indicate whether we want this feature to ...