33 #include <agrum/tools/core/set.h> 35 #include <agrum/tools/graphs/algorithms/triangulations/defaultTriangulation.h> 36 #include <agrum/tools/graphs/algorithms/triangulations/partialOrderedTriangulation.h> 38 #include <agrum/BN/inference/variableElimination.h> 40 #include <agrum/tools/multidim/implementations/multiDimArray.h> 41 #include <agrum/tools/multidim/implementations/multiDimBucket.h> 42 #include <agrum/tools/multidim/potential.h> 44 #include <agrum/PRM/inference/PRMInference.h> 45 #include <agrum/PRM/inference/structuredBayesBall.h> 47 #include <agrum/PRM/classBayesNet.h> 48 #include <agrum/PRM/classDependencyGraph.h> 49 #include <agrum/PRM/instanceBayesNet.h> 61 template <
typename GUM_SCALAR >
70 SVED(
const PRM< GUM_SCALAR >& prm,
const PRMSystem< GUM_SCALAR >& model);
101 virtual void posterior_(
const Chain& chain, Potential< GUM_SCALAR >& m);
104 virtual void joint_(
const std::vector< Chain >& queries,
105 Potential< GUM_SCALAR >& j);
149 const PRMInstance< GUM_SCALAR >* from,
150 const PRMInstance< GUM_SCALAR >* i,
153 List<
const PRMInstance< GUM_SCALAR >* >& elim_list,
157 const PRMInstance< GUM_SCALAR >* i,
160 List<
const PRMInstance< GUM_SCALAR >* >& elim_list,
173 const PRMInstance< GUM_SCALAR >* second);
194 List<
const PRMInstance< GUM_SCALAR >* >& elim_list,
195 List<
const PRMInstance< GUM_SCALAR >* >& reduced_list,
205 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 206 extern template class SVED<
double >;
213 #include <agrum/PRM/inference/SVED_tpl.h> virtual std::string name() const
Returns the name of the current inference algorithm.
void initElimOrder__()
Returns true if second can be eliminated before first.
virtual void evidenceAdded_(const Chain &chain)
See PRMInference::evidenceAdded_().
void eliminateNodesDownward__(const PRMInstance< GUM_SCALAR > *from, const PRMInstance< GUM_SCALAR > *i, BucketSet &pool, BucketSet &trash, List< const PRMInstance< GUM_SCALAR > * > &elim_list, Set< const PRMInstance< GUM_SCALAR > * > &ignore)
Returns true if second can be eliminated before first.
std::string trim__(const std::string &s)
Returns true if second can be eliminated before first.
SVED(const PRM< GUM_SCALAR > &prm, const PRMSystem< GUM_SCALAR > &model)
Default Constructor.
void reduceElimList__(const PRMInstance< GUM_SCALAR > *i, List< const PRMInstance< GUM_SCALAR > * > &elim_list, List< const PRMInstance< GUM_SCALAR > * > &reduced_list, Set< const PRMInstance< GUM_SCALAR > * > &ignore, BucketSet &pool, BucketSet &trash)
Returns true if second can be eliminated before first.
INLINE void emplace(Args &&... args)
void initLiftedNodes__(const PRMInstance< GUM_SCALAR > *i, BucketSet &trash)
Returns true if second can be eliminated before first.
virtual void posterior_(const Chain &chain, Potential< GUM_SCALAR > &m)
See PRMInference::posterior_().
Potential< GUM_SCALAR > * getAggPotential__(const PRMInstance< GUM_SCALAR > *i, const PRMAggregate< GUM_SCALAR > *agg)
Returns true if second can be eliminated before first.
Set< NodeId > & getSCSet__(const PRMInstance< GUM_SCALAR > *i)
Returns true if second can be eliminated before first.
void insertLiftedNodes__(const PRMInstance< GUM_SCALAR > *i, BucketSet &pool, BucketSet &trash)
Returns true if second can be eliminated before first.
void insertEvidence__(const PRMInstance< GUM_SCALAR > *i, BucketSet &pool)
Returns true if second can be eliminated before first.
void eliminateNodes__(const PRMInstance< GUM_SCALAR > *query, NodeId id, BucketSet &pool, BucketSet &trash)
Returns true if second can be eliminated before first.
bool checkElimOrder__(const PRMInstance< GUM_SCALAR > *first, const PRMInstance< GUM_SCALAR > *second)
Returns true if second can be eliminated before first.
ParamScopeData(const std::string &s, const PRMReferenceSlot< GUM_SCALAR > &ref, Idx d)
void eliminateNodesWithEvidence__(const PRMInstance< GUM_SCALAR > *i, BucketSet &pool, BucketSet &trash)
Returns true if second can be eliminated before first.
std::vector< NodeId > & getElimOrder__(const PRMClass< GUM_SCALAR > &c)
Returns true if second can be eliminated before first.
virtual void evidenceRemoved_(const Chain &chain)
See PRMInference::evidenceRemoved_().
StructuredBayesBall< GUM_SCALAR > bb__
virtual void joint_(const std::vector< Chain > &queries, Potential< GUM_SCALAR > &j)
See PRMInference::joint_().
void eliminateNodesUpward__(const PRMInstance< GUM_SCALAR > *i, BucketSet &pool, BucketSet &trash, List< const PRMInstance< GUM_SCALAR > * > &elim_list, Set< const PRMInstance< GUM_SCALAR > * > &ignore)
Returns true if second can be eliminated before first.
void initReqSets__(const PRMInstance< GUM_SCALAR > *i)
Returns true if second can be eliminated before first.
Sequence< std::string > * class_elim_order__