33 #ifndef GUM_PARTIAL_ORDERED_ELIMINATION_SEQUENCE_STRATEGY_H 34 #define GUM_PARTIAL_ORDERED_ELIMINATION_SEQUENCE_STRATEGY_H 36 #include <agrum/tools/core/list.h> 37 #include <agrum/tools/graphs/algorithms/triangulations/eliminationStrategies/eliminationSequenceStrategy.h> 95 virtual bool setGraph(UndiGraph* graph,
const NodeProperty< Size >* dom_sizes);
111 virtual void clear();
168 const NodeProperty< Size >* dom_sizes,
169 const List< NodeSet >* subsets);
183 #ifndef GUM_NO_INLINE 184 # include <agrum/tools/graphs/algorithms/triangulations/eliminationStrategies/partialOrderedEliminationSequenceStrategy_inl.h> virtual void clear()
clears the sequence (to prepare, for instance, a new elimination sequence)
PartialOrderedEliminationSequenceStrategy(const PartialOrderedEliminationSequenceStrategy &)
copy constructor
virtual PartialOrderedEliminationSequenceStrategy * copyFactory() const =0
virtual copy constructor
INLINE void emplace(Args &&... args)
virtual bool setPartialOrder(const List< NodeSet > *subsets)
sets a new partial ordering constraint on the elimination sequence
PartialOrderedEliminationSequenceStrategy(PartialOrderedEliminationSequenceStrategy &&)
move constructor
List< NodeSet >::const_iterator subset_iter_
the iterator indicating which is the current subset on which we work
PartialOrderedEliminationSequenceStrategy()
default constructor (uses an empty graph)
virtual bool setGraph(UndiGraph *graph, const NodeProperty< Size > *dom_sizes)
sets a new graph to be triangulated
PartialOrderedEliminationSequenceStrategy(UndiGraph *graph, const NodeProperty< Size > *dom_sizes, const List< NodeSet > *subsets)
constructor for an a priori non empty graph
bool partial_order_needed_
indicate whether a new partial ordering is necessary for the elimination
virtual PartialOrderedEliminationSequenceStrategy * newFactory() const =0
creates a new elimination sequence of the same type as the current object, but this sequence contains...
bool isPartialOrderNeeded_(const List< NodeSet > *subsets) const
indicate whether a partial ordering is compatible with the current graph
bool isPartialOrderNeeded() const noexcept
indicates if a new partial ordering is needed
virtual ~PartialOrderedEliminationSequenceStrategy()
destructor
const List< NodeSet > * partialOrder() const noexcept
returns the current partial ordering
const List< NodeSet > * subsets_
the subsets constituting the partial ordering
NodeSet nodeset_
the nodes which can be currently eliminated