| 
									
										
										
										
											2009-10-28 04:23:19 +08:00
										 |  |  | /**
 | 
					
						
							| 
									
										
										
										
											2009-11-01 03:53:20 +08:00
										 |  |  |  * @file    SymbolicBayesNet.h | 
					
						
							| 
									
										
										
										
											2009-10-28 04:23:19 +08:00
										 |  |  |  * @brief   Symbolic Chordal Bayes Net, the result of eliminating a factor graph | 
					
						
							|  |  |  |  * @author  Frank Dellaert | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // \callgraph
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <list>
 | 
					
						
							|  |  |  | #include <boost/serialization/map.hpp>
 | 
					
						
							|  |  |  | #include <boost/serialization/list.hpp>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "Testable.h"
 | 
					
						
							| 
									
										
										
										
											2009-11-01 03:53:20 +08:00
										 |  |  | #include "BayesNet.h"
 | 
					
						
							| 
									
										
										
										
											2009-10-28 10:57:38 +08:00
										 |  |  | #include "SymbolicConditional.h"
 | 
					
						
							| 
									
										
										
										
											2010-01-18 03:34:57 +08:00
										 |  |  | #include "Key.h"
 | 
					
						
							| 
									
										
										
										
											2009-10-28 04:23:19 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace gtsam { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/**
 | 
					
						
							|  |  |  | 	 *  Symbolic Bayes Chain, the (symbolic) result of eliminating a factor graph | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2009-11-09 15:04:26 +08:00
										 |  |  | 	typedef BayesNet<SymbolicConditional> SymbolicBayesNet; | 
					
						
							| 
									
										
										
										
											2009-11-08 12:39:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-09 15:04:26 +08:00
										 |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * Construct from a Bayes net of any type | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	template<class Conditional> | 
					
						
							|  |  |  | 	SymbolicBayesNet symbolic(const BayesNet<Conditional>& bn) { | 
					
						
							|  |  |  | 		SymbolicBayesNet result; | 
					
						
							|  |  |  | 		typename BayesNet<Conditional>::const_iterator it = bn.begin(); | 
					
						
							|  |  |  | 		for (; it != bn.end(); it++) { | 
					
						
							|  |  |  | 			boost::shared_ptr<Conditional> conditional = *it; | 
					
						
							| 
									
										
										
										
											2010-01-18 03:34:57 +08:00
										 |  |  | 			Symbol key = conditional->key(); | 
					
						
							|  |  |  | 			std::list<Symbol> parents = conditional->parents(); | 
					
						
							| 
									
										
										
										
											2009-11-09 15:04:26 +08:00
										 |  |  | 			SymbolicConditional::shared_ptr c(new SymbolicConditional(key, parents)); | 
					
						
							|  |  |  | 			result.push_back(c); | 
					
						
							| 
									
										
										
										
											2009-10-28 04:23:19 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-11-09 15:04:26 +08:00
										 |  |  | 		return result; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-10-28 04:23:19 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | } /// namespace gtsam
 |