![]() |
aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
|
The base class for all elimination sequence algorithms that require only the graph to be triangulated and the nodes' domain sizes to produce the node elimination ordering. More...
#include <unconstrainedEliminationSequenceStrategy.h>
Public Member Functions | |
Accessors / Modifiers | |
| virtual bool | setGraph (UndiGraph *graph, const NodeProperty< Size > *dom_sizes) |
| sets a new graph to be triangulated | |
| virtual NodeId | nextNodeToEliminate ()=0 |
| returns the new node to be eliminated within the triangulation algorithm | |
| virtual void | askFillIns (bool do_it)=0 |
| if the elimination sequence is able to compute fill-ins, we indicate whether we want this feature to be activated | |
| virtual bool | providesFillIns () const =0 |
| 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 =0 |
| indicates whether the elimination sequence updates by itself the graph after a node has been eliminated | |
| virtual void | eliminationUpdate (const NodeId node) |
| performs all the graph/fill-ins updates provided (if any) | |
| virtual const EdgeSet & | fillIns () |
| in case fill-ins are provided, this function returns the fill-ins due to all the nodes eliminated so far | |
| virtual void | clear () |
| clears the sequence (to prepare, for instance, a new elimination sequence) | |
| 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 | |
Static Private Member Functions | |
| static const EdgeSet & | _empty_fill_ins_ () |
| an empty fill-ins set used by default | |
Constructors / Destructors | |
| virtual | ~UnconstrainedEliminationSequenceStrategy () |
| destructor | |
| virtual UnconstrainedEliminationSequenceStrategy * | newFactory () const =0 |
| creates a new elimination sequence of the same type as the current object, but this sequence contains only an empty graph | |
| virtual UnconstrainedEliminationSequenceStrategy * | copyFactory () const =0 |
| virtual copy constructor | |
| UnconstrainedEliminationSequenceStrategy () | |
| default constructor | |
| UnconstrainedEliminationSequenceStrategy (UndiGraph *graph, const NodeProperty< Size > *dom_sizes) | |
| constructor for a (tensorly) non empty graph | |
| UnconstrainedEliminationSequenceStrategy (const UnconstrainedEliminationSequenceStrategy &) | |
| copy constructor | |
| UnconstrainedEliminationSequenceStrategy (UnconstrainedEliminationSequenceStrategy &&) | |
| move constructor | |
The base class for all elimination sequence algorithms that require only the graph to be triangulated and the nodes' domain sizes to produce the node elimination ordering.
Definition at line 79 of file unconstrainedEliminationSequenceStrategy.h.
|
virtual |
destructor
Definition at line 81 of file unconstrainedEliminationSequenceStrategy.cpp.
References UnconstrainedEliminationSequenceStrategy().
|
protected |
default constructor
Definition at line 56 of file unconstrainedEliminationSequenceStrategy.cpp.
References UnconstrainedEliminationSequenceStrategy().
Referenced by gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy(), gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy(), UnconstrainedEliminationSequenceStrategy(), UnconstrainedEliminationSequenceStrategy(), UnconstrainedEliminationSequenceStrategy(), UnconstrainedEliminationSequenceStrategy(), ~UnconstrainedEliminationSequenceStrategy(), copyFactory(), and newFactory().
|
protected |
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 |
Definition at line 61 of file unconstrainedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::EliminationSequenceStrategy(), UnconstrainedEliminationSequenceStrategy(), and gum::EliminationSequenceStrategy::graph().
|
protected |
copy constructor
Definition at line 68 of file unconstrainedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::EliminationSequenceStrategy(), and UnconstrainedEliminationSequenceStrategy().
|
protected |
move constructor
Definition at line 74 of file unconstrainedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::EliminationSequenceStrategy(), and UnconstrainedEliminationSequenceStrategy().
|
staticprivateinherited |
an empty fill-ins set used by default
Definition at line 60 of file eliminationSequenceStrategy.cpp.
Referenced by fillIns().
|
pure virtualinherited |
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. |
Implemented in gum::DefaultEliminationSequenceStrategy, gum::DefaultPartialOrderedEliminationSequenceStrategy, and gum::OrderedEliminationSequenceStrategy.
|
virtualinherited |
clears the sequence (to prepare, for instance, a new elimination sequence)
Reimplemented in gum::DefaultEliminationSequenceStrategy, gum::DefaultPartialOrderedEliminationSequenceStrategy, gum::OrderedEliminationSequenceStrategy, and gum::PartialOrderedEliminationSequenceStrategy.
Definition at line 119 of file eliminationSequenceStrategy.cpp.
References domain_sizes_, graph_, and log_domain_sizes_.
Referenced by gum::DefaultEliminationSequenceStrategy::clear(), gum::OrderedEliminationSequenceStrategy::clear(), gum::PartialOrderedEliminationSequenceStrategy::clear(), and setGraph().
|
pure virtual |
virtual copy constructor
Implements gum::EliminationSequenceStrategy.
Implemented in gum::DefaultEliminationSequenceStrategy.
References UnconstrainedEliminationSequenceStrategy(), and gum::EliminationSequenceStrategy::graph().
|
noexceptinherited |
returns the current domain sizes
Definition at line 59 of file eliminationSequenceStrategy_inl.h.
References domain_sizes_.
Referenced by providesGraphUpdate().
|
virtualinherited |
performs all the graph/fill-ins updates provided (if any)
| node | the node the elimination of which requires the graph update |
Reimplemented in gum::DefaultEliminationSequenceStrategy, gum::DefaultPartialOrderedEliminationSequenceStrategy, and gum::OrderedEliminationSequenceStrategy.
Definition at line 112 of file eliminationSequenceStrategy.cpp.
|
virtualinherited |
in case fill-ins are provided, this function returns the fill-ins due to all the nodes eliminated so far
Reimplemented in gum::DefaultEliminationSequenceStrategy, gum::DefaultPartialOrderedEliminationSequenceStrategy, and gum::OrderedEliminationSequenceStrategy.
Definition at line 116 of file eliminationSequenceStrategy.cpp.
References _empty_fill_ins_().
Referenced by gum::DefaultEliminationSequenceStrategy::fillIns(), gum::DefaultPartialOrderedEliminationSequenceStrategy::fillIns(), and gum::OrderedEliminationSequenceStrategy::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().
|
pure virtual |
creates a new elimination sequence of the same type as the current object, but this sequence contains only an empty graph
Implements gum::EliminationSequenceStrategy.
Implemented in gum::DefaultEliminationSequenceStrategy.
References UnconstrainedEliminationSequenceStrategy().
|
pure virtualinherited |
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 |
Implemented in gum::DefaultEliminationSequenceStrategy, gum::DefaultPartialOrderedEliminationSequenceStrategy, and gum::OrderedEliminationSequenceStrategy.
|
pure virtualinherited |
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)
Implemented in gum::DefaultEliminationSequenceStrategy, gum::DefaultPartialOrderedEliminationSequenceStrategy, and gum::OrderedEliminationSequenceStrategy.
|
pure virtualinherited |
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 itself. Hence the latter should delegate this operation to the elimination sequence. This is the case, for instance, for the defaultEliminationSequenceStrategy, which uses a SimplicialSet that knows that some eliminated nodes do not require any fill-in.
Implemented in gum::DefaultEliminationSequenceStrategy, gum::DefaultPartialOrderedEliminationSequenceStrategy, and gum::OrderedEliminationSequenceStrategy.
References domainSizes().
|
virtualinherited |
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 variables/nodes |
Reimplemented in gum::DefaultEliminationSequenceStrategy, gum::DefaultPartialOrderedEliminationSequenceStrategy, gum::OrderedEliminationSequenceStrategy, and gum::PartialOrderedEliminationSequenceStrategy.
Definition at line 126 of file eliminationSequenceStrategy.cpp.
References clear(), domain_sizes_, gum::HashTable< Key, Val >::exists(), graph(), graph_, GUM_ERROR, and log_domain_sizes_.
Referenced by EliminationSequenceStrategy(), gum::DefaultEliminationSequenceStrategy::setGraph(), gum::OrderedEliminationSequenceStrategy::setGraph(), and gum::PartialOrderedEliminationSequenceStrategy::setGraph().
|
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().