50#ifndef GUM_MULTI_DIM_FUNCTION_GRAPH_H
51#define GUM_MULTI_DIM_FUNCTION_GRAPH_H
61 template <
typename GUM_SCALAR,
template <
typename >
class TerminalNodePolicy >
64 template <
typename GUM_SCALAR,
template <
typename >
class TerminalNodePolicy >
67 template <
typename GUM_SCALAR,
template <
typename >
class TerminalNodePolicy >
88 template <
typename GUM_SCALAR,
92 public TerminalNodePolicy< GUM_SCALAR > {
146 virtual void fill(
const GUM_SCALAR& d)
const;
152 virtual void populate(
const std::vector< GUM_SCALAR >& v)
const;
157 virtual void populate(std::initializer_list< GUM_SCALAR > v)
const;
182 virtual const std::string&
name()
const;
264 std::string
toDot(
bool withBackArcs =
false)
const;
276 MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy >*
manager();
387 MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy >*
_manager_;
405#ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
406# ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
410#ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
411# ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
Headers of the ExactTerminalNodePolicy.
Set of pairs of elements with fast search for both elements.
Base class for discrete random variable.
Implementation of a Terminal Node Policy that maps nodeid directly to value.
const GUM_SCALAR & value() const
Returns the value of the current terminal nodes pointed by the constant safe iterator.
The class for generic Hash Tables.
Class for assigning/browsing values to tuples of discrete variables.
Structure used to represent a node internal structure.
Abstract base class for all multi dimensionnal containers.
virtual std::string toString() const
Returns a representation of this MultiDimContainer.
Class implementingting a function graph manager.
MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy > * manager()
Returns a const reference to the manager of this diagram.
bool _isReduced_
Wheter the MultiDimFunctionGraphManager is reduced or not.
MultiDimFunctionGraph(bool isReduced=true)
Default constructor.
virtual void changeNotification(const Instantiation &i, const DiscreteVariable *const var, Idx oldval, Idx newval)
Listen to changes in a given Instantiation.
std::string toDot(bool withBackArcs=false) const
Returns a const reference to the manager of this diagram.
virtual void setDecNotification(const Instantiation &i)
Listen to increment in each recorded Instantiation.
virtual void set(const Instantiation &i, const GUM_SCALAR &value) const
~MultiDimFunctionGraph()
Class destructor.
const NodeId & root() const
Returns the id of the root node from the diagram.
virtual void setChangeNotification(const Instantiation &i)
Listen to an assignment of a value in a Instantiation.
bool isTerminalNode(const NodeId &node) const
Indicates if given node is terminal or not.
void setTableName(const std::string &name)
Sets the name of the table represented by this structure.
bool isInternalNode(const NodeId &node) const
Indicates if given node is terminal or not.
virtual Size realSize() const
Returns the real number of parameters used for this table.
virtual void setIncNotification(const Instantiation &i)
Listen to increment in a given Instantiation.
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getReducedAndOrderedInstance()
Returns a reduced and ordered instance.
MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy > * _manager_
A reference to the manager that edits this function graph.
const InternalNode * node(NodeId n) const
Returns internalNode structure associated to that nodeId.
virtual void copy(const MultiDimContainer< GUM_SCALAR > &src)
HashTable< NodeId, InternalNode * > _internalNodeMap_
Associates each non-terminal node to a variable.
HashTable< const DiscreteVariable *, LinkedList< NodeId > * > _var2NodeIdMap_
Mapping between var and node.
const GUM_SCALAR & nodeValue(NodeId n) const
Returns value associated to given node.
virtual void setLastNotification(const Instantiation &i)
Listen to setLast in a given Instantiation.
MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > & operator=(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > &from)
Copy Operator.
const LinkedList< NodeId > * varNodeListe(const DiscreteVariable *var) const
Returns the list of node associated to given variable.
bool isReducedAndOrdered() const
Returns true if this MultiDimFunctionGraph is reduced and Ordered.
static const GUM_SCALAR defaultValue
Only for proper initialization of a certain returned value.
virtual void erase(const DiscreteVariable &v)
Removes a var from the variables of the multidimensional matrix.
std::string _tableName_
The name of the data structure.
GUM_SCALAR & get_(const Instantiation &inst) const
std::string _name_
The name of the data structure.
void copyAndMultiplyByScalar(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > &src, GUM_SCALAR gamma)
Copies src diagrams and multiply every value by the given scalar.
const NodeGraphPart & model() const
Returns a const reference to the manager of this diagram.
void copyAndReassign(const MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > &src, const Bijection< const DiscreteVariable *, const DiscreteVariable * > &reassign)
Copies src diagrams structure into this diagrams.
virtual void add(const DiscreteVariable &v)
Adds a new var to the variables of the multidimensional matrix.
const std::string & tableName() const
Returns the name of the table represented by this structure.
virtual void populate(const std::vector< GUM_SCALAR > &v) const
NodeId _root_
The root node of the function graph.
virtual void replace_(const DiscreteVariable *x, const DiscreteVariable *y)
virtual void fill(const GUM_SCALAR &d) const
virtual const std::string & name() const
Returns the real name of the multiDim implementation.
virtual void copyFrom(const MultiDimContainer< GUM_SCALAR > &src, Instantiation *p_i=(Instantiation *) 0) const
void clear()
Clears the function graph.
virtual MultiDimContainer< GUM_SCALAR > * newFactory() const
Creates an empty clone of this MultiDimContainer.
NodeGraphPart _model_
Indicates available nodeIds.
virtual GUM_SCALAR get(const Instantiation &i) const
Returns the value pointed by i.
virtual void setFirstNotification(const Instantiation &i)
Listen to setFirst in a given Instantiation.
MultiDimImplementation()
Default constructor.
Class for node sets in graph.
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Size Idx
Type for indexes.
Size NodeId
Type for node ids.
Headers of MultiDimFunctionGraphManager.
Template methods of MultiDimFunctionGraph.
Headers of gum::MultiDimImplementation.
gum is the global namespace for all aGrUM entities
Template trick for efficient development.
Provides basic types used in aGrUM.