123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /* ----------------------------------------------------------------------------
- * GTSAM Copyright 2010, Georgia Tech Research Corporation,
- * Atlanta, Georgia 30332-0415
- * All Rights Reserved
- * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
- * See LICENSE for the license information
- * -------------------------------------------------------------------------- */
- /**
- * @file Constraint.h
- * @date May 15, 2012
- * @author Frank Dellaert
- */
- #pragma once
- #include <gtsam/discrete/DiscreteFactor.h>
- #include <gtsam_unstable/dllexport.h>
- #include <boost/assign.hpp>
- namespace gtsam {
- class Domain;
- /**
- * Base class for discrete probabilistic factors
- * The most general one is the derived DecisionTreeFactor
- */
- class Constraint : public DiscreteFactor {
- public:
- typedef boost::shared_ptr<Constraint> shared_ptr;
- protected:
- /// Construct n-way factor
- Constraint(const KeyVector& js) : DiscreteFactor(js) {}
- /// Construct unary factor
- Constraint(Key j) : DiscreteFactor(boost::assign::cref_list_of<1>(j)) {}
- /// Construct binary factor
- Constraint(Key j1, Key j2)
- : DiscreteFactor(boost::assign::cref_list_of<2>(j1)(j2)) {}
- /// construct from container
- template <class KeyIterator>
- Constraint(KeyIterator beginKey, KeyIterator endKey)
- : DiscreteFactor(beginKey, endKey) {}
- public:
- /// @name Standard Constructors
- /// @{
- /// Default constructor for I/O
- Constraint();
- /// Virtual destructor
- ~Constraint() override {}
- /// @}
- /// @name Standard Interface
- /// @{
- /*
- * Ensure Arc-consistency
- * @param j domain to be checked
- * @param domains all other domains
- */
- virtual bool ensureArcConsistency(size_t j,
- std::vector<Domain>& domains) const = 0;
- /// Partially apply known values
- virtual shared_ptr partiallyApply(const Values&) const = 0;
- /// Partially apply known values, domain version
- virtual shared_ptr partiallyApply(const std::vector<Domain>&) const = 0;
- /// @}
- };
- // DiscreteFactor
- } // namespace gtsam
|