diff --git a/gtsam/discrete/AlgebraicDecisionTree.h b/gtsam/discrete/AlgebraicDecisionTree.h index 383346ab1..a8ec66f73 100644 --- a/gtsam/discrete/AlgebraicDecisionTree.h +++ b/gtsam/discrete/AlgebraicDecisionTree.h @@ -57,6 +57,9 @@ namespace gtsam { AlgebraicDecisionTree(double leaf = 1.0) : Base(leaf) {} + /// Constructor which accepts root pointer + AlgebraicDecisionTree(const typename Base::NodePtr root) : Base(root) {} + // Explicitly non-explicit constructor AlgebraicDecisionTree(const Base& add) : Base(add) {} diff --git a/gtsam/discrete/TableDistribution.cpp b/gtsam/discrete/TableDistribution.cpp index 621e6e394..4b9979d3a 100644 --- a/gtsam/discrete/TableDistribution.cpp +++ b/gtsam/discrete/TableDistribution.cpp @@ -45,15 +45,14 @@ static Eigen::SparseVector normalizeSparseTable( /* ************************************************************************** */ TableDistribution::TableDistribution(const TableFactor& f) - : BaseConditional(f.keys().size(), - DecisionTreeFactor(f.discreteKeys(), ADT())), + : BaseConditional(f.keys().size(), f.discreteKeys(), ADT(nullptr)), table_(f / (*std::dynamic_pointer_cast( f.sum(f.keys().size())))) {} /* ************************************************************************** */ TableDistribution::TableDistribution(const DiscreteKeys& keys, const std::vector& potentials) - : BaseConditional(keys.size(), keys, DecisionTreeFactor(keys, ADT())), + : BaseConditional(keys.size(), keys, ADT(nullptr)), table_(TableFactor( keys, normalizeSparseTable(TableFactor::Convert(keys, potentials)))) { } @@ -61,7 +60,7 @@ TableDistribution::TableDistribution(const DiscreteKeys& keys, /* ************************************************************************** */ TableDistribution::TableDistribution(const DiscreteKeys& keys, const std::string& potentials) - : BaseConditional(keys.size(), keys, DecisionTreeFactor(keys, ADT())), + : BaseConditional(keys.size(), keys, ADT(nullptr)), table_(TableFactor( keys, normalizeSparseTable(TableFactor::Convert(keys, potentials)))) { }