![]() |
aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
|
An Elimination sequence algorithm that imposes a given complete ordering on the nodes elimination sequence. More...
#include <orderedEliminationSequenceStrategy.h>
Public Member Functions | |
Constructors / Destructors | |
| OrderedEliminationSequenceStrategy () | |
| default constructor (uses an empty graph) | |
| OrderedEliminationSequenceStrategy (UndiGraph *graph, const NodeProperty< Size > *dom_sizes, const std::vector< NodeId > *order) | |
| constructor for a (tensorly) non empty graph | |
| OrderedEliminationSequenceStrategy (const OrderedEliminationSequenceStrategy &from) | |
| copy constructor | |
| OrderedEliminationSequenceStrategy (OrderedEliminationSequenceStrategy &&from) | |
| move constructor | |
| virtual | ~OrderedEliminationSequenceStrategy () |
| destructor | |
| virtual OrderedEliminationSequenceStrategy * | newFactory () const final |
| creates a new elimination sequence of the same type as the current object, but this sequence contains only an empty graph | |
| virtual OrderedEliminationSequenceStrategy * | copyFactory () const final |
| virtual copy constructor | |
Accessors / Modifiers | |
| virtual bool | setGraph (UndiGraph *graph, const NodeProperty< Size > *dom_sizes) final |
| sets a new graph to be triangulated | |
| virtual bool | setOrder (const std::vector< NodeId > *order) final |
| sets the sequence of elimination | |
| virtual void | clear () final |
| clears the order (to prepare, for instance, a new elimination sequence) | |
| virtual NodeId | nextNodeToEliminate () final |
| returns the new node to be eliminated within the triangulation algorithm | |
| 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 be activated | |
| virtual bool | providesFillIns () const final |
| indicates whether the fill-ins generated by the eliminated nodes, if needed, will be computed by the elimination sequence, or need be computed by the triangulation itself. | |
| virtual bool | providesGraphUpdate () const final |
| indicates whether the elimination sequence updates by itself the graph after a node has been eliminated | |
| virtual void | eliminationUpdate (const NodeId node) final |
| performs all the graph/fill-ins updates provided (if any) | |
| virtual const EdgeSet & | fillIns () final |
| in case fill-ins are provided, this function returns the fill-ins due to all the nodes eliminated so far | |
| const std::vector< NodeId > * | order () const noexcept |
| returns the current complete ordering | |
| bool | isOrderNeeded () const noexcept |
| indicates whether a new complete ordering is needed | |
Accessors / Modifiers | |
| UndiGraph * | graph () const noexcept |
| returns the current graph | |
| const NodeProperty< Size > * | domainSizes () const noexcept |
| returns the current domain sizes | |
Protected Attributes | |
| UndiGraph * | graph_ {nullptr} |
| the graph to be triangulated | |
| const NodeProperty< Size > * | domain_sizes_ {nullptr} |
| the domain sizes of the variables/nodes | |
| NodeProperty< double > | log_domain_sizes_ |
| the log of the domain sizes of the variables/nodes | |
Private Member Functions | |
| bool | _isOrderNeeded_ (const std::vector< NodeId > *order) const |
| indicates whether an order is compatible with the current graph | |
Static Private Member Functions | |
| static const EdgeSet & | _empty_fill_ins_ () |
| an empty fill-ins set used by default | |
Private Attributes | |
| const std::vector< NodeId > * | _order_ {nullptr} |
| the vector indicating in which order we should eliminate the nodes | |
| std::size_t | _order_index_ {std::size_t(0)} |
| the index in the order indicating the new node to eliminate | |
| bool | _order_needed_ {true} |
| indicate whether a new complete ordering is necessary for the elimination | |
An Elimination sequence algorithm that imposes a given complete ordering on the nodes elimination sequence.
Definition at line 65 of file orderedEliminationSequenceStrategy.h.
| gum::OrderedEliminationSequenceStrategy::OrderedEliminationSequenceStrategy | ( | ) |
default constructor (uses an empty graph)
Definition at line 61 of file orderedEliminationSequenceStrategy.cpp.
References OrderedEliminationSequenceStrategy().
Referenced by OrderedEliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), ~OrderedEliminationSequenceStrategy(), copyFactory(), and newFactory().
| gum::OrderedEliminationSequenceStrategy::OrderedEliminationSequenceStrategy | ( | UndiGraph * | graph, |
| const NodeProperty< Size > * | dom_sizes, | ||
| const std::vector< NodeId > * | order ) |
constructor for a (tensorly) non empty graph
| graph | the graph to be triangulated, i.e., the nodes of which will be eliminated |
| dom_sizes | thedomain sizes of the nodes/variables |
| order | the order in which the nodes should be eliminated |
Definition at line 66 of file orderedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::EliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), gum::EliminationSequenceStrategy::graph(), GUM_ERROR, order(), and setOrder().
| gum::OrderedEliminationSequenceStrategy::OrderedEliminationSequenceStrategy | ( | const OrderedEliminationSequenceStrategy & | from | ) |
copy constructor
Definition at line 83 of file orderedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::EliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), _order_, _order_index_, and _order_needed_.
| gum::OrderedEliminationSequenceStrategy::OrderedEliminationSequenceStrategy | ( | OrderedEliminationSequenceStrategy && | from | ) |
move constructor
Definition at line 91 of file orderedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::EliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), _order_, _order_index_, and _order_needed_.
|
virtual |
destructor
Definition at line 99 of file orderedEliminationSequenceStrategy.cpp.
References OrderedEliminationSequenceStrategy().
|
staticprivateinherited |
an empty fill-ins set used by default
Definition at line 60 of file eliminationSequenceStrategy.cpp.
Referenced by fillIns().
|
private |
indicates whether an order is compatible with the current graph
Definition at line 126 of file orderedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::graph_, gum::Set< Key >::insert(), order(), and gum::Set< Key >::size().
Referenced by setOrder().
|
finalvirtual |
if the elimination sequence is able to compute fill-ins, we indicate whether we want this feature to be activated
| do_it | when true and the elimination sequence has the ability to compute fill-ins, the elimination sequence will actually compute them (for the triangulation to use them), else they will not be available. |
Implements gum::EliminationSequenceStrategy.
Definition at line 181 of file orderedEliminationSequenceStrategy.cpp.
|
finalvirtual |
clears the order (to prepare, for instance, a new elimination sequence)
Reimplemented from gum::EliminationSequenceStrategy.
Definition at line 163 of file orderedEliminationSequenceStrategy.cpp.
References _order_index_, _order_needed_, and gum::EliminationSequenceStrategy::clear().
|
finalvirtual |
virtual copy constructor
Implements gum::EliminationSequenceStrategy.
Definition at line 110 of file orderedEliminationSequenceStrategy.cpp.
References OrderedEliminationSequenceStrategy().
|
noexceptinherited |
returns the current domain sizes
Definition at line 59 of file eliminationSequenceStrategy_inl.h.
References domain_sizes_.
Referenced by providesGraphUpdate().
|
finalvirtual |
performs all the graph/fill-ins updates provided (if any)
| node | the node the elimination of which requires the graph update |
Reimplemented from gum::EliminationSequenceStrategy.
Definition at line 195 of file orderedEliminationSequenceStrategy.cpp.
References _order_, _order_index_, _order_needed_, gum::EliminationSequenceStrategy::graph_, and GUM_ERROR.
|
finalvirtual |
in case fill-ins are provided, this function returns the fill-ins due to all the nodes eliminated so far
Reimplemented from gum::EliminationSequenceStrategy.
Definition at line 215 of file orderedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::fillIns().
|
noexceptinherited |
returns the current graph
Definition at line 56 of file eliminationSequenceStrategy_inl.h.
References graph_.
Referenced by gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy(), gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy(), EliminationSequenceStrategy(), gum::OrderedEliminationSequenceStrategy::OrderedEliminationSequenceStrategy(), gum::PartialOrderedEliminationSequenceStrategy::PartialOrderedEliminationSequenceStrategy(), gum::UnconstrainedEliminationSequenceStrategy::UnconstrainedEliminationSequenceStrategy(), copyFactory(), gum::PartialOrderedEliminationSequenceStrategy::copyFactory(), gum::UnconstrainedEliminationSequenceStrategy::copyFactory(), gum::DefaultEliminationSequenceStrategy::setGraph(), gum::DefaultPartialOrderedEliminationSequenceStrategy::setGraph(), setGraph(), gum::OrderedEliminationSequenceStrategy::setGraph(), and gum::PartialOrderedEliminationSequenceStrategy::setGraph().
|
noexcept |
indicates whether a new complete ordering is needed
if the current complete ordering does not contain all the nodes of the graph or if the graph itself is not defined (nullptr) a new complete ordering will be needed for the next triangulation
Definition at line 58 of file orderedEliminationSequenceStrategy_inl.h.
References _order_needed_.
|
finalvirtual |
creates a new elimination sequence of the same type as the current object, but this sequence contains only an empty graph
Implements gum::EliminationSequenceStrategy.
Definition at line 105 of file orderedEliminationSequenceStrategy.cpp.
References OrderedEliminationSequenceStrategy().
|
finalvirtual |
returns the new node to be eliminated within the triangulation algorithm
| NotFound | exception is thrown if there is no more node to eliminate in the graph |
Implements gum::EliminationSequenceStrategy.
Definition at line 170 of file orderedEliminationSequenceStrategy.cpp.
References _order_, _order_index_, _order_needed_, and GUM_ERROR.
|
noexcept |
returns the current complete ordering
Definition at line 53 of file orderedEliminationSequenceStrategy_inl.h.
References _order_.
Referenced by OrderedEliminationSequenceStrategy(), _isOrderNeeded_(), and setOrder().
|
finalvirtual |
indicates whether the fill-ins generated by the eliminated nodes, if needed, will be computed by the elimination sequence, or need be computed by the triangulation itself.
An elimination sequence provides fill-ins to its triangulation if and only if it has the ability to compute them and it has been asked to do so (by method askFillIns)
Implements gum::EliminationSequenceStrategy.
Definition at line 188 of file orderedEliminationSequenceStrategy.cpp.
|
finalvirtual |
indicates whether the elimination sequence updates by itself the graph after a node has been eliminated
Implements gum::EliminationSequenceStrategy.
Definition at line 192 of file orderedEliminationSequenceStrategy.cpp.
|
finalvirtual |
sets a new graph to be triangulated
The elimination sequence algorithms reinitializes its data to start a new triangulation with graph Graph
| graph | the new graph to be triangulated |
| dom_sizes | the domain sizes of the nodes/variables |
Reimplemented from gum::EliminationSequenceStrategy.
Definition at line 115 of file orderedEliminationSequenceStrategy.cpp.
References _order_, gum::EliminationSequenceStrategy::graph(), gum::EliminationSequenceStrategy::setGraph(), and setOrder().
Referenced by gum::OrderedTriangulation::initTriangulation_().
|
finalvirtual |
sets the sequence of elimination
sets a new complete order
| order | the order in which the nodes should be eliminated |
Definition at line 141 of file orderedEliminationSequenceStrategy.cpp.
References _isOrderNeeded_(), _order_, _order_index_, _order_needed_, gum::EliminationSequenceStrategy::graph_, and order().
Referenced by OrderedEliminationSequenceStrategy(), gum::OrderedTriangulation::OrderedTriangulation(), gum::OrderedTriangulation::initTriangulation_(), and setGraph().
|
private |
the vector indicating in which order we should eliminate the nodes
Definition at line 196 of file orderedEliminationSequenceStrategy.h.
Referenced by OrderedEliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), eliminationUpdate(), nextNodeToEliminate(), order(), setGraph(), and setOrder().
|
private |
the index in the order indicating the new node to eliminate
Definition at line 199 of file orderedEliminationSequenceStrategy.h.
Referenced by OrderedEliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), clear(), eliminationUpdate(), nextNodeToEliminate(), and setOrder().
|
private |
indicate whether a new complete ordering is necessary for the elimination
Definition at line 203 of file orderedEliminationSequenceStrategy.h.
Referenced by OrderedEliminationSequenceStrategy(), OrderedEliminationSequenceStrategy(), clear(), eliminationUpdate(), isOrderNeeded(), nextNodeToEliminate(), and setOrder().
|
protectedinherited |
the domain sizes of the variables/nodes
Definition at line 177 of file eliminationSequenceStrategy.h.
Referenced by EliminationSequenceStrategy(), EliminationSequenceStrategy(), clear(), domainSizes(), and setGraph().
|
protectedinherited |
the graph to be triangulated
Definition at line 174 of file eliminationSequenceStrategy.h.
Referenced by gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy(), gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy(), EliminationSequenceStrategy(), EliminationSequenceStrategy(), gum::DefaultEliminationSequenceStrategy::_createSimplicialSet_(), gum::DefaultPartialOrderedEliminationSequenceStrategy::_createSimplicialSet_(), gum::OrderedEliminationSequenceStrategy::_isOrderNeeded_(), clear(), gum::DefaultPartialOrderedEliminationSequenceStrategy::eliminationUpdate(), gum::OrderedEliminationSequenceStrategy::eliminationUpdate(), graph(), gum::PartialOrderedEliminationSequenceStrategy::isPartialOrderNeeded_(), gum::DefaultEliminationSequenceStrategy::nextNodeToEliminate(), gum::DefaultPartialOrderedEliminationSequenceStrategy::nextNodeToEliminate(), setGraph(), gum::OrderedEliminationSequenceStrategy::setOrder(), and gum::PartialOrderedEliminationSequenceStrategy::setPartialOrder().
|
protectedinherited |
the log of the domain sizes of the variables/nodes
Definition at line 180 of file eliminationSequenceStrategy.h.
Referenced by gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy(), gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy(), EliminationSequenceStrategy(), EliminationSequenceStrategy(), gum::DefaultEliminationSequenceStrategy::_createSimplicialSet_(), gum::DefaultPartialOrderedEliminationSequenceStrategy::_createSimplicialSet_(), clear(), and setGraph().