rename myJTNode to junctionTreeNode so we can better subclass ConstructorTraversalData
parent
ba4720709b
commit
c7e75d2cd5
|
|
@ -33,7 +33,7 @@ struct ConstructorTraversalData {
|
||||||
typedef typename JunctionTree<BAYESTREE, GRAPH>::sharedNode sharedNode;
|
typedef typename JunctionTree<BAYESTREE, GRAPH>::sharedNode sharedNode;
|
||||||
|
|
||||||
ConstructorTraversalData* const parentData;
|
ConstructorTraversalData* const parentData;
|
||||||
sharedNode myJTNode;
|
sharedNode junctionTreeNode;
|
||||||
FastVector<SymbolicConditional::shared_ptr> childSymbolicConditionals;
|
FastVector<SymbolicConditional::shared_ptr> childSymbolicConditionals;
|
||||||
FastVector<SymbolicFactor::shared_ptr> childSymbolicFactors;
|
FastVector<SymbolicFactor::shared_ptr> childSymbolicFactors;
|
||||||
|
|
||||||
|
|
@ -53,8 +53,9 @@ struct ConstructorTraversalData {
|
||||||
// a traversal data structure with its own JT node, and create a child
|
// a traversal data structure with its own JT node, and create a child
|
||||||
// pointer in its parent.
|
// pointer in its parent.
|
||||||
ConstructorTraversalData myData = ConstructorTraversalData(&parentData);
|
ConstructorTraversalData myData = ConstructorTraversalData(&parentData);
|
||||||
myData.myJTNode = boost::make_shared<Node>(node->key, node->factors);
|
myData.junctionTreeNode =
|
||||||
parentData.myJTNode->addChild(myData.myJTNode);
|
boost::make_shared<Node>(node->key, node->factors);
|
||||||
|
parentData.junctionTreeNode->addChild(myData.junctionTreeNode);
|
||||||
return myData;
|
return myData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -91,7 +92,7 @@ struct ConstructorTraversalData {
|
||||||
myData.parentData->childSymbolicConditionals.push_back(myConditional);
|
myData.parentData->childSymbolicConditionals.push_back(myConditional);
|
||||||
myData.parentData->childSymbolicFactors.push_back(mySeparatorFactor);
|
myData.parentData->childSymbolicFactors.push_back(mySeparatorFactor);
|
||||||
|
|
||||||
sharedNode node = myData.myJTNode;
|
sharedNode node = myData.junctionTreeNode;
|
||||||
const FastVector<SymbolicConditional::shared_ptr>& childConditionals =
|
const FastVector<SymbolicConditional::shared_ptr>& childConditionals =
|
||||||
myData.childSymbolicConditionals;
|
myData.childSymbolicConditionals;
|
||||||
node->problemSize_ = (int) (myConditional->size() * symbolicFactors.size());
|
node->problemSize_ = (int) (myConditional->size() * symbolicFactors.size());
|
||||||
|
|
@ -138,14 +139,14 @@ JunctionTree<BAYESTREE, GRAPH>::JunctionTree(
|
||||||
typedef typename EliminationTree<ETREE_BAYESNET, ETREE_GRAPH>::Node ETreeNode;
|
typedef typename EliminationTree<ETREE_BAYESNET, ETREE_GRAPH>::Node ETreeNode;
|
||||||
typedef ConstructorTraversalData<BAYESTREE, GRAPH, ETreeNode> Data;
|
typedef ConstructorTraversalData<BAYESTREE, GRAPH, ETreeNode> Data;
|
||||||
Data rootData(0);
|
Data rootData(0);
|
||||||
rootData.myJTNode = boost::make_shared<typename Base::Node>(); // Make a dummy node to gather
|
// Make a dummy node to gather the junction tree roots
|
||||||
// the junction tree roots
|
rootData.junctionTreeNode = boost::make_shared<typename Base::Node>();
|
||||||
treeTraversal::DepthFirstForest(eliminationTree, rootData,
|
treeTraversal::DepthFirstForest(eliminationTree, rootData,
|
||||||
Data::ConstructorTraversalVisitorPre,
|
Data::ConstructorTraversalVisitorPre,
|
||||||
Data::ConstructorTraversalVisitorPostAlg2);
|
Data::ConstructorTraversalVisitorPostAlg2);
|
||||||
|
|
||||||
// Assign roots from the dummy node
|
// Assign roots from the dummy node
|
||||||
this->addChildrenAsRoots(rootData.myJTNode);
|
this->addChildrenAsRoots(rootData.junctionTreeNode);
|
||||||
|
|
||||||
// Transfer remaining factors from elimination tree
|
// Transfer remaining factors from elimination tree
|
||||||
Base::remainingFactors_ = eliminationTree.remainingFactors();
|
Base::remainingFactors_ = eliminationTree.remainingFactors();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue