![]() |
aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
|
An Elimination sequence algorithm that imposes a given partial ordering on the nodes elimination sequence. More...
#include <defaultPartialOrderedEliminationSequenceStrategy.h>
Public Member Functions | |
Constructors / Destructors | |
| DefaultPartialOrderedEliminationSequenceStrategy (double theRatio=GUM_QUASI_RATIO, double theThreshold=GUM_WEIGHT_THRESHOLD) | |
| default constructor (uses an empty graph) | |
| DefaultPartialOrderedEliminationSequenceStrategy (UndiGraph *graph, const NodeProperty< Size > *dom_sizes, const List< NodeSet > *subsets, double ratio=GUM_QUASI_RATIO, double threshold=GUM_WEIGHT_THRESHOLD) | |
| constructor for a (tensorly) non empty graph | |
| DefaultPartialOrderedEliminationSequenceStrategy (const DefaultPartialOrderedEliminationSequenceStrategy &from) | |
| copy constructor | |
| DefaultPartialOrderedEliminationSequenceStrategy (DefaultPartialOrderedEliminationSequenceStrategy &&from) | |
| move constructor | |
| virtual | ~DefaultPartialOrderedEliminationSequenceStrategy () |
| destructor | |
| virtual DefaultPartialOrderedEliminationSequenceStrategy * | 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 DefaultPartialOrderedEliminationSequenceStrategy * | 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 | |
| virtual bool | setPartialOrder (const List< NodeSet > *subsets) |
| sets a new partial ordering constraint on the elimination sequence | |
| const List< NodeSet > * | partialOrder () const noexcept |
| returns the current partial ordering | |
| bool | isPartialOrderNeeded () const noexcept |
| indicates if a new partial 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 Member Functions | |
| bool | isPartialOrderNeeded_ (const List< NodeSet > *subsets) const |
| indicate whether a partial ordering is compatible with the current graph | |
Protected Attributes | |
| const List< NodeSet > * | subsets_ {nullptr} |
| the subsets constituting the partial ordering | |
| List< NodeSet >::const_iterator | subset_iter_ |
| the iterator indicating which is the current subset on which we work | |
| NodeSet | nodeset_ |
| the nodes which can be currently eliminated | |
| bool | partial_order_needed_ {true} |
| indicate whether a new partial ordering is necessary for the elimination | |
| 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 | |
| NodeId | _nodeToEliminate_ (const PriorityQueue< NodeId, double > &possibleNodes) |
| returns the best possible node to be eliminated | |
| 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 Elimination sequence algorithm that imposes a given partial ordering on the nodes elimination sequence.
Class DefaultPartialOrderedEliminationSequenceStrategy implements an elimination sequence algorithm that satisfies a partial ordering, that is, the set of all the nodes is divided into several subsets. All the nodes of the first subset must be eliminated before the nodes of the second, which must be eliminated before those of the third subset, and so on. Within a subset, the ordering is determined as follows:
with their neighbors) are eliminated first
neighbors, they become simplicial) and that create small cliques, are eliminated (see Bodlaender's safe reductions)
fill-ins to create cliques) that would create small cliques, are eliminated
last nodes to be eliminated.
Definition at line 99 of file defaultPartialOrderedEliminationSequenceStrategy.h.
| gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy | ( | 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 58 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References DefaultPartialOrderedEliminationSequenceStrategy(), _simplicial_ratio_, and _simplicial_threshold_.
Referenced by DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), ~DefaultPartialOrderedEliminationSequenceStrategy(), copyFactory(), and newFactory().
| gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy | ( | UndiGraph * | graph, |
| const NodeProperty< Size > * | dom_sizes, | ||
| const List< NodeSet > * | subsets, | ||
| 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 | thedomain sizes of the nodes/variables |
| subsets | the list of the subsets constituting the partial ordering |
| 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 66 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References DefaultPartialOrderedEliminationSequenceStrategy(), _simplicial_ratio_, _simplicial_threshold_, gum::EliminationSequenceStrategy::graph(), setGraph(), and gum::PartialOrderedEliminationSequenceStrategy::setPartialOrder().
| gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy | ( | const DefaultPartialOrderedEliminationSequenceStrategy & | from | ) |
copy constructor
Definition at line 81 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References DefaultPartialOrderedEliminationSequenceStrategy(), gum::PartialOrderedEliminationSequenceStrategy::PartialOrderedEliminationSequenceStrategy(), _log_weights_, _provide_fill_ins_, _simplicial_ratio_, _simplicial_set_, _simplicial_threshold_, gum::EliminationSequenceStrategy::graph_, and gum::EliminationSequenceStrategy::log_domain_sizes_.
| gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy | ( | DefaultPartialOrderedEliminationSequenceStrategy && | from | ) |
move constructor
Definition at line 100 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References DefaultPartialOrderedEliminationSequenceStrategy(), gum::PartialOrderedEliminationSequenceStrategy::PartialOrderedEliminationSequenceStrategy(), _log_weights_, _provide_fill_ins_, _simplicial_ratio_, _simplicial_set_, and _simplicial_threshold_.
|
virtual |
destructor
Definition at line 116 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References DefaultPartialOrderedEliminationSequenceStrategy(), and _simplicial_set_.
|
private |
create a new simplicial set suited for the current graph
Definition at line 125 of file defaultPartialOrderedEliminationSequenceStrategy.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().
|
private |
returns the best possible node to be eliminated
this function is used by method nextNodeToEliminate
Definition at line 168 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References GUM_ERROR, gum::PartialOrderedEliminationSequenceStrategy::nodeset_, and gum::PriorityQueueImplementation< Val, int, std::less< int >, std::is_scalar< Val >::value >::priority().
Referenced by nextNodeToEliminate().
|
finalvirtual |
if the elimination sequence is able to compute fill-ins, we indicate whether we want this feature to be activated
if the elimination sequence is able to compute fill-ins, we indicatewhether 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 237 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References _provide_fill_ins_, and _simplicial_set_.
|
finalvirtual |
clears the sequence (to prepare, for instance, a new elimination sequence)
Reimplemented from gum::PartialOrderedEliminationSequenceStrategy.
Definition at line 157 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References _log_weights_, _simplicial_set_, and gum::PartialOrderedEliminationSequenceStrategy::clear().
|
finalvirtual |
virtual copy constructor
Implements gum::PartialOrderedEliminationSequenceStrategy.
Definition at line 298 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References DefaultPartialOrderedEliminationSequenceStrategy().
|
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 257 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References _simplicial_set_, gum::EliminationSequenceStrategy::graph_, gum::PartialOrderedEliminationSequenceStrategy::nodeset_, gum::PartialOrderedEliminationSequenceStrategy::partial_order_needed_, gum::PartialOrderedEliminationSequenceStrategy::subset_iter_, and gum::PartialOrderedEliminationSequenceStrategy::subsets_.
|
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 282 of file defaultPartialOrderedEliminationSequenceStrategy.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().
|
noexceptinherited |
indicates if a new partial ordering is needed
if the current partial ordering does not contain all the nodes of the graph or if the graph itself is not defined (nullptr) a new partial ordering will be needed for the next triangulation
Definition at line 63 of file partialOrderedEliminationSequenceStrategy_inl.h.
References partial_order_needed_.
Referenced by copyFactory().
|
protectedinherited |
indicate whether a partial ordering is compatible with the current graph
The method checks whether all the nodes of the graph belong to the partial ordering.
Definition at line 118 of file partialOrderedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::graph_, gum::Set< Key >::insert(), and gum::Set< Key >::size().
Referenced by setPartialOrder().
|
finalvirtual |
creates a new elimination sequence of the same type as the current object, but this sequence contains only an empty graph
Implements gum::PartialOrderedEliminationSequenceStrategy.
Definition at line 291 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References DefaultPartialOrderedEliminationSequenceStrategy(), _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 192 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References _log_weights_, _nodeToEliminate_(), _simplicial_set_, gum::EliminationSequenceStrategy::graph_, GUM_ERROR, gum::PartialOrderedEliminationSequenceStrategy::nodeset_, and gum::PartialOrderedEliminationSequenceStrategy::partial_order_needed_.
|
noexceptinherited |
returns the current partial ordering
Definition at line 58 of file partialOrderedEliminationSequenceStrategy_inl.h.
References subsets_.
|
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 246 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References _provide_fill_ins_.
|
finalvirtual |
indicates whether the elimination sequence updates by itself the graph after a node has been eliminated
Implements gum::EliminationSequenceStrategy.
Definition at line 252 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
|
finalvirtual |
sets a new graph to be triangulated
The elimination sequence algorithms reinitializes its data to start a new triangulation with graph Graph and a new partial ordrering
| graph | the new graph to be triangulated |
| dom_sizes | the domain sizes of the nodes/variables |
Reimplemented from gum::PartialOrderedEliminationSequenceStrategy.
Definition at line 145 of file defaultPartialOrderedEliminationSequenceStrategy.cpp.
References _createSimplicialSet_(), gum::EliminationSequenceStrategy::graph(), and gum::PartialOrderedEliminationSequenceStrategy::setGraph().
Referenced by DefaultPartialOrderedEliminationSequenceStrategy().
|
virtualinherited |
sets a new partial ordering constraint on the elimination sequence
sets a new partial order
| subsets | the list of the subsets constituting the partial ordering |
Definition at line 135 of file partialOrderedEliminationSequenceStrategy.cpp.
References gum::EliminationSequenceStrategy::graph_, isPartialOrderNeeded_(), nodeset_, partial_order_needed_, subset_iter_, and subsets_.
Referenced by gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy(), PartialOrderedEliminationSequenceStrategy(), gum::PartialOrderedTriangulation::PartialOrderedTriangulation(), gum::PartialOrderedTriangulation::initTriangulation_(), and setGraph().
|
private |
for each node, the weight of the clique created by the node's elimination
Definition at line 241 of file defaultPartialOrderedEliminationSequenceStrategy.h.
Referenced by DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), _createSimplicialSet_(), clear(), and nextNodeToEliminate().
|
private |
indicates whether we compute new fill-ins
Definition at line 253 of file defaultPartialOrderedEliminationSequenceStrategy.h.
Referenced by DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), _createSimplicialSet_(), askFillIns(), fillIns(), and providesFillIns().
|
private |
the ratio used by simplicial_set for its quasi-simplicial nodes
Definition at line 247 of file defaultPartialOrderedEliminationSequenceStrategy.h.
Referenced by DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), _createSimplicialSet_(), and newFactory().
|
private |
the simplicial set used for determining the best nodes to eliminate
Definition at line 244 of file defaultPartialOrderedEliminationSequenceStrategy.h.
Referenced by DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), ~DefaultPartialOrderedEliminationSequenceStrategy(), _createSimplicialSet_(), askFillIns(), clear(), eliminationUpdate(), fillIns(), and nextNodeToEliminate().
|
private |
the threshold used by simplicial_set to determine small cliques
Definition at line 250 of file defaultPartialOrderedEliminationSequenceStrategy.h.
Referenced by DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), DefaultPartialOrderedEliminationSequenceStrategy(), _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().
|
protectedinherited |
the nodes which can be currently eliminated
Definition at line 152 of file partialOrderedEliminationSequenceStrategy.h.
Referenced by PartialOrderedEliminationSequenceStrategy(), PartialOrderedEliminationSequenceStrategy(), gum::DefaultPartialOrderedEliminationSequenceStrategy::_nodeToEliminate_(), clear(), gum::DefaultPartialOrderedEliminationSequenceStrategy::eliminationUpdate(), gum::DefaultPartialOrderedEliminationSequenceStrategy::nextNodeToEliminate(), and setPartialOrder().
|
protectedinherited |
indicate whether a new partial ordering is necessary for the elimination
Definition at line 155 of file partialOrderedEliminationSequenceStrategy.h.
Referenced by PartialOrderedEliminationSequenceStrategy(), PartialOrderedEliminationSequenceStrategy(), clear(), gum::DefaultPartialOrderedEliminationSequenceStrategy::eliminationUpdate(), isPartialOrderNeeded(), gum::DefaultPartialOrderedEliminationSequenceStrategy::nextNodeToEliminate(), and setPartialOrder().
|
protectedinherited |
the iterator indicating which is the current subset on which we work
Definition at line 149 of file partialOrderedEliminationSequenceStrategy.h.
Referenced by PartialOrderedEliminationSequenceStrategy(), PartialOrderedEliminationSequenceStrategy(), gum::DefaultPartialOrderedEliminationSequenceStrategy::eliminationUpdate(), and setPartialOrder().
|
protectedinherited |
the subsets constituting the partial ordering
Definition at line 146 of file partialOrderedEliminationSequenceStrategy.h.
Referenced by PartialOrderedEliminationSequenceStrategy(), PartialOrderedEliminationSequenceStrategy(), clear(), gum::DefaultPartialOrderedEliminationSequenceStrategy::eliminationUpdate(), partialOrder(), setGraph(), and setPartialOrder().