31 #define ALLOCATE(x) SmallObjectAllocator::instance().allocate(x) 32 #define DEALLOCATE(x, y) SmallObjectAllocator::instance().deallocate(x, y) 36 template <
typename GUM_SCALAR,
38 class COMBINEOPERATOR,
40 class TerminalNodePolicy >
46 __dt2(dt2), __combine() {
53 template <
typename GUM_SCALAR,
55 class COMBINEOPERATOR,
57 class TerminalNodePolicy >
71 template <
typename GUM_SCALAR,
73 class COMBINEOPERATOR,
75 class TerminalNodePolicy >
83 template <
typename GUM_SCALAR,
85 class COMBINEOPERATOR,
87 class TerminalNodePolicy >
97 template <
typename GUM_SCALAR,
99 class COMBINEOPERATOR,
100 template <
typename >
101 class TerminalNodePolicy >
105 if (
__dt1->isTerminalNode(currentNodeId)) {
112 if (!
__rd->variablesSequence().exists(currentNode->nodeVar()))
113 __rd->add(*(currentNode->nodeVar()));
117 for (
Idx moda = 0; moda < currentNode->nodeVar()->domainSize(); ++moda) {
118 __context.insert(currentNode->nodeVar(), moda);
119 sonsMap[moda] =
__xPloreDT1(currentNode->son(moda));
125 template <
typename GUM_SCALAR,
126 template <
typename >
127 class COMBINEOPERATOR,
128 template <
typename >
129 class TerminalNodePolicy >
133 if (
__dt2->isTerminalNode(currentNodeId))
139 if (!
__rd->variablesSequence().exists(currentNode->
nodeVar()))
155 template <
typename GUM_SCALAR,
156 template <
typename >
157 class COMBINEOPERATOR,
158 template <
typename >
159 class TerminalNodePolicy >
163 for (
Idx moda = 1; moda < var->
domainSize() && !diff; ++moda)
164 if (sonsMap[0] != sonsMap[moda]) diff =
true;
172 return __rd->manager()->addInternalNode(var, sonsMap);
Class used to compute the operation between two decision diagrams.
const DiscreteVariable * nodeVar() const
Returns the node variable.
NodeId __checkRedundancy(const DiscreteVariable *, NodeId *)
NodeId son(Idx modality) const
Returns the son at a given index.
Headers of the InternalNode class.
Base class for discrete random variable.
gum is the global namespace for all aGrUM entities
Class used to perform Decision Tree Operation in the FMDP Framework.
HashTable< const DiscreteVariable *, Idx > __context
NodeId __xPloreDT2(NodeId currentNodeId)
The main recursion function.
The class for generic Hash Tables.
virtual Size domainSize() const =0
NodeId __xPloreDT1(NodeId currentNodeId)
The main recursion function.
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __dt1
The two function graphs used for the operation.
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * compute()
Computes and builds the Function Graph that is the result of the operation.
Structure used to represent a node internal structure.
Class implementingting a function graph.
const COMBINEOPERATOR< GUM_SCALAR > __combine
The function to be performed on the leaves.
~TreeOperator()
Default destructor.
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __rd
The resulting function graph.
TreeOperator(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *dt1, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *dt2)
Default constructor.
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __dt2
Size Idx
Type for indexes.
Size NodeId
Type for node ids.