/** * @file GenericMultifrontalSolver.h * @brief * @author Richard Roberts * @created Oct 21, 2010 */ #pragma once #include #include #include #include namespace gtsam { template class GenericMultifrontalSolver { protected: // Elimination tree that performs elimination. typename JunctionTree >::shared_ptr junctionTree_; public: /** * Construct the solver for a factor graph. This builds the elimination * tree, which already does some of the symbolic work of elimination. */ GenericMultifrontalSolver(const FactorGraph& factorGraph); /** * Eliminate the factor graph sequentially. Uses a column elimination tree * to recursively eliminate. */ typename BayesTree::shared_ptr eliminate() const; /** * Compute the marginal Gaussian density over a variable, by integrating out * all of the other variables. This function returns the result as a factor. */ typename FACTOR::shared_ptr marginal(Index j) const; }; }