release/4.3a0
Frank Dellaert 2011-03-29 19:13:35 +00:00
parent e635b21154
commit a9d66a915d
2 changed files with 7 additions and 4 deletions

View File

@ -42,8 +42,9 @@ typename EliminationTree<FACTOR>::sharedFactor EliminationTree<FACTOR>::eliminat
factors.push_back(this->factors_.begin(), this->factors_.end());
// for all subtrees, eliminate into Bayes net and a separator factor, added to [factors]
BOOST_FOREACH(const shared_ptr& child, subTrees_) {
factors.push_back(child->eliminate_(function, conditionals)); }
BOOST_FOREACH(const shared_ptr& child, subTrees_)
factors.push_back(child->eliminate_(function, conditionals)); // TODO: spawn thread
// TODO: wait for completion of all threads
// Combine all factors (from this node and from subtrees) into a joint factor
pair<typename BayesNet::shared_ptr, typename FACTOR::shared_ptr>
@ -190,8 +191,9 @@ EliminationTree<FACTOR>::eliminate(Eliminate function) const {
// call recursive routine
tic(1, "ET recursive eliminate");
Conditionals conditionals(this->key_ + 1);
(void)eliminate_(function, conditionals);
size_t nrConditionals = this->key_ + 1; // root key has highest index
Conditionals conditionals(nrConditionals); // reserve a vector of conditional shared pointers
(void)eliminate_(function, conditionals); // modify in place
toc(1, "ET recursive eliminate");
// Add conditionals to BayesNet

View File

@ -72,6 +72,7 @@ private:
/**
* Recursive routine that eliminates the factors arranged in an elimination tree
* @param Conditionals is a vector of shared pointers that will be modified in place
*/
sharedFactor eliminate_(Eliminate function, Conditionals& conditionals) const;