![]() |
aGrUM
0.16.0
|
Multidimensional matrix stored as an array in memory. More...
#include <agrum/multidim/multiDimArray.h>
Public Member Functions | |
Constructors, destructors and copy | |
MultiDimArray () | |
Default constructor. More... | |
MultiDimArray (const MultiDimArray< GUM_SCALAR > &src) | |
Copy constructor. More... | |
virtual | ~MultiDimArray () |
Copy operator. More... | |
virtual MultiDimContainer< GUM_SCALAR > * | newFactory () const |
Default constructor. More... | |
Inherited methods | |
} | |
virtual void | copyFrom (const MultiDimContainer< GUM_SCALAR > &src) const |
Copy from a other MultiDimContainer. More... | |
virtual void | apply (std::function< GUM_SCALAR(GUM_SCALAR) > f) const |
Apply a function on every element of the container. More... | |
virtual GUM_SCALAR | reduce (std::function< GUM_SCALAR(GUM_SCALAR, GUM_SCALAR) > f, GUM_SCALAR base) const |
compute lfold for this container More... | |
virtual void | add (const DiscreteVariable &v) |
Adds a variable. More... | |
virtual void | erase (const DiscreteVariable &v) |
Removes a variable. More... | |
virtual Size | realSize () const |
Returns the real size of this MultiDimArray. More... | |
virtual void | fill (const GUM_SCALAR &d) const |
Fills the MultiDimArray with the given value. More... | |
virtual const std::string & | name () const |
Returns the MultiDimArray name. More... | |
Accessors / Modifiers | |
const GUM_SCALAR & | unsafeGet (Idx offset) const |
Returns the element stored in the multidimArray at a given offset. More... | |
const GUM_SCALAR & | getByOffset (Idx offset) const |
Returns the element stored in the multidimArray at a given offset. More... | |
void | unsafeSet (Idx offset, const GUM_SCALAR &val) |
Modifies the element stored in the multidimArray at a given offset. More... | |
void | setByOffset (Idx offset, const GUM_SCALAR &val) |
Modifies the element stored in the multidimArray at a given offset. More... | |
Accessors and modifiers | |
virtual const std::string | toString (const Instantiation *i) const |
Display the internal representation of i. More... | |
virtual void | changeNotification (const Instantiation &i, const DiscreteVariable *const var, Idx oldval, Idx newval) |
Listen to changes in a given Instantiation. More... | |
virtual void | setChangeNotification (const Instantiation &i) |
Listen to an assignment of a value in a Instantiation. More... | |
virtual void | setFirstNotification (const Instantiation &i) |
Listen to setFirst in a given Instantiation. More... | |
virtual void | setLastNotification (const Instantiation &i) |
Listen to setLast in a given Instantiation. More... | |
void | setIncNotification (const Instantiation &i) |
Listen to increment in a given Instantiation. More... | |
void | setDecNotification (const Instantiation &i) |
Listen to increment in each recorded Instantiation. More... | |
virtual bool | registerSlave (Instantiation &i) |
Register i as a slave of this MultiDimAdressable. More... | |
virtual bool | unregisterSlave (Instantiation &i) |
Unregister i as a slave of this MultiDimAdressable. More... | |
Various methods. | |
virtual const std::string | toString () const |
Returns a representation of this MultiDimContainer. More... | |
bool | operator== (const MultiDimContainer< GUM_SCALAR > &p) const |
Test if this MultiDimContainer is equal to p. More... | |
bool | operator!= (const MultiDimContainer< GUM_SCALAR > &p) const |
Test if this MultiDimContainer is different of p. More... | |
Access to offset in MultiDimWithOffset | |
Size | toOffset (const Instantiation &i) const |
Compute offset from an Instantiation (in this array). More... | |
Instantiation & | fromOffset (Instantiation &i, Size offset) const |
Set the Instantiation to the values corresponding to the offset (in this array). More... | |
Accessors / Modifiers | |
const std::string & | basename () const |
Returns the base class name of this MultiDimImplementation. More... | |
float | compressionRate () const |
The compression ratio of the table (depending on the type of implementation). More... | |
MultiDimInterface implementation | |
virtual Idx | nbrDim () const override |
Returns the number of vars in the multidimensional container. More... | |
virtual Size | domainSize () const override |
Returns the product of the variables domain size. More... | |
virtual const Sequence< const DiscreteVariable *> & | variablesSequence () const override |
Returns a const ref to the sequence of DiscreteVariable*. More... | |
virtual const DiscreteVariable & | variable (Idx i) const override |
Returns a const ref to the ith var. More... | |
virtual const DiscreteVariable & | variable (const std::string &name) const override |
Returns the variable with the name. More... | |
virtual Idx | pos (const DiscreteVariable &v) const override |
Returns the index of a variable. More... | |
virtual bool | contains (const DiscreteVariable &v) const override |
Returns true if var is in *this. More... | |
virtual bool | empty () const override |
Returns true if no var is in *this. More... | |
MultiDimContainer implementation | |
virtual void | beginMultipleChanges () override |
Call this method before doing important changes in this MultiDimContainer. More... | |
virtual void | endMultipleChanges () override |
Call this method after doing important changes in this MultiDimContainer. More... | |
virtual void | endMultipleChanges (const GUM_SCALAR &) override |
Call this method after doing important changes in this MultiDimContainer. More... | |
Accessors / Modifiers | |
virtual void | set (const Instantiation &i, const GUM_SCALAR &value) const |
Changes the value pointed by i. More... | |
virtual GUM_SCALAR | get (const Instantiation &i) const |
Returns the value pointed by i. More... | |
GUM_SCALAR | operator[] (const Instantiation &i) const |
An [] operator using a Instantiation as argument. More... | |
virtual void | populate (const std::vector< GUM_SCALAR > &v) const |
Automatically fills this MultiDimContainer with the values in v. More... | |
virtual void | populate (std::initializer_list< GUM_SCALAR > l) const |
Automatically fills this MultiDimContainer with the values in l. More... | |
Copy methods. | |
virtual void | copyFrom (const MultiDimContainer< GUM_SCALAR > &src, Instantiation *p_i) const |
Basic copy of a MultiDimContainer. More... | |
virtual void | extractFrom (const MultiDimContainer< GUM_SCALAR > &src, const Instantiation &mask) |
Basic extraction of a MultiDimContainer. More... | |
virtual MultiDimAdressable & | getMasterRef () |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer. More... | |
virtual const MultiDimAdressable & | getMasterRef () const |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer. More... | |
virtual void | copy (const MultiDimContainer< GUM_SCALAR > &src) |
Removes all variables in this MultiDimContainer and copy the content of src, variables included. More... | |
Accessors / Modifiers | |
void | replace (const DiscreteVariable &x, const DiscreteVariable &y) |
Replace variables in this multidim. More... | |
Protected Attributes | |
std::vector< GUM_SCALAR > | _values |
The true data : the values is mutable since we can change the value / in a const multiDimArray. More... | |
HashTable< const DiscreteVariable *, Size > | _gaps |
The gaps between consecutive values of a given variable. More... | |
HashTable< const Instantiation *, Size > | _offsets |
The position in the array of each slave Instantiation. More... | |
Protected Member Functions | |
virtual void | _commitMultipleChanges () |
Synchronize content after MultipleChanges. More... | |
virtual void | _commitMultipleChanges (const GUM_SCALAR &) |
Synchronize content after MultipleChanges. More... | |
virtual GUM_SCALAR & | _get (const Instantiation &i) const |
Return a data, given a Instantiation. More... | |
virtual void | _replace (const DiscreteVariable *x, const DiscreteVariable *y) |
Replace variable x by y. More... | |
Size | _getOffs (const Instantiation &i) const |
Compute the offset of a Instantiation. More... | |
void | _computeInstantiationValue (Instantiation &result, Size indice) const |
For a given index of a value in the vector values, this method computes the corresponding instantiation. More... | |
virtual const MultiDimImplementation< GUM_SCALAR > * | content () const final |
Returns the implementation for this object (may be *this). More... | |
virtual MultiDimImplementation< GUM_SCALAR > * | content () final |
Returns the implementation for this object (may be *this). More... | |
Fast large modifications in structures | |
bool | _isInMultipleChangeMethod () const |
Get the actual change method of this MultiDimImplementation. More... | |
bool | _isCommitNeeded () const |
Get the actual state of *this. More... | |
const List< Instantiation *> & | _slaves () const |
Returns a constant reference over the list of slaved instantiations. More... | |
virtual void | _invert (Idx p1, Idx p2) |
Inverts variables at position p1 and p2. More... | |
Friends | |
template<typename GUM_SCALARBIS > | |
class | MultiDimBijArray |
Multidimensional matrix stored as an array in memory.
GUM_SCALAR | The type of the scalars stroed in the multidimensional table. |
Definition at line 54 of file multiDimArray.h.
gum::MultiDimArray< GUM_SCALAR >::MultiDimArray | ( | ) |
Default constructor.
Creates an empty null dimensional matrix
Definition at line 37 of file multiDimArray_tpl.h.
gum::MultiDimArray< GUM_SCALAR >::MultiDimArray | ( | const MultiDimArray< GUM_SCALAR > & | src | ) |
Copy constructor.
The newly created matrix contains the same variables and the same values as src, but no instantiation is associated to it.
src | The MultiDimArray to copy. |
Definition at line 45 of file multiDimArray_tpl.h.
|
virtual |
Copy operator.
src | The MultiDimArray to copy. |
Note that, when the multidimensional array is removed src memory, its variables are not removed as well.
Definition at line 55 of file multiDimArray_tpl.h.
|
protectedvirtual |
Synchronize content after MultipleChanges.
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 156 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values.
|
protectedvirtual |
Synchronize content after MultipleChanges.
value | Default value for uninitialized values. |
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 165 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values.
|
protectedinherited |
For a given index of a value in the vector values, this method computes the corresponding instantiation.
result | the result of this methods, we assume that the given instantiation already contains all the variables contained in the MultiDimArray (if V is the set of variables of this tab, V must be a subset of variables in result or the exact set) |
indice | The index in the vector values |
result | the result of this methods, we assume that the given instantiation already contains all the variables contained in the multidimarray (if V is the set of variables of this tab, V must be a subset of variables in result or the exact set) |
indice | indice in the vector _values |
Definition at line 233 of file multiDimWithOffset_tpl.h.
References gum::Instantiation::chgVal(), gum::DiscreteVariable::domainSize(), gum::MultiDimImplementation< GUM_SCALAR >::domainSize(), gum::MultiDimImplementation< GUM_SCALAR >::nbrDim(), and gum::MultiDimImplementation< GUM_SCALAR >::variable().
Referenced by gum::MultiDimWithOffset< GUM_SCALAR >::fromOffset().
|
protectedvirtual |
Return a data, given a Instantiation.
Note that get allows to change a value in the container. The method is tagged as const since a multidim is not const if its dimension changed.
i | The instantiation used to find the data. |
Implements gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 90 of file multiDimArray_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_getOffs(), gum::MultiDimWithOffset< GUM_SCALAR >::_offsets, gum::MultiDimArray< GUM_SCALAR >::_values, and gum::Instantiation::isMaster().
|
protectedinherited |
Compute the offset of a Instantiation.
If the instantiation is not fully compatible with the MultiDimWithOffset, no exception thrown but 0 is assumed for dimensions not present in the instantiation.
If the instantiation is not fully compatible with the MultiDimWithOffset, no exception thrown but 0 is assumed for dimensions not present in the instantiation.
for instance : M<<a<<b<<c; with i=b:1|c:2|d:1 then M._getOffs(i) give the offset of a:0|b:1|c:2.
i | An instantiation for which the offset is computed. |
for instance : M<<a<<b<<c; with i=b:1|c:2|d:1 then M._getOffs(i) give the offset of a:0|b:1|c:2.
Definition at line 205 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_gaps, gum::Instantiation::contains(), GUM_ERROR, and gum::Instantiation::valFromPtr().
Referenced by gum::MultiDimArray< GUM_SCALAR >::_get(), gum::MultiDimSparse< GUM_SCALAR >::get(), gum::MultiDimBijArray< GUM_SCALAR >::get(), gum::MultiDimWithOffset< GUM_SCALAR >::registerSlave(), gum::MultiDimSparse< GUM_SCALAR >::set(), gum::MultiDimWithOffset< GUM_SCALAR >::setChangeNotification(), and gum::MultiDimWithOffset< GUM_SCALAR >::toOffset().
|
protectedvirtualinherited |
Inverts variables at position p1 and p2.
Call this from subclass when you want to invert position of two variables in the MultiDimImplementation.
p1 | The first position. |
p2 | The second position. |
Definition at line 319 of file multiDimImplementation_tpl.h.
|
protectedinherited |
Get the actual state of *this.
Definition at line 274 of file multiDimImplementation_tpl.h.
|
protectedinherited |
Get the actual change method of this MultiDimImplementation.
Definition at line 268 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimArray< GUM_SCALAR >::add(), and gum::MultiDimArray< GUM_SCALAR >::erase().
|
protectedvirtual |
Replace variable x by y.
Technically this should be call by any subclass overloading this method to proceed with the changes in this class containers.
x | The first variable to swap. |
y | The second variable to swap. |
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 222 of file multiDimArray_tpl.h.
References gum::MultiDimImplementation< GUM_SCALAR >::_replace().
|
protectedinherited |
Returns a constant reference over the list of slaved instantiations.
Definition at line 281 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimBucket< GUM_SCALAR >::__initializeBuffer().
|
virtual |
Adds a variable.
Reimplemented from gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 100 of file multiDimArray_tpl.h.
References gum::MultiDimImplementation< GUM_SCALAR >::_isInMultipleChangeMethod(), gum::MultiDimArray< GUM_SCALAR >::_values, gum::MultiDimWithOffset< GUM_SCALAR >::add(), gum::DiscreteVariable::domainSize(), and gum::MultiDimImplementation< GUM_SCALAR >::domainSize().
|
virtual |
Apply a function on every element of the container.
f | the function to apply |
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 74 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values.
|
inherited |
Returns the base class name of this MultiDimImplementation.
This method is used for chosing a proposer operator when no specialized operator have been defined.
Definition at line 299 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Call this method before doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 229 of file multiDimImplementation_tpl.h.
|
virtualinherited |
Listen to changes in a given Instantiation.
i | The Instantiation to listen. |
var | The changed dim. |
oldval | The old value. |
newval | The changed value. |
Implements gum::MultiDimAdressable.
Definition at line 107 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_gaps, gum::MultiDimWithOffset< GUM_SCALAR >::_offsets, and gum::MultiDimImplementation< GUM_SCALAR >::domainSize().
|
inherited |
The compression ratio of the table (depending on the type of implementation).
This method uses domainSize() and realSize() to compute the ration, both methods are virtual and should be surcharge if a subclass has a special policies about memory management.
Definition at line 293 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Returns true if var is in *this.
v | A DiscreteVariable. |
Implements gum::MultiDimInterface.
Reimplemented in gum::MultiDimBucket< GUM_SCALAR >.
Definition at line 208 of file multiDimImplementation_tpl.h.
Referenced by gum::prm::PRMFormAttribute< GUM_SCALAR >::__fillCpf(), gum::prm::PRMFormAttribute< GUM_SCALAR >::_type(), gum::prm::PRMFormAttribute< GUM_SCALAR >::addParent(), gum::MultiDimICIModel< GUM_SCALAR >::causalWeight(), gum::MultiDimBucket< GUM_SCALAR >::contains(), gum::prm::PRMFormAttribute< GUM_SCALAR >::copyCpf(), gum::prm::PRMFormAttribute< GUM_SCALAR >::getCastDescendant(), and gum::prm::PRMFormAttribute< GUM_SCALAR >::swap().
|
finalprotectedvirtualinherited |
Returns the implementation for this object (may be *this).
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 342 of file multiDimImplementation_tpl.h.
|
finalprotectedvirtualinherited |
Returns the implementation for this object (may be *this).
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 335 of file multiDimImplementation_tpl.h.
|
virtualinherited |
Removes all variables in this MultiDimContainer and copy the content of src, variables included.
src | The MultiDimContainer to copy. |
Reimplemented in gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR >, and gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >.
Definition at line 282 of file multiDimContainer_tpl.h.
References gum::MultiDimInterface::add(), gum::MultiDimContainer< GUM_SCALAR >::beginMultipleChanges(), gum::MultiDimContainer< GUM_SCALAR >::copyFrom(), gum::MultiDimContainer< GUM_SCALAR >::endMultipleChanges(), gum::MultiDimInterface::erase(), gum::MultiDimInterface::nbrDim(), and gum::MultiDimInterface::variable().
Referenced by gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::__eraseArc(), and gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::disturbBN().
|
virtual |
Copy from a other MultiDimContainer.
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 62 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values, and gum::MultiDimContainer< GUM_SCALAR >::copyFrom().
|
virtualinherited |
Basic copy of a MultiDimContainer.
This method is virtual because it should be optimized in certain MultiDimContainer.
src | The MultiDimContainer src which values are copied. |
p_i | Give the order to iterate in this MultiDimContainer during the copy (nullptr will correctly copy if this is a reorganization of src). |
OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Reimplemented in gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR >, and gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >.
Definition at line 218 of file multiDimContainer_tpl.h.
References gum::MultiDimInterface::domainSize(), gum::Instantiation::end(), GUM_ERROR, gum::Instantiation::incIn(), and gum::Instantiation::setFirst().
|
overridevirtualinherited |
Returns the product of the variables domain size.
Implements gum::MultiDimInterface.
Definition at line 180 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimBucket< GUM_SCALAR >::_commitMultipleChanges(), gum::MultiDimWithOffset< GUM_SCALAR >::_computeInstantiationValue(), gum::MultiDimWithOffset< GUM_SCALAR >::add(), gum::MultiDimArray< GUM_SCALAR >::add(), gum::MultiDimBucket< GUM_SCALAR >::add(), gum::MultiDimWithOffset< GUM_SCALAR >::changeNotification(), gum::MultiDimICIModel< GUM_SCALAR >::copyFrom(), gum::MultiDimArray< GUM_SCALAR >::erase(), gum::MultiDimBucket< GUM_SCALAR >::erase(), gum::MultiDimArray< GUM_SCALAR >::realSize(), gum::MultiDimBucket< GUM_SCALAR >::setBufferSize(), gum::MultiDimWithOffset< GUM_SCALAR >::setIncNotification(), and gum::MultiDimWithOffset< GUM_SCALAR >::setLastNotification().
|
overridevirtualinherited |
Returns true if no var is in *this.
Implements gum::MultiDimInterface.
Definition at line 223 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimBucket< GUM_SCALAR >::__initializeBuffer(), and gum::MultiDimArray< GUM_SCALAR >::fill().
|
overridevirtualinherited |
Call this method after doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 234 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Call this method after doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 244 of file multiDimImplementation_tpl.h.
|
virtual |
Removes a variable.
Reimplemented from gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 111 of file multiDimArray_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_gaps, gum::MultiDimImplementation< GUM_SCALAR >::_isInMultipleChangeMethod(), gum::MultiDimArray< GUM_SCALAR >::_values, gum::DiscreteVariable::domainSize(), gum::MultiDimImplementation< GUM_SCALAR >::domainSize(), gum::MultiDimWithOffset< GUM_SCALAR >::erase(), gum::MultiDimImplementation< GUM_SCALAR >::pos(), gum::SequenceImplementation< Key, Alloc, std::is_scalar< Key >::value >::pos(), gum::SequenceImplementation< Key, Alloc, std::is_scalar< Key >::value >::size(), and gum::MultiDimImplementation< GUM_SCALAR >::variablesSequence().
|
virtualinherited |
Basic extraction of a MultiDimContainer.
This method is virtual because it should be optimized in certain MultiDimContainer.
src | The MultiDimContainer src which datas are copied. |
mask | partial instantiation of variables of the Potential : the extraction will concern every variable not in the instantiation and the copy of data will use the values in this instantiation. |
Definition at line 240 of file multiDimContainer_tpl.h.
References gum::MultiDimInterface::add(), gum::MultiDimContainer< GUM_SCALAR >::beginMultipleChanges(), gum::Instantiation::contains(), gum::Instantiation::end(), gum::MultiDimContainer< GUM_SCALAR >::endMultipleChanges(), gum::MultiDimInterface::erase(), GUM_ERROR, gum::Instantiation::incOut(), gum::MultiDimInterface::nbrDim(), gum::Instantiation::setFirstOut(), gum::Instantiation::setVals(), and gum::MultiDimInterface::variable().
Referenced by gum::Potential< GUM_SCALAR >::extract().
|
virtual |
Fills the MultiDimArray with the given value.
Implements gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 173 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values, and gum::MultiDimImplementation< GUM_SCALAR >::empty().
|
inherited |
Set the Instantiation to the values corresponding to the offset (in this array).
We assume that the given instantiation already contains all the variables contained in the multidimarray (if V is the set of variables of this tab, V must be a subset of variables in result or the exact set).
i | The instantiation i modified giving the offset. |
offset | The offset used to compute the value of i. |
Definition at line 270 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_computeInstantiationValue().
|
virtualinherited |
Returns the value pointed by i.
i | An Instantiation of this MultiDimContainer. |
Reimplemented in gum::MultiDimBucket< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< Size >, gum::MultiDimFunctionGraph< double >, gum::MultiDimFunctionGraph< GUM_SCALAR >, gum::MultiDimFunctionGraph< double, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< Size, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< gum::ActionSet, gum::SetTerminalNodePolicy >, gum::MultiDimFunctionGraph< bool >, gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >, gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimBijArray< GUM_SCALAR >, gum::aggregator::MultiDimAggregator< GUM_SCALAR >, gum::MultiDimNoisyAND< GUM_SCALAR >, gum::MultiDimNoisyORCompound< GUM_SCALAR >, gum::MultiDimNoisyORNet< GUM_SCALAR >, gum::MultiDimLogit< GUM_SCALAR >, and gum::MultiDimSparse< GUM_SCALAR >.
Definition at line 98 of file multiDimContainer_tpl.h.
References gum::MultiDimContainer< GUM_SCALAR >::_get().
Referenced by gum::prm::PRMFormAttribute< GUM_SCALAR >::__fillCpf(), gum::prm::PRMFormAttribute< GUM_SCALAR >::copy(), and gum::MultiDimContainer< GUM_SCALAR >::operator==().
INLINE const GUM_SCALAR & gum::MultiDimArray< GUM_SCALAR >::getByOffset | ( | Idx | offset | ) | const |
Returns the element stored in the multidimArray at a given offset.
The offset is computed as follows: let S={X1,...,Xk} be the sequence of variables in the multidim, and let x1,...,xk be their values respectively. then the corresponding offset is x1 + |X1| * x2 + [X1| * |X2| * x3 + ... This thus corresponds to the internal MultiDimArray's offset we would get by using function get with instantiation {x1,...,xk}.
offset | The offset of the returned value. Returns the element stored in the multidimArray at a given offset. |
OutOfBound | Raised if the referenced element does not belong to the MultiDimArray. |
Definition at line 200 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values, and GUM_ERROR.
|
virtualinherited |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer.
Implements gum::MultiDimAdressable.
Reimplemented in gum::MultiDimBucket< GUM_SCALAR >.
Definition at line 301 of file multiDimContainer_tpl.h.
References gum::MultiDimContainer< GUM_SCALAR >::content().
|
virtualinherited |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer.
Implements gum::MultiDimAdressable.
Reimplemented in gum::MultiDimBucket< GUM_SCALAR >.
Definition at line 307 of file multiDimContainer_tpl.h.
References gum::MultiDimContainer< GUM_SCALAR >::content().
|
virtual |
Returns the MultiDimArray name.
Implements gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 216 of file multiDimArray_tpl.h.
|
overridevirtualinherited |
Returns the number of vars in the multidimensional container.
Implements gum::MultiDimInterface.
Definition at line 175 of file multiDimImplementation_tpl.h.
Referenced by gum::aggregator::Amplitude< GUM_SCALAR >::_buildValue(), gum::aggregator::Median< GUM_SCALAR >::_buildValue(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::_buildValue(), gum::MultiDimWithOffset< GUM_SCALAR >::_computeInstantiationValue(), gum::MultiDimICIModel< GUM_SCALAR >::copyFrom(), gum::MultiDimLogit< GUM_SCALAR >::get(), gum::MultiDimNoisyORNet< GUM_SCALAR >::get(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::get(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::get(), gum::MultiDimNoisyAND< GUM_SCALAR >::get(), gum::MultiDimICIModel< GUM_SCALAR >::realSize(), gum::BayesNetFactory< GUM_SCALAR >::setVariableCPTImplementation(), gum::MultiDimICIModel< GUM_SCALAR >::toString(), gum::MultiDimLogit< GUM_SCALAR >::toString(), and gum::aggregator::MultiDimAggregator< GUM_SCALAR >::toString().
|
virtual |
Default constructor.
Creates an empty null dimensional matrix
Implements gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 180 of file multiDimArray_tpl.h.
|
inherited |
Test if this MultiDimContainer is different of p.
p | The MultiDimContainer to test for inequality. |
Definition at line 160 of file multiDimContainer_tpl.h.
References gum::MultiDimContainer< GUM_SCALAR >::operator==().
Referenced by gum::MultiDimContainer< GUM_SCALAR >::operator==().
|
inherited |
Test if this MultiDimContainer is equal to p.
p | The MultiDimContainer to test for equality. |
Definition at line 129 of file multiDimContainer_tpl.h.
References gum::MultiDimInterface::domainSize(), gum::Instantiation::end(), gum::MultiDimContainer< GUM_SCALAR >::get(), gum::MultiDimInterface::nbrDim(), gum::MultiDimContainer< GUM_SCALAR >::operator!=(), gum::Instantiation::setFirst(), and gum::MultiDimInterface::variablesSequence().
Referenced by gum::MultiDimContainer< GUM_SCALAR >::operator!=(), and gum::MultiDimContainer< GUM_SCALAR >::toString().
|
inherited |
An [] operator using a Instantiation as argument.
i | An Instantiation. |
Definition at line 82 of file multiDimContainer_tpl.h.
Referenced by gum::MultiDimContainer< GUM_SCALAR >::~MultiDimContainer().
|
virtualinherited |
Automatically fills this MultiDimContainer with the values in v.
The order used to fill this MultiDimContainer is the same as with an instantiation over it.
v | Vector of values. |
SizeError | Raised if v size's does not matches this MultiDimContainer domain size. |
Reimplemented in gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimBijArray< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR >, and gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >.
Definition at line 166 of file multiDimContainer_tpl.h.
References gum::MultiDimInterface::domainSize(), gum::Instantiation::end(), GUM_ERROR, and gum::Instantiation::setFirst().
|
virtualinherited |
Automatically fills this MultiDimContainer with the values in l.
The order used to fill this MultiDimContainer is the same as with an instantiation over it.
l | contains the data. |
SizeError | Raised if l size's does not matches this MultiDimContainer domain size. |
Reimplemented in gum::MultiDimBijArray< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR >, and gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >.
Definition at line 181 of file multiDimContainer_tpl.h.
References gum::MultiDimInterface::domainSize(), and GUM_ERROR.
|
overridevirtualinherited |
Returns the index of a variable.
v | The variable for which the index is returned. |
NotFound | Raised if v is not in this multidimensional matrix. |
Implements gum::MultiDimInterface.
Definition at line 203 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimWithOffset< GUM_SCALAR >::erase(), gum::MultiDimArray< GUM_SCALAR >::erase(), and gum::MultiDimImplementation< std::string >::pos().
|
virtual |
Returns the real size of this MultiDimArray.
Implements gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 150 of file multiDimArray_tpl.h.
References gum::MultiDimImplementation< GUM_SCALAR >::domainSize().
|
virtual |
compute lfold for this container
f | the function to apply |
base | the initial value |
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 80 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values.
|
virtualinherited |
Register i as a slave of this MultiDimAdressable.
i | The Instantiation to enslave. |
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 176 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_getOffs(), and gum::MultiDimWithOffset< GUM_SCALAR >::_offsets.
|
inherited |
Replace variables in this multidim.
If x is in this MultiDim and y has the same domain size, then x will be replace by y in this MultiDim.
x | The variable in this which will be replaced. |
y | The variable replacing y. |
NotFound | Raised if x does not belong to this MultiDim. |
OperationNotAllowed | If y and x are not interchangeable. |
DuplicateElement | If y is already in this MultiDim. |
Definition at line 36 of file multiDimInterface_inl.h.
References gum::MultiDimInterface::_replace(), gum::MultiDimInterface::contains(), gum::DiscreteVariable::domainSize(), and GUM_ERROR.
Referenced by gum::MultiDimImplementation< std::string >::_replace(), gum::MultiDimBucket< GUM_SCALAR >::_replace(), and gum::MultiDimInterface::~MultiDimInterface().
|
virtualinherited |
Changes the value pointed by i.
i | An Instantiation of this MultiDimContainer. |
value | The new value. |
Reimplemented in gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >, gum::MultiDimBijArray< GUM_SCALAR >, gum::MultiDimSparse< GUM_SCALAR >, and gum::MultiDimReadOnly< GUM_SCALAR >.
Definition at line 89 of file multiDimContainer_tpl.h.
References gum::MultiDimContainer< GUM_SCALAR >::_get().
Referenced by gum::prm::PRMFormAttribute< GUM_SCALAR >::_type(), gum::prm::PRMFormAttribute< GUM_SCALAR >::becomeCastDescendant(), gum::prm::PRMFormAttribute< GUM_SCALAR >::copyCpf(), and gum::prm::PRMFormAttribute< GUM_SCALAR >::swap().
INLINE void gum::MultiDimArray< GUM_SCALAR >::setByOffset | ( | Idx | offset, |
const GUM_SCALAR & | val | ||
) |
Modifies the element stored in the multidimArray at a given offset.
The offset is computed as follows: let S={X1,...,Xk} be the sequence of variables in the multidim, and let x1,...,xk be their values respectively. then the corresponding offset is x1 + |X1| * x2 + [X1| * |X2| * x3 + ... This thus corresponds to the internal MultiDimArray's offset we would get by using function get with instantiation {x1,...,xk}.
offset | The offset where to store the value. |
val | The value to store. |
OutOfBound | Raised if the referenced element does not belong to the MultiDimArray. |
Definition at line 207 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values, and GUM_ERROR.
|
virtualinherited |
Listen to an assignment of a value in a Instantiation.
i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 129 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_getOffs(), and gum::MultiDimWithOffset< GUM_SCALAR >::_offsets.
|
virtualinherited |
Listen to increment in each recorded Instantiation.
i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 167 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_offsets.
|
virtualinherited |
Listen to setFirst in a given Instantiation.
i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 138 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_offsets.
|
virtualinherited |
Listen to increment in a given Instantiation.
i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 157 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_offsets, and gum::MultiDimImplementation< GUM_SCALAR >::domainSize().
|
virtualinherited |
Listen to setLast in a given Instantiation.
i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 147 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_offsets, and gum::MultiDimImplementation< GUM_SCALAR >::domainSize().
|
inherited |
Compute offset from an Instantiation (in this array).
If the instantiation is not fully compatible with the MultiDimWithOffset, no exception will be thrown but 0 is assumed for dimensions not present in the instantiation. for instance : M<<a<<b<<c; with i=b:1|c:2|d:1 then M.toOffset(i) give the offset of a:0|b:1|c:2.
Definition at line 262 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_getOffs().
|
virtualinherited |
Display the internal representation of i.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 248 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_offsets, and gum::Instantiation::isMaster().
|
virtualinherited |
Returns a representation of this MultiDimContainer.
Reimplemented in gum::Potential< GUM_SCALAR >, gum::MultiDimDecorator< GUM_SCALAR >, gum::aggregator::MultiDimAggregator< GUM_SCALAR >, gum::MultiDimNoisyAND< GUM_SCALAR >, gum::MultiDimNoisyORCompound< GUM_SCALAR >, gum::MultiDimNoisyORNet< GUM_SCALAR >, gum::MultiDimLogit< GUM_SCALAR >, and gum::MultiDimICIModel< GUM_SCALAR >.
Definition at line 105 of file multiDimContainer_tpl.h.
References gum::Instantiation::end(), gum::MultiDimInterface::nbrDim(), gum::MultiDimContainer< GUM_SCALAR >::operator==(), and gum::Instantiation::setFirst().
Referenced by gum::operator<<().
|
virtualinherited |
Unregister i as a slave of this MultiDimAdressable.
i | The Instantiation to free. |
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 189 of file multiDimWithOffset_tpl.h.
References gum::MultiDimWithOffset< GUM_SCALAR >::_offsets, and gum::MultiDimImplementation< GUM_SCALAR >::unregisterSlave().
INLINE const GUM_SCALAR & gum::MultiDimArray< GUM_SCALAR >::unsafeGet | ( | Idx | offset | ) | const |
Returns the element stored in the multidimArray at a given offset.
The offset is computed as follows: let S={X1,...,Xk} be the sequence of variables in the multidim, and let x1,...,xk be their values respectively. then the corresponding offset is x1 + |X1| * x2 + [X1| * |X2| * x3 + ... This thus corresponds to the internal MultiDimArray's offset we would get by using function get with instantiation {x1,...,xk}.
offset | The offset of the returned value. Returns the element stored in the multidimArray at a given offset. |
Definition at line 187 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values.
INLINE void gum::MultiDimArray< GUM_SCALAR >::unsafeSet | ( | Idx | offset, |
const GUM_SCALAR & | val | ||
) |
Modifies the element stored in the multidimArray at a given offset.
The offset is computed as follows: let S={X1,...,Xk} be the sequence of variables in the multidim, and let x1,...,xk be their values respectively. then the corresponding offset is x1 + |X1| * x2 + [X1| * |X2| * x3 + ... This thus corresponds to the internal MultiDimArray's offset we would get by using function get with instantiation {x1,...,xk}.
offset | The offset where to store the value. |
val | The value to store. |
Definition at line 192 of file multiDimArray_tpl.h.
References gum::MultiDimArray< GUM_SCALAR >::_values.
|
overridevirtualinherited |
Returns a const ref to the ith var.
param i An index of this multidimensional matrix.
NotFound | Raised if i does not reference a variable in this multidimensional matrix. |
Implements gum::MultiDimInterface.
Definition at line 186 of file multiDimImplementation_tpl.h.
Referenced by gum::aggregator::MultiDimAggregator< GUM_SCALAR >::_buildValue(), gum::MultiDimWithOffset< GUM_SCALAR >::_computeInstantiationValue(), gum::MultiDimICIModel< GUM_SCALAR >::copyFrom(), gum::MultiDimLogit< GUM_SCALAR >::get(), gum::MultiDimNoisyORNet< GUM_SCALAR >::get(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::get(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::get(), gum::MultiDimNoisyAND< GUM_SCALAR >::get(), gum::MultiDimICIModel< GUM_SCALAR >::toString(), gum::MultiDimLogit< GUM_SCALAR >::toString(), and gum::aggregator::MultiDimAggregator< GUM_SCALAR >::toString().
|
overridevirtualinherited |
Returns the variable with the name.
name | The index of the variable |
NotFound | Raised if the element cannot be found. |
Implements gum::MultiDimInterface.
Definition at line 191 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Returns a const ref to the sequence of DiscreteVariable*.
Implements gum::MultiDimInterface.
Definition at line 217 of file multiDimImplementation_tpl.h.
Referenced by gum::prm::PRMFormAttribute< GUM_SCALAR >::__fillCpf(), gum::MultiDimBucket< GUM_SCALAR >::__initializeBuffer(), gum::ITI< AttributeSelection, isScalar >::__insertNodeInFunctionGraph(), gum::ITI< AttributeSelection, isScalar >::__insertTerminalNode(), gum::StructuredPlaner< double >::_makeArgMax(), gum::prm::PRMFormAttribute< GUM_SCALAR >::copy(), gum::prm::copyPotential(), gum::MultiDimWithOffset< GUM_SCALAR >::erase(), gum::MultiDimArray< GUM_SCALAR >::erase(), gum::MultiDimFunctionGraphGenerator::generate(), gum::StatesCounter::insertSetOfVars(), gum::MultiDimBijArray< GUM_SCALAR >::MultiDimBijArray(), and gum::TreeOperatorStrategy< GUM_SCALAR >::regress().
|
friend |
Definition at line 57 of file multiDimArray.h.
|
protectedinherited |
The gaps between consecutive values of a given variable.
For each variable, we keep track of the interval between two consecutive values of the variable in vector values. Thus, shifting from one value to the next one is equivalent to incrementing/decrementing by gaps the current offset w.r.t. vector values.
Definition at line 180 of file multiDimWithOffset.h.
Referenced by gum::MultiDimWithOffset< GUM_SCALAR >::_getOffs(), gum::MultiDimWithOffset< GUM_SCALAR >::add(), gum::MultiDimWithOffset< GUM_SCALAR >::changeNotification(), gum::MultiDimWithOffset< GUM_SCALAR >::erase(), and gum::MultiDimArray< GUM_SCALAR >::erase().
|
protectedinherited |
The position in the array of each slave Instantiation.
Definition at line 183 of file multiDimWithOffset.h.
Referenced by gum::MultiDimArray< GUM_SCALAR >::_get(), gum::MultiDimWithOffset< GUM_SCALAR >::changeNotification(), gum::MultiDimSparse< GUM_SCALAR >::get(), gum::MultiDimBijArray< GUM_SCALAR >::get(), gum::MultiDimWithOffset< GUM_SCALAR >::registerSlave(), gum::MultiDimSparse< GUM_SCALAR >::set(), gum::MultiDimWithOffset< GUM_SCALAR >::setChangeNotification(), gum::MultiDimWithOffset< GUM_SCALAR >::setDecNotification(), gum::MultiDimWithOffset< GUM_SCALAR >::setFirstNotification(), gum::MultiDimWithOffset< GUM_SCALAR >::setIncNotification(), gum::MultiDimWithOffset< GUM_SCALAR >::setLastNotification(), gum::MultiDimWithOffset< GUM_SCALAR >::toString(), and gum::MultiDimWithOffset< GUM_SCALAR >::unregisterSlave().
|
mutableprotected |
The true data : the values is mutable since we can change the value / in a const multiDimArray.
Definition at line 244 of file multiDimArray.h.
Referenced by gum::MultiDimArray< GUM_SCALAR >::_commitMultipleChanges(), gum::MultiDimArray< GUM_SCALAR >::_get(), gum::MultiDimArray< GUM_SCALAR >::add(), gum::MultiDimArray< GUM_SCALAR >::apply(), gum::MultiDimArray< GUM_SCALAR >::copyFrom(), gum::MultiDimArray< GUM_SCALAR >::erase(), gum::MultiDimArray< GUM_SCALAR >::fill(), gum::MultiDimArray< GUM_SCALAR >::getByOffset(), gum::MultiDimArray< GUM_SCALAR >::reduce(), gum::MultiDimArray< GUM_SCALAR >::setByOffset(), gum::MultiDimArray< GUM_SCALAR >::unsafeGet(), and gum::MultiDimArray< GUM_SCALAR >::unsafeSet().