add nrValues method

release/4.3a0
Varun Agrawal 2024-12-07 10:53:32 -05:00
parent 7150f284a8
commit d1d440ad34
7 changed files with 28 additions and 1 deletions

View File

@ -255,6 +255,12 @@ namespace gtsam {
*/
DecisionTreeFactor prune(size_t maxNrAssignments) const;
/**
* Get the number of non-zero values contained in this factor.
* It could be much smaller than `prod_{key}(cardinality(key))`.
*/
uint64_t nrValues() const override { return nrLeaves(); }
/// @}
/// @name Wrapper support
/// @{

View File

@ -113,6 +113,12 @@ class GTSAM_EXPORT DiscreteFactor : public Factor {
virtual DecisionTreeFactor toDecisionTreeFactor() const = 0;
/**
* Get the number of non-zero values contained in this factor.
* It could be much smaller than `prod_{key}(cardinality(key))`.
*/
virtual uint64_t nrValues() const = 0;
/// @}
/// @name Wrapper support
/// @{

View File

@ -324,6 +324,12 @@ class GTSAM_EXPORT TableFactor : public DiscreteFactor {
*/
TableFactor prune(size_t maxNrAssignments) const;
/**
* Get the number of non-zero values contained in this factor.
* It could be much smaller than `prod_{key}(cardinality(key))`.
*/
uint64_t nrValues() const override { return sparse_table_.nonZeros(); }
/// @}
/// @name Wrapper support
/// @{

View File

@ -72,6 +72,9 @@ class GTSAM_UNSTABLE_EXPORT AllDiff : public Constraint {
/// Partially apply known values, domain version
Constraint::shared_ptr partiallyApply(
const Domains&) const override;
/// Get the number of non-zero values contained in this factor.
uint64_t nrValues() const override { return 1; };
};
} // namespace gtsam

View File

@ -96,6 +96,9 @@ class BinaryAllDiff : public Constraint {
AlgebraicDecisionTree<Key> errorTree() const override {
throw std::runtime_error("BinaryAllDiff::error not implemented");
}
/// Get the number of non-zero values contained in this factor.
uint64_t nrValues() const override { return 1; };
};
} // namespace gtsam

View File

@ -49,7 +49,7 @@ class GTSAM_UNSTABLE_EXPORT Domain : public Constraint {
/// Erase a value, non const :-(
void erase(size_t value) { values_.erase(value); }
size_t nrValues() const { return values_.size(); }
uint64_t nrValues() const override { return values_.size(); }
bool isSingleton() const { return nrValues() == 1; }

View File

@ -77,6 +77,9 @@ class GTSAM_UNSTABLE_EXPORT SingleValue : public Constraint {
/// Partially apply known values, domain version
Constraint::shared_ptr partiallyApply(
const Domains& domains) const override;
/// Get the number of non-zero values contained in this factor.
uint64_t nrValues() const override { return 1; };
};
} // namespace gtsam