45 #ifndef GUM_DEFAULT_PARTIAL_ORDERED_ELIMINATION_SEQUENCE_STRATEGY_H 46 #define GUM_DEFAULT_PARTIAL_ORDERED_ELIMINATION_SEQUENCE_STRATEGY_H 48 #include <agrum/tools/core/priorityQueue.h> 49 #include <agrum/tools/graphs/algorithms/simplicialSet.h> 50 #include <agrum/tools/graphs/algorithms/triangulations/eliminationStrategies/partialOrderedEliminationSequenceStrategy.h> 51 #include <agrum/tools/graphs/graphElements.h> 117 const NodeProperty< Size >* dom_sizes,
118 const List< NodeSet >* subsets,
182 virtual bool setGraph(UndiGraph* graph,
183 const NodeProperty< Size >* dom_sizes)
final;
187 virtual void clear()
final;
DefaultPartialOrderedEliminationSequenceStrategy(DefaultPartialOrderedEliminationSequenceStrategy &&from)
move constructor
virtual void clear() final
clears the sequence (to prepare, for instance, a new elimination sequence)
void createSimplicialSet__()
create a new simplicial set suited for the current graph
virtual void eliminationUpdate(const NodeId node) final
performs all the graph/fill-ins updates provided (if any)
NodeId nodeToEliminate__(const PriorityQueue< NodeId, double > &possibleNodes)
returns the best possible node to be eliminated
virtual DefaultPartialOrderedEliminationSequenceStrategy * newFactory() const final
creates a new elimination sequence of the same type as the current object, but this sequence contains...
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 ...
INLINE void emplace(Args &&... args)
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 NodeId nextNodeToEliminate() final
returns the new node to be eliminated within the triangulation algorithm
An Elimination sequence algorithm that imposes a given partial ordering on the nodes elimination sequ...
SimplicialSet * simplicial_set__
the simplicial set used for determining the best nodes to eliminate
DefaultPartialOrderedEliminationSequenceStrategy(const DefaultPartialOrderedEliminationSequenceStrategy &from)
copy constructor
virtual bool providesGraphUpdate() const final
indicates whether the elimination sequence updates by itself the graph after a node has been eliminat...
virtual ~DefaultPartialOrderedEliminationSequenceStrategy()
destructor
NodeProperty< double > log_weights__
for each node, the weight of the clique created by the node's elimination
virtual DefaultPartialOrderedEliminationSequenceStrategy * copyFactory() const final
virtual copy constructor
DefaultPartialOrderedEliminationSequenceStrategy(UndiGraph *graph, const NodeProperty< Size > *dom_sizes, const List< NodeSet > *subsets, double ratio=GUM_QUASI_RATIO, double threshold=GUM_WEIGHT_THRESHOLD)
constructor for an a priori non empty graph
virtual bool setGraph(UndiGraph *graph, const NodeProperty< Size > *dom_sizes) final
sets a new graph to be triangulated
DefaultPartialOrderedEliminationSequenceStrategy(double theRatio=GUM_QUASI_RATIO, double theThreshold=GUM_WEIGHT_THRESHOLD)
default constructor (uses an empty graph)
bool provide_fill_ins__
indicates whether we compute new fill-ins
double simplicial_ratio__
the ratio used by simplicial_set__ for its quasi-simplicial nodes
double simplicial_threshold__
the threshold used by simplicial_set__ to determine small cliques