diff --git a/gtsam/discrete/DiscreteBayesNet.cpp b/gtsam/discrete/DiscreteBayesNet.cpp index bce14ad46..bef0413c8 100644 --- a/gtsam/discrete/DiscreteBayesNet.cpp +++ b/gtsam/discrete/DiscreteBayesNet.cpp @@ -18,6 +18,7 @@ #include #include +#include #include namespace gtsam { @@ -56,18 +57,15 @@ DiscreteValues DiscreteBayesNet::sample() const { DiscreteValues DiscreteBayesNet::sample(DiscreteValues result) const { // sample each node in turn in topological sort order (parents first) - for (auto it = std::make_reverse_iterator(end()); it != std::make_reverse_iterator(begin()); ++it) { + for (auto it = std::make_reverse_iterator(end()); + it != std::make_reverse_iterator(begin()); ++it) { (*it)->sampleInPlace(&result); } return result; } DiscreteValues DiscreteBayesNet::mode() const { - DiscreteValues result; - for (auto it = begin(); it != end(); ++it) { - result[(*it)->firstFrontalKey()] = (*it)->argmax(result); - } - return result; + return DiscreteLookupDAG::FromBayesNet(*this).argmax(); } /* *********************************************************************** */