28 #ifndef GUM_MULTI_DIM_FUNCTION_GRAPH_OPERATOR_H 29 #define GUM_MULTI_DIM_FUNCTION_GRAPH_OPERATOR_H 48 template <
typename GUM_SCALAR,
51 template <
typename >
class TerminalNodePolicy =
52 ExactTerminalNodePolicy >
145 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 153 #endif // GUM_MULTI_DIM_FUNCTION_GRAPH_OPERATOR_H void __findRetrogradeVariables(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *dg, HashTable< NodeId, short int * > &dgInstNeed)
Establish for each node in both function graph if it has retrograde variables beneath it...
Headers of the ExactTerminalNodePolicy.
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * compute()
Computes and builds the Function Graph that is the result of the operation.
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __rd
The resulting function graph.
short int * __default
Just a comptuationnal trick.
HashTable< NodeId, short int *> __DG1InstantiationNeeded
Table uses to know if a given node of first function graph has retrograde vrariables.
Idx __nbVar
The total number of variable implied in the operation.
Base class for discrete random variable.
gum is the global namespace for all aGrUM entities
Idx __distance(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *, const DiscreteVariable *, const DiscreteVariable *)
Heuristic methods to decide which of two retrograde variables should come first.
HashTable< double, NodeId > __explorationTable
The hashtable used to know if two pair of nodes have already been visited.
HashTable< NodeId, short int *> __DG2InstantiationNeeded
Table uses to know if a given node of second function graph has retrograde vrariables.
Class implementingting a function graph.
Headers of MultiDimFunctionGraph.
Class used to perform Function Graph Operations.
const FUNCTOR< GUM_SCALAR > __function
The function to be performed on the leaves.
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __DG1
One of the two function graphs used for the operation.
Class used to compute the operation between two decision diagrams.
MultiDimFunctionGraphOperator(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *DG1, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *DG2)
Default constructor.
Size Idx
Type for indexes.
Class used to manipulate context during Function Graph Operations.
~MultiDimFunctionGraphOperator()
Default destructor.
Class used to manipulate o4DGContext in Function Graph Operations.
void __establishVarOrder()
Computes an order for the final Decision graph that will minimize the number of re exploration...
Size NodeId
Type for node ids.
NodeId __compute(O4DGContext ¤tSituation, Idx lastInstVarPos)
The main recursion function.
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * __DG2
The other one.