Revert "kill toDecisionTreeFactor to force rethink"

This reverts commit 306a3bae52.
release/4.3a0
Varun Agrawal 2024-12-07 19:24:04 -05:00
parent 32b6bc0a37
commit 38563da342
4 changed files with 22 additions and 0 deletions

View File

@ -169,6 +169,9 @@ namespace gtsam {
} }
} }
/// Convert into a decision tree
DecisionTreeFactor toDecisionTreeFactor() const override { return *this; }
/// Create new factor by summing all values with the same separator values /// Create new factor by summing all values with the same separator values
DiscreteFactor::shared_ptr sum(size_t nrFrontals) const override { DiscreteFactor::shared_ptr sum(size_t nrFrontals) const override {
return combine(nrFrontals, ADT::Ring::add); return combine(nrFrontals, ADT::Ring::add);

View File

@ -113,6 +113,8 @@ class GTSAM_EXPORT DiscreteFactor : public Factor {
virtual DiscreteFactor::shared_ptr operator*( virtual DiscreteFactor::shared_ptr operator*(
const DiscreteFactor::shared_ptr&) const = 0; const DiscreteFactor::shared_ptr&) const = 0;
virtual DecisionTreeFactor toDecisionTreeFactor() const = 0;
/// Create new factor by summing all values with the same separator values /// Create new factor by summing all values with the same separator values
virtual DiscreteFactor::shared_ptr sum(size_t nrFrontals) const = 0; virtual DiscreteFactor::shared_ptr sum(size_t nrFrontals) const = 0;

View File

@ -180,6 +180,20 @@ DiscreteFactor::shared_ptr TableFactor::operator*(
} }
} }
/* ************************************************************************ */
DecisionTreeFactor TableFactor::toDecisionTreeFactor() const {
DiscreteKeys dkeys = discreteKeys();
std::vector<double> table;
for (auto i = 0; i < sparse_table_.size(); i++) {
table.push_back(sparse_table_.coeff(i));
}
gttic_(toDecisionTreeFactor_Constructor);
// NOTE(Varun): This constructor is really expensive!!
DecisionTreeFactor f(dkeys, table);
gttoc_(toDecisionTreeFactor_Constructor);
return f;
}
/* ************************************************************************ */ /* ************************************************************************ */
TableFactor TableFactor::choose(const DiscreteValues parent_assign, TableFactor TableFactor::choose(const DiscreteValues parent_assign,
DiscreteKeys parent_keys) const { DiscreteKeys parent_keys) const {

View File

@ -207,6 +207,9 @@ class GTSAM_EXPORT TableFactor : public DiscreteFactor {
} }
} }
/// Convert into a decisiontree
DecisionTreeFactor toDecisionTreeFactor() const override;
/// Create a TableFactor that is a subset of this TableFactor /// Create a TableFactor that is a subset of this TableFactor
TableFactor choose(const DiscreteValues assignments, TableFactor choose(const DiscreteValues assignments,
DiscreteKeys parent_keys) const; DiscreteKeys parent_keys) const;