92 lines
1.9 KiB
C
92 lines
1.9 KiB
C
|
/* ----------------------------------------------------------------------------
|
||
|
|
||
|
* 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>
|
||
|
|
||
|
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 std::vector<Index>& js) :
|
||
|
DiscreteFactor(js) {
|
||
|
}
|
||
|
|
||
|
/// Construct unary factor
|
||
|
Constraint(Index j) :
|
||
|
DiscreteFactor(j) {
|
||
|
}
|
||
|
|
||
|
/// Construct binary factor
|
||
|
Constraint(Index j1, Index j2) :
|
||
|
DiscreteFactor(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
|
||
|
virtual ~Constraint() {}
|
||
|
|
||
|
/// @}
|
||
|
/// @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
|