diff --git a/gtsam/discrete/DiscreteConditional.cpp b/gtsam/discrete/DiscreteConditional.cpp index c90002e78..1a345afac 100644 --- a/gtsam/discrete/DiscreteConditional.cpp +++ b/gtsam/discrete/DiscreteConditional.cpp @@ -478,11 +478,6 @@ double DiscreteConditional::evaluate(const HybridValues& x) const { return this->evaluate(x.discrete()); } -/* ************************************************************************* */ -void DiscreteConditional::setData(const DiscreteConditional::shared_ptr& dc) { - this->root_ = dc->root_; -} - /* ************************************************************************* */ DiscreteConditional::shared_ptr DiscreteConditional::max( const Ordering& keys) const { @@ -491,10 +486,10 @@ DiscreteConditional::shared_ptr DiscreteConditional::max( } /* ************************************************************************* */ -DiscreteConditional::shared_ptr DiscreteConditional::prune( - size_t maxNrAssignments) const { - return std::make_shared( - this->nrFrontals(), BaseFactor::prune(maxNrAssignments)); +void DiscreteConditional::prune(size_t maxNrAssignments) { + // Get as DiscreteConditional so the probabilities are normalized + DiscreteConditional pruned(nrFrontals(), BaseFactor::prune(maxNrAssignments)); + this->root_ = pruned.root_; } /* ************************************************************************* */ diff --git a/gtsam/discrete/DiscreteConditional.h b/gtsam/discrete/DiscreteConditional.h index 98edcb8c9..35dc346d1 100644 --- a/gtsam/discrete/DiscreteConditional.h +++ b/gtsam/discrete/DiscreteConditional.h @@ -276,11 +276,8 @@ class GTSAM_EXPORT DiscreteConditional */ double negLogConstant() const override; - /// Set the data from another DiscreteConditional. - virtual void setData(const DiscreteConditional::shared_ptr& dc); - /// Prune the conditional - virtual DiscreteConditional::shared_ptr prune(size_t maxNrAssignments) const; + virtual void prune(size_t maxNrAssignments); /// @} diff --git a/gtsam/discrete/TableDistribution.cpp b/gtsam/discrete/TableDistribution.cpp index e62d3ecec..bedcee42c 100644 --- a/gtsam/discrete/TableDistribution.cpp +++ b/gtsam/discrete/TableDistribution.cpp @@ -122,21 +122,8 @@ DiscreteConditional::shared_ptr TableDistribution::max( } /* ****************************************************************************/ -void TableDistribution::setData(const DiscreteConditional::shared_ptr& dc) { - if (auto dtc = std::dynamic_pointer_cast(dc)) { - this->table_ = dtc->table_; - } else { - this->table_ = TableFactor(dc->discreteKeys(), *dc); - } -} - -/* ****************************************************************************/ -DiscreteConditional::shared_ptr TableDistribution::prune( - size_t maxNrAssignments) const { - TableFactor pruned = table_.prune(maxNrAssignments); - - return std::make_shared(this->discreteKeys(), - pruned.sparseTable()); +void TableDistribution::prune(size_t maxNrAssignments) { + table_ = table_.prune(maxNrAssignments); } } // namespace gtsam diff --git a/gtsam/discrete/TableDistribution.h b/gtsam/discrete/TableDistribution.h index 655774f04..ce41835d6 100644 --- a/gtsam/discrete/TableDistribution.h +++ b/gtsam/discrete/TableDistribution.h @@ -145,12 +145,8 @@ class GTSAM_EXPORT TableDistribution : public DiscreteConditional { /// @name Advanced Interface /// @{ - /// Set the underlying data from the DiscreteConditional - virtual void setData(const DiscreteConditional::shared_ptr& dc) override; - /// Prune the conditional - virtual DiscreteConditional::shared_ptr prune( - size_t maxNrAssignments) const override; + virtual void prune(size_t maxNrAssignments) override; /// Get a DecisionTreeFactor representation. DecisionTreeFactor toDecisionTreeFactor() const override {