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
 |