31 #ifndef GUM_MULTI_DIM_FUNCTION_GRAPH_OPERATOR_H 32 #define GUM_MULTI_DIM_FUNCTION_GRAPH_OPERATOR_H 36 #include <agrum/tools/multidim/implementations/multiDimFunctionGraph.h> 37 #include <agrum/tools/multidim/utils/FunctionGraphUtilities/operators/o4DGContext.h> 38 #include <agrum/tools/multidim/utils/FunctionGraphUtilities/terminalNodePolicies/ExactTerminalNodePolicy.h> 51 template <
typename GUM_SCALAR,
66 const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* DG1,
67 const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >* DG2);
111 HashTable< NodeId,
short int* >& dgInstNeed);
147 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 153 #include <agrum/tools/multidim/utils/FunctionGraphUtilities/operators/multiDimFunctionGraphOperator_tpl.h> NodeId _compute_(O4DGContext ¤tSituation, Idx lastInstVarPos)
The main recursion function.
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * _DG1_
One of the two function graphs used for the operation.
INLINE void emplace(Args &&... args)
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * compute()
Computes and builds the Function Graph that is the result of the operation.
HashTable< NodeId, short int *> _DG2InstantiationNeeded_
Table uses to know if a given node of second function graph has retrograde vrariables.
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...
const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * _DG2_
The other one.
void _establishVarOrder_()
Computes an order for the final Decision graph that will minimize the number of re exploration...
HashTable< double, NodeId > _explorationTable_
The hashtable used to know if two pair of nodes have already been visited.
Idx _distance_(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *, const DiscreteVariable *, const DiscreteVariable *)
Heuristic methods to decide which of two retrograde variables should come first.
short int * _default_
Just a comptuationnal trick.
Idx _nbVar_
The total number of variable implied in the operation.
const FUNCTOR< GUM_SCALAR > _function_
The function to be performed on the leaves.
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * _rd_
The resulting function graph.
Class used to perform Function Graph Operations.
HashTable< NodeId, short int *> _DG1InstantiationNeeded_
Table uses to know if a given node of first function graph has retrograde vrariables.
MultiDimFunctionGraphOperator(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *DG1, const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > *DG2)
Default constructor.
~MultiDimFunctionGraphOperator()
Default destructor.