42 #ifndef GUM_DEFAULT_ELIMINATION_SEQUENCE_STRATEGY_H 43 #define GUM_DEFAULT_ELIMINATION_SEQUENCE_STRATEGY_H 46 #include <agrum/agrum.h> 47 #include <agrum/tools/graphs/algorithms/simplicialSet.h> 48 #include <agrum/tools/graphs/algorithms/triangulations/eliminationStrategies/unconstrainedEliminationSequenceStrategy.h> 49 #include <agrum/tools/graphs/graphElements.h> 105 const NodeProperty< Size >* dom_sizes,
165 virtual bool setGraph(UndiGraph* graph,
const NodeProperty< Size >* dom_sizes)
final;
169 virtual void clear()
final;
INLINE void emplace(Args &&... args)
virtual void eliminationUpdate(const NodeId node) final
performs all the graph/fill-ins updates provided (if any)
SimplicialSet * _simplicial_set_
the simplicial set used for determining the best nodes to eliminate
DefaultEliminationSequenceStrategy(UndiGraph *graph, const NodeProperty< Size > *dom_sizes, double ratio=GUM_QUASI_RATIO, double threshold=GUM_WEIGHT_THRESHOLD)
constructor for an a priori non empty graph
DefaultEliminationSequenceStrategy(double theRatio=GUM_QUASI_RATIO, double theThreshold=GUM_WEIGHT_THRESHOLD)
default constructor (uses an empty graph)
virtual bool providesFillIns() const final
indicates whether the fill-ins generated by the eliminated nodes, if needed, will be computed by the ...
virtual const EdgeSet & fillIns() final
in case fill-ins are provided, this function returns the fill-ins due to all the nodes eliminated so ...
An efficient unconstrained elimination sequence algorithm.
DefaultEliminationSequenceStrategy(DefaultEliminationSequenceStrategy &&)
move constructor
virtual void askFillIns(bool do_it) final
if the elimination sequence is able to compute fill-ins, we indicate whether we want this feature to ...
virtual bool providesGraphUpdate() const final
indicates whether the elimination sequence updates by itself the graph after a node has been eliminat...
NodeProperty< double > _log_weights_
for each node, the weight of the clique created by the node's elimination
double _simplicial_ratio_
the ratio used by simplicial_set for its quasi-simplicial nodes
DefaultEliminationSequenceStrategy(const DefaultEliminationSequenceStrategy &from)
copy constructor
virtual bool setGraph(UndiGraph *graph, const NodeProperty< Size > *dom_sizes) final
sets a new graph to be triangulated
void _createSimplicialSet_()
create a new simplicial set suited for the current graph
bool _provide_fill_ins_
indicates whether we compute new fill-ins
virtual void clear() final
clears the sequence (to prepare, for instance, a new elimination sequence)
virtual NodeId nextNodeToEliminate() final
returns the new node to be eliminated within the triangulation algorithm
virtual ~DefaultEliminationSequenceStrategy()
destructor
double _simplicial_threshold_
the threshold used by simplicial_set to determine small cliques
virtual DefaultEliminationSequenceStrategy * copyFactory() const final
virtual copy constructor
virtual DefaultEliminationSequenceStrategy * newFactory() const final
creates a new elimination sequence of the same type as the current object, but this sequence contains...