53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
| /**
 | |
|  * @file    inference.h
 | |
|  * @brief   Contains *generic* inference algorithms that convert between templated
 | |
|  * graphical models, i.e., factor graphs, Bayes nets, and Bayes trees
 | |
|  * @author  Frank Dellaert
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "FactorGraph.h"
 | |
| #include "BayesNet.h"
 | |
| 
 | |
| namespace gtsam {
 | |
| 
 | |
| 	class Ordering;
 | |
| 
 | |
| 	// ELIMINATE: FACTOR GRAPH -> BAYES NET
 | |
| 
 | |
| 	/**
 | |
|    * Eliminate a single node yielding a Conditional
 | |
|    * Eliminates the factors from the factor graph through findAndRemoveFactors
 | |
|    * and adds a new factor on the separator to the factor graph
 | |
|    */
 | |
| 	template<class Factor, class Conditional>
 | |
| 	boost::shared_ptr<Conditional>
 | |
| 	eliminateOne(FactorGraph<Factor>& factorGraph, const std::string& key);
 | |
| 
 | |
| 	/**
 | |
| 	 * eliminate factor graph using the given (not necessarily complete)
 | |
| 	 * ordering, yielding a chordal Bayes net and (partially eliminated) FG
 | |
| 	 */
 | |
| 	template<class Factor, class Conditional>
 | |
| 	BayesNet<Conditional> eliminate(FactorGraph<Factor>& factorGraph, const Ordering& ordering);
 | |
| 
 | |
| 	// FACTOR/MARGINALIZE: BAYES NET -> FACTOR GRAPH
 | |
| 
 | |
| 	/**
 | |
| 	 * Factor P(X) as P(not keys|keys) P(keys)
 | |
| 	 * @return P(not keys|keys) as an incomplete BayesNet, and P(keys) as a factor graph
 | |
| 	 */
 | |
| 	template<class Factor, class Conditional>
 | |
| 	std::pair< BayesNet<Conditional>, FactorGraph<Factor> >
 | |
| 	factor(const BayesNet<Conditional>& bn, const Ordering& keys);
 | |
| 
 | |
| 	/**
 | |
| 	 * integrate out all except ordering, might be inefficient as the ordering
 | |
| 	 * will simply be the current ordering with the keys put in the back
 | |
| 	 */
 | |
| 	template<class Factor, class Conditional>
 | |
| 	FactorGraph<Factor> marginalize(const BayesNet<Conditional>& bn, const Ordering& keys);
 | |
| 
 | |
| } /// namespace gtsam
 |