![]() |
aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
|
An efficient unconstrained elimination sequence algorithm. More...
#include <defaultEliminationSequenceStrategy.h>
Public Member Functions | |
Constructors / Destructors | |
| DefaultEliminationSequenceStrategy (double theRatio=GUM_QUASI_RATIO, double theThreshold=GUM_WEIGHT_THRESHOLD) | |
| default constructor (uses an empty graph) | |
| DefaultEliminationSequenceStrategy (UndiGraph *graph, const NodeProperty< Size > *dom_sizes, double ratio=GUM_QUASI_RATIO, double threshold=GUM_WEIGHT_THRESHOLD) | |
| constructor for a (tensorly) non empty graph | |
| DefaultEliminationSequenceStrategy (const DefaultEliminationSequenceStrategy &from) | |
| copy constructor | |
| DefaultEliminationSequenceStrategy (DefaultEliminationSequenceStrategy &&) | |
| move constructor | |
| virtual | ~DefaultEliminationSequenceStrategy () |
| destructor | |
| virtual DefaultEliminationSequenceStrategy * | 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 DefaultEliminationSequenceStrategy * | 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 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 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 | |
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 | |
| void | _createSimplicialSet_ () |
| create a new simplicial set suited for the current graph | |
Static Private Member Functions | |
| static const EdgeSet & | _empty_fill_ins_ () |
| an empty fill-ins set used by default | |
Private Attributes | |
| NodeProperty< double > | _log_weights_ |
| for each node, the weight of the clique created by the node's elimination | |
| SimplicialSet * | _simplicial_set_ {nullptr} |
| the simplicial set used for determining the best nodes to eliminate | |
| 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 | |
| bool | _provide_fill_ins_ {false} |
| indicates whether we compute new fill-ins | |
An efficient unconstrained elimination sequence algorithm.
Class DefaultEliminationSequenceStrategy implements an unconstrained elimination sequence algorithm (that is, there is no external constraint on the possible elimination ordering). The ordering is determined as follows:
with their neighbors) are eliminated first
their neighbors, they become simplicial) and that create small cliques,
fill-ins to create cliques) that would create small cliques, are eliminated
last nodes to be eliminated.
Definition at line 94 of file defaultEliminationSequenceStrategy.h.
| gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy | ( | double | theRatio = GUM_QUASI_RATIO, |
| double | theThreshold = GUM_WEIGHT_THRESHOLD ) |
default constructor (uses an empty graph)
| theRatio | the ratio used by the SimplicialSet included in the DefaultEliminationSequenceStrategy |
| theThreshold | the weight threshhold of the SimplicialSet included in the DefaultEliminationSequenceStrategy |
Definition at line 57 of file defaultEliminationSequenceStrategy.cpp.
References DefaultEliminationSequenceStrategy(), _simplicial_ratio_, and _simplicial_threshold_.
Referenced by DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), ~DefaultEliminationSequenceStrategy(), copyFactory(), and newFactory().
| gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy | ( | UndiGraph * | graph, |
| const NodeProperty< Size > * | dom_sizes, | ||
| double | ratio = GUM_QUASI_RATIO, | ||
| double | threshold = GUM_WEIGHT_THRESHOLD ) |
constructor for a (tensorly) non empty graph
| graph | the graph to be triangulated, i.e., the nodes of which will be eliminated |
| dom_sizes | the domain sizes of the nodes to be eliminated |
| ratio | the ratio used by the SimplicialSet included in the DefaultEliminationSequenceStrategy |
| threshold | the weight threshhold of the SimplicialSet included in the DefaultEliminationSequenceStrategy |
Definition at line 64 of file defaultEliminationSequenceStrategy.cpp.
References DefaultEliminationSequenceStrategy(), _simplicial_ratio_, _simplicial_threshold_, gum::EliminationSequenceStrategy::graph(), and setGraph().
| gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy | ( | const DefaultEliminationSequenceStrategy & | from | ) |
copy constructor
Definition at line 75 of file defaultEliminationSequenceStrategy.cpp.
References DefaultEliminationSequenceStrategy(), gum::UnconstrainedEliminationSequenceStrategy::UnconstrainedEliminationSequenceStrategy(), _log_weights_, _provide_fill_ins_, _simplicial_ratio_, _simplicial_set_, _simplicial_threshold_, gum::EliminationSequenceStrategy::graph_, and gum::EliminationSequenceStrategy::log_domain_sizes_.
| gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy | ( | DefaultEliminationSequenceStrategy && | from | ) |
move constructor
Definition at line 92 of file defaultEliminationSequenceStrategy.cpp.
References DefaultEliminationSequenceStrategy(), gum::UnconstrainedEliminationSequenceStrategy::UnconstrainedEliminationSequenceStrategy(), _log_weights_, _provide_fill_ins_, _simplicial_ratio_, _simplicial_set_, and _simplicial_threshold_.
|
virtual |
destructor
Definition at line 106 of file defaultEliminationSequenceStrategy.cpp.
References DefaultEliminationSequenceStrategy(), and _simplicial_set_.
|
private |
create a new simplicial set suited for the current graph
Definition at line 124 of file defaultEliminationSequenceStrategy.cpp.
References _log_weights_, _provide_fill_ins_, _simplicial_ratio_, _simplicial_set_, _simplicial_threshold_, gum::EliminationSequenceStrategy::graph_, and gum::EliminationSequenceStrategy::log_domain_sizes_.
Referenced by setGraph().
|
staticprivateinherited |
an empty fill-ins set used by default
Definition at line 60 of file eliminationSequenceStrategy.cpp.
Referenced by fillIns().
|
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 201 of file defaultEliminationSequenceStrategy.cpp.
References _provide_fill_ins_, and _simplicial_set_.
|
finalvirtual |
clears the sequence (to prepare, for instance, a new elimination sequence)
Reimplemented from gum::EliminationSequenceStrategy.
Definition at line 155 of file defaultEliminationSequenceStrategy.cpp.
References _log_weights_, _simplicial_set_, and gum::EliminationSequenceStrategy::clear().
|
finalvirtual |
virtual copy constructor
Implements gum::UnconstrainedEliminationSequenceStrategy.
Definition at line 119 of file defaultEliminationSequenceStrategy.cpp.
References DefaultEliminationSequenceStrategy().
|
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)
performs all the graph/fill-ins updates provided
| node | the node the elimination of which requires the graph update |
Reimplemented from gum::EliminationSequenceStrategy.
Definition at line 217 of file defaultEliminationSequenceStrategy.cpp.
References _simplicial_set_.
|
finalvirtual |
in case fill-ins are provided, this function returns the fill-ins due to all the nodes eliminated so far
in case fill-ins are provided, this function returns the fill-ins generated after the last node elimination
Reimplemented from gum::EliminationSequenceStrategy.
Definition at line 226 of file defaultEliminationSequenceStrategy.cpp.
References _provide_fill_ins_, _simplicial_set_, and 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().
|
finalvirtual |
creates a new elimination sequence of the same type as the current object, but this sequence contains only an empty graph
Implements gum::UnconstrainedEliminationSequenceStrategy.
Definition at line 114 of file defaultEliminationSequenceStrategy.cpp.
References DefaultEliminationSequenceStrategy(), _simplicial_ratio_, and _simplicial_threshold_.
|
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 166 of file defaultEliminationSequenceStrategy.cpp.
References _log_weights_, _simplicial_set_, gum::EliminationSequenceStrategy::graph_, and GUM_ERROR.
|
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.
indicates whether the new fill-ins generated by a new eliminated node, 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 210 of file defaultEliminationSequenceStrategy.cpp.
References _provide_fill_ins_.
|
finalvirtual |
indicates whether the elimination sequence updates by itself the graph after a node has been eliminated
Some algorithms have more informations than the triangulation algorithm to update the graph after a node has been eliminated. They can thus exploit these informations to update the graph faster than the triangulation. Hence the latter should delegate this operation to the elimination sequence. This is the case, for instance, for the defaultEliminationSequence, which uses a SimplicialSet that knows that some eliminated nodes do not require any fill-in.
Implements gum::EliminationSequenceStrategy.
Definition at line 214 of file defaultEliminationSequenceStrategy.cpp.
|
finalvirtual |
sets a new graph to be triangulated
The elimination sequence algorithm 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 variables/nodes |
Reimplemented from gum::EliminationSequenceStrategy.
Definition at line 144 of file defaultEliminationSequenceStrategy.cpp.
References _createSimplicialSet_(), gum::EliminationSequenceStrategy::graph(), and gum::EliminationSequenceStrategy::setGraph().
Referenced by DefaultEliminationSequenceStrategy().
|
private |
for each node, the weight of the clique created by the node's elimination
Definition at line 238 of file defaultEliminationSequenceStrategy.h.
Referenced by DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), _createSimplicialSet_(), clear(), and nextNodeToEliminate().
|
private |
indicates whether we compute new fill-ins
Definition at line 250 of file defaultEliminationSequenceStrategy.h.
Referenced by DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), _createSimplicialSet_(), askFillIns(), fillIns(), and providesFillIns().
|
private |
the ratio used by simplicial_set for its quasi-simplicial nodes
Definition at line 244 of file defaultEliminationSequenceStrategy.h.
Referenced by DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), _createSimplicialSet_(), and newFactory().
|
private |
the simplicial set used for determining the best nodes to eliminate
Definition at line 241 of file defaultEliminationSequenceStrategy.h.
Referenced by DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), ~DefaultEliminationSequenceStrategy(), _createSimplicialSet_(), askFillIns(), clear(), eliminationUpdate(), fillIns(), and nextNodeToEliminate().
|
private |
the threshold used by simplicial_set to determine small cliques
Definition at line 247 of file defaultEliminationSequenceStrategy.h.
Referenced by DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), DefaultEliminationSequenceStrategy(), _createSimplicialSet_(), and newFactory().
|
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().